IC Python API:Transform Math

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contents

Main article: RL Python Samples.

This article will go some recipes for common 3D transformational math. You'll find this helpful if you need to perform spacial calculations.

Transform Point

Transforms position of a point from local-space to world-space. The returned position is affected by scale.

def transform_point(world_transform, local_position):
# Get the transform matrix4
world_matrix = world_transform.Matrix()

# New matrix4 for the local position
point_world_matrix = RLPy.RMatrix4()
point_world_matrix.MakeIdentity()
point_world_matrix.SetTranslate(local_position)

# Combine the 2 matrix4s
point_world_matrix = point_world_matrix * world_matrix

# Return the translation element of the combined matrix4
return RLPy.RVector3(point_world_matrix.GetTranslate())

Transform Direction

Transforms direction of a vector from local-space to world-space. The returned vector has the same length as the direction.

def transform_point(world_transform, local_position):
# Get the transform matrix4
world_matrix = world_transform.Matrix()

# New matrix4 for the local position
point_world_matrix = RLPy.RMatrix4()
point_world_matrix.MakeIdentity()
point_world_matrix.SetTranslate(local_position)

# Combine the 2 matrix4
point_world_matrix = point_world_matrix * world_matrix

# Return the translation element of the combined matrix4
return RLPy.RVector3(point_world_matrix.GetTranslate())

In order to specify the rotation in world-space, use the following instead:

def transform_point(world_transform, specific_rotation, local_position):
# Get the transform matrix4
world_matrix = world_transform.Matrix()
world_matrix.SetSR(specific_rotation)

# New matrix4 for the local position
point_world_matrix = RLPy.RMatrix4()
point_world_matrix.MakeIdentity()
point_world_matrix.SetTranslate(local_position)

# Combine the 2 matrix4
point_world_matrix = point_world_matrix * world_matrix

# Return the translation element of the combined matrix4
return RLPy.RVector3(point_world_matrix.GetTranslate())