Package com.badlogic.gdx.graphics.g3d
Class Model
java.lang.Object
com.badlogic.gdx.graphics.g3d.Model
- All Implemented Interfaces:
Disposable
A model represents a 3D assets. It stores a hierarchy of nodes. A node has a transform and optionally a graphical part in form
of a
MeshPart
and Material
. Mesh parts reference subsets of vertices in one of the meshes of the model.
Animations can be applied to nodes, to modify their transform (translation, rotation, scale) over time.
A model can be rendered by creating a ModelInstance
from it. That instance has an additional transform to position the
model in the world, and allows modification of materials and nodes without destroying the original model. The original model is
the owner of any meshes and textures, all instances created from the model share these resources. Disposing the model will
automatically make all instances invalid!
A model is created from ModelData
, which in turn is loaded by a ModelLoader
.-
Field Summary
FieldsModifier and TypeFieldDescriptionanimations of the model, modifying node transformationsprotected final Array<Disposable>
Array of disposable resources like textures or meshes the Model is responsible for disposingthe materials of the model, used by nodes that have a graphical representation FIXME not sure if superfluous, allows modification of materials without having to traverse the nodesthe meshes of the modelparts of meshes, used by nodes that have a graphical representation FIXME not sure if superfluous, stored in Nodes as well, could be useful to create bullet meshesroot nodes of the model -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCalculate the bounding box of this model instance.void
Calculates the local and world transform of allNode
instances in this model, recursively.protected Material
convertMaterial
(ModelMaterial mtl, TextureProvider textureProvider) protected void
convertMesh
(ModelMesh modelMesh) void
dispose()
Releases all resources of this object.Extends the bounding box with the bounds of this model instance.getAnimation
(String id) getAnimation
(String id, boolean ignoreCase) getMaterial
(String id) getMaterial
(String id, boolean ignoreCase) protected void
load
(ModelData modelData, TextureProvider textureProvider) protected void
loadAnimations
(Iterable<ModelAnimation> modelAnimations) protected void
loadMaterials
(Iterable<ModelMaterial> modelMaterials, TextureProvider textureProvider) protected void
loadMeshes
(Iterable<ModelMesh> meshes) protected Node
protected void
void
manageDisposable
(Disposable disposable) Adds aDisposable
to be managed and disposed by this Model.
-
Field Details
-
materials
the materials of the model, used by nodes that have a graphical representation FIXME not sure if superfluous, allows modification of materials without having to traverse the nodes -
nodes
root nodes of the model -
animations
animations of the model, modifying node transformations -
meshes
the meshes of the model -
meshParts
parts of meshes, used by nodes that have a graphical representation FIXME not sure if superfluous, stored in Nodes as well, could be useful to create bullet meshes -
disposables
Array of disposable resources like textures or meshes the Model is responsible for disposing
-
-
Constructor Details
-
Model
public Model()Constructs an empty model. Manual created models do not manage their resources by default. UsemanageDisposable(Disposable)
to add resources to be managed by this model. -
Model
Constructs a new Model based on theModelData
. Texture files will be loaded from the internal file storage via anTextureProvider.FileTextureProvider
.- Parameters:
modelData
- theModelData
got from e.g.ModelLoader
-
Model
Constructs a new Model based on theModelData
.- Parameters:
modelData
- theModelData
got from e.g.ModelLoader
textureProvider
- theTextureProvider
to use for loading the textures
-
-
Method Details
-
load
-
loadAnimations
-
loadNodes
-
loadNode
-
loadMeshes
-
convertMesh
-
loadMaterials
protected void loadMaterials(Iterable<ModelMaterial> modelMaterials, TextureProvider textureProvider) -
convertMaterial
-
manageDisposable
Adds aDisposable
to be managed and disposed by this Model. Can be used to keep track of manually loaded textures forModelInstance
.- Parameters:
disposable
- the Disposable
-
getManagedDisposables
- Returns:
- the
Disposable
objects that will be disposed when thedispose()
method is called.
-
dispose
public void dispose()Description copied from interface:Disposable
Releases all resources of this object.- Specified by:
dispose
in interfaceDisposable
-
calculateTransforms
public void calculateTransforms()Calculates the local and world transform of allNode
instances in this model, recursively. First eachNode.localTransform
transform is calculated based on the translation, rotation and scale of each Node. Then eachNode.calculateWorldTransform()
is calculated, based on the parent's world transform and the local transform of each Node. Finally, the animation bone matrices are updated accordingly. This method can be used to recalculate all transforms if any of the Node's local properties (translation, rotation, scale) was modified. -
calculateBoundingBox
Calculate the bounding box of this model instance. This is a potential slow operation, it is advised to cache the result.- Parameters:
out
- theBoundingBox
that will be set with the bounds.- Returns:
- the out parameter for chaining
-
extendBoundingBox
Extends the bounding box with the bounds of this model instance. This is a potential slow operation, it is advised to cache the result.- Parameters:
out
- theBoundingBox
that will be extended with the bounds.- Returns:
- the out parameter for chaining
-
getAnimation
- Parameters:
id
- The ID of the animation to fetch (case sensitive).- Returns:
- The
Animation
with the specified id, or null if not available.
-
getAnimation
- Parameters:
id
- The ID of the animation to fetch.ignoreCase
- whether to use case sensitivity when comparing the animation id.- Returns:
- The
Animation
with the specified id, or null if not available.
-
getMaterial
- Parameters:
id
- The ID of the material to fetch.- Returns:
- The
Material
with the specified id, or null if not available.
-
getMaterial
- Parameters:
id
- The ID of the material to fetch.ignoreCase
- whether to use case sensitivity when comparing the material id.- Returns:
- The
Material
with the specified id, or null if not available.
-
getNode
- Parameters:
id
- The ID of the node to fetch.- Returns:
- The
Node
with the specified id, or null if not found.
-
getNode
- Parameters:
id
- The ID of the node to fetch.recursive
- false to fetch a root node only, true to search the entire node tree for the specified node.- Returns:
- The
Node
with the specified id, or null if not found.
-
getNode
- Parameters:
id
- The ID of the node to fetch.recursive
- false to fetch a root node only, true to search the entire node tree for the specified node.ignoreCase
- whether to use case sensitivity when comparing the node id.- Returns:
- The
Node
with the specified id, or null if not found.
-