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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คณิตคิดเร็วโดยใช้นิ้วมือ
Advertisements

โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
ที่ โรงเรียน เฉลี่ย 1 บ้านหนองหว้า บ้านสะเดาหวาน
บทที่ 2 เวกเตอร์แรง.
แบบรูปและความสัมพันธ์
ยินดีต้อน เข้าสู่ โครงงาน.
พลังงานในกระบวนการทางความร้อน : กฎข้อที่หนึ่งของอุณหพลศาสตร์
การซ้อนทับกัน และคลื่นนิ่ง
Training Management Trainee
แนวทางการรายงานผลการปฏิบัติราชการโดยผ่านระบบเครือข่ายอินเตอร์เน็ต
เปรียบเทียบจำนวนประชากรทั้งหมดจากฐาน DBPop Original กับจำนวนประชากรทั้งหมดที่จังหวัดถือเป็นเป้าหมาย จำนวน (คน) 98.08% % จังหวัด.
สภาพแวดล้อมการทำงานคอมพิวเตอร์กราฟิกส์ การบรรยายครั้งที่ 4
TWO-DIMENSIONAL GEOMETRIC
THREE-DIMENSIONAL GEOMETRIC
การเลื่อนเงินเดือนข้าราชการ
Computer Graphics : บทที่ 3 - Transformation - 3D Viewing
สำเร็จการศึกษาในเวลา 4 ปี
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
Image Processing & Computer Vision
ระบบอนุภาค.
กลุ่มสาระการเรียนรู้ คณิตศาสตร์ โรงเรียนบ้านหนองกุง อำเภอนาเชือก
การขอเบิกเงินนอกงบประมาณ
กระบวนการคิดทางคณิตศาสตร์
EC411 ทฤษฏีและนโยบายการเงิน
จำนวนทั้งหมด ( Whole Numbers )
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
การดำเนินงานอาชีวเวชศาสตร์: แพทย์ที่ผ่านการอบรม
รายงานในระบบบัญชีแยกประเภททั่วไป (GL – General Ledger)
แนวทางการปฏิบัติโครงการจูงมือ น้องน้อยบนดอยสูง 1.
สำนักงานสถิติแห่งชาติ กระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร
สำนักงานสถิติแห่งชาติ กระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร
ฝ สรุปผลการสำรวจ ความคิดเห็นของประชาชน / ผู้ประกอบการ
ข้อมูลเศรษฐกิจการค้า
1 การสัมมนาผู้ตรวจ ประเมินคุณภาพภายใน ปีการศึกษา 2552 วันพฤหัสบดีที่ 21 ตุลาคม 2553 ณ ห้องประชุม 3222 อาคารสิริคุณากร.
การเลื่อนเงินเดือนในระบบใหม่
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 30 มิถุนายน 2555 สำนักวิชาการและ แผนงาน.
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 31 พฤษภาคม 2555.
ความก้าวหน้าระดับความสำเร็จ การปฏิบัติราชการของปฏิรูปที่ดิน จังหวัด 5 ครั้ง ณ 15 มิถุนายน 2555.
การดำเนินงานตามแผนปฏิบัติการ โครงการที่ได้รับ
ณัฏฐวุฒิ เอี่ยมอินทร์
การเข้า E-Conference จากทุกหน่วยงานประชุมศูนย์ ปฏิบัติการการเงินการคลัง กลุ่มประกันสุขภาพ 2554.
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
การดำเนินการทดสอบทางการศึกษาแห่งชาติ (O-NET)
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
ความคิดเห็นของประชาชนเกี่ยวกับเกมออนไลน์ ในเขตกรุงเทพมหานคร
โรคทางระบาดวิทยาที่มีอัตราป่วยสูง 10 ลำดับแรกของจังหวัดเลย สะสมตั้งแต่วันที่ 1 มกราคม – 29 เมษายน 2555.
สภาพแวดล้อมการทำงานคอมพิวเตอร์กราฟิกส์ การบรรยายครั้งที่ 7
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
การลงข้อมูลแผนการสอน
วิวัฒน์ ชินนาทศิริกุล
School of Information Communication Technology,
ภาษาอังกฤษเพื่อการสื่อสาร อ32204
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
สรุปผลการสำรวจ ความคิดเห็นของประชาชนเกี่ยวกับ การป้องกันและปราบปรามยาเสพติด (ก่อนและหลัง การประกาศสงครามขั้นแตกหักเพื่อเอาชนะยาเสพติด) พ.ศ สำนักงานสถิติแห่งชาติ
ผลการทดสอบทางการศึกษาระดับชาติขั้นพื้นฐาน
การค้นในปริภูมิสถานะ
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
สถานการณ์ โรคเฝ้าระวังทางระบาดวิทยา มิถุนายน 2554 งานระบาดวิทยา งานระบาดวิทยา สำนักงานสาธารณสุขอำเภอเมืองลำปาง.
กราฟเบื้องต้น.
การปรับเงินเดือน กรณีที่เงินเดือนยังไม่ถึงขั้นต่ำของระดับ
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
ผลการประเมิน คุณภาพการศึกษาขั้นพื้นฐาน ปีการศึกษา
1 LAN Implementation Sanchai Yeewiyom School of Information & Communication Technology Naresuan University, Phayao Campus.
การแปลงในสามมิติ.
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

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

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

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

ขั้นตอนของ 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

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

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

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

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)

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)

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)

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

ตัวอย่าง หมุนรอบแกน 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

Translation (Tx,Ty,Tz)

ตัวอย่าง (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)

Scaling (Sx,Sy,Sz)

ตัวอย่าง (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

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

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

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

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

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

Affine Transformation y y y x x z z z x

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

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

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

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

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

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

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

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

Different Views

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)

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

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

Perspective Projections y x z

Perspective Projection

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

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

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

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

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

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

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

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

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

Perspective Projections

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

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

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

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

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

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

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)

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 }