ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยKasika Sarit ได้เปลี่ยน 10 ปีที่แล้ว
1
Computer Graphics : บทที่ 3 - 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
projection plane : z = -n xp คำนวนด้วยวิธีเดียวกัน |n| y -n
56
Perspective Projection
x y z Z = Z = 1 (-1, -1) (1, 1) eye near far (top view)
57
Perspective Projection
Final Projection Matrix: glFrustum(l, r, b, t, n, f)
58
Perspective Projections
Projection Matrix left right top y x z bottom W’=-Z Z ใหญ่เท่าไรวัตถุยิ่งอยู่กลาง
59
Perspective Projection
(-1, -1, 1) (1, 1, -1) Canonical View Volume x y z
60
Parallel Projection (Xp, Yp) y z (x,y,z) x
61
Parallel Projection การฉายภาพลงบน view-plain ที่ง่ายที่สุดคือ parallel project z=0
62
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
63
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)
64
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 }
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.