Rebel Fork Framework
|
Model
contains vertex and index buffers used to render static geometries. Model
also contain Skeleton
for skeletal animation and some extra metadata.
Note: Model
contains prepared data ready for rendering. Use ModelView
to access model data in easy-to-use format.
Model
is stored in the file system as *.mdl
file which contains main data and optional *.xml
auxiliary file which contains arbitrary metadata.
Model
contains arbitrary amount of VertexBuffer
-s and IndexBuffer
-s of arbitrary format.
Model
contains BoundingBox
in model space which will be used for spatial queries.
Model
may contain arbitrary amount of morphs.
Morph is an update to a subset of vertices in one or more VertexBuffer
-s. Morph may additively modify position, normal and/or tangent of vertices. Morphs are applied to geometry in AnimatedModel
.
Model
contains exactly one Skeleton
. For static models Skeleton
is empty and is usually ignored.
Skeleton
is an array of Bone
-s.
Every Bone
has its name, initial transform and parent bone.
Also, Bone
should contain either bounding box or bounding sphere in order to contribute to the bounding box of AnimatedModel
.
Geometries are what actually defines how Model
will be rendered.
Model
is split into one or more "submodels", where each "submodel":
Material
during rendering.Geometry
is the specific LOD of specific "submodel". Example layout of geometries in the Model
:
| |LOD #0|LOD #1|LOD #2|...| |-|-|-|-|-| |**Batch #0**|Geometry #0|Geometry #1|| |**Batch #1**|null|Geometry #2|Geometry #3|...| |**Batch #2**|Geometry #4|Geometry #5|Geometry #5| |**...**|...|...|...|...|
Every Geometry
references one or more VertexBuffer
of the Model
and at most one IndexBuffer
. Geometry
never stores actual vertices or indices.
Geometry
also defines the range of vertices/indices to be rendered and primitive type used.
Usually metadata is up to user, but there's a couple of values with special meaning:
Name | Type | Description |
---|---|---|
LightmapSize | IntVector2 | Size of the region in lightmap texture required to fit all object lightmaps with specified LightmapDensity. |
LightmapDensity | float | Number of lightmap texels per unit, assuming that the object takes LightmapSize texels of lightmap texture. |
LightmapSharedUV | bool | Whether the object uses the same lightmap UVs for all its LODs. |