Class IntModel

java.lang.Object
gaiasky.util.gdx.model.IntModel
All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable

public class IntModel extends 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 Details

    • materials

      public final com.badlogic.gdx.utils.Array<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 Details

    • 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 Details

    • load

      protected void load(IntModelData modelData, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
    • loadAnimations

      protected void loadAnimations(Iterable<com.badlogic.gdx.graphics.g3d.model.data.ModelAnimation> modelAnimations)
    • loadNodes

      protected void loadNodes(Iterable<IntModelNode> modelNodes)
    • loadNode

      protected IntNode loadNode(IntModelNode modelNode)
    • loadMeshes

      protected void loadMeshes(Iterable<IntModelMesh> meshes)
    • convertMesh

      protected void convertMesh(IntModelMesh modelMesh)
    • loadMaterials

      protected void loadMaterials(Iterable<com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial> modelMaterials, com.badlogic.gdx.graphics.g3d.utils.TextureProvider textureProvider)
    • convertMaterial

      protected 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 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(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(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 Material getMaterial(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 Material getMaterial(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(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(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(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.