GetBoneTransform#

ExportCharacter.GetBoneTransform(boneName)#

ボーンの Transform を取得します。
ボーン名は HumanBodyBones を参照してください。

キャラクターが読み込み中、あるいは指定したボーンがキャラクターに存在しない場合は nil を返します。
指定したボーンがキャラクターに存在する場合の返り値は以下のような table です。

フィールド

position

Vector3

rotation

Quaternion

Parameters:

boneName (string) -- ボーン名

Returns:

ボーンの Transform

Return type:

table

Example#

local player = vci.vc.room.GetAllPlayers()[1]
local character = player.Character

local bones = {
    "Hips",
    "LeftUpperLeg",
    "RightUpperLeg",
    "LeftLowerLeg",
    "RightLowerLeg",
    "LeftFoot",
    "RightFoot",
    "Spine",
    "Chest",
    "UpperChest",
    "Neck",
    "Head",
    "LeftShoulder",
    "RightShoulder",
    "LeftUpperArm",
    "RightUpperArm",
    "LeftLowerArm",
    "RightLowerArm",
    "LeftHand",
    "RightHand",
    "LeftToes",
    "RightToes",
    "LeftEye",
    "RightEye",
    "Jaw",
    "LeftThumbProximal",
    "LeftThumbIntermediate",
    "LeftThumbDistal",
    "LeftIndexProximal",
    "LeftIndexIntermediate",
    "LeftIndexDistal",
    "LeftMiddleProximal",
    "LeftMiddleIntermediate",
    "LeftMiddleDistal",
    "LeftRingProximal",
    "LeftRingIntermediate",
    "LeftRingDistal",
    "LeftLittleProximal",
    "LeftLittleIntermediate",
    "LeftLittleDistal",
    "RightThumbProximal",
    "RightThumbIntermediate",
    "RightThumbDistal",
    "RightIndexProximal",
    "RightIndexIntermediate",
    "RightIndexDistal",
    "RightMiddleProximal",
    "RightMiddleIntermediate",
    "RightMiddleDistal",
    "RightRingProximal",
    "RightRingIntermediate",
    "RightRingDistal",
    "RightLittleProximal",
    "RightLittleIntermediate",
    "RightLittleDistal"
}

for k,v in pairs(bones) do
    local transform = character.GetBoneTransform(v) -- {"position": Vector3, "rotation": Quaternion}
    if transform == nil then
        print("bone is not found: "..v)
    else
        print(v.."\nposition:"..tostring(transform.position).."\nrotation: "..tostring(transform.rotation))
    end
end