E D R , A S I H C RSS

3D프로그래�시작하기

�그나로�로 유명한 그�비티사� 김학규 사장님� 쓴 글입니다. (한 4년전 쯤�여.)
좋�것 같아서 펴왔습니다. 제 멋대로 시차� 따른 주�� 달아 보겠�다. -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안ì�¨ë´�서리.. --; 정확하진 않지만
retained는 정�지정시� ��가 떨어지고.. immediate는 어렵지만 여러방�으로 지정� 가능하고.. 빠르고.. 그랬�거 같습니당.. 요즘엔 direct graphics� 해서 �터페�스가 바꼈는�.. 어떻게 �는지 몰겠네용..

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장ì�¸ê°€.. 역행렬 까지는 보실것ì�„ 추천..


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:15
Processing time 0.0100 sec