전체 글 (99)

10
28

 

옷을 캐릭터와 합치지 않고 개별적으로 리깅하고 있었다.

 

게임에 들어갈 캐릭터라 옷 커스터마이징 기능 구현을 할 예정이기 때문이다.

 

계속 피부가 옷을 뚫는 건지 옷이 들어가는 건지 계속 찢어진다.

 

이게 머리카락이나, 눈처럼 머리뼈 하나에만 상속되면

 

그냥 뼈에 리깅시키면 되지만 옷 같은 경우는 아니다.

 

팔 다리 손 등 여러 곳에서 가중치 영향을 받는다.

 

몸과 같은 버텍스 그룹으로 복사해서 넣어주면 정말 편하다.

 

 

(이미 옷은 리깅한 관계로 예시는 머리카락으로 하겠다)

 

옷, 캐릭터 선택해서 Ctrl + P 로 Empty Groups속성으로 상속해준다.

DataTransfer에 버텍스 그룹 받아올 소스와 버텍스 데이터 받겠다고 체크해 주고 적용한다. 

그리고 모디파이어툴창에서 Armature위에 DataTransfer를 추가해주고 사진과 같이 해준다. 그러면 끝이다.

 

진짜 빠르게 클릭하면 1분 만에 옷 리깅이 끝난다.

 

이걸 몰랐던 나는 인생의 절반을 손해 본 것 같다.

 

 

 

 

COMMENT
 
10
28

 

1. 이동 행렬 (Translation Matrix)

(x,y,z) 위치를 (tx, ty, yz)만큼 이동

 

_41, _42, _43의 행렬 요소를 곱한다.

x+tx, y+ty, z+tz

 

다이렉트X에서 제공하는 함수는 다음과 같다.

D3DXMATRIX matMatrix; D3DXMatrixTranslation(&matMatrix, 1.0f, 1.0f, 1.0f);

 

 

2. 신축 행렬 (Scale Matrix)

(x,y,z)를 x,y,z축으로 Sx, Sy, Sz만큼 Scaling(확대/축소)

수식이 (x*sx, y*sy, z*sz)가 되므로

_11, _22, _33 성분이 0이되면

0이되어 성분값이 0으로 없어진다.

 

다이렉트X에서 제공하는 함수는 다음과 같다.

D3DXMATRIX matMatrix; D3DXMatrixScaling(&matMatrix, 1.0f, 1.0f, 1.0f);

 

 

3. 회전 행렬 (Rotation Matrix)

DirectX는 왼손좌표계를 쓴다.

Radian(라디안)과 Degree(호도값)가 있다.

1라디안은 약 57.3도에 해당한다.

파이 라디안은 180도이다.

 

180 degree = π radian

1 degree = π / 180 radian

x degree = x * π / 180 radian

 

π radian = 180 degree

1 radian = 180 / π degree

x radian = x * 180 / π degree

 

인간은 호도값, 컴퓨터는 라디안 값을 선호해서

변환하는 함수를 알 필요가 있는 부분

 

다이렉트X에서 제공하는 함수는 다음과 같다.

D3DXToDegree( radian ) => radian 값을 degree 값으로 변환. D3DXToRadian( degree) => degree 값을 radian 값으로 변환

 

위 사진 순서대로 z축 회전 행렬, x축 회전행렬, y축 회전행렬이다.

고싸-싸코만 외워주면 편하다.

 

다이렉트X에서 제공하는 함수는 다음과 같다.

 

z축 : D3DXMatrixRotationZ(&행렬, f라디안)

x축 : D3DXMatrixRotationX(&행렬, f라디안)

y축 : D3DXMatrixRotationY(&행렬, f라디안)

XYZ 회전이 적용된 행렬 : D3DXMatrixRotationYawPitchRoll(&행렬, fyaw, fpitch, froll)

Pitch : X축,Yaw : Y축, Roll : Z축

Roll -> Pitch -> Yaw 순으로 곱해진다.

임의의 축 : D3DXMatrixRotationAxis(&행렬, vector3정점벡터, f각도)

 

 

 

COMMENT