Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Welcome to the hell!!!3d프로그래밍의 이해<br />2011.4.23. 민성기<br />
진행 순서<br /><ul><li>3D란 무엇일까
정점변환의 마술 행렬. 그리고 벡터.
OpenGL 초기화
첫 삼각형과 만남
원근투영과 이동행렬 맛보기
회전행렬 맛보기
행렬 스텍 다루기
z버퍼
빛이 있으라!!
텍스처 바르기</li></li></ul><li>3D란 무엇일까<br />
3D란 무엇일까<br />나는야 화면버퍼라네~~ 픽셀의 집합이지~~<br />짜잔~~!<br />
가장 빨리 삼각형을 그리는 방법은???<br />3D란 무엇일까<br />모델뷰 변환<br />픽셀 셰이더<br />버텍스셰이더<br />프로젝션<br />뷰볼륨-1 ~ 1<br />화면버퍼에 래스터라이징<br />
정점변환의 마술. 행렬.<br /><ul><li>정점을 뷰볼륨에 정규화하기 위한 쉬운 길
수학자들이 오랜 세월 고민해 만들어준 물건
우리는 쓰기만 하면 됨. </li></ul>행렬<br />정점 P<br />생각하기 편하게 2차원에서 살펴보자.<br />정점 P’<br />
정점변환의 마술. 행렬.<br /><ul><li>2차원 크기변환 행렬</li></ul>𝑆𝑥00𝑆𝑦 <br /> <br />𝑥𝑦<br /> <br />= 𝑥′𝑦′<br /> <br />𝑥′=𝑥∙𝑆𝑥𝑦′=𝑦∙𝑆𝑦<br />...
정점변환의 마술. 행렬.<br /><ul><li>2차원 회전행렬</li></ul>𝑐𝑜𝑠𝜃𝑠𝑖𝑛𝜃−𝑠𝑖𝑛𝜃𝑐𝑜𝑠𝜃 <br /> <br />𝑥𝑦<br /> <br />= 𝑥′𝑦′<br /> <br />𝑥′=𝑥∙𝑐𝑜𝑠𝜃 −𝑦...
정점변환의 마술. 행렬.<br /><ul><li>이동행렬의 문제</li></ul>𝑥′=𝑥+𝑇𝑥𝑦′=𝑦+𝑇𝑦<br /> <br />100010𝑇𝑥𝑇𝑦1 <br /> <br />𝑥𝑦1<br /> <br />= 𝑥′𝑦′1<b...
정점변환의 마술. 행렬.<br /><ul><li>좌표변환에굳이 복잡한 행렬을 쓰는 이유는??</li></ul>있어 보여서. 남들 다 쓰니까. 가학성향 변태라서. <br />행렬의 결합법칙 덕 좀 보려고<br />𝑃∙𝑇1...
종이의 도형을 컴퓨터 화면으로.<br />(Px, Py)<br />(0, 0)<br />P1<br />P1’<br />(SCx, SCy)<br />(PCx, PCy)<br />P2<br />P2’<br />P3<br /...
그렇다면 3D에서는??<br /><ul><li>2차원은 2*2 동차행렬. 3차원은 4*4 동차행렬.</li></ul>10     0001     0000     10𝑇𝑥𝑇𝑦   𝑇𝑧1<br /> <br />𝑆𝑥0    ...
Upcoming SlideShare
Loading in …5
×

3D 프로그래밍의 이해. 2011.4.23

1,677 views

Published on

Published in: Technology, Art & Photos
  • Be the first to comment

3D 프로그래밍의 이해. 2011.4.23

  1. 1. Welcome to the hell!!!3d프로그래밍의 이해<br />2011.4.23. 민성기<br />
  2. 2. 진행 순서<br /><ul><li>3D란 무엇일까
  3. 3. 정점변환의 마술 행렬. 그리고 벡터.
  4. 4. OpenGL 초기화
  5. 5. 첫 삼각형과 만남
  6. 6. 원근투영과 이동행렬 맛보기
  7. 7. 회전행렬 맛보기
  8. 8. 행렬 스텍 다루기
  9. 9. z버퍼
  10. 10. 빛이 있으라!!
  11. 11. 텍스처 바르기</li></li></ul><li>3D란 무엇일까<br />
  12. 12. 3D란 무엇일까<br />나는야 화면버퍼라네~~ 픽셀의 집합이지~~<br />짜잔~~!<br />
  13. 13. 가장 빨리 삼각형을 그리는 방법은???<br />3D란 무엇일까<br />모델뷰 변환<br />픽셀 셰이더<br />버텍스셰이더<br />프로젝션<br />뷰볼륨-1 ~ 1<br />화면버퍼에 래스터라이징<br />
  14. 14. 정점변환의 마술. 행렬.<br /><ul><li>정점을 뷰볼륨에 정규화하기 위한 쉬운 길
  15. 15. 수학자들이 오랜 세월 고민해 만들어준 물건
  16. 16. 우리는 쓰기만 하면 됨. </li></ul>행렬<br />정점 P<br />생각하기 편하게 2차원에서 살펴보자.<br />정점 P’<br />
  17. 17. 정점변환의 마술. 행렬.<br /><ul><li>2차원 크기변환 행렬</li></ul>𝑆𝑥00𝑆𝑦 <br /> <br />𝑥𝑦<br /> <br />= 𝑥′𝑦′<br /> <br />𝑥′=𝑥∙𝑆𝑥𝑦′=𝑦∙𝑆𝑦<br /> <br />
  18. 18. 정점변환의 마술. 행렬.<br /><ul><li>2차원 회전행렬</li></ul>𝑐𝑜𝑠𝜃𝑠𝑖𝑛𝜃−𝑠𝑖𝑛𝜃𝑐𝑜𝑠𝜃 <br /> <br />𝑥𝑦<br /> <br />= 𝑥′𝑦′<br /> <br />𝑥′=𝑥∙𝑐𝑜𝑠𝜃 −𝑦∙𝑠𝑖𝑛𝜃𝑦′=𝑦∙𝑠𝑖𝑛𝜃+𝑥∙𝑐𝑜𝑠𝜃<br /> <br />
  19. 19. 정점변환의 마술. 행렬.<br /><ul><li>이동행렬의 문제</li></ul>𝑥′=𝑥+𝑇𝑥𝑦′=𝑦+𝑇𝑦<br /> <br />100010𝑇𝑥𝑇𝑦1 <br /> <br />𝑥𝑦1<br /> <br />= 𝑥′𝑦′1<br /> <br />𝑆𝑥000𝑆𝑦0001 <br /> <br />𝑐𝑜𝑠𝜃𝑠𝑖𝑛𝜃0−𝑠𝑖𝑛𝜃𝑐𝑜𝑠𝜃0001 <br /> <br />크기 동차행렬<br />회전 동차행렬<br />
  20. 20. 정점변환의 마술. 행렬.<br /><ul><li>좌표변환에굳이 복잡한 행렬을 쓰는 이유는??</li></ul>있어 보여서. 남들 다 쓰니까. 가학성향 변태라서. <br />행렬의 결합법칙 덕 좀 보려고<br />𝑃∙𝑇1∙𝑅1∙𝑆1∙𝑇2=𝑃′<br /> <br />100010001<br /> <br />𝑃∙𝑀=𝑃′<br /> <br />𝑃′∙𝑇2−1∙𝑆1−1∙𝑅1−1∙𝑇1−1=𝑃<br /> <br />𝑃′∙𝑀−1=𝑃<br /> <br />
  21. 21. 종이의 도형을 컴퓨터 화면으로.<br />(Px, Py)<br />(0, 0)<br />P1<br />P1’<br />(SCx, SCy)<br />(PCx, PCy)<br />P2<br />P2’<br />P3<br />P3’<br />×100010𝑆𝐶𝑥𝑆𝐶𝑦1<br /> <br />× 100010−𝑃𝐶𝑥−𝑃𝐶𝑦1<br /> <br />(0, 0)<br />(Sx, Sy)<br />×𝐸000−𝐸0001<br /> <br />=𝑃′<br /> <br />𝑃<br /> <br />𝑃×𝐸000−𝐸0−𝑃𝐶𝑥∙𝐸+𝑆𝐶𝑥𝑃𝐶𝑦∙𝐸+𝑆𝐶𝑦1=𝑃′<br /> <br />𝑥′=𝑥∙𝐸−𝑃𝐶𝑥∙𝐸+𝑆𝐶𝑥𝑦′=−𝑦∙𝐸−𝑃𝐶𝑦∙𝐸+𝑆𝐶𝑦<br /> <br />
  22. 22. 그렇다면 3D에서는??<br /><ul><li>2차원은 2*2 동차행렬. 3차원은 4*4 동차행렬.</li></ul>10     0001     0000     10𝑇𝑥𝑇𝑦   𝑇𝑧1<br /> <br />𝑆𝑥0     000𝑆𝑦     0000     𝑆𝑧000       01<br /> <br />𝑐𝑜𝑠𝜃𝑠𝑖𝑛𝜃     00−𝑠𝑖𝑛𝜃𝑐𝑜𝑠𝜃  0000        0000       01<br /> <br /><ul><li>OpenGL 행렬상태
  23. 23. 모델뷰, 프로젝션, 텍스쳐, 카메라(D3D)
  24. 24. 각 행렬 상태마다 스텍이 있음 (D3D는 9이후)
  25. 25. OpenGL의 API가 제공하는 행렬함수는 열기준!</li></li></ul><li>벡터<br /><ul><li>힘과 방향을 나타내는 약속
  26. 26. 힘은 길이. 방향은 노멀.
  27. 27. 더하고 빼고 곱할 수 있다.
  28. 28. 곱하기가 무려 두가지. 내적과 외적</li></li></ul><li>OpenGL의 초기화<br /><ul><li>랜더링컨텍스트
  29. 29. 랜더링이 일어나는 장소. DC처럼 추상화된 개념.
  30. 30. 더블버퍼링
  31. 31. 깜박임 방지를 위한 기법.
  32. 32. 백버퍼에서 조립 -> 전면버퍼로 전송</li></ul>데모<br />
  33. 33. 첫 삼각형과 만남<br />데모<br />
  34. 34. 원근투영과 이동행렬 맛보기<br />데모<br />
  35. 35. 회전행렬 맛보기<br />데모<br />
  36. 36. 행렬스텍 다루기<br />데모<br />
  37. 37. Z버퍼 (깊이 버퍼)<br />데모<br /><ul><li>z버퍼는 화면 버퍼의 한 종류
  38. 38. 정규화된 각 정점의 z값을 저장한다.
  39. 39. 설정에 따라 다음 도형의 픽셀을 찍을지 결정.</li></li></ul><li>빛이 있으라!!<br />데모<br /><ul><li>스팟, 점광원, 직선광원
  40. 40. 이 세미나에서는 직선광원만 사용함.
  41. 41. 엠비언트, 디퓨즈, 스파큘러</li></li></ul><li>텍스쳐 바르기<br />데모<br /><ul><li>결국… 도배질이 목적. 텍셀질이라고 함.
  42. 42. OpenGL에서 텍스처는 상수로 표현되는 객체.
  43. 43. 이미지는 2의 승수일 것.
  44. 44. 텍스쳐 행렬도 설정할 수 있다. </li></li></ul><li>질문/토론<br />

×