Object constraints API. Please note that these constraints are not the same
as those assigned in Blender.
- Source:
Summary
Methods
- append_copy_loc(obj, target, axesopt, use_offsetopt, influenceopt)
- append_copy_rot(obj, target, axesopt, use_offsetopt, influenceopt)
- append_copy_trans(obj, target, influenceopt)
- append_follow(obj, target, dist_min, dist_max)
- append_semi_soft(obj, target, offsetopt, softnessopt)
- append_semi_soft_cam(obj, target, offsetopt, softnessopt)
- append_semi_stiff(obj, target, offsetopt, rotation_offsetopt, clamp_leftopt, clamp_rightopt, clamp_upopt, clamp_downopt)
- append_semi_stiff_cam(obj, target, offsetopt, rotation_offsetopt, clamp_leftopt, clamp_rightopt, clamp_upopt, clamp_downopt)
- append_stiff(obj, target, offsetopt, rotation_offsetopt, scale_offsetopt)
- append_stiff_trans(obj, target, offsetopt)
- append_stiff_trans_rot(obj, target, offsetopt, rotation_offsetopt)
- append_stiff_viewport(obj, camobj, positioningopt)
- append_track(obj, target, track_axisopt, up_axisopt, use_target_zopt, influenceopt)
- remove(obj, restore_transformopt)
Type Definitions
Detailed Description
Methods
append_copy_loc(obj, target, axesopt, use_offsetopt, influenceopt)
Attach the object to the other object using a copy location constraint.
The child object will move together with its parent, but will not rotate.
Note that the offset is the object's location in the world space.
This method works similarly to the Copy Location constraint in Blender.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Target object | ||
axes |
string |
<optional> |
'XYZ' | Copy the target's location |
use_offset |
boolean |
<optional> |
false | Add original location into copied location |
influence |
number |
<optional> |
1 | Amount of influence constraint will have on the final solution |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.append_copy_loc(my_sphere, my_cube, 'XYZ', false, 0.5);
append_copy_rot(obj, target, axesopt, use_offsetopt, influenceopt)
Attach the object to the other object using a copy rotation constraint.
The child object will rotate together with its parent, but will not move.
Note that the offset is the object's rotation in the world space.
This method works similarly to the Copy Rotation constraint in Blender.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Target object | ||
axes |
string |
<optional> |
'XYZ' | Copy the target's location |
use_offset |
boolean |
<optional> |
false | Add original location into copied location |
influence |
number |
<optional> |
1 | Amount of influence constraint will have on the final solution |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.append_copy_rot(my_sphere, my_cube, 'XYZ', 0.5);
append_copy_trans(obj, target, influenceopt)
Attach the object to the other object using a copy transforms constraint.
The child object will move and rotate together with its parent.
This method works similarly to the Copy Transforms constraint in Blender.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Target object | ||
influence |
number |
<optional> |
1 | Amount of influence constraint will have on the final solution |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.append_copy_trans(my_sphere, my_cube, 0.5);
append_follow(obj, target, dist_min, dist_max)
Attach the object to the other object using a follow constraint. The child
object will track and follow its parent position.
This method works similarly to the Limit Distance constraint in Blender, but, unlike it, does not set a precise distance.
Example: a follow-style camera view for the character.Parameters:
Name | Type | Description |
---|---|---|
obj |
Object3D | Constrained object |
target |
Object3D | Target object |
dist_min |
number | Minimum distance |
dist_max |
number | Maximum distance |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_cube = m_scene.get_object_by_name("cube");
var my_camera = m_scene.get_object_by_name("Camera");
m_const.append_follow(my_camera, my_cube, 2.0, 4.0);
append_semi_soft(obj, target, offsetopt, softnessopt)
Attach one object to another one using a
semi-soft constraint. The object will smoothly follow the object's rear.
Example: third-person character or vehicle views.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Target object | ||
offset |
Vec3 |
<optional> |
Offset, in the parent's local space | |
softness |
number |
<optional> |
0.25 | Object smoothness ratio |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_offset_vector = new Float32Array([2.0, 2.0, 2.0]);
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.append_semi_soft(my_sphere, my_cube, my_offset_vector, 0.5);
append_semi_soft_cam(obj, target, offsetopt, softnessopt)
Attach the EYE camera to the object using a
semi-soft constraint. The camera will smoothly follow the object's rear.
Example: third-person character or vehicle views.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Target object | ||
offset |
Vec3 |
<optional> |
Offset, in the parent's local space | |
softness |
number |
<optional> |
0.25 | Camera smoothness ratio |
- Deprecated since 17.06:
- Use module:constraints.append_semi_soft instead
- Source:
append_semi_stiff(obj, target, offsetopt, rotation_offsetopt, clamp_leftopt, clamp_rightopt, clamp_upopt, clamp_downopt)
Attach the object to the other object using a
semi-stiff constraint. The child object will move and rotate together with
its parent, but it will be still possible to rotate it independently
in the parent's local space. Example: a tank turret.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
obj |
Object3D | Constrained object | |
target |
Object3D | Target object | |
offset |
Vec3 |
<optional> |
Offset, in the parent's local space |
rotation_offset |
Quat |
<optional> |
Initial rotation offset, in the parent's local space |
clamp_left |
number |
<optional> |
Left object rotation limit, in radians |
clamp_right |
number |
<optional> |
Right object rotation limit, in radians |
clamp_up |
number |
<optional> |
Upward object rotation limit, in radians |
clamp_down |
number |
<optional> |
Downward object rotation limit, in radians |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_offset_vector = new Float32Array([2.0, 2.0, 2.0]);
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.append_semi_stiff(my_sphere, my_cube, my_offset_vector);
append_semi_stiff_cam(obj, target, offsetopt, rotation_offsetopt, clamp_leftopt, clamp_rightopt, clamp_upopt, clamp_downopt)
Attach the EYE camera to the object using a
semi-stiff constraint. Also apply rotation limits to the camera.
The camera will move and rotate together with
its parent, but it will be still possible to rotate it independently
in the parent's local space. The camera's UP vector will be preserved.
Example: first-person vehicle view.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
obj |
Object3D | Constrained object | |
target |
Object3D | Target object | |
offset |
Vec3 |
<optional> |
Offset, in the parent's local space |
rotation_offset |
Quat |
<optional> |
Initial rotation offset, in the parent's local space |
clamp_left |
number |
<optional> |
Left camera rotation limit, in radians |
clamp_right |
number |
<optional> |
Right camera rotation limit, in radians |
clamp_up |
number |
<optional> |
Upward camera rotation limit, in radians |
clamp_down |
number |
<optional> |
Downward camera rotation limit, in radians |
- Deprecated since 17.06:
- Use module:constraints.append_semi_stiff instead
- Source:
- See:
append_stiff(obj, target, offsetopt, rotation_offsetopt, scale_offsetopt)
Attach the object to the other object or to the armature bone using a
stiff constraint. The child object will move, rotate and scale
together with its parent. Examples: a sword is parented to the
character's hand; the character is sitting in a vehicle.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Array | Target object or [Armature object, Bone Name] | ||
offset |
Vec3 |
<optional> |
Offset, in the parent's local space. | |
rotation_offset |
Quat |
<optional> |
null | Rotation offset, in the parent's local space. |
scale_offset |
number |
<optional> |
1 | Scale offset, in the parent's local space. |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_offset_vector = new Float32Array([2.0, 2.0, 2.0]);
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.append_stiff(my_sphere, my_cube, my_offset_vector);
append_stiff_trans(obj, target, offsetopt)
Attach the object to the other object using a
stiff translation constraint. The child object will move together with
its parent, but will not rotate. It will be still possible to rotate it
independently from the parent.
Example: attaching the camera to the physics character in order to implement the first-person character view.
Another example: the character jumps in water and splashes' particle emitter is attached to the first-person camera using this constraint - the bubbles will follow the character but will not be rotated with the camera.Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
obj |
Object3D | Constrained object | |
target |
Object3D | Target object | |
offset |
Vec3 |
<optional> |
Offset, in the parent's local space |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_offset_vector = new Float32Array([-2.0, 2.0, 2.0]);
var my_cube = m_scene.get_object_by_name("cube");
var my_sphere_4 = m_scene.get_object_by_name("Icosphere");
m_const.append_stiff_trans(my_sphere, my_cube, my_offset_vector);
append_stiff_trans_rot(obj, target, offsetopt, rotation_offsetopt)
Attach the object to the other object using a
stiff translation/rotation constraint. The child object will move and rotate
together with its parent, but will not scale. It will be still possible to
scale it independently from the parent.
Example: smoke emitter attached to the tractor pipe; exhaustion effects
are achieved by scaling the emitter.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
obj |
Object3D | Constrained object | |
target |
Object3D | Target object | |
offset |
Vec3 |
<optional> |
Offset, in the parent's local space |
rotation_offset |
Quat |
<optional> |
Rotation offset, in the parent's local space |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_sphere = m_scene.get_object_by_name("Icosphere");
var my_cube = m_scene.get_object_by_name("cube");
var my_offset_vector = new Float32Array([-2.0, 2.0, 2.0]);
m_const.append_stiff_trans_rot(my_sphere, my_cube, my_offset_vector);
append_stiff_viewport(obj, camobj, positioningopt)
Attach the object to the camera using a stiff viewport constraint, so
the child object will preserve its orientation in the camera viewport.
This constraint is used to create onscreen 2D/3D user interfaces.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
obj |
Object3D | Constrained object | |
camobj |
Object3D | Camera object | |
positioning |
StiffViewportPositioning |
<optional> |
Positioning |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var sphere_1 = m_scene.get_object_by_name("Icosphere");
var my_camera = m_scene.get_object_by_name("Camera");
m_const.append_stiff_viewport(sphere_1, my_camera, {
left: 150,
top: 100,
distance: 1
});
append_track(obj, target, track_axisopt, up_axisopt, use_target_zopt, influenceopt)
Make the object "looking" at the target object.
Example: a spot light which is tracking the character; both objects can be
moved via API or animated.
This method works in a similar way to the Track To constraint in Blender.
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
target |
Object3D | Target object | ||
track_axis |
string |
<optional> |
'Y' | Axis that points to the target object |
up_axis |
string |
<optional> |
'Z' | Axis that points upward |
use_target_z |
boolean |
<optional> |
false | Target's Z axis, not World Z axis, will constraint the Up direction |
influence |
number |
<optional> |
1 | Amount of influence constraint will have on the final solution |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_cube = m_scene.get_object_by_name("cube");
var my_camera = m_scene.get_object_by_name("Camera");
m_const.append_track(my_camera, my_cube, "-X", "Z");
remove(obj, restore_transformopt)
Remove the object's constraint (if any).
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
obj |
Object3D | Constrained object | ||
restore_transform |
boolean |
<optional> |
false | Restore default transform |
- Source:
Example
var m_scene = require("scenes");
var m_const = require("constraints");
var my_sphere = m_scene.get_object_by_name("Icosphere");
m_const.remove(my_sphere);
Type Definitions
StiffViewportPositioning
An object that defines positioning for the stiff viewport constraint.
Type:
- Object
Properties:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
left |
number |
<optional> |
Offset from the left edge of the camera's viewport | |
right |
number |
<optional> |
Offset from the right edge of the camera's viewport | |
top |
number |
<optional> |
Offset from the top edge of the camera's viewport | |
bottom |
number |
<optional> |
Offset from the bottom edge of the camera's viewport | |
distance |
number |
<optional> |
Distance from the camera | |
rotation |
Quat |
<optional> |
Rotation offset | |
hor_units |
string |
<optional> |
"widths" | Left/Right offset units: "heights" or "widths" |
vert_units |
string |
<optional> |
"heights" | Top/Bottom offset units: "heights" or "widths" |
- Source: