ë�¼ê·¸ë‚˜ë¡œí�¬ë¡œ ìœ ëª…í•œ ê·¸ë�¼ë¹„티사ì�˜ 김학규 사장님ì�´ ì“´ 글입니다. (한 4ë…„ì „ 쯤ì—�ì—¬.)
좋ì�€ê²ƒ 같아서 펴왔습니다. ì œ 멋대로 시차ì—� 따른 주ì„�ì�„ 달아 ë³´ê² ì�Œë‹¤. -HS
좋ì�€ê²ƒ 같아서 펴왔습니다. ì œ 멋대로 시차ì—� 따른 주ì„�ì�„ 달아 ë³´ê² ì�Œë‹¤. -HS
3D Programming ì�„ 시작하는 사람ì�€ ìƒ�당히 막막한 ìƒ�태ì—�서 시작하게 ë�˜ê¸° ë§ˆë ¨ì�¸ë�°, 실질ì �으로 거치면 좋ì�„ 것ì�´ë�¼ê³ ìƒ�ê°�ë�˜ëŠ” 몇가지 스í…�ì�„ ì �ì–´ 보았습니다
1. 장비ì�˜ ë§ˆë ¨ ¶
아무래ë�„ 그냥 VGA ì—�서 만드는 것보다는 ê°€ì†�기능ì�´ 있는 카드ì—�서 작업하면 훨씬 재미있습니다. (중요한 ìš”ì†Œì£ ..) 만약 현재 쓰는 카드가 ì „í˜€ ê°€ì†�기능ì�´ 없다면 ì¤‘ê³ ë¶€ë‘�ë�¼ë�„ 하나 사서 달아보시길 ê¼ ê¶Œí•©ë‹ˆë‹¤
2. 모ë�¸ë§� 프로그램 연습 약간 ¶
3ì°¨ì›� 프로그래ë°�ì�„ í•˜ë ¤ë©´ 최소한 맥스(3d studio max)ì�˜ ê¸°ë³¸ì •ë�„ (화면ì—� 박스 ë°°ì¹˜í•˜ê³ ì—°ê²°í•´ì„œ 움ì§�ì�´ê¸°ë“±) 는 알아ë‘�는 것ì�´ 필수입니다.
3. ê´€ë ¨ SDK ì�˜ 입수 ¶
DirectX 6 SDK ì •ë�„는 ê¹”ì•„ë†”ì•¼ê² ì£ . Immediate mode essential í•ëª©ì •ë�„는 ê¼ ì�½ì–´ë´�야 합니다
- ì˜›ë‚ D3dì—�는 모드가 ë‘�가지가 있었는ë�°ìš” retained mode 하구 immediate mode ê°€ 있었는ë�° retained ê°€ immediate위ì—�서 한계층 ë�” ì¶”ìƒ�í™” 시킨것ì�´ë�¼ 하ë�”êµ°ìš”. 보통 immediate를 사용하는것 ê°™ë�”랬습니다. d3d안ì�¨ë´�서리.. --; ì •í™•í•˜ì§„ 않지만
4. ì§€ì†�ì �ì�¸ ìž�료 공급ì›� 확보 ¶
http://cg.cs.tu-berlin.de/~ki/engines.html ì—� ë³´ë©´ 여러가지 공개, ìƒ�ìš© 엔진들ì�˜ 리스트가 ì •ë¦¬ë�˜ì–´ 있습니다. 아마 3D 프로그래ë°�하는 ì‚¬ëžŒì¹˜ê³ ì�´ 페ì�´ì§€ì—� 안가본 사람ì�€ 별로 ì—†ì�„것입니다만, 노파심ì—�서..
- http://www.hitel.net/~kaswan/ ë�„ 추천입니다. 김성완 님ì�´ë�¼ê³ .. unicosaì¶œì‹ ì�´ì‹œê³ 미리내 소프트 ì‹œì ˆ.. 등.. 호랑ì�´ 담배먹ë�˜ ì‹œì ˆì—� ì�´ë¯¸ 필드ì—�서 ê²½ë ¥ì�„ 쌓으시ë�˜ ë¶„. 성완님ì�´ ë§Œë“œì‹ g-matrixë�¼ëŠ” 엔진ì�˜ 소스를 ì–»ì�„ 수 ìžˆê³ ì—¬ëŸ¬ 칼럼
5. 기본 벡터, í–‰ë ¬ê´€ë ¨ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì�˜ 작성 ¶
Direct3D ê°™ì�€ë�°ì—� ë´�ë�„ ì˜ˆì œë¡œ 들어있는 벡터나 í–‰ë ¬ê´€ë ¨ 루틴들ì�´ 있는ë�° 곱하는 ë°©ì‹�ì�´ 좀 골때리게 ë�˜ì–´ìžˆì–´ì„œ 아마 í�¬ë‚˜í�° 혼ë�™ì�„ ê°€ì ¸ì˜¬ í™•ë¥ ì�´ 높습니다. 3D 를 배우는 목ì �ì�´ 단지 화면ì—� 사ê°�형 몇개 ë�Œë¦¬ëŠ” 것ì�´ 아니ë�¼ 게임ì�´ë‚˜ ì—�디터를 만들기 위해서ë�¼ë©´ 벡터나 í–‰ë ¬ ì—°ì‚° ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì •ë�„는 ìž�기가 ì§�ì ‘ ë§Œë“ ê²ƒìœ¼ë¡œ ì“°ê³ DirectX 는 하드웨어 초기화나 모드세팅 처리랑 삼ê°�형 그리는 부분 (DrawPrimitive) ë§Œ 쓰는 것ì�´ 좋ì�„ 것입니다.
6. 기본ì �ì�¸ í”„ë ˆìž„ì›�ì�˜ 작성 ¶
ìˆ˜í•™ê´€ë ¨ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ê°€ ì–´ëŠ�ì •ë�„ 모습ì�„ 갖추었으면, ì�´ì œ 최초로 ë”ê°€ ë�Œì•„가는 것ì�„ 만들어 볼때입니다.. ì�¼ë‹¨ì�€ 최소한ì�˜ 초기화와 실행 ì ˆì°¨ë¥¼ 갖춘 프로그램ì�„ 만들어 놓ë�„ë¡� 합니다. 화면ì—� 무언가를 그리는 함수 ê°™ì�€ 것ì�€ 쉽게 바꿔치기 í• ìˆ˜ 있ë�„ë¡� í•´ 놓는 것ì�´ 좋ì�„ 것입니다. ì�´ëŸ° 뼈대 ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì�˜ 형태ì—� 대해 ì°¸ì¡°í•˜ì‹¤ë ¤ë©´ OpenGL ê´€ë ¨ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì¤‘ 하나ì�¸ glut 를 참조하심ì�´ 좋ì�„ 듯..
ì�´ 단계까지는 화면ì—� 그리는 ë‚´ìš©ì�´ ì§�ì ‘ 노가다 코딩으로 그릴 수 있는 간단한 í��ë¸Œì •ë�„로 í•œì •ë�˜ì–´ 있ì�„ 것입니다. ë”ê°€ 좀 ë�” í�¼ë‚˜ëŠ” 것ì�„ ê·¸ë¦¬ë ¤ë©´ 맥스같ì�€ 외부툴ì—�서 ë�°ì�´íƒ€ë¥¼ ê°€ì ¸ì™€ì•¼ 합니다
ì�¼ë‹¨ 맛뵈기만 í•˜ë ¤ë©´ ASC í�¬ë§·ì�„, 좀 ë�” ì œëŒ€ë¡œ ë�œ ë�°ì�´íƒ€ë¥¼ ê°€ì ¸ì˜¤ë ¤ë©´ ASE í�¬ë§·ì�„ ì�½ëŠ” 부분ì�„ 만들어야 í• ê²ƒìž…ë‹ˆë‹¤.
ì�´ 시ì �ì—�서 여러가지 해결해야 í• ì‚¬í•ì�´ ìƒ�기는ë�°, 첫째로는 파ì�¼ í�¬ë§·ì—� 대해서 ì •í™•ížˆ ì�´í•´í•˜ê³ , ê°� í•목ì�´ ì–´ë–¤ ì—í• ì�„ 하는 것ì�¸ì§€ë¥¼ 알아야 í•˜ê² ìœ¼ë©°, 둘째로는 비êµ�ì � 여러단계로 복잡하게 구성ë�˜ì–´ 있는 3D Scene Data 를 효율ì �으로 ì •ë ¬í•˜ê¸° 위한 ìž�료구조를 ë‚´ 프로그램ì—� 심는 것입니다. STL ê°™ì�€ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ë¥¼ 능숙하게 ì‚¬ìš©í• ìˆ˜ 있다면 ë§Žì�€ ë�„움ì�´ ë� 것입니다. 가급ì �ì�´ë©´ 계층ì �으로 구성ë�œ 모ë�¸ì�„ ì�½ì�„ 수 있ë�„ë¡� 해야 나중ì—� ì• ë‹ˆë©”ì�´ì…˜ë�„ í•´ë³´ê³ í• ìˆ˜ ìžˆê² ì£ . 세째로는 기본 ì�´ìƒ�ì�˜ ê°€ì†�기ì—� 대한 ì¡°ìž‘ì�„ í• ìˆ˜ 있ë�„ë¡� d3d_renderstate 들ì—� 대해서 알아ë‘�는 것입니다. 최소한 ë°”ì�´ë¦¬ë‹ˆì–´ í•„í„°ë§�ì�„ ì¼œê³ ë�„ê³ , í…�스춰 매핑ì�„ ì¼œê³ ë�„ê³ , ì•ŒíŒŒë¸”ë Œë”©, 등등ì�„ 맘먹ì�€ëŒ€ë¡œ ì¡°í•©í•´ë³¼ 수 ìžˆì–´ì•¼ê² ì£
만약 지금까지 험난한 길ì�„ ê±°ì³�서 화면ìƒ�ì—� 맥스ì—�서 그린 오리를 ì�½ì–´ì„œ ì¶œë ¥í• ìˆ˜ 있다면 ì�´ì œ 기본ì �ì�¸ 코스는 ë§ˆìŠ¤í„°í–ˆë‹¤ê³ ë³¼ 수 있ì�„ 것입니다.
(몇가지 설명ì�„ 빼먹ì�€ 것ì�´ 있군요. ê°�종 좌표계 (모ë�¸ì¢Œí‘œê³„, 월드좌표계, ì¹´ë©”ë�¼ 좌표계, 스í�¬ë¦° 좌표계) 들간ì�˜ 변환ì—� 대한 ì�˜ë¯¸ì™€ 프로ì �ì…˜ì—� 대한 ì�´í•´, ê·¸ë¦¬ê³ ê·¸ì—� ë”°ë�¼ 최소한ì�˜ 벡터와 í–‰ë ¬ 연산만으로 화면ìƒ�ì—� 그림ì�´ ê·¸ë ¤ì§ˆ 수 있ë�„ë¡� 하는 그래픽스 파ì�´í”„ë�¼ì�¸ì�˜ 설계가 í•„ìš”í•˜ì£ )
그래ë�„ ì˜›ë‚ ë³´ë‹¤ëŠ” 훨씬 ì�¼ì�´ 쉬운 것ì�´, 화면ì—� í…�스춰매핑ë�œ 삼ê°�형ì�„ ê·¸ë ¤ì£¼ëŠ” 부분ì�¸ Rasterization ê´€ë ¨ 부분ì�€ ê°€ì†�기가 모ë‘� 알아서 처리해 주기 때문ì�´ì£ . ì˜›ë‚ ì—�는 어떻게 하면 어셈블리로 최ì �화를 해서 화면ì—� 그림ì�„ 빨리 ì°�ëŠ�ëƒ�를 ê¶�리하ëŠ�ë�¼ 사람들ì�´ 시간ì�„ ë§Žì�´ 보냈지만.. 요즘ì�€ 그런 ì�¼ì—� 별로 ì‹ ê²½ì�„ ì“°ì§€ ì•Šê³ ë‹¤ë¥¸ 쪽.. (물리학ì�´ë‚˜ ìž�료구조 최ì �í™”) ì—�
시간ì�„ 투ìž�하는 ì¶”ì„¸ì£ .. (ê²°êµ ì•žì—� í• ì�¼ì�€ 줄어들ì�€ ëŒ€ì‹ , ë’¤ì—� í• ì�¼ ì�´ 많아졌다는 뜻)
시간ì�„ 투ìž�하는 ì¶”ì„¸ì£ .. (ê²°êµ ì•žì—� í• ì�¼ì�€ 줄어들ì�€ ëŒ€ì‹ , ë’¤ì—� í• ì�¼ ì�´ 많아졌다는 뜻)
ì�¼ë‹¨ 엔진ì�´ 완성ë�˜ê³ 나면 ê·¸ ì�´í›„ì—�는 ìž�ì‹ ì�˜ í•„ìš”ì—� ë”°ë�¼ì„œ í• ì�¼ì�´ 달ë�¼ì§€ê² 지만, 최소한 3ì°¨ì›�ìƒ�ì—� 마우스로 물체를 배치하는 ì—�ë””í„°ì •ë�„는 ê¼ ë§Œë“¤ì–´ë³´ì‹œê¸° ë°”ëž�니다. ì–´ëŠ�ì •ë�„ 기능ì�„ 갖춘 ì—�디터까지 ìž�기ì†�으로 ë§Œë“¤ì–´ë³´ê³ ë‚˜ë©´ ì–´ëŠ�ì •ë�„ ì�´ì ë�ë�¼ë�„ 만들 수 있다는 ìž�ì‹ ê°�ì�´ ìƒ�길ê²�니다..
�� 초보�분들께 �움� �셨길 바�며..
학규(neolith)
- asc �멧�� 함� 구�기 시대..� 쓰� 맥스� �멧��요.. --ㅋ 맥스�서 디��너가 모��� 하면 그 결과를 스�립트로.. 그러니까 �스트 파�로 바꾼.. �멧�� 합니다.
- ase 는 좀ë�” 나중ì—� 나온 거구요.. asc처럼 í…�스트로 뽑는건ë�° ë�” ë§Žì�€ ì •ë³´ë¥¼ ì œê³µí•´ì¤�니다.
- ì�´ê²ƒë“¤ ì�´ì™¸ì—�ë�„ 모ë�¸ë§� ë�°ì�´íƒ€ë¥¼ ê°€ì ¸ì˜¤ê¸° 위한 í�¬ë©§ì�´ 여럿 있습니다. x나 3ds등ë�„ 쓰입니다. 3dsì�˜ 경우 버í…�스 모핑 키값ì�„ 쓸수 있다 하는ë�° 실효성ì�€ ì�˜ë¬¸ìž…니다. ê·¸ë¦¬ê³ ê·¸ë„˜ì�€ binary로 ë�˜ìžˆì–´ì„œ ì�½ì�„때 조금 ë�”ì†�ì�´ ê°ˆ 듯합니다.
- 파ì�¼ í�¬ë©§ì—� 관한 ìž�료는 나우누리 ê²Œì œë�™ì—� 심심강좌.. ì�¸ê°€.. 거기하구 책으로는 3d file formatì�´ë�¼ëŠ” ì±…ì�´ 있는ë�°.. addison wesley ì—�서 나온건가.. --; 있습니다. 여러군대ì—�서 찾으실수 있ì�„듯 합니다.
- STL � standard template library 입니다.
- 최근ì—�는 rasterinzing (transform, lighiting ì�´ ë��ë‚˜ê³ ë‚œí›„ 화면 ì£¼ì‚¬ì„ ì—� 맞추어서 ì°�어주는 부분.. ì�¼êº¼ì—�ì—¬)ì�´ì™¸ì—� trasformê³¼ lighitingë�„ ê°€ì†�기로 ì²˜ë¦¬í• ìˆ˜ ìžˆë‹¤ê³ í•©ë‹ˆë‹¤.
- ê°€ì†�기 ê´€ë ¨ ë�¼ìž…ê³¼ 3Dì�´ë¡ 서 를 ê°™ì�´ 공부하실 것ì�„ 추천합니다. ì�´ë¡ 서를 ë³´ê¸°ì „ì—� ì„ í˜•ëŒ€ìˆ˜í•™ .. ì �ì–´ë�„ 2장ì�¸ê°€.. ì—í–‰ë ¬ 까지는 보실것ì�„ 추천..









