Class IntModel
- java.lang.Object
-
- gaia.cu9.ari.gaiaorbit.util.gdx.model.IntModel
-
- All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable
public class IntModel extends java.lang.Object implements com.badlogic.gdx.utils.Disposable
This implementation usesIntMesh
andIntMeshPart
instead ofMesh
andMeshPart
. 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 aIntMeshPart
andMaterial
. 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 aIntModelInstance
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 fromIntModelData
, which in turn is loaded by aIntModelLoader
.
-
-
Field Summary
Fields Modifier and Type Field Description com.badlogic.gdx.utils.Array<IntAnimation>
animations
animations of the model, modifying node transformationsprotected com.badlogic.gdx.utils.Array<com.badlogic.gdx.utils.Disposable>
disposables
Array of disposable resources like textures or meshes the Model is responsible for disposingcom.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.g3d.Material>
materials
the materials of the model, used by nodes that have a graphical representationcom.badlogic.gdx.utils.Array<IntMesh>
meshes
the meshes of the modelcom.badlogic.gdx.utils.Array<IntMeshPart>
meshParts
parts of meshes, used by nodes that have a graphical representationcom.badlogic.gdx.utils.Array<IntNode>
nodes
root nodes of the model
-
Constructor Summary
Constructors Constructor Description IntModel()
Constructs an empty model.IntModel(IntModelData modelData)
Constructs a new Model based on theIntModelData
.IntModel(IntModelData modelData, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
Constructs a new Model based on theIntModelData
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description com.badlogic.gdx.math.collision.BoundingBox
calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)
Calculate the bounding box of this model instance.void
calculateTransforms()
Calculates the local and world transform of allNode
instances in this model, recursively.protected com.badlogic.gdx.graphics.g3d.Material
convertMaterial(com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial mtl, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
protected void
convertMesh(IntModelMesh modelMesh)
void
dispose()
com.badlogic.gdx.math.collision.BoundingBox
extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)
Extends the bounding box with the bounds of this model instance.IntAnimation
getAnimation(java.lang.String id)
IntAnimation
getAnimation(java.lang.String id, boolean ignoreCase)
java.lang.Iterable<com.badlogic.gdx.utils.Disposable>
getManagedDisposables()
com.badlogic.gdx.graphics.g3d.Material
getMaterial(java.lang.String id)
com.badlogic.gdx.graphics.g3d.Material
getMaterial(java.lang.String id, boolean ignoreCase)
IntNode
getNode(java.lang.String id)
IntNode
getNode(java.lang.String id, boolean recursive)
IntNode
getNode(java.lang.String id, boolean recursive, boolean ignoreCase)
protected void
load(IntModelData modelData, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
protected void
loadAnimations(java.lang.Iterable<com.badlogic.gdx.graphics.g3d.model.data.ModelAnimation> modelAnimations)
protected void
loadMaterials(java.lang.Iterable<com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial> modelMaterials, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
protected void
loadMeshes(java.lang.Iterable<IntModelMesh> meshes)
protected IntNode
loadNode(IntModelNode modelNode)
protected void
loadNodes(java.lang.Iterable<IntModelNode> modelNodes)
void
manageDisposable(com.badlogic.gdx.utils.Disposable disposable)
Adds aDisposable
to be managed and disposed by this Model.
-
-
-
Field Detail
-
materials
public final com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.g3d.Material> materials
the materials of the model, used by nodes that have a graphical representation
-
nodes
public final com.badlogic.gdx.utils.Array<IntNode> nodes
root nodes of the model
-
animations
public final com.badlogic.gdx.utils.Array<IntAnimation> animations
animations of the model, modifying node transformations
-
meshes
public final com.badlogic.gdx.utils.Array<IntMesh> meshes
the meshes of the model
-
meshParts
public final com.badlogic.gdx.utils.Array<IntMeshPart> meshParts
parts of meshes, used by nodes that have a graphical representation
-
disposables
protected final com.badlogic.gdx.utils.Array<com.badlogic.gdx.utils.Disposable> disposables
Array of disposable resources like textures or meshes the Model is responsible for disposing
-
-
Constructor Detail
-
IntModel
public IntModel()
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.
-
IntModel
public IntModel(IntModelData modelData)
Constructs a new Model based on theIntModelData
. Texture files will be loaded from the internal file storage via anTextureProvider.FileTextureProvider
.- Parameters:
modelData
- theIntModelData
got from e.g.ModelLoader
-
IntModel
public IntModel(IntModelData modelData, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
Constructs a new Model based on theIntModelData
.- Parameters:
modelData
- theIntModelData
got from e.g.ModelLoader
textureProvider
- theTextureProvider
to use for loading the textures
-
-
Method Detail
-
load
protected void load(IntModelData modelData, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
-
loadAnimations
protected void loadAnimations(java.lang.Iterable<com.badlogic.gdx.graphics.g3d.model.data.ModelAnimation> modelAnimations)
-
loadNodes
protected void loadNodes(java.lang.Iterable<IntModelNode> modelNodes)
-
loadNode
protected IntNode loadNode(IntModelNode modelNode)
-
loadMeshes
protected void loadMeshes(java.lang.Iterable<IntModelMesh> meshes)
-
convertMesh
protected void convertMesh(IntModelMesh modelMesh)
-
loadMaterials
protected void loadMaterials(java.lang.Iterable<com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial> modelMaterials, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
-
convertMaterial
protected com.badlogic.gdx.graphics.g3d.Material convertMaterial(com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial mtl, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
-
manageDisposable
public void manageDisposable(com.badlogic.gdx.utils.Disposable disposable)
Adds aDisposable
to be managed and disposed by this Model. Can be used to keep track of manually loaded textures forIntModelInstance
.- Parameters:
disposable
- the Disposable
-
getManagedDisposables
public java.lang.Iterable<com.badlogic.gdx.utils.Disposable> getManagedDisposables()
- Returns:
- the
Disposable
objects that will be disposed when thedispose()
method is called.
-
dispose
public void dispose()
- Specified by:
dispose
in interfacecom.badlogic.gdx.utils.Disposable
-
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
public com.badlogic.gdx.math.collision.BoundingBox calculateBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)
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
public com.badlogic.gdx.math.collision.BoundingBox extendBoundingBox(com.badlogic.gdx.math.collision.BoundingBox out)
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
public IntAnimation getAnimation(java.lang.String id)
- Parameters:
id
- The ID of the animation to fetch (case sensitive).- Returns:
- The
Animation
with the specified id, or null if not available.
-
getAnimation
public IntAnimation getAnimation(java.lang.String id, boolean ignoreCase)
- 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
public com.badlogic.gdx.graphics.g3d.Material getMaterial(java.lang.String id)
- Parameters:
id
- The ID of the material to fetch.- Returns:
- The
Material
with the specified id, or null if not available.
-
getMaterial
public com.badlogic.gdx.graphics.g3d.Material getMaterial(java.lang.String id, boolean ignoreCase)
- 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
public IntNode getNode(java.lang.String id)
- Parameters:
id
- The ID of the node to fetch.- Returns:
- The
IntNode
with the specified id, or null if not found.
-
getNode
public IntNode getNode(java.lang.String id, boolean recursive)
- 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
IntNode
with the specified id, or null if not found.
-
getNode
public IntNode getNode(java.lang.String id, boolean recursive, boolean ignoreCase)
- 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
IntNode
with the specified id, or null if not found.
-
-