작성ìž: ê¹€ì˜í˜„(["erunc0"])[[BR]] C++ 3D 게임 프로그래ë°[[BR]] ---- [[TableOfContents]] == 3D 기초 == === 1. 좌표계 사용하기 === 3D ì˜ì—ì—ì„œì˜ ìž‘ì—…ì„ ìœ„í•´ì„œëŠ” ì‚¬ìš©í• ì¢Œí‘œê³„ë¥¼ ì •ì˜í•´ì•¼ 한다.[[BR]] 가장 ì¼ë°˜ì ì¸ ì¢Œí‘œê³„ì¸ ë°ì¹´ë¥´íЏ 좌표계는 ì›ì 으로 ì‚¬ìš©í• ì ê³¼ ì›ì ì„ ì§€ë‚˜ë©° 서로 ì§€ê°ì¸ 세 ê°œì˜ ì¶•ì´ ìžˆë‹¤.[[BR]] ê·¸ë¦¬ê³ , ì´ëŸ° ë°ì¹´ë¥´íЏ 좌표를 í‘œí˜„í• ìˆ˜ 있는 구조는.. 다ìŒê³¼ 같다. {{{~cpp struct Point3D { float x; float y; float z; } }}} ==== 1.1 í´ë¼ 좌표계 ==== "ì›ì ì—서 ë™ìª½ì„ ë°”ë¼ë³´ë©° 죽쪽으로 38ë„ íšŒì „í•˜ê³ , 위로 65ë„ íšŒì „í•œ í›„ì— ì´ ì„ ì„ ë”°ë¼ 7.47피트로 ì´ë™"하는 방법으로 위치를 ì„¤ëª…í• ìˆ˜ 있다. 그러나, 수학ì 으로 í’€ 경우, ì ì„ ì´ë¦¬ì €ë¦¬ 움ì§ì´ë©´ 처리하기가 ë”ìš´ ì–´ë ¤ì›Œì§„ë‹¤. 그래서 ì´ëŸ° í´ë¼ 좌표계는 ì œì–´ê°€ ì–´ë µê¸° ë•Œë¬¸ì— 3D엔진ì—서는 ê±°ì˜ ì‚¬ìš©í•˜ì§€ 않는다. ==== 1.2 다중 좌표계 사용하기 ==== 3D 오브ì 으를 사용하여 작업하다 ë³´ë©´ í•˜ë‚˜ì˜ ì 으로 작업하는 것보다 여러 ì ì„ ë¬¶ì–´ 작업하는 ê²ƒì´ íš¨ìœ¨ì ìž„ì„ ì•Œê²Œ ëœë‹¤. 예를 들어, 컴퓨터를 모ë¸ë§í• 경우 ë‹¤ìŒ ì½”ë“œì™€ ê°™ì€ êµ¬ì¡°ë¡œ ì €ìž¥í• ìˆ˜ 있다. {{{~cpp struct CPU { Point3D center; // the center of CPU. in world coordinates Point3D coord[8]; // the 8 corners of the CPU box relatives to the center point }; }}} ì´ë ‡ê²Œ 하면 게임ì—서 CPU를 움ì§ì—¬ì•¼ í• ê²½ìš°, CPU를 ê·¸ë¦¬ëŠ”ë° ì‚¬ìš©í•˜ëŠ” ëª¨ë“ ì ì— ëŒ€í•œ 컴퓨터 중앙 ë§Œ 움ì§ì´ë©´ ëœë‹¤.[[BR]] í•˜ë‚˜ì˜ code[] ì ˆëŒ€ "세계"좌표를 êµ¬í•˜ë ¤ë©´ 다ìŒê³¼ ê°™ì€ ì½”ë“œë¥¼ 사용한다. {{{~cpp struct CPU { Point3D center; Point3D coord[8]; Point3D GetWorldCoord (int index) { Point3D result; result.x = center.x + coord[index].x; result.y = center.y + coord[index].y; result.z = center.z + coord[index].z; return result; } }; }}} CPU::GetWorldCoord(int index)는 ê·¸ ì„¸ê³„ì˜ ì›ì ì— ëŒ€í•´ CPU ì—¬ëŸê°œ ì ì¤‘ì˜ í•˜ë‚˜ë¥¼ 반환한다. 단지 coord[index]를 반환한다면, CPUì¤‘ì•™ì— í•´ë‹¹í•˜ëŠ” CPUì ì„ ë°˜í™˜í•˜ê¸° ë•Œë¬¸ì— ë‚˜ì¤‘ì— CPU를 ê·¸ëž ë•Œ ì›í•˜ëŠ” 대로 그릴 수 없게 ëœë‹¤. ì¤‘ì•™ì„ ì›€ì§ì´ë©´ì„œë„ CPUì ì—¬ëŸê°œë¥¼ ëª¨ë‘ ì˜®ê¸°ëŠ” 효과를 낼 ìˆ˜ë„ ìžˆë‹¤. === 2. 3Dì˜ì—ì—서 2D컴퓨터 화면으로 === ì—시나 ë‚˜ì˜ ìˆ˜í•™ì˜ í•œê³„ë¡œ. 그냥 쓰윽 보면서 넘어 갔다. ë”소리ì¸ì§€ëŠ” ëª¨ë¥´ê² ê³ . ã…‹ã…‹ã…‹ 그냥 ê°€ì ¸ë‹¤ ì“°ë©´ ë˜ì§€. ë‚˜ì¤‘ì— ê¶ê¸ˆí•˜ë©´ ë” íŒŒë³¼ê²ƒì´ë‹¤.[[BR]] 함수를 불러 쓰듯ì´. 케케.. ã…¡ã…¡; ì–´ë ¤ì›Œ.. 해성ì´í˜•한테 물어ë´ì•¼ì§€.. --; [[BR]] === 3. 그래픽 í”„ë¡œê·¸ëž˜ë° ê°œìš” ===