~~NOTOC~~
====== ExportCharacter(キャラクターモデル情報) ======
このページは過去の情報となります。\\
新しいスクリプトリファレンスは**[[https://developer.virtualcast.jp/vci-docs/api/|こちら]]**になります。
キャラクターモデル情報を取得するのに必要なクラスです。
* **UniVCI v0.35** 以降で Export される VCI で使用できます。
* **バーチャルキャスト v2.3.0** 以降で動作します。
* 現在、この API は**ルーム上でのみ動作します**。
===== メンバ変数・関数一覧 =====
^ ExportCharacter ^^
^ 名前 ^ 説明 ^
| [[ vci/script/reference/exportcharacter#IsAvailable ]] | キャラクターが利用可能か |
| [[ vci/script/reference/exportcharacter#GetBoneTransform ]] | ボーンのTransformを取得する |
===== IsAvailable =====
ExportCharacter.**IsAvailable fun(): bool**\\
キャラクターが利用可能か。\\
キャラクター変更中はfalseとなる。
===== GetBoneTransform =====
ExportCharacter.**GetBoneTransform fun(boneName: string): usertype**\\
ボーンのTransformを取得する。\\
^boneName| 詳しくは[[https://docs.unity3d.com/ja/2018.4/ScriptReference/HumanBodyBones.html|HumanBodyBones]] を参照|
=== 返り値 ===
''table{"position": Vector3, "rotation": Quaternion}''\\
無効なボーン名や対応していないボーンを指定した場合はnilが返る。
=== サンプル ===
local player = vci.vc.room.GetAllPlayers()[1]
local character = player.Character
local previousIsAvailable = character.IsAvailable()
-- IsAvailableが変化したタイミングでprintする
local function DetectIsAvailableValueChange()
if character.IsAvailable() == previousIsAvailable then return end
if character.IsAvailable() then
print("Character got available.")
else
print("Character got unavailable.")
end
previousIsAvailable = character.IsAvailable()
end
vci.StartCoroutine(
coroutine.create(
function()
while true do
DetectIsAvailableValueChange()
coroutine.yield()
end
end
))
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