Skip to content

3D Models

3D model methods allow you to import, manage, and render OBJ models inside DirectGPU scenes.

Models must first be loaded before they can be drawn. Each loaded model is assigned a modelId which can be used for rendering and management.

Method
clearAll3DModels() : ()
draw3DModel(displayId : DisplayID, modelId : number, x : number, y : number, z : number, rotX : number, rotY : number, rotZ : number, scale : number, r : number, g : number, b : number, [qx : number, qy : number, qz : number, qw : number]) : ()
draw3DModel(displayId : DisplayID, modelId : number, x : number, y : number, z : number, rotX : number, rotY : number, rotZ : number, scale : number, r : number, g : number, b : number, [quaternion : table]) : ()
draw3DModelTextured(displayId : DisplayID, modelId : number, textureId : number, x : number, y : number, z : number, rotX : number, rotY : number, rotZ : number, scale : number, r : number, g : number, b : number, [qx : number, qy : number, qz : number, qw : number]) : ()
draw3DModelTextured(displayId : DisplayID, modelId : number, textureId : number, x : number, y : number, z : number, rotX : number, rotY : number, rotZ : number, scale : number, r : number, g : number, b : number, [quaternion : table]) : ()
get3DModelInfo(modelId : number) : table
load3DModel(objData : string) : number
load3DModelFromBytes(base64ObjData : string) : number
loadTexture(base64ImageData : string) : number
unload3DModel(modelId : number) : ()
unloadTexture(textureId : number) : ()

Removes all loaded 3D models from DirectGPU.

Use this when resetting a scene or freeing model resources.

gpu.clearAll3DModels()

Draws a loaded model using a single flat color.

Rotation values are specified in degrees:

  • rotX - rotation around the X axis
  • rotY - rotation around the Y axis
  • rotZ - rotation around the Z axis

Requires: DisplayID, modelId : number, position, rotation, scale, and RGB color values.

draw3DModel still supports rotX, rotY, rotZ.

gpu.draw3DModel(
displayId,
modelId,
0,
0,
0,
0,
45,
0,
1.0,
255,
255,
255
)

You can also pass a quaternion rotation using qx, qy, qz, qw after the color args:

gpu.draw3DModel(
displayId,
modelId,
0,
0,
0,
0,
0,
0,
1,
255,
255,
255,
qx,
qy,
qz,
qw
)

draw3DModel can also accept a quaternion object/table as the final arg:

gpu.draw3DModel(
displayId,
modelId,
0,
0,
0,
0,
0,
0,
1,
255,
255,
255,
pose.orientation
)

Draws a loaded model using a previously loaded texture.

The texture must be loaded first using loadTexture.

Requires: DisplayID, modelId : number, textureId : number, position, rotation, scale, and RGB color values.

draw3DModelTextured supports the same optional quaternion args as draw3DModel.

gpu.draw3DModelTextured(
displayId,
modelId,
textureId,
0,
0,
0,
0,
45,
0,
1.0,
255,
255,
255
)

With a quaternion passed as qx, qy, qz, qw:

gpu.draw3DModelTextured(
displayId,
modelId,
textureId,
0,
0,
0,
0,
0,
0,
1,
255,
255,
255,
qx,
qy,
qz,
qw
)

With a quaternion object/table:

gpu.draw3DModelTextured(
displayId,
modelId,
textureId,
0,
0,
0,
0,
0,
0,
1,
255,
255,
255,
pose.orientation
)

Returns information about a loaded model.

Requires: modelId : number

Returns: Model information table.

local info = gpu.get3DModelInfo(modelId)
print(info)

Loads OBJ model data from a normal string.

Returns: modelId : number

The returned ID can be used with draw3DModel and draw3DModelTextured.

local modelId = gpu.load3DModel(objData)

Loads OBJ model data from Base64 encoded data.

Useful when transferring model files through APIs or networks.

Requires: base64ObjData : string

Returns: modelId : number

local modelId = gpu.load3DModelFromBytes(base64ObjData)

Loads an image as a texture that can be applied to 3D models.

The image is provided as Base64 encoded image data.

Requires: base64ImageData : string

Returns: textureId : number

The returned ID can be used with draw3DModelTextured.

local textureId = gpu.loadTexture(base64ImageData)

Removes a loaded model from DirectGPU.

Use this when a model is no longer needed to free resources.

Requires: modelId : number

gpu.unload3DModel(modelId)

Removes a loaded texture from DirectGPU.

Use this when a texture is no longer needed to free resources.

Requires: textureId : number

gpu.unloadTexture(textureId)

draw3DModel still supports rotX, rotY, rotZ.

Quaternion rotation can be passed using qx, qy, qz, qw after the color args.

gpu.draw3DModel(displayId, modelId, x, y, z, 0, 0, 0, scale, r, g, b, qx, qy, qz, qw)

draw3DModel can also accept a quaternion object/table as the final arg.

gpu.draw3DModel(displayId, modelId, x, y, z, 0, 0, 0, scale, r, g, b, pose.orientation)

draw3DModelTextured supports the same optional quaternion args.

gpu.draw3DModelTextured(displayId, modelId, textureId, x, y, z, 0, 0, 0, scale, r, g, b, qx, qy, qz, qw)
gpu.draw3DModelTextured(displayId, modelId, textureId, x, y, z, 0, 0, 0, scale, r, g, b, pose.orientation)