Skip to main content

DynamicChain

ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesdamping : number

Damping (Motion Energy Dissipation Coefficient)

Example

chain.damping = 0.3;

Use Case

// damping (DynamicChain)
@customNode()
export class Use Case_DynamicChain_damping extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.damping;
this.info = `DynamicChain damping: ${prev}`;
chain.damping = 0.3; // Example: set to 0.3
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariableselasticity : number

Elasticity (Linear Motion)

Example

chain.elasticity = 0.8; 

Use Case

// elasticity (DynamicChain)
@customNode()
export class Use Case_DynamicChain_elasticity extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.elasticity;
this.info = `DynamicChain elasticity: ${prev}`;
chain.elasticity = 0.8; // Example: set to 0.8
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesstiffness : number

Stiffness (Rotational Stiffness)

Example

chain.stiffness = 2.0; 

Use Case

// stiffness (DynamicChain)
@customNode()
export class Use Case_DynamicChain_stiffness extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.stiffness;
this.info = `DynamicChain stiffness: ${prev}`;
chain.stiffness = 2.0; // Example: set to 2.0
}
}

ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesinertia : number

Inertia

Example

chain.inertia = 1.5;

Use Case

// inertia (DynamicChain)
@customNode()
export class Use Case_DynamicChain_inertia extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.inertia;
this.info = `DynamicChain inertia: ${prev}`;
chain.inertia = 1.5; // Example: set to 1.5
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesforce : Vector3f

External Force

Example

chain.force = new APJS.Vector3f(0, 9.8, 0);

Use Case

// force (DynamicChain)
@customNode()
export class Use Case_DynamicChain_force extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const force = chain.force;
this.info = `DynamicChain force: (${force.x}, ${force.y}, ${force.z})`;
chain.force = new APJS.Vector3f(0, 9.8, 0); // Example: set to (0, 9.8, 0)
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesisLocalForce : boolean

Whether it is a force in local coordinates

Example

chain.isLocalForce = false;

Use Case

// isLocalForce (DynamicChain)
@customNode()
export class Use Case_DynamicChain_isLocalForce extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.isLocalForce;
this.info = `DynamicChain isLocalForce: ${prev}`;
chain.isLocalForce = !prev;
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesisRelative : boolean

Whether to rotate relatively

Example

chain.isRelative = false;

Use Case

// isRelative (DynamicChain)
@customNode()
export class Use Case_DynamicChain_isRelative extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.isRelative;
this.info = `DynamicChain isRelative: ${prev}`;
chain.isRelative = !prev;
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesphysicsAnimation : boolean

Whether to enable physical animation blending (only for objects with animations)

Example

chain.physicsAnimation = false;

Use Case

// physicsAnimation (DynamicChain)
@customNode()
export class Use Case_DynamicChain_physicsAnimation extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.physicsAnimation;
this.info = `DynamicChain physicsAnimation: ${prev}`;
chain.physicsAnimation = !prev;
}
}
ClassTypeNameInterface Description
DynamicChain : DynamicComponentVariablesphysicsAnimationRate : number

Physical animation blend ratio ranges from 0 to 1, where 0 represents full physics and 1 represents full animation

Example

chain.physicsAnimationRate = 0.7;

Use Case

// physicsAnimationRate (DynamicChain)
@customNode()
export class Use Case_DynamicChain_physicsAnimationRate extends BasicScriptNode {
@input() sceneObject: APJS.SceneObject;
@output() info: string;
execute() {
const chain = this.sceneObject.getComponent('DynamicChain') as APJS.DynamicChain;
if (!chain) return;
const prev = chain.physicsAnimationRate;
this.info = `DynamicChain physicsAnimationRate: ${prev}`;
chain.physicsAnimationRate = 0.7; // Example: set to 0.7
}
}
Copyright © 2025 TikTok. All rights reserved.
About TikTokHelp CenterCareersContactLegalCookies