3DModels:obj meta
More actions
.obj Mesh Meta Reference
so because wavefront .obj files dont contain all the required information for 3d models in spring this extra file was needed to fill in the missing pieces.
the file accompanies your mesh such that:
objects3d/myobjmesh.obj
objects3d/myobjmesh.lua (this is the meta info file)
variables are organised as such: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}type {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}VariableName default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}value range: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}[valid range] Required
- Description
If you notice something is incorrect, fix it please!
Source
The engine source code which reads this file is viewable here:
General Formatting
check Lua Documentation.
Data Types
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}int : An integer number. eg. {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}5
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}float : A number with decimals. eg {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}1.023
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}bool : A value which can be true or false. eg {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}true
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}string : Text, or more precisely a string of alphanumeric characters. eg {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}"string of characters"
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}rgb : Three float components, representing red, green and blue components, ranged from 0.0 to 1.0. eg {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}{0.0, 0.0, 0.0}
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}float3 : Three float components, eg {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}{0.0, 0.0, 0.0}
- {{#css
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}float4 : Four float components, eg {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}{0.0, 0.0, 0.0, 0.0}
Notes
- each model-table must define EXACTLY one root-piece in its "pieces" sub-table
- the script MUST return exactly one model-table (which may be named arbitrarily)
- the tree must reference ONLY object names defined in the .obj file
- a piece-table key may NOT be "name" or "offset" (these are reserved keywords)
Sections
meshname.lua
meshname = {
pieces = {
...
},
radius = 0,
midpos = 0,
tex1 = "",
--tex2 = "",
numpieces = 1,
globalvertexoffset = true,
localpieceoffset = true,
}
return meshname
meshname
name of your mesh...
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}float3 {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}midpos default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}? Required
- the local of the median point of the mesh from the origin
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}float {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}radius default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}? Required
- from the midpos the radius of the mesh, used for occlusion culling
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}string {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}tex1 default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}?
- filename of the texture image to use for diffuse and teamcolor
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}string {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}tex2 default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}?
- filename of the texture image to use for ambient, specular and transparency
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}bool {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}globalvertexoffsets default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}?
- whether the vertex coordinates are relative to the global origin, or the local origin
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}bool {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}localpieceoffsets default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}?
- whether the piece offsets are relative to the global origin, or the parent offset
pieces
Specifies the hierarchy of objects
meshname = {
pieces = {
piecename = {
offset = {0.0, 0.0, 0.0},
anotherpiecename = {
offset = {0.0, 0.0, 0.0},
...
},
...
},
},
...
}
return meshname
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}string {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}name default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}? Required
- each piece name needs to correspond to an object in the mesh file. For an .obj file it would be the "o" tag
{{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}float3 {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}offset default: {{#css:
span.value {
color:#e65c00;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.type {
color:#0099cc;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.prefix {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
}
span.name {
color:#105289;
font-family: ‘Lucida Console’, Monaco, monospace;
font-weight:bold;
}
span.var {
font-family: ‘Lucida Console’, Monaco, monospace;
}
}}? Required
- the offset of the piece vertices either in parent or world space