BlenderでBoneの姿勢計算が合わないときの金の針
はじめに
Blenderでbpy.struct.PoseBone
のmatrix
(ref.)に頼らずにTranslation matrixを計算していたら、全然数値が合わないので泣いた。
解決策
ググったら以下のようなツイートを見つけた。
超エスパーな人いたら教えてください...これなんで膨らんじゃうかわかりますか...blender上でboneをいじっても膨らみは変わらず、unityでヒューマノイドリグを設定する画面でいじると変形します・・・。 pic.twitter.com/c20FKnXFeQ
— あしゅりー (@AshleySJP1) May 19, 2019
blenderだと見かけ上はまっすぐでも、Unityはロール値が0になるので0にしておかないとインポート時に捩れます。ボーンの編集モードからおかしいボーンのトランスフォームのロール値を0に。 pic.twitter.com/tTXggXoysQ
— 黒宇佐クルル (@KrullFuerst) May 19, 2019
このツイートをもとに以下のようなスクリプトを書いた。
def normalize_armature(armature: bpy.types.Object):
bpy.context.view_layer.objects.active = armature
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
for bone in armature.data.edit_bones:
bone.roll = 0.0
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
これをBlender用numpy utility libraryに組み込み、Linear Blend Skinningを適用したら頂点位置が合った。
緑色の物体はBlender上でArmature(Skeleton)を加えてテキトーにBone Animationを加えたもの。
白いキューブは自作LBSで出した頂点位置を表している。
何とか計算合った...Roll許すまじ....
Author And Source
この問題について(BlenderでBoneの姿勢計算が合わないときの金の針), 我々は、より多くの情報をここで見つけました https://qiita.com/mocobt/items/6659f00321f2ba4a2e4c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .