1 / 208

คอมพิวเตอร์กราฟิกส์ใช้ OpenGL (Computer Graphics using OpenGL)

คอมพิวเตอร์กราฟิกส์ใช้ OpenGL (Computer Graphics using OpenGL). บทที่ 8 การมองภาพ 3 มิติและการขริบภาพ ( 3D Viewing & Clipping ). ในกราฟิก 2 มิติ การมองภาพจะแปลงตำแหน่งจากระนาบทางกายภาพไปเป็นตำแหน่งพิกเซลในระนาบของอุปกรณ์แสดงผล

questa
Download Presentation

คอมพิวเตอร์กราฟิกส์ใช้ OpenGL (Computer Graphics using OpenGL)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. คอมพิวเตอร์กราฟิกส์ใช้ OpenGL(Computer Graphics using OpenGL)

  2. บทที่ 8การมองภาพ 3 มิติและการขริบภาพ(3D Viewing & Clipping )

  3. ในกราฟิก 2 มิติ การมองภาพจะแปลงตำแหน่งจากระนาบทางกายภาพไปเป็นตำแหน่งพิกเซลในระนาบของอุปกรณ์แสดงผล วินโดว์ขริบภาพและวิวพอร์ตที่ใช้ขอบเขตเป็นสี่เหลี่ยมในกราฟิก 2 มิติจะขริบภาพแล้วแม็พไปยังโคออร์ดิเนตของอุปกรณ์แสดงผลได้ทันที แต่การมองภาพ 3 มิติมีสิ่งที่เกี่ยวข้องมากมายที่เป็นตัวเลือกที่สามารถสร้างภาพ และสร้างมุมมองของภาพบนอุปกรณ์แสดงผลได้ ถึงแม้ออปเจ็กต์ 3 มิติต้องใช้โคออร์ดิเนตถึง 3 แกน แต่ภาพ 3 มิติเหล่านี้จะถูกวาดลงบนระนาบเรียบ 2 มิติเพื่อให้ผู้ใช้เห็นออปเจ็กต์นั้น ดังนั้นจึงต้องมีวิธีการสร้างภาพ 2 มิติของออปเจ็กต์ที่ถูกกำหนดไว้ในโคออร์ดิเนต 3 มิติ OpenGL คืออะไร

  4. เมื่อเราสร้างรูปทรง 3 มิติบนจอภาพ แต่ละออปเจ็กต์บนจอภาพถูกกำหนดเป็นชุดของพื้นผิวปิดที่ประกอบรวมกันเป็นออปเจ็กต์ บางแอปพลิเคชันเราอาจจะต้องกำหนดข้อมูลโครงสร้างภายในของออปเจ็กต์เพิ่มเติม นอกจากโปรซีเดอร์สำหรับการสร้างมุมมองพื้นผิวของออปเจ็กต์แล้ว ในบางครั้งกราฟิกแพ็กเกจจะต้องมีรูทีนในการแสดงโครงสร้างภายใน หรือมุมมองภาคตัดขวางของออปเจ็กต์ทึบด้วย ฟังก์ชันการมองจะแสดงรายละเอียดของออปเจ็กต์เป็นชุดของโปรซีเดอร์ที่โปรเจ็กต์มุมมองของออปเจ็กต์เพื่อกำหนดลงบนอุปกรณ์แสดงผล หลักการมองภาพ 3 มิติ

  5. มีหลายขั้นตอนในการมองภาพ 3 มิติ เช่น รูทีนการขริบภาพ ที่เหมือนกับการมองภาพ 2 มิติ แต่ในการมองภาพ 3 มิติมีงานบางอย่างที่ไม่ได้แสดงในการมองภาพ 2 มิติ ยกตัวอย่างเช่น ต้องใช้รูทีนของโปรเจ็กต์ชันเพื่อแปลงจอภาพไปบนผิวระนาบ ต้องมีการกำหนดจอภาพการมองห็น สำหรับการแสดงผลให้สมจริงจะต้องมีการใช้การตกกระทบของแสง และใช้คุณสมบัติของพื้นผิวประกอบด้วย ภาพรวมแนวคิดการมองภาพ 3 มิติ

  6. การแสดงจอภาพ 3 มิติ ในขั้นแรกเราต้องกำหนดการอ้างอิงโคออร์ดิเนตสำหรับพารามิเตอร์การมอง หรือที่เรียกว่า “กล้อง” การอ้างอิงโคออร์ดิเนตนี้จะกำหนดตำแหน่งและแนวสำหรับระนาบการมอง (view plane หรือ projection plane) ที่สัมพันธ์กับกล้องถ่ายภาพ (ดังรูป) หลังจากนั้นรายละเอียดของออปเจ็กต์จะถูกแปลงไปยังโคออร์ดิเนตที่อ้างอิงการมอง แล้วจึงโปรเจ็กต์ภาพนั้นไปบนระนาบ เราสามารถสร้างมุมมองของออปเจ็กต์บนอุปกรณ์แสดงผลในแบบของเอาต์ไลน์ได้ หรือจะประยุกต์ใช้เทคนิคของแสงและเงา รวมทั้งการเรนเดอร์พื้นผิวเพื่อให้ภาพเกิดเป็นภาพสมจริงมากยิ่งขึ้นได้อีกด้วย การมองภาพ 3 มิติ

  7. การมองภาพ 3 มิติ การอ้างอิงโคออร์ดิเนตสำหรับมุมมองของจอภาพ 3 มิติ

  8. สิ่งที่แตกต่างจากกล้องถ่ายภาพก็คือ เราสามารถเลือกวิธีโปรเจ็กต์ชันภาพลงบนระนาบการมอง วิธีการหนึ่งที่สามารถให้รายละเอียดของออปเจ็กต์ทึบบนระนาบแสดงผลคือโปรเจ็กต์ชันพื้นผิวของออปเจ็กต์แบบขนานซึ่งเรียกเทคนิคนี้ว่า “โปรเจ็กต์ชันแบบขนาน” (parallel projection) ที่ใช้กันบ่อยในการวาดทางวิศวกรรมและสถาปัตยกรรมเพื่อแสดงออปเจ็กต์ด้วยชุดของมุมมองเพื่อแสดงออปเจ็กต์ได้อย่างเที่ยงตรง ดังรูป โปรเจ็กต์ชัน (Projection)

  9. โปรเจ็กต์ชัน (Projection) มุมมอง 3 มุมมองของโปรเจ็กต์ชันแบบขนานที่ใช้ในด้านวิศวกรรมและสถาปัตยกรรม

  10. วิธีการอื่นในการสร้างภาพ 3 มิติคือโปรเจ็กต์ชันไปยังระนาบการมองตามเส้นทางที่เบนเข้าหากัน โปรเจ็กต์ชันนี้เรียกว่า โปรเจ็กต์ชันแบบเพอร์สเปกทีพ (perspective projection) โปรเจ็กต์ชันแบบนี้ทำให้ออปเจ็กต์ที่มีขนาดเท่ากันแต่อยู่ตำแหน่งที่ไกลจากตำแหน่งการมองจะแสดงขนาดที่เล็กกว่าออปเจ็กต์ที่อยู่ใกล้กับตำแหน่งการมอง ภาพที่สร้างจากโปรเจ็กต์ชันแบบนี้จะให้ความสมจริงมากกว่า เนื่องจากเป็นวิธีเดียวกับการการสร้างภาพของกล้องและตาของเรา ภาพดังรูป จะแสดงเส้นขนานตามทิศทางการมองที่ปรากฏเป็นเส้นทางที่เบนเข้าหากันในแบ็คกราวนด์ และเครื่องบินในแบ็คกราวนด์เล็กกว่าที่ขึ้นในฟอร์กราวนด์ โปรเจ็กต์ชัน (Projection)

  11. การมองภาพ 3 มิติ ภาพเพอร์สเปกทีพของสนามบิน

  12. ข้อมูลความลึกของภาพเป็นส่วนสำคัญของภาพ 3 มิติ เราสามารถกำหนดทิศทางการมองโดยเฉพาะได้ง่าย ๆ ซึ่งทิศทางนี้เป็นทิศทางของหน้าและหลังของออปเจ็กต์ที่แสดง รูปต่อไปแสดงรูปโครงของปิระมิดที่ไม่มีข้อมูลความลึกของออปเจ็กต์ มีหลายวิธีทีเราสามารถรวมข้อมูลความลึกในการแสดงออปเจ็กต์ทึบในการแสดงภาพ 2 มิติ ความลึกของภาพ (Dept cueing)

  13. ความลึกของภาพ (Dept cueing) การแสดงรูปโครงของปิระมิด ก) ไม่มีข้อมูลความลึกที่ชี้ว่าทิศทางการมองเป็นอย่างไร ข) มองลงมาจากด้านบนของปิระมิด ค) มองขึ้นจากด้านล่างของปิระมิด

  14. วิธีการง่าย ๆ ในการแสดงความลึกในการแสดงรูปโครงร่างจะใช้ความสว่างของเส้นที่แปรเปลี่ยนไปตามระยะทางจากตำแหน่งที่มอง โดยปกติแล้วตำแหน่งการมองที่อยู่ใกล้จะแสดงความสว่างของเส้นที่ชัดเจนกว่าตำแหน่งการมองที่อยู่ไกล ๆ โดยจะลดระดับความเข้มของแสงสว่างลงไปเมื่ออยู่ไกลออกไป การกำหนดความลึกนี้จะมีการกำหนดช่วงความเข้มของแสงสว่างที่เปลี่ยนไปตามตำแหน่งการมอง ความลึกของภาพ (Dept cueing)

  15. การกำหนดความลึกในแอปพลิเคชันอื่นคือการจำลองโมเดลเอฟเฟ็กต์ของบรรยากาศของออปเจ็กต์ที่มองเห็น ยิ่งระยะไกลออกไปออปเจ็กต์จะปรากฏมัวกว่าเมื่ออยู่ใกล้ออปเจ็กต์ตามการกระจายของแสงที่มีผุ่น หมอก และควัน ในบางเอฟเฟ็กต์ของบรรยากาศสามารถเปลี่ยนสีของออปเจ็กต์ และเราสามารถจำลองเอฟเฟ็กต์ได้ด้วยการใช้ความลึกเข้ามาช่วย ความลึกของภาพ (Dept cueing)

  16. เราสามารถให้ความชัดเจนถึงความสัมพันธ์ของความลึกในการแสดงรูปโครงร่างโดยการใช้เทคนิดอื่นนอกเหนือจากการกำหนดความลึก วิธีหนึ่งที่นำมาใช้คือการไฮไลต์เส้นที่มองเห็น หรือแสดงด้วยสีที่แตกต่างกัน ส่วนเทคนิคอื่นที่มักนำมาใช้บ่อย ๆ ในการวาดภาพทางวิศวกรรมคือการแสดงเส้นที่มองไม่เห็นด้วยเส้นประ หรือเราจะกำจัดเส้นที่มองไม่เห็นออกไปจากภาพก็ได้ ดังรูปข) และ ค) ที่ผ่านมา แต่การกำจัดเส้นที่ซ่อนอยู่จะเป็นการลบข้อมูลเกี่ยวกับรูปทรงที่พื้นผิวด้านหลังของออปเจ็กต์ การแสดงรูปโครงร่างโดยทั่วไปจะเป็นการแสดงภาพรวมของออปเจ็กต์ที่มีทั้งหน้าและหลังอยู่แล้ว การกำหนดเส้นและพื้นผิวที่เห็นได้

  17. เมื่อมีการสร้างมุมมองภาพเสมือนจริง (realistic) ของภาพ ส่วนหลังของภาพจะถูกกำจัดออกไป ดังนั้นจะมีเพียงพื้นผิวที่มองเห็นเท่านั้นที่มองเห็น ในกรณีนี้จะมีการประยุกต์ใช้ขั้นตอนการเรนเดอร์พื้นผิว (Surface Rendering) ทำให้พิกเซลของจอภาพจะมีเพียงแพทเทิร์นของสีพื้นผิวด้านหน้าเท่านั้น การกำหนดเส้นและพื้นผิวที่เห็นได้

  18. การกำหนดเส้นและพื้นผิวที่เห็นได้การกำหนดเส้นและพื้นผิวที่เห็นได้ ภาพเสมือนจริงของห้องที่ใช้โปรเจ็กต์ชันแบบเพอร์สเปกทีพ ความเข้มของแสง และคุณสมบัติทางพื้นผิว

  19. การเพิ่มความสมจริงในการแสดงผลทำได้โดยการเรนเดอร์พื้นผิวของออปเจ็กต์ด้วยการใช้แสงในจอภาพ และการใช้คุณสมบัติของพื้นผิว เรากำหนดสถานะของแสงโดยการกำหนดสี และตำแหน่งแหล่งกำเนิดแสง เรายังสามารถกำหนดเอ็ฟเฟ็กต์ความเข้มของแบ็คกราวนด์ได้อีกด้วย คุณสมบัติทางพื้นผิวของออปเจ็กต์อาจจะเป็นแบบโปร่งแสงหรือทึบแสงก็ได้ ประเภทของพื้นผิวอาจจะเป็นแก้ว พลาสติก ลายไม้ หรือผิวขรุขระ ในรูปที่ผ่านมาเป็นวิธีการเรนเดอร์พื้นผิวรวมอยู่กับเพอร์สเปกทีพและการกำนดการมองเห็นของพิ้นผิวเพื่อสร้างระดับความเสมือนจริงบนจอภาพ การเรนเดอร์พื้นผิว (Surface Rendering)

  20. มีหลาย ๆ กราฟิกแพ็กเกจยอมให้มีการออกแบบออปเจ็กต์ในลักษณะโครงสร้างเป็นชั้น ๆ ที่มีการเก็บรายละเอียดภายในไว้ การแตกมุมมองและภาคตัดขวางของออปเจ็กต์สามารถใช้แสดงโครงสร้างภายในและความสัมพันธ์ของแต่ละชิ้นของออปเจ็กตืได้ รูปต่อไปแสดงการแตกมุมมองที่หลากหลายในการออกแบบทางกลศาสตร์ นอกจากนี้ยังมีการแตกมุมมองของออปเจ็กต์เป็นภาคตัดขวางชิ้นส่วนของออปเจ็กต์ ดังรูปถัดไปซึ่งนำพื้นผิวออกไปเพื่อแสดงโครงสร้างภายใน การแตกมุมมองและภาคตัดขวาง

  21. ภาพเครื่องยนต์ ก) ภาพส่วนประกอบเครื่องยนต์ทั้งหมด ข) ภาพแตกมุมมมองเป็นเส้นโครง ค) ภาพแตกมุมมองเป็นพิ้นผิว ง) ภาพแตกมุมมองการเรนเดอร์พิ้นผิวและการให้สี

  22. ภาคตัดขวางของชิ้นส่วนออปเจ็กต์เพื่อแสดงโครงสร้างและความสัมพันธ์ของส่วนประกอบภายใน

  23. ขั้นตอนการสร้างภาพคอมพิวเตอร์กราฟิกในมุมมองของภาพ 3 มิติคล้ายกับขั้นตอนของการถ่ายภาพ ขั้นแรกเราต้องเลือกตำแหน่งการมองให้สัมพันธ์กับตำแหน่งกล้อง เราเลือกตำแหน่งการมองตามสิ่งที่เราต้องการแสดงมุมมองหน้า, หลัง, ข้าง, บน และล่างของภาพ เรายังสามารถเลือกตำแหน่งกึ่งกลางของกลุ่มออปเจ็กต์หรือภายในออปเจ็กต์ชิ้นเดียว เช่น ตึก หรือโมเลกุล ก็ได้ หลักการมองภาพ 3 มิติ

  24. หลังจากนั้นเราตัดสินใจเลือกแบบการวางกล้อง (ดังรูป) ซึ่งเป็นสิ่งที่เราต้องการกำหนดจุดของกล้องจากตำแหน่งการมองที่ต้องการ ขั้นสุดท้าย เมื่อกดชัตเตอร์ จะมีการตัดส่วนภาพให้มีขนาดตามวินโดว์ขริบภาพที่เลือกซึ่งสัมพันธ์กับช่องรับแสง หรือประเภทของเลนส์กล้อง และมีการป้องกันฟิล์มไม่ให้โดนแสง หลักการมองภาพ 3 มิติ

  25. หลักการมองภาพ 3 มิติ การถ่ายภาพที่มีการเลือกตำแหน่งและแบบการวางกล้อง

  26. อย่างไรก็ตามให้คิดไว้เสมอว่าเราสามารถนำกล้องถ่ายรูปติดตัวไปที่ไหนไกล ๆ ได้เท่านั้น แต่สำหรับโปรแกรมทางคอมพิวเตอร์กราฟิกแล้ว จะมีความยืดหยุ่น และมีออปชันมากมายในการสร้างมุมมองของภาพที่มากกว่าที่ได้จากกล้อง เราสามารถเลือกโปรเจ็กต์ชันแบบขนานหรือแบบเพอร์สเปกทีพก็ได้ หรือจะกำจัดส่วนที่ไม่ต้องการทิ้งออกไป หรือจะย้ายระนาบโปรเจ็กต์ชันออกจากตำแหน่งของกล้องก็ได้ หลักการมองภาพ 3 มิติ

  27. ในการดำเนินการกับการมองภาพ 3 มิติก็เหมือนกับที่เราใช้ในหลักการมองภาพ 2 มิติ วิวพอร์ตของภาพ 2 มิติถูกนำมาใช้กำหนดตำแหน่งมุมมองโปรเจ็กต์ของภาพ 3 มิติบนอุปกรณ์แสดงผล วินโดว์ขริบภาพ 2 มิติถูกนำมาใช้เลือกมุมมองที่จะถูกแม็พไปยังวิวพอร์ต เมื่อเรากำหนดวินโดว์แสดงผลในโคออร์ดิเนตของจอภาพ เราแค่เพียงทำในแอปพลิเคชัน 2 มิติเท่านั้น ทั้งวินโดว์ขริบภาพ วิวพอร์ต และวินโดว์แสดงผลโดยปกติจะกำหนดเป็นสี่เหลี่ยมผืนผ้าที่มีขอบขนานกับแกนของโคออร์ดิเนต หลักการมองภาพ 3 มิติ

  28. อย่างไรก็ตาม ในการมองภาพ 3 มิตินั้น วินโดว์ขริบภาพถูกกำหนดตำแหน่งอยู่บนระนาบการมอง และภาพถูกขริบออกและล้อมรอบด้วยสิ่งว่างเปล่า ซึ่งกำหนดโดยชุดของระนาบการขริบ (clipping planes) ตำแหน่งการมอง, ระนาบการมอง, วินโดว์ขริบภาพ และระนาบการขริบ ทั้งหมดนี้ถูกกำหนดอยู่ภายในเฟรมอ้างอิงของโคออร์ดิเนตการมอง หลักการมองภาพ 3 มิติ

  29. รูปต่อไปแสดงขั้นตอนทั่วไปในการสร้างและแปลงภาพ 3 มิติไปยังโคออร์ดิเนตของอุปกรณ์ เริ่มต้นที่การแปลงโมเดลของโคออร์ดิเนตโมเดล (MC) ไปเป็นโคออร์ดิเนตทางกายภาพ (WC) หลังจากนั้นทำการแปลงทางมุมมองให้เป็นโคออร์ดิเนตของมุมมอง (VC) โคออร์ดิเนตของมุมมองนี้จะกำหนดพารามิเตอร์ของการมอง รวมทั้งตำแหน่งและแนวของระนาบโปรเจ็กต์ชัน (ระนาบการมอง) ซึ่งเหมือนกับระนาบของฟิล์มในกล้องถ่ายรูป วินโดว์ขริบภาพ 2 มิติที่สัมพันธ์กับเลนส์ถูกกำหนดบนระนาบโปรเจ็กต์ชัน และมีการสร้างพื้นที่ขริบภาพ 3 มิติ หลักการมองภาพ 3 มิติ

  30. พื้นที่ขริบภาพนี้เรียกว่า ปริมาตรการมอง (view volume) โดยมีรูปร่างและขนาดขึ้นกับมิติของวินโดว์ขริบภาพ, ประเภทโปรเจ็กต์ชันที่เราเลือก และขีดจำกัดตำแหน่งตามทิศทางการมอง โปรเจ็กต์ชันจะดำเนินการเพื่อแปลงโคออร์ดิเนตการมองของจอภาพเป็นตำแหน่งโคออร์ดิเนตบนระนาบโปรเจ็กต์ (PC) ออปเจ็กต์จะถูกแม็พไปยังโคออร์ดิเนตนอมอลไลซ์ (NC) และทุกส่วนของจอภาพที่อยู่ภายนอกของปริมาตรการมองจะถูกขริบออกไป การดำเนินการขริบสามารถประยุกต์ใช้ได้กับการแปลงโคออร์ดิเนตของอุปกรณ์ (จากโคออร์ดิเนตทางกายภาพไปเป็นโคออร์ดิเนตนอมอลไลซ์) หลักการมองภาพ 3 มิติ

  31. หลักการมองภาพ 3 มิติ หลักทั่วไปในการสร้างและแปลงภาพ 3 มิติ

  32. เช่นเดียวกับการมองภาพ 2 มิติ ขีดจำกัดของวิวพอร์ตมีผลต่อโคออร์ดิเนตนอมอลไลซ์ หรือโคออร์ดิเนตของอุปกรณ์ ในการพัฒนาอัลกอริทึ่มของมุมมอง เราสมมุติว่าวิวพอร์ตที่กำหนดในโคออร์ดิเนตของอุปกรณ์ และในโคออร์ดิเนตนอมอลไลซ์จะถูกโอนไปเป็นโคออร์ดิเนตของวิวพอร์ตตามขั้นตอนการขริบ ยังมีงานอีกเล็กน้อยต้องทำ เช่น การกำหนดพื้นผิวการมองเห็น และการการเรนเดอร์พื้นผิว ขั้นตอนสุดท้ายคือการแม็พโคออร์ดิเนตของวิวพอร์ตไปยังโคออร์ดิเนตของอุปกรณ์ภายในวินโดว์แสดงผล หลักการมองภาพ 3 มิติ

  33. การสร้างเฟรมอ้างอิงการมองภาพ 3 มิติเหมือนกับการกำหนดเฟรมอ้างอิงการมองภาพ 2 มิติ ขั้นแรกเราเลือกตำแหน่งโคออร์ดิเนตทางกายภาพ P0 = (x0, y0, z0) สำหรับจุดกำเนิดการมองซึ่งเรียกว่า จุดมอง (view point) หรือ ตำแหน่งการมอง (viewing position) (บางครั้งจุดมองนี้ยังอ้างถึงตำแหน่งของตา หรือ ตำแหน่งของกล้อง) เรากำหนด view up vector (V) ซึ่งกำหนดเป็นทิศทาง yviewสำหรับภาพ 3 มิติ เรายังต้องกำหนดทิศทางของแกนที่เหลือหนึ่งแกนจากสองแกน ทำให้ได้เวกเตอร์ที่สองที่กำหนดเป็นแกน zview ที่มีทิศทางการมองตามแกนนี้ พารามิเตอร์ของโคออร์ดิเนตการมองภาพ 3 มิติ

  34. พารามิเตอร์ของโคออร์ดิเนตการมองภาพ 3 มิติ ระบบโคออร์ดิเนตการมองแบบมือขวาที่มีแกน xview,yview, zviewสัมพันธ์กับเฟรมโคออร์ดิเนตทางกายภาพที่เป็นระบบมือขวา

  35. เนื่องจากทิศทางการมองปกติจะเป็นไปตามแกน z ระนาบการมองซึ่งอาจจะเรียกว่าระนาบโปรเจ็กต์ชันนั้น ปกติจะสมมุติให้ตั้งฉากกับแกนนี้ ดังนั้นแนวของระนาบการมองจะเป็นทิศทางบวกสำหรับแกน zviewสามารถกำหนดได้ด้วยระนาบการมอง normal vector N แสดงดังรูป ระนาบการมอง Normal Vector

  36. ระนาบการมอง Normal Vector แนวของระนาบการมอง และระนาบการมอง normal vector N

  37. พารามิเตอร์เพิ่มเติมที่นำมาใช้ในการกำหนดตำแหน่งของระนาบการมองที่โคออร์ดิเนต zvpตามแกน zviewแสดงดังรูป ค่าพารามิเตอร์นี้โดยปกติกำหนดเป็นทิศทางจากจุดกำเนิดการมองไปตามทิศทางการมองซึ่งส่วนมากจะมีทิศทาง - zview ดังนั้นระนาบการมองมักจะขนานกับระนาบ xviewyview และโปรเจ็กต์ชันของออปเจ็กต์ไปยังระนาบการมองที่สัมพันธ์กับมุมมองของจอภาพที่แสดงออกทางอุปกรณ์แสดงผล ระนาบการมอง Normal Vector

  38. ระนาบการมอง Normal Vector ตำแหน่งที่เป็นไปได้ 3 ตำแหน่งสำหรับระนาบการมองตามแกน zview

  39. เวกเตอร์ N สามารถกำหนดได้หลายวิธี ในกราฟิกบางระบบ ทิศทางของ N ถูกกำหนดตามเส้นจากจุดกำเนิดโคออร์ดิเนตทางกายภาพไปยังตำแหน่งจุดที่เลือก ระบบอื่น ใช้ N อยู่ในทิศทางจากจุดอ้างอิง Pref ไปยังจุดกำเนิดการมอง P0ดังรูปในกรณีนี้จุดอ้างอิงจะอ้างถึงจุด look at point ภายในจอภาพโดยมีทิศทางการมองตรงข้ามกับทิศทางของ N ระนาบการมอง Normal Vector

  40. ระนาบการมอง Normal Vector การกำหนดระนาบการมอง normal vector N ที่มีทิศทางจากจุดอ้างอิง Prefไปยังจุดกำเนิดการมอง P0

  41. เราสามารถกำหนดระนาบการมอง normal vector และทิศทางของเวกเตอร์อื่นโดยการใช้มุมกำหนดทิศทาง (direction angle) โดยมี 3 มุมคือ , และ  ที่สร้างด้วยแกน x, y และ z ตามลำดับ แต่ถ้ากำหนดทิศทางของเวกเตอร์ด้วยตำแหน่งของจุด 2 จุด จะเป็นเรื่องง่ายกว่าการกำหนดด้วยมุมกำหนดทิศทาง ระนาบการมอง Normal Vector

  42. เมื่อเราเลือกระนาบการมอง normal vector N เราสามารถกำหนดทิศทางสำหรับ View-Up Vector V ซึ่งเวกเตอร์นี้นำมาสร้างทิศทางบวกสำหรับแกน yview ปกติ V ถูกกำหนดโดยการเลือกตำแหน่งที่สัมพันธ์กับจุดกำเนิดโคออร์ดิเนตทางกายภาพ ดังนั้นทิศทางสำหรับ View-Up Vector จะเริ่มจากจุดกำเนิดทางกายภาพไปยังตำแหน่งที่เลือก เนื่องจากระนาบการมอง normal vector N กำหนดทิศทางสำหรับแกน zviewเวกเตอร์ V ควรจะตั้งฉากกับ N View-Up Vector

  43. แต่โดยปกติแล้วเป็นการยากที่จะกำหนดทิศทางของ V ให้ตั้งฉากกับ N ดังนั้นรูทีนในการมองจะปรับแนวเวกเตอร์ V ที่ผู้ใช้กำหนด ดังรูปดังนั้น V จะถูกโปรเจ็กต์ลงบนระนาบที่ตั้งฉากกับระนาบการมอง normal vector N เราสามารถเลือกทิศทางใด ๆ สำหรับ view-up vector V แต่ต้องไม่ขนานกับ N ตัวเลือกที่สะดวกและนำมาใช้บ่อย ๆ ก็คือทิศทางที่ขนานกับแกน ywที่กำหนด v = (0, 1, 0) View-Up Vector

  44. View-Up Vector การปรับแนว view-up vector V ให้ตั้งฉากกับระนาบการมอง normal vector N

  45. โคออร์ดิเนตการมองแบบมือซ้ายในบางครั้งก็นำมาใช้ในกราฟิกแพ็กเกจโดยทิศทางการมองในทิศทางบวก zview ในระบบมือซ้าย การเพิ่มค่า zviewจะเป็นการแปลค่าให้เป็นค่าที่อยู่ไกลออกไปตำแหน่งการมอง แต่ในระบบการมองแบบมือขวาซึ่งเป็นแบบปกติที่ใช้กันอยู่ เนื่องจากมีแนวเดียวกับเฟรมอ้างอิงทางกายภาพ สิ่งนี้เองที่ทำให้กราฟิกแพ็กเกจใช้เพียงโคออร์ดิเนตเดียวทั้งการอ้างอิงทางกายภาพและการมอง ในช่วงแรกแพ็กเกจกำหนดโคออร์ดิเนตการมองภายในเฟรมแบบมือซ้าย แต่กราฟิกแพ็กเกจปัจจุบันจะใช้โคออร์ดิเนตการมองแบบมือขวาเป็นมาตรฐาน อย่างไรก็ตาม การอ้างอิงโคออร์ดิเนตแบบมือซ้ายก็มีนำมาใช้บ่อยในการแสดงโคออร์ดิเนตของจอภาพ และการแปลงแบบนอมอลไลซ์ เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn

  46. เนื่องจากระนาบการมอง normal vector N จะกำหนดทิศทางสำหรับแกน zview และ view-up vector V ถูกนำมาใช้เพื่อให้ได้ทิศทางสำหรับแกน yview เราต้องการกำหนดทิศทางสำหรับแกน xview การใช้ค่า N และ V เราสามารถคำนวณเวกเตอร์ U ซึ่งเป็นเวกเตอร์ตัวที่สามที่ตั้งฉากกับทั้งเวกเตอร์ N และ V หลังจากนั้นกำหนดทิศทางเวกเตอร์ U สำหรับแกนบวก xviewเรากำหนดทิศทางที่ถูกต้องสำหรับ U โดยการหาผลคูณของเวกเตอร์ V และ N เช่นเดียวกับแบบของเฟรมการมองแบบมือขวา ผลคูณของเวกเตอร์ N และ U สร้างเวกเตอร์ V ที่ตั้งฉากทั้ง N และ U ตามแกนบวก yview ตามขั้นตอนที่กล่าวนี้ เรากำหนดชุดของเวกเตอร์หนึ่งหน่วยสำหรับระบบโคออร์ดิเนตการมองแบบมือขวา เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn

  47. เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn 8.1

  48. ระบบโคออร์ดิเนตที่มีเวกเตอร์ขนาดหนึ่งหน่วยนี้เป็นเฟรมอ้างอิงโคออร์ดิเนตการมอง uvn (ดังรูป) เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn ระบบการมองแบบมือขวาที่กำหนดด้วยเวกเตอร์หนึ่งหน่วย u, v และ n

  49. การเปลี่ยนค่าพารามิเตอร์การมองทำให้เราเห็นออปเจ็กต์บนจอภาพแตกต่างกันออกไป เช่น จากตำแหน่งการมองที่คงที่ เราสามารถเปลี่ยนทิศทางของ N เพื่อแสดงออปเจ็กต์ที่ตำแหน่งรอบ ๆ จุดกำเนิดโคออร์ดิเนตการมอง เรายังสามารถเปลี่ยนค่า N เพื่อแสดงเป็นหลาย ๆ มุมมองจากตำแหน่งกล้องที่คงที่ ในแอปพลิเคชันที่เป็นอินเตอร์แอ็กทีพ เวกเตอร์ N เป็นพารามิเตอร์การมองที่มักมีการเปลี่ยนแปลงเสมอ เมื่อเราเปลี่ยนทิศทางของ N เราต้องเปลี่ยนเวกเตอร์แกนอื่นด้วยเพื่อให้เป็นไปตามระบบโคออร์ดิเนตการมองแบบมือขวาไว้ การสร้างเอ็ฟเฟ็กต์การมองภาพ 3 มิติ

  50. ถ้าเราต้องการจำลองการใช้เอ็ฟเฟ็กต์สำหรับภาพเคลื่อนไหว เช่นเมื่อกล้องเคลื่อนเข้าหาจอภาพ หรือตามออปเจ็กต์ที่เคลื่อนเข้าหาจอภาพ เราสามารถคงสภาพทิศทางของ N ให้คงที่ได้เช่นเดียวกับที่เราย้ายจุดมอง แสดงดังรูป เพื่อแสดงมุมมองแสดงผลที่แตกต่างของออปเจ็กต์ เช่น มุมมองด้านข้าง และด้านหน้า เราสามารถย้ายจุดมองไปรอบ ๆ ออปเจ็กต์ ดังรูปถัดไป อีกทางเลือกหนึ่งก็คือมุมมองที่แตกต่างของออปเจ็กต์หรือกลุ่มของออปเจ็กต์สามารถสร้างได้ด้วยการแปลงทางเรขาคณิตโดยไม่มีการเปลี่ยนพารามิเตอร์การมองอื่น ๆ การสร้างเอ็ฟเฟ็กต์การมองภาพ 3 มิติ

More Related