UnigineEditor
界面概述
资产工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
Setting Up Properties
照明
Landscape Tool
Sandworm (Experimental)
使用编辑器工具执行特定任务
Extending Editor Functionality
编程
基本原理
搭建开发环境
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes

Unigine::BodyRagdoll Class

Header: #include <UniginePhysics.h>
Inherits: Body

This class is used to simulate ragdoll bodies. This body automatically generates a ragdoll skeleton, i.e. collision shapes that are bound to the bones and joints that connect them.

See Also#

  • A set of UnigineScript API samples located in the <UnigineSDK>/data/samples/physics/ folder:
    • ragdoll_00
    • ragdoll_01
    • ragdoll_02
    • ragdoll_03
    • ragdoll_04
    • ragdoll_05
    • ragdoll_06
    • ragdoll_07
    • ragdoll_10
    • ragdoll_11
    • ragdoll_12
    • ragdoll_13

BodyRagdoll Class

Members


static BodyRagdollPtr create ( ) #

Constructor. Creates a ragdoll with default properties.

static BodyRagdollPtr create ( const Ptr<Object> & object ) #

Constructor. Creates a ragdoll with default properties for a given object.

Arguments

  • const Ptr<Object> & object - Object approximated with the new ragdoll.

void setBoneFrameBased ( int bone, int based ) #

Sets a value indicating if bone transformations should be based on skinned animation data or conditioned by physics.

Arguments

  • int bone - Bone number.
  • int based - Positive value to set skinned animation-based transformations, 0 for ragdoll physical animation.

int isBoneFrameBased ( int bone ) #

Returns a value indicating if bone transformations are based on skinned animation data or conditioned by physics.

Arguments

  • int bone - Bone number.

Return value

Positive value if transformations are based on skinned animation, 0 if they are ragdoll physical animation.

const char * getBoneName ( int bone ) #

Returns the name of a given bone.

Arguments

  • int bone - Bone number.

Return value

Bone name.

int getBoneNumber ( int bone ) #

Checks whether the bone with the given number exists.

Arguments

  • int bone - The number of the bone.

Return value

Bone number.

void setBones ( const Ptr<Node> & node ) #

Imports a set of bones from a given node.

Arguments

  • const Ptr<Node> & node - Node, from which the bones will be imported.

Ptr<Node> getBones ( ) #

Exports a set of bones into a given node.

Return value

Node, into which the bones will be exported.

bool updateBones ( ) #

Updates transformations of all ragdoll bones.

Return value

true if transformations of all ragdoll bones were updated successfully; otherwise, false.

Math::Mat4 getBoneTransform ( int bone ) #

Returns the transformation of animation bone for the current frame.

Arguments

  • int bone - Bone number.

Return value

Bone transformation matrix.

void setFrameBased ( int based ) #

Sets a value indicating if ragdoll bones move according to the animation written in the file.

Arguments

  • int based - true to make the bones move according to the file animation, false to make the movements physics-driven.

int isFrameBased ( ) #

Returns a value indicating if ragdoll bones move according to the animation written in the file.

Return value

true if the bones move according to the file animation; otherwise, false.

void setMass ( float mass ) #

Sets a mass of the ragdoll.
Notice
If g (Earth's gravity) equals to 9.8 m/s 2, and 1 unit equals to 1 m, the mass is measured in kilograms.

Arguments

  • float mass - Mass of the ragdoll.

float getMass ( ) #

Returns the mass of the ragdoll.
Notice
If g (Earth's gravity) equals to 9.8 m/s 2, and 1 unit equals to 1 m, the mass is measured in kilograms.

Return value

Mass of the ragdoll.

int getNumBones ( ) #

Returns the number of bones in the ragdoll.

Return value

Number of bones.

void setRigidity ( float rigidity ) #

Sets rigidity of bones movement, i.e. how much interpolated linear and angular velocities of all bones affect velocities of each separate bone.

Arguments

  • float rigidity - Rigidity of bones movement. Provided value is saturated in range [0;1]:
    • By the value of 0, bones are independent.
    • By the value of 1, bones movement is uniform, as interpolated velocity greatly changes velocities of each bone.

float getRigidity ( ) #

Returns the rigidity of bones movement, i.e. how much interpolated linear and angular velocities of all bones affect velocities of each separate bone.

Return value

Rigidity of bones movement:
  • By the value of 0, bones are independent.
  • By the value of 1, bones movement is uniform, as interpolated velocity greatly changes velocities of each bone.

int createBones ( float error = 0.2, float threshold = 0.01, int capsule = 0 ) #

Automatically generates a simplified skeleton from the mesh and its bones. Each bone is approximated with a convex hull or a capsule based on given parameters.

Arguments

  • float error - Permissible error, which is used for creating convex hulls. This is an optional parameter.
  • float threshold - Threshold, which is used to detect and discard too small convex hulls. A convex hull, which volume is smaller than an average volume multiplied by the threshold, is discarded. This is an optional parameter.
  • int capsule - Approximation shape. By the value of 0, convex hull is used; the value of 1 sets capsule approximation.

Return value

Created bone number.

int findBone ( const char * name ) #

Searches for a bone with a given name.

Arguments

  • const char * name - Name of the bone.

Return value

Number of the bone in the list of bones, if it is found; otherwise, -1.
Last update: 2020-07-31