Super Kawaii Cute Cat Kaoani 'blender' 태그의 글 목록
728x90

blender 6

[Blender] Armature(뼈대)에 Mesh 연결하기

blender에서 Armature(뼈대)에 Mesh를 연결하는 방법을 알아보자. 아래의 그림에서 왼쪽의 skeleton이 Armature(뼈대)에 해당하며, 오른쪽 아래의 사람 모양이 Armature에 연결하고자 하는 Mesh이다. 아래의 그림은 Object Mode에서 보았을때의 화면을 캡쳐한 것으로, Armature가 rest pose를 취하고 있지 않아 Mesh의 pose와는 차이가 있는 상태이다. Edit Mode에서의 화면을 보면, 위와 같이 Mesh와 Armature의 모양이 잘 일치하는 것을 볼 수 있다. 이러한 상황에서, 이 둘을 연결하는 방법을 알아보자. 1) 다시 Object 모드로 돌아가서, Mesh를 클릭해준 다음, shift 키를 누른 상태로 armature를 선택하여 Mesh와 ..

연구/Blender 2024.02.27

[Blender] matrix, matrix_basis, matrix_local, matrix_world관계

blender에서는 다양한 종류의 matrix를 사용하고 있다. Posebone.matrix, Posebone.matrix_basis, bone.matrix_local...등 다양한 종류의 matrix가 등장하는데..각각의 의미와 이들간의 관계에 대해서 알아보자. Posebone.matrix: armature space에서의 bone의 transformation을 의미한다. 만약 object가 rest pose를 취하고 있다면 Posebone.matrix의 값은 bone.matrix_local의 값과 동일하다. Posebone.matrix_basis: bone space(rest pose에 대해 표현한다는 의미)에 대한 bone의 transformation 값을 담고 있다. bone.matrix_loca..

연구/Blender 2024.02.19

[Blender] blender에서 skeleton joint orientation 구하기

1) parent joint에 대해 표현된 joint orientation obj = bpy.data.objects['원하는 오브젝트 이름'] pb = obj.pose.bones['원하는 posebone이름'] rotation_matrix = (pb.bone.matrix_local @ matrix_basis @ pb.bone.matrix_local.inv()).to_3x3() 위의 코드를 거치면 blender 상에서 joint의 orientation을 구할 수 있다. opengl 상에서의 orientation을 구하고 싶다면, def blender_to_opengl(mb): mb = np.array(mb) mo = np.array([ [mb[0, 0], mb[0, 2], -1 * mb[0, 1]], [m..

연구/Blender 2024.02.16

[Blender] viewport에서 시점 변경 python script로 구현하기

blender를 실행시키면 가장 먼저 나오는 화면인 viewport에서의 시점을 변경하는 법(pan, oribit 기능)을 python script로 어떻게 구현할 수 있을지 알아보자. 1) target 지점 변경: pan 현재 viewport view location이 (0, 0, 0)으로 세팅되어있다. 이 경우에는 viewport가 원점을 바라보게 된다. 이 값(viewport에서 바라보는 지점)을 변경하기 위해선 다음과 같은 코드를 사용하면 된다. # 현재 활성화된 3d viewport를 찾기 for area in bpy.context.screen.areas: if area.type == 'VIEW_3D': break # 3d viewport의 정보 가져오기 space_data = area.spac..

연구/Blender 2024.01.18

blender bvh load 관련 알아낸 사실 정리 (2)

blender에 한달 가까이 고통받고, bvh load하는 코드까지 뜯어내면서 알아낸 "blender bvh load 관련" 알아낸 사실들을 세세하게 정리하고자 한다. 시작! 1) armature coordinate에서 rest pose에 대한 정보는 matrix_local에 담겨있다! blender에서 각 pose.bone에 대한 회전값을 생성할때 rest pose에 대해 계산을 하기 때문에 각 bone의 rest pose에 대한 정보가 필요하다. armature coordinate에 대해서 표현된 rest pose는 다음과 같이 확인할 수 있다. bpy.data.armature["object 이름"].bones[i].matrix_local pose.bone.matrix에는 armature coordi..

연구/Blender 2023.04.18

Blender bvh load 관련 알아낸 사실 정리

File > import > bvh 를 하면 bvh가 import 된다. import 된 모션 데이터를 확인하기 위해서는 bpy.data.actions에서 해당되는 인덱스의 action을 뽑아와야한다. 나의 경우 'aiming1_subject1.bvh'를 import 했기 때문에 action = bpy.data.actions['aiming1_subject1'] 을 하면 내가 import한 bvh의 motion data가 action이라는 변수에 저장되게 된다. action은 여러 정보들로 구성되어있는데 내가 원하는 정보는 매 frame마다 root의 position이 어디에 위치하는지, 그리고 각 관절의 rotation 값은 어떻게 되는지였다. 이를 알기 위해서는 뽑아낸 action에서 fcurves 값..

연구/Blender 2023.03.20
728x90
728x90