http://ljh131.cafe24.com/beeswing/zbxe/30358
공 10개가 막 튕기는 예제를 만든다고 하죠...
3D 그래픽맨에게...'공한개만 맹글어주세염.' 이라고 하죠.
그럼 그래픽맨은 십중팔구 원점을 중심으로한 구를 만들어 줍니다.
그럼 이걸 가지고 월드에 뿌릴려면...
공의 중심점 목록이 있겠죠? ball[n].xyz
근디..공은 수십개의 점으로 이루어져 있습니다. ball[n].vertex[i]
ball[n].vertex[i]는 그래픽맨이 실제로 만들어준 데이터입니다.
근데..이 점들은...구의 중심을 원점이라 했을때의 상대 좌표죠?
이때 ball[n].vertex[i]의 좌표계를 '로컬좌표'라고 합니다.
이때, ball[n].vertex[i]는 모든 공이 같은값을 가짐니다.
(그래픽맨이 한개밖에 안만들어 주었으니..)
공유해도 된다는 말이죠. (같은 모양의 캐릭터가 수십마리 나올때..^^)
그럼 실제 공을 화면에 찍으려면 모든 점을 실제 위치에 옮겨놔야 겠죠.
ball[n].world_vertex[i].xyz = ball[n].vertex[i].xyz + ball[n].xyz;
ball[n].world_vertex[i]는 실제 각 버텍스들의 월드상의 위치.
즉 '월드좌표'입니다.
실제 그물체가 있어야 할곳으로 이동/회전 시켜준다라는 말은 바로
위에서 했던 작업을 말하는겁니다. ( 로컬좌표->월드좌표 )
프로그램상에선..카메라가 왼쪽으로 움직일때 월드상에 객체들을
오른쪽으로 재 배치 시킵니다. 뿐만아니라 왼쪽으로 돌면 물체들을
오른쪽으로 돌려놓고...
뭐...개념상 그렇다는거죠...이렇게 이야기하나 저렇게 이야기 하나..
결국 최종적으로 나오는 공식은 마찬가지 입니다.
이해가 되셨기를...
감자 성수올림...@~
'수학 (Mathematics) > 3D수학' 카테고리의 다른 글
표면 스케터링으로 실시간 근사 (0) | 2012.11.02 |
---|---|
D3DXMatrixTransformation2D (0) | 2012.11.02 |
라디오시티 (0) | 2012.11.02 |
에르미트 (0) | 2012.11.02 |
Z-Fighting (0) | 2012.11.02 |