Blender에서 Bone의 자세 계산이 맞지 않을 때의 금 바늘

소개



Blender에서 bpy.struct.PoseBonematrix ( ref. )에 의존하지 않고 Translation matrix를 계산하고 있으면 전혀 수치가 맞지 않기 때문에 울었다.

해결책



구그라면 다음과 같은 트윗을 발견했다.

슈퍼 에스퍼 사람이라면 말해주세요 ... 이것으로 부풀어 버릴까요? ·. 피 c. 라고 r. 코m/c20FK응 X후Q — 아슈리 (@AshleySJP1) May 19, 2019


<script async=""src="https://platform.twitter.com/widgets.js"/>

이 트윗을 바탕으로 다음과 같은 스크립트를 작성했습니다.



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 용서 스마지 ....


좋은 웹페이지 즐겨찾기