public final class GltfLoader

  1. Object
  2. GltfLoader

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);

Nested types

class GltfLoader.GltfModelA loaded glTF model: its geometry plus the base-color texture extracted from the model’s first material, if any.
class GltfLoader.GltfImageModelA loaded glTF model in device-free form: its geometry plus the decoded base-color image extracted from the model’s first material, if any.

Methods

public static Mesh load(GraphicsDevice device, InputStream in) throws IOExceptionReads all bytes from the stream and loads the model.
public static Mesh load(GraphicsDevice device, byte[] data)Loads a model from in-memory .glb or .gltf bytes.
public static Mesh load(byte[] data)Loads a model from in-memory .glb or .gltf bytes without a GraphicsDevice, allocating the buffers directly.
public static Mesh load(InputStream in) throws IOExceptionReads all bytes from the stream and loads the model without a GraphicsDevice.
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.
public static GltfLoader.GltfModel loadModel(GraphicsDevice device, InputStream in) throws IOExceptionReads all bytes from the stream and loads the model with its base-color texture.
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.
public static GltfLoader.GltfImageModel loadImageModel(InputStream in) throws IOExceptionReads all bytes from the stream and loads the model with its base-color image without a GraphicsDevice.

Inherited methods

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 GraphicsDevice
the device that allocates the mesh buffers
in InputStream
a stream over .glb or .gltf bytes

Returns

the loaded mesh

load

public static Mesh load(GraphicsDevice device, byte[] data)
Loads a model from in-memory .glb or .gltf bytes.

Parameters

device GraphicsDevice
the device that allocates the mesh buffers
data byte[]
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 byte[]
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 InputStream
a stream over .glb or .gltf bytes

Returns

the loaded mesh

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 GraphicsDevice
the device that allocates the mesh buffers and texture
data byte[]
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.

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 byte[]
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.