งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Computer Graphics : บทที่ 2 - Transformation - 3D Viewing

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Computer Graphics : บทที่ 2 - Transformation - 3D Viewing"— ใบสำเนางานนำเสนอ:

1 Computer Graphics : บทที่ 2 - Transformation - 3D Viewing

2 Transformation Transformation World Coordinates  Camera Coordinates
Camera Coordinates  Screen Coordinates(2D) y y y x x z z z x World Coordinates Camera Coordinates Screen Coordinates

3 World Coordinates พิกัดใน 3 มิติ
กำหนดตำแหน่งของต้นกำเนิดแสง ตำแหน่งกล้อง ตำแหน่งวัตถุ หน่วยเป็นอะไรก็ได้ แต่ต้องเหมือนกัน เช่น เมตร เซนติเมตร กิโลเมตร y x z World Coordinates

4 ประเภทของพิกัด กฎมือขวา กฎมือซ้าย กฎมือขวา กฎมือซ้าย
นิ้วโป้ง = x,นิ้วชี้ = y , นิ้วกลาง = z OpenGL  กฎมือขวา DirectX  กฎมือซ้าย y y x x z z กฎมือขวา กฎมือซ้าย

5 ประเภทของพิกัด ความแตกต่างของ กฎมือขวา กับ กฎมือซ้าย
หลักการในการมอง การคำนวณ โดยทั่วไปเหมือนกัน Cross Product ต่างกัน ข้อมูลของวัตถุ(ตำแหน่งของvertex) ในพิกัดหนึ่ง ถ้าจะนำไปแสดงในอีกพิกัดหนึ่งต้องเปลี่ยนก่อนแสดงภาพ

6 Camera Coordinates เป็นพิกัดที่เอากล้องเป็นศูนย์กลางในการคิด
แกน X,Y ของกล้องคือแกน X,Y ของ Screen ด้านลึกคือแกน Z y y x z z x Camera Coordinates

7 Screen Coordinates พิกัดบน Screen
เป็นพิกัดที่เกิดหลังจากกระบวนการ Projection จุดไหนไกล  กลางscreen ค่า Z จำเป็นในการคำนวณความลึก(ใกล้-ไกล)  Z-Buffer y y y x z z x z x Camera Coordinates Screen Coordinates

8 ประเภทของพิกัด OpenGL  ด้านที่วิ่งเข้าหาตัวค่าเป็น +
DirectX  ด้านที่วิ่งออกจากตัว(ด้านลึก) ค่าเป็น - y y z x x z OpenGL DirectX

9 Model Coordinates => Local Coordinates ของวัตถุ
จุดorigin(0,0) จะอยู่ในตัววัตถุ y y y x x z x z z Model Coordinates World Coordinates

10 ขั้นตอนของ Coordinates Transformation
Model Coordinates  Screen Coordinates y y Model Coordinates World Coordinates x z x z y y x Camera Coordinates Screen Coordinates z z x

11 Affine Transformation
=>Homogeneous Coordinates Transformation สามารถจัดการการย้าย การหมุน การย่อขยาย วัตถุ ด้วย เมตริกขนาด 4×4 (x, y, z, w) พิกัดใน 3 มิติ  (x/w, y/w, z/w)(โดยปรกติ w = 1)

12 Rotation หมุนรอบจุด (0,0)

13 Rotation หมุนรอบแกนที่กำหนดทวนเข็มนาฬิกา x y z +

14 Rotation หมุนรอบแกน Z  เหมือนกับการหมุนใน 2 มิติ
x’ = x cos(q) – y sin(q) y’ = x sin(q) + y cos(q) z’ = z y x + z glRotatef(q, 0,0,1)

15 Rotation หมุนรอบแกน y (z -> y, y -> x, x->z)
+ หมุนรอบแกน y (z -> y, y -> x, x->z) z’ = z cos(q) – x sin(q) x’ = z sin(q) + x cos(q) y’ = y z x y + glRotatef(q, 0,1,0)

16 Rotation หมุนรอบแกน x (z -> x, y -> z, x->y)
+ หมุนรอบแกน x (z -> x, y -> z, x->y) y’ = y cos(q) – z sin(q) z’ = y sin(q) + z cos(q) x’ = x y z x + glRotatef(q, 1,0,0)

17 Rotation หมุนรอบแกนใดๆ glRotatef(q, nx,ny,nz)

18 ตัวอย่าง หมุนรอบแกน Y ด้วยมุม 90 องศาตามเข็มนาฬิกา y x z (-5,6,3)
(-3,6,3) (3,6,5) y (3,6,3) (3,2,3) x (-5,2,3) (3,2,5) (-3,2,3) z

19 Translation (Tx,Ty,Tz)

20 ตัวอย่าง (Tx,Ty,Tz) = (8,-2,0) y x z (-3,6,3) (-5,6,3) (3,4,3) (5,4,3)
(-5,2,3) (-3,2,3) (5,0,3) z (3,0,3)

21 Scaling (Sx,Sy,Sz)

22 ตัวอย่าง (Sx,Sy,Sz) = (2, 0.5, 1) y x z (-3,6,3) (-5,6,3) (-10,3,3)
(-6,3,3) x (-5,2,3) (-3,2,3) (-10,1,3) (-6,1,3) z

23 ตัวอย่าง y Rotation y Translation y x x x z z z

24 อันไหนทำก่อนจะอยู่ขวา
ตัวอย่าง y Rotation y Translation y x x x z z z Translation Rotation อันไหนทำก่อนจะอยู่ขวา

25 ตัวอย่าง y y y x x x z z z y x z Translation Rotation Rotation

26 ตัวอย่าง y Translation y Rotation y x x x z z z Rotation Translation

27 ตัวอย่าง y Rotation y Translation y x x x z z z Translation Rotation

28 Affine Transformation
y y y x x z z z x

29 Coordinates Transformation
Model  Camera วัตถุอยู่ที่ตำแหน่ง (-10,0,4)พิกัดอยู่ทิศทางเดียวกับ world co. กล้องหมุนรอบแกน Y 90องศา ตำแหน่ง(8,2,3) x y z (-10,0,4) (8,2,3)

30 Coordinates Transformation
Model  World (0,0,0)  (-10,0,4) Translation x y z (-10,0,4) (8,2,3)

31 Coordinates Transformation
World  Camera y y y x x (8,2,3) x (-10,0,4) z z z

32 Coordinates Transformation
World  Camera y y x z x x (-18,-2,1) z z

33 Coordinates Transformation
Model  World World  Camera Model  World x y z (-10,0,4) (8,2,3)

34 Coordinates Transformation
Model  World World  Camera Model  World y (0,0,0) x z

35 3D Viewing 3D  เหมือนการถ่ายรูป

36 3D Viewing ซับซ้อนกว่า 2 มิติ
เรื่องยากคือทำอย่างไรที่จะวาดภาพ 3 มิติลงบนจอ 2 มิติ การมองวัตถุ 3 มิติในมุมมองที่ต่างกัน  ภาพที่ได้บนจอ 2 มิติต่างกัน position, orientation, field of view ต่างกันภาพต่างกัน

37 Different Views

38 The Viewing Process สิ่งที่จำเป็นในการสร้างภาพ กำหนด scene geometry
กำหนด view (camera) วาดวัตถุ 3 มิติลงบนระนาบ 2 มิติ (Transform the 3D objects onto a 2D plane ) กำหนด real-world window บนระนาบ 2 มิติ real-world window  viewport(2D viewing)

39 ตำแหน่งของกล้องใน world co-ordinate ทิศทางที่ส่องกล้อง
การกำหนด Camera การกำหนด View : ตำแหน่งของกล้องใน world co-ordinate ทิศทางที่ส่องกล้อง มุมของกล้อง(ขึ้น ลง ) ขนาดของ view

40 Projections Perspective Projection Parallel Projections
หลังกำหนด view แล้ว  ฉายภาพลงบนจอ 2 มิติ (2D Viewplane) การฉายภาพของวัตถุ 3 มิติลงบนจอ 2 มิติ เรียกว่า Planar Geometric Projections มี 2 ประเภท : Perspective Projection Parallel Projections

41 Perspective Projections
y x z

42 Perspective Projection

43 Perspective Projection
วัตถุที่อยู่ไกลจะเล็กเหมือนกับ Real World สิ่งที่ต้องกำหนด: จุดศูนย์กลางที่จะทำการ Projection Plane ของการ Projection Projection: เชื่อมวัตถุให้ไปรวมกันที่จุดศูนย์กลางของ Projection projection plane camera

44 Parallel(Orthographic) Projection
No effect เกี่ยวกันความใกล้ไกล –ไม่สนใจว่าระยะทางจากกล้องถึงวัตถุ จุดศูนย์กลางของ Projection  Infinity Projection calculation  ไม่สนใจแกน Z

45 Field of View กำหนดขนาดของโลก 3 มิติ center of projection
x y z y z q

46 Projection Transformation
สิ่งที่ต้องกำหนด Perspective or Orthographic Field of view and image aspect ratio Near and far clipping planes

47 Near and Far Clipping Planes
ภาพที่อยู่ระหว่าง near กับ far เท่านั้นที่จะถูกวาด Near plane + far plane + field of view = Viewing Frustum Near plane x y z Far plane

48 Viewing Frustum วัตถุที่อยู่นอก frustum จะถูก clip ออก Near plane
Far plane y z x Viewing Frustum

49 Projection Transformation
map the object from 3D space to 2D screen x y z x y z Perspective: gluPerspective() Parallel: glOrtho()

50 Perspective Projections
glFrustrum(xmin, xmax, ymin, ymax, zmin, zmax);

51 Perspective Projections
gluPerspective(fov, aspect, near, far);

52 Perspective Projections

53 Lens Configurations fov = 122° fov = 84° fov = 54° fov = 10°

54 Perspective Projection
Parameters: centre of projection (COP) field of view (q, f) projection direction up direction

55 Perspective Projection
x y z Z = Z = 1 (-1, -1) (1, 1) eye near far (top view)

56 Perspective Projection
(-1, -1, 1) (1, 1, -1) Canonical View Volume x y z

57 Parallel Projection (Xp, Yp) y z (x,y,z) x

58 Parallel Projection (2)
OpenGL: ทุกอย่าง  canonical view volume glOrtho(xmin, xmax, ymin, ymax, near, far) (xmax, ymax, far) (1, 1, -1) (xmin, ymin, near) (-1, -1, 1) Canonical View Volume

59 Projection Transformation
In OpenGL: Set the matrix mode to GL_PROJECTION Perspective projection: gluPerspective(fovy, aspect, near, far) or glFrustum(left, right, bottom, top, near, far) Orthographic: glOrtho(left, right, bottom, top, near, far)

60 Projection Transformation
void display() { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_PROJETION); glLoadIdentity(); gluPerspective(fove, aspect, near, far); glMatrixMode(GL_MODELVIEW); gluLookAt(0,0,1,0,0,0,0,1,0); display_all(); // your display routine }


ดาวน์โหลด ppt Computer Graphics : บทที่ 2 - Transformation - 3D Viewing

งานนำเสนอที่คล้ายกัน


Ads by Google