2. 3D 관절 회전 : 위 그림의 오른쪽과 같은 3D 표면(surface, mesh)을 표현하는 방식, x/y/z 각도 3차원과 위치 3차원으로 6D라고 부르기도 한다.
3D 관절의 회전(각도)은 팔꿈치라고 치면, 좌우, 위아래, 앞뒤 방향이라고 볼 수 있다.
위 그림에 있는 사람의 맨몸 형태를 3D Human Mesh라 하는데, 3D Human Mesh는 3D 관절 회전(Pose)과 3D 길이/체형(shape)으로 구성되어 있다.
최종적으로 위의 그림처럼 3D Human Mesh를 얻어내는 모델을 3D Human Model이라 하는데, Pose에 관한 파라미터인 3D 관절 회전(Jx3)과 3D 길이 및 체형에 관한 파라미터 Beta를 input으로 받는다.
그리고 Beta에서부터 길이(키, 팔길이 등) 및 체형을 결정하고, 위 그림과 같은 T-posed 3D mesh를 얻어낸다.
얻어낸 뒤, 3D 관절 회전 파라미터와 함께 skinning function을 적용하면, 위의 축구하는 그림과 같은 3d mesh가 나온다.
1-1. 3D 관절 회전
해당 관절(팔꿈치)의 부모 관절(어깨)에 상대적인 3D 회전
회전으로 인해 모든 자식 관절들이 이동 (어깨-> 팔꿈치->손목)
따라서, leaf node(손목, 발목, 머리)에 해당하는 관절들은 3D 회전이 정의되지 않음 (child node가 없으니까)
root node(pelvis)의 3D 회전은 global rotation(전신의 3D 회전)에 해당한다.
1-2. 3D 길이 및 체형
T-Pose를 취한 사람의 길이와 체형에 관한 파라미터
PCA를 통해 사람의 체형, 길이에 대한 latent space를 모델 - T-Pose를 취한 큰 규모의 3D scan dataset이 있다고 가정 - PCA 알고리즘 돌림(데이터를 구분하는 가장 주된 기준을 찾는 것) - 사람들의 체형을 구분하는 주된 기준 : PCA Components - 컴포넌트들의 베타(계수)를 곱한 뒤 더해서 최종 T-posed 3D mesh를 얻음 - 키, 체형, … (1, 2번째가 가장 큰 기준) : 0.1 0.1 - 키 작고 마른사람, 0.8 0.1 - 키 크고 마른 사람
Skinning function
피부를 입히는 function, 관절들의 위치로부터 피부를 알아낸다
Skinning Weight (VxJ) : 각 mesh vertex마다 각 관절에 영향을 받는 정도 (팔꿈치의 vertex는 팔꿈치의 rotation에 가장 영향을 크게 받는다.) 3D human model마다 3D artist가 미리 weight를 만들어 놓고, 그걸 별도의 툴로 refine해서 사용한다
Linear Blend Skinning(LBS)
Skinning function 중 대표적인 방법으로, 모든 관절의 변형을 선형으로(linear) 합쳐서(blend) 3D mesh를 얻는 skinning 알고리즘
단순하지만 꽤 그럴듯한 결과가 나와서 많이 쓴다
pose-dependent correctives
머리 숙이고 인사할때 뱃살 쳐지는 거 correction시키는 방법 : skin이 더 real하게 만드는 것
LBS의 한계점을 극복하기 위한 것
데이터 수집
여러 체형, 키를 가진 사람의 3D scan 필요 : 전문 스튜디오 필요
pose dependent corrective : 여러 포즈를 취한 사람의 3d scan 필요 (등 수그렸을 때 뱃살 쳐지는거)
skinning weight 만들기 : 3D artist가 만든 후 약간의 fine-tuning
3D scan 시 native 사람 모델이 목표기 때문에, 타이즈 같은거 입은 배우 고용해서 촬영
위의 3D 캐릭터처럼 목표로 하는 캐릭터가 분명하게 있으면, shape 변형은 따로 필요없기 때문에 pose(Jx3)만으로 변형이 가능하다.