Class GltfLoader

java.lang.Object
com.codename1.gpu.GltfLoader

public final class GltfLoader extends Object

Loads a Mesh from a glTF 2.0 model so applications can render real authored geometry rather than only the built in Primitives. Both the binary container (.glb) and the JSON form (.gltf) are supported; for the JSON form, buffers must be embedded as data: URIs (external .bin side files are not fetched). The first triangle primitive of the first mesh is read.

The loader produces the engine's standard VertexFormat.POSITION_NORMAL_TEXCOORD layout so the result drops straight into any built in Material:

  • POSITION (required) is read as the vertex position.
  • NORMAL is read when present; otherwise flat per-triangle normals are computed so lit materials still shade correctly.
  • TEXCOORD_0 is read when present; otherwise zero texture coordinates are written.

Materials, textures, skinning and animation in the glTF are ignored -- this is a geometry loader. Apply a Material (and a Texture loaded via the device) to the returned mesh as usual.

Example:

byte[] glb = ...; // bytes of a .glb model
Mesh mesh = GltfLoader.load(device, glb);
Material material = new Material(Material.Type.PHONG).setTexture(texture);
device.draw(mesh, material, modelMatrix);
  • Method Details

    • load

      public static Mesh load(GraphicsDevice device, InputStream in) throws IOException

      Reads all bytes from the stream and loads the model. The stream is closed.

      Parameters
      • device: the device that allocates the mesh buffers

      • in: a stream over .glb or .gltf bytes

      Returns

      the loaded mesh

      Throws:
      IOException
    • load

      public static Mesh load(GraphicsDevice device, byte[] data)

      Loads a model from in-memory .glb or .gltf bytes.

      Parameters
      • device: the device that allocates the mesh buffers

      • data: the raw model bytes (binary .glb or JSON .gltf)

      Returns

      the loaded mesh

    • load

      public static Mesh load(byte[] data)

      Loads a model from in-memory .glb or .gltf bytes without a GraphicsDevice, allocating the buffers directly. Behaves exactly like load(GraphicsDevice, byte[]); useful for parsing geometry off the render thread or handing meshes to non GPU consumers such as the AR content pipeline.

      Parameters
      • data: the raw model bytes (binary .glb or JSON .gltf)
      Returns

      the loaded mesh

    • load

      public static Mesh load(InputStream in) throws IOException

      Reads all bytes from the stream and loads the model without a GraphicsDevice. The stream is closed.

      Parameters
      • in: a stream over .glb or .gltf bytes
      Returns

      the loaded mesh

      Throws:
      IOException
    • loadModel

      public static GltfLoader.GltfModel loadModel(GraphicsDevice device, byte[] data)

      Loads a model together with its base-color texture from in-memory .glb or .gltf bytes. Use this (rather than load) when the model carries its own texture and you want it applied automatically.

      Parameters
      • device: the device that allocates the mesh buffers and texture

      • data: the raw model bytes

      Returns

      the loaded mesh plus its base-color texture (null texture if the model has none)

    • loadModel

      public static GltfLoader.GltfModel loadModel(GraphicsDevice device, InputStream in) throws IOException
      Reads all bytes from the stream and loads the model with its base-color texture. The stream is closed.
      Throws:
      IOException
    • loadImageModel

      public static GltfLoader.GltfImageModel loadImageModel(byte[] data)

      Loads a model together with its base-color image from in-memory .glb or .gltf bytes without a GraphicsDevice. The image is decoded but not uploaded to the GPU, so this works off the render thread and on non GPU consumers such as the AR content pipeline.

      Parameters
      • data: the raw model bytes
      Returns

      the loaded mesh plus its decoded base-color image (null image if the model has none)

    • loadImageModel

      public static GltfLoader.GltfImageModel loadImageModel(InputStream in) throws IOException
      Reads all bytes from the stream and loads the model with its base-color image without a GraphicsDevice. The stream is closed.
      Throws:
      IOException