Class IntModel

  • All Implemented Interfaces:
    com.badlogic.gdx.utils.Disposable

    public class IntModel
    extends java.lang.Object
    implements com.badlogic.gdx.utils.Disposable
    This implementation uses IntMesh and IntMeshPart instead of Mesh and MeshPart. 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 IntMeshPart 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 IntModelInstance 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 IntModelData, which in turn is loaded by a IntModelLoader.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      com.badlogic.gdx.utils.Array<IntAnimation> animations
      animations of the model, modifying node transformations
      protected 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
      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
      com.badlogic.gdx.utils.Array<IntMesh> meshes
      the meshes of the model
      com.badlogic.gdx.utils.Array<IntMeshPart> meshParts
      parts of meshes, used by nodes that have a graphical representation
      com.badlogic.gdx.utils.Array<IntNode> nodes
      root nodes of the model
    • 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 all Node 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 a Disposable to be managed and disposed by this Model.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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. Use manageDisposable(Disposable) to add resources to be managed by this model.
      • IntModel

        public IntModel​(IntModelData modelData)
        Constructs a new Model based on the IntModelData. Texture files will be loaded from the internal file storage via an TextureProvider.FileTextureProvider.
        Parameters:
        modelData - the IntModelData got from e.g. ModelLoader
      • IntModel

        public IntModel​(IntModelData modelData,
                        com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
        Constructs a new Model based on the IntModelData.
        Parameters:
        modelData - the IntModelData got from e.g. ModelLoader
        textureProvider - the TextureProvider 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)
      • 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 a Disposable to be managed and disposed by this Model. Can be used to keep track of manually loaded textures for IntModelInstance.
        Parameters:
        disposable - the Disposable
      • getManagedDisposables

        public java.lang.Iterable<com.badlogic.gdx.utils.Disposable> getManagedDisposables()
        Returns:
        the Disposable objects that will be disposed when the dispose() method is called.
      • dispose

        public void dispose()
        Specified by:
        dispose in interface com.badlogic.gdx.utils.Disposable
      • calculateTransforms

        public void calculateTransforms()
        Calculates the local and world transform of all Node instances in this model, recursively. First each Node.localTransform transform is calculated based on the translation, rotation and scale of each Node. Then each Node.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 - the BoundingBox 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 - the BoundingBox 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.