2.12k likes | 2.68k Views
คอมพิวเตอร์กราฟิกส์ใช้ OpenGL (Computer Graphics using OpenGL). บทที่ 8 การมองภาพ 3 มิติและการขริบภาพ ( 3D Viewing & Clipping ). ในกราฟิก 2 มิติ การมองภาพจะแปลงตำแหน่งจากระนาบทางกายภาพไปเป็นตำแหน่งพิกเซลในระนาบของอุปกรณ์แสดงผล
E N D
คอมพิวเตอร์กราฟิกส์ใช้ OpenGL(Computer Graphics using OpenGL)
บทที่ 8การมองภาพ 3 มิติและการขริบภาพ(3D Viewing & Clipping )
ในกราฟิก 2 มิติ การมองภาพจะแปลงตำแหน่งจากระนาบทางกายภาพไปเป็นตำแหน่งพิกเซลในระนาบของอุปกรณ์แสดงผล วินโดว์ขริบภาพและวิวพอร์ตที่ใช้ขอบเขตเป็นสี่เหลี่ยมในกราฟิก 2 มิติจะขริบภาพแล้วแม็พไปยังโคออร์ดิเนตของอุปกรณ์แสดงผลได้ทันที แต่การมองภาพ 3 มิติมีสิ่งที่เกี่ยวข้องมากมายที่เป็นตัวเลือกที่สามารถสร้างภาพ และสร้างมุมมองของภาพบนอุปกรณ์แสดงผลได้ ถึงแม้ออปเจ็กต์ 3 มิติต้องใช้โคออร์ดิเนตถึง 3 แกน แต่ภาพ 3 มิติเหล่านี้จะถูกวาดลงบนระนาบเรียบ 2 มิติเพื่อให้ผู้ใช้เห็นออปเจ็กต์นั้น ดังนั้นจึงต้องมีวิธีการสร้างภาพ 2 มิติของออปเจ็กต์ที่ถูกกำหนดไว้ในโคออร์ดิเนต 3 มิติ OpenGL คืออะไร
เมื่อเราสร้างรูปทรง 3 มิติบนจอภาพ แต่ละออปเจ็กต์บนจอภาพถูกกำหนดเป็นชุดของพื้นผิวปิดที่ประกอบรวมกันเป็นออปเจ็กต์ บางแอปพลิเคชันเราอาจจะต้องกำหนดข้อมูลโครงสร้างภายในของออปเจ็กต์เพิ่มเติม นอกจากโปรซีเดอร์สำหรับการสร้างมุมมองพื้นผิวของออปเจ็กต์แล้ว ในบางครั้งกราฟิกแพ็กเกจจะต้องมีรูทีนในการแสดงโครงสร้างภายใน หรือมุมมองภาคตัดขวางของออปเจ็กต์ทึบด้วย ฟังก์ชันการมองจะแสดงรายละเอียดของออปเจ็กต์เป็นชุดของโปรซีเดอร์ที่โปรเจ็กต์มุมมองของออปเจ็กต์เพื่อกำหนดลงบนอุปกรณ์แสดงผล หลักการมองภาพ 3 มิติ
มีหลายขั้นตอนในการมองภาพ 3 มิติ เช่น รูทีนการขริบภาพ ที่เหมือนกับการมองภาพ 2 มิติ แต่ในการมองภาพ 3 มิติมีงานบางอย่างที่ไม่ได้แสดงในการมองภาพ 2 มิติ ยกตัวอย่างเช่น ต้องใช้รูทีนของโปรเจ็กต์ชันเพื่อแปลงจอภาพไปบนผิวระนาบ ต้องมีการกำหนดจอภาพการมองห็น สำหรับการแสดงผลให้สมจริงจะต้องมีการใช้การตกกระทบของแสง และใช้คุณสมบัติของพื้นผิวประกอบด้วย ภาพรวมแนวคิดการมองภาพ 3 มิติ
การแสดงจอภาพ 3 มิติ ในขั้นแรกเราต้องกำหนดการอ้างอิงโคออร์ดิเนตสำหรับพารามิเตอร์การมอง หรือที่เรียกว่า “กล้อง” การอ้างอิงโคออร์ดิเนตนี้จะกำหนดตำแหน่งและแนวสำหรับระนาบการมอง (view plane หรือ projection plane) ที่สัมพันธ์กับกล้องถ่ายภาพ (ดังรูป) หลังจากนั้นรายละเอียดของออปเจ็กต์จะถูกแปลงไปยังโคออร์ดิเนตที่อ้างอิงการมอง แล้วจึงโปรเจ็กต์ภาพนั้นไปบนระนาบ เราสามารถสร้างมุมมองของออปเจ็กต์บนอุปกรณ์แสดงผลในแบบของเอาต์ไลน์ได้ หรือจะประยุกต์ใช้เทคนิคของแสงและเงา รวมทั้งการเรนเดอร์พื้นผิวเพื่อให้ภาพเกิดเป็นภาพสมจริงมากยิ่งขึ้นได้อีกด้วย การมองภาพ 3 มิติ
การมองภาพ 3 มิติ การอ้างอิงโคออร์ดิเนตสำหรับมุมมองของจอภาพ 3 มิติ
สิ่งที่แตกต่างจากกล้องถ่ายภาพก็คือ เราสามารถเลือกวิธีโปรเจ็กต์ชันภาพลงบนระนาบการมอง วิธีการหนึ่งที่สามารถให้รายละเอียดของออปเจ็กต์ทึบบนระนาบแสดงผลคือโปรเจ็กต์ชันพื้นผิวของออปเจ็กต์แบบขนานซึ่งเรียกเทคนิคนี้ว่า “โปรเจ็กต์ชันแบบขนาน” (parallel projection) ที่ใช้กันบ่อยในการวาดทางวิศวกรรมและสถาปัตยกรรมเพื่อแสดงออปเจ็กต์ด้วยชุดของมุมมองเพื่อแสดงออปเจ็กต์ได้อย่างเที่ยงตรง ดังรูป โปรเจ็กต์ชัน (Projection)
โปรเจ็กต์ชัน (Projection) มุมมอง 3 มุมมองของโปรเจ็กต์ชันแบบขนานที่ใช้ในด้านวิศวกรรมและสถาปัตยกรรม
วิธีการอื่นในการสร้างภาพ 3 มิติคือโปรเจ็กต์ชันไปยังระนาบการมองตามเส้นทางที่เบนเข้าหากัน โปรเจ็กต์ชันนี้เรียกว่า โปรเจ็กต์ชันแบบเพอร์สเปกทีพ (perspective projection) โปรเจ็กต์ชันแบบนี้ทำให้ออปเจ็กต์ที่มีขนาดเท่ากันแต่อยู่ตำแหน่งที่ไกลจากตำแหน่งการมองจะแสดงขนาดที่เล็กกว่าออปเจ็กต์ที่อยู่ใกล้กับตำแหน่งการมอง ภาพที่สร้างจากโปรเจ็กต์ชันแบบนี้จะให้ความสมจริงมากกว่า เนื่องจากเป็นวิธีเดียวกับการการสร้างภาพของกล้องและตาของเรา ภาพดังรูป จะแสดงเส้นขนานตามทิศทางการมองที่ปรากฏเป็นเส้นทางที่เบนเข้าหากันในแบ็คกราวนด์ และเครื่องบินในแบ็คกราวนด์เล็กกว่าที่ขึ้นในฟอร์กราวนด์ โปรเจ็กต์ชัน (Projection)
การมองภาพ 3 มิติ ภาพเพอร์สเปกทีพของสนามบิน
ข้อมูลความลึกของภาพเป็นส่วนสำคัญของภาพ 3 มิติ เราสามารถกำหนดทิศทางการมองโดยเฉพาะได้ง่าย ๆ ซึ่งทิศทางนี้เป็นทิศทางของหน้าและหลังของออปเจ็กต์ที่แสดง รูปต่อไปแสดงรูปโครงของปิระมิดที่ไม่มีข้อมูลความลึกของออปเจ็กต์ มีหลายวิธีทีเราสามารถรวมข้อมูลความลึกในการแสดงออปเจ็กต์ทึบในการแสดงภาพ 2 มิติ ความลึกของภาพ (Dept cueing)
ความลึกของภาพ (Dept cueing) การแสดงรูปโครงของปิระมิด ก) ไม่มีข้อมูลความลึกที่ชี้ว่าทิศทางการมองเป็นอย่างไร ข) มองลงมาจากด้านบนของปิระมิด ค) มองขึ้นจากด้านล่างของปิระมิด
วิธีการง่าย ๆ ในการแสดงความลึกในการแสดงรูปโครงร่างจะใช้ความสว่างของเส้นที่แปรเปลี่ยนไปตามระยะทางจากตำแหน่งที่มอง โดยปกติแล้วตำแหน่งการมองที่อยู่ใกล้จะแสดงความสว่างของเส้นที่ชัดเจนกว่าตำแหน่งการมองที่อยู่ไกล ๆ โดยจะลดระดับความเข้มของแสงสว่างลงไปเมื่ออยู่ไกลออกไป การกำหนดความลึกนี้จะมีการกำหนดช่วงความเข้มของแสงสว่างที่เปลี่ยนไปตามตำแหน่งการมอง ความลึกของภาพ (Dept cueing)
การกำหนดความลึกในแอปพลิเคชันอื่นคือการจำลองโมเดลเอฟเฟ็กต์ของบรรยากาศของออปเจ็กต์ที่มองเห็น ยิ่งระยะไกลออกไปออปเจ็กต์จะปรากฏมัวกว่าเมื่ออยู่ใกล้ออปเจ็กต์ตามการกระจายของแสงที่มีผุ่น หมอก และควัน ในบางเอฟเฟ็กต์ของบรรยากาศสามารถเปลี่ยนสีของออปเจ็กต์ และเราสามารถจำลองเอฟเฟ็กต์ได้ด้วยการใช้ความลึกเข้ามาช่วย ความลึกของภาพ (Dept cueing)
เราสามารถให้ความชัดเจนถึงความสัมพันธ์ของความลึกในการแสดงรูปโครงร่างโดยการใช้เทคนิดอื่นนอกเหนือจากการกำหนดความลึก วิธีหนึ่งที่นำมาใช้คือการไฮไลต์เส้นที่มองเห็น หรือแสดงด้วยสีที่แตกต่างกัน ส่วนเทคนิคอื่นที่มักนำมาใช้บ่อย ๆ ในการวาดภาพทางวิศวกรรมคือการแสดงเส้นที่มองไม่เห็นด้วยเส้นประ หรือเราจะกำจัดเส้นที่มองไม่เห็นออกไปจากภาพก็ได้ ดังรูปข) และ ค) ที่ผ่านมา แต่การกำจัดเส้นที่ซ่อนอยู่จะเป็นการลบข้อมูลเกี่ยวกับรูปทรงที่พื้นผิวด้านหลังของออปเจ็กต์ การแสดงรูปโครงร่างโดยทั่วไปจะเป็นการแสดงภาพรวมของออปเจ็กต์ที่มีทั้งหน้าและหลังอยู่แล้ว การกำหนดเส้นและพื้นผิวที่เห็นได้
เมื่อมีการสร้างมุมมองภาพเสมือนจริง (realistic) ของภาพ ส่วนหลังของภาพจะถูกกำจัดออกไป ดังนั้นจะมีเพียงพื้นผิวที่มองเห็นเท่านั้นที่มองเห็น ในกรณีนี้จะมีการประยุกต์ใช้ขั้นตอนการเรนเดอร์พื้นผิว (Surface Rendering) ทำให้พิกเซลของจอภาพจะมีเพียงแพทเทิร์นของสีพื้นผิวด้านหน้าเท่านั้น การกำหนดเส้นและพื้นผิวที่เห็นได้
การกำหนดเส้นและพื้นผิวที่เห็นได้การกำหนดเส้นและพื้นผิวที่เห็นได้ ภาพเสมือนจริงของห้องที่ใช้โปรเจ็กต์ชันแบบเพอร์สเปกทีพ ความเข้มของแสง และคุณสมบัติทางพื้นผิว
การเพิ่มความสมจริงในการแสดงผลทำได้โดยการเรนเดอร์พื้นผิวของออปเจ็กต์ด้วยการใช้แสงในจอภาพ และการใช้คุณสมบัติของพื้นผิว เรากำหนดสถานะของแสงโดยการกำหนดสี และตำแหน่งแหล่งกำเนิดแสง เรายังสามารถกำหนดเอ็ฟเฟ็กต์ความเข้มของแบ็คกราวนด์ได้อีกด้วย คุณสมบัติทางพื้นผิวของออปเจ็กต์อาจจะเป็นแบบโปร่งแสงหรือทึบแสงก็ได้ ประเภทของพื้นผิวอาจจะเป็นแก้ว พลาสติก ลายไม้ หรือผิวขรุขระ ในรูปที่ผ่านมาเป็นวิธีการเรนเดอร์พื้นผิวรวมอยู่กับเพอร์สเปกทีพและการกำนดการมองเห็นของพิ้นผิวเพื่อสร้างระดับความเสมือนจริงบนจอภาพ การเรนเดอร์พื้นผิว (Surface Rendering)
มีหลาย ๆ กราฟิกแพ็กเกจยอมให้มีการออกแบบออปเจ็กต์ในลักษณะโครงสร้างเป็นชั้น ๆ ที่มีการเก็บรายละเอียดภายในไว้ การแตกมุมมองและภาคตัดขวางของออปเจ็กต์สามารถใช้แสดงโครงสร้างภายในและความสัมพันธ์ของแต่ละชิ้นของออปเจ็กตืได้ รูปต่อไปแสดงการแตกมุมมองที่หลากหลายในการออกแบบทางกลศาสตร์ นอกจากนี้ยังมีการแตกมุมมองของออปเจ็กต์เป็นภาคตัดขวางชิ้นส่วนของออปเจ็กต์ ดังรูปถัดไปซึ่งนำพื้นผิวออกไปเพื่อแสดงโครงสร้างภายใน การแตกมุมมองและภาคตัดขวาง
ภาพเครื่องยนต์ ก) ภาพส่วนประกอบเครื่องยนต์ทั้งหมด ข) ภาพแตกมุมมมองเป็นเส้นโครง ค) ภาพแตกมุมมองเป็นพิ้นผิว ง) ภาพแตกมุมมองการเรนเดอร์พิ้นผิวและการให้สี
ภาคตัดขวางของชิ้นส่วนออปเจ็กต์เพื่อแสดงโครงสร้างและความสัมพันธ์ของส่วนประกอบภายใน
ขั้นตอนการสร้างภาพคอมพิวเตอร์กราฟิกในมุมมองของภาพ 3 มิติคล้ายกับขั้นตอนของการถ่ายภาพ ขั้นแรกเราต้องเลือกตำแหน่งการมองให้สัมพันธ์กับตำแหน่งกล้อง เราเลือกตำแหน่งการมองตามสิ่งที่เราต้องการแสดงมุมมองหน้า, หลัง, ข้าง, บน และล่างของภาพ เรายังสามารถเลือกตำแหน่งกึ่งกลางของกลุ่มออปเจ็กต์หรือภายในออปเจ็กต์ชิ้นเดียว เช่น ตึก หรือโมเลกุล ก็ได้ หลักการมองภาพ 3 มิติ
หลังจากนั้นเราตัดสินใจเลือกแบบการวางกล้อง (ดังรูป) ซึ่งเป็นสิ่งที่เราต้องการกำหนดจุดของกล้องจากตำแหน่งการมองที่ต้องการ ขั้นสุดท้าย เมื่อกดชัตเตอร์ จะมีการตัดส่วนภาพให้มีขนาดตามวินโดว์ขริบภาพที่เลือกซึ่งสัมพันธ์กับช่องรับแสง หรือประเภทของเลนส์กล้อง และมีการป้องกันฟิล์มไม่ให้โดนแสง หลักการมองภาพ 3 มิติ
หลักการมองภาพ 3 มิติ การถ่ายภาพที่มีการเลือกตำแหน่งและแบบการวางกล้อง
อย่างไรก็ตามให้คิดไว้เสมอว่าเราสามารถนำกล้องถ่ายรูปติดตัวไปที่ไหนไกล ๆ ได้เท่านั้น แต่สำหรับโปรแกรมทางคอมพิวเตอร์กราฟิกแล้ว จะมีความยืดหยุ่น และมีออปชันมากมายในการสร้างมุมมองของภาพที่มากกว่าที่ได้จากกล้อง เราสามารถเลือกโปรเจ็กต์ชันแบบขนานหรือแบบเพอร์สเปกทีพก็ได้ หรือจะกำจัดส่วนที่ไม่ต้องการทิ้งออกไป หรือจะย้ายระนาบโปรเจ็กต์ชันออกจากตำแหน่งของกล้องก็ได้ หลักการมองภาพ 3 มิติ
ในการดำเนินการกับการมองภาพ 3 มิติก็เหมือนกับที่เราใช้ในหลักการมองภาพ 2 มิติ วิวพอร์ตของภาพ 2 มิติถูกนำมาใช้กำหนดตำแหน่งมุมมองโปรเจ็กต์ของภาพ 3 มิติบนอุปกรณ์แสดงผล วินโดว์ขริบภาพ 2 มิติถูกนำมาใช้เลือกมุมมองที่จะถูกแม็พไปยังวิวพอร์ต เมื่อเรากำหนดวินโดว์แสดงผลในโคออร์ดิเนตของจอภาพ เราแค่เพียงทำในแอปพลิเคชัน 2 มิติเท่านั้น ทั้งวินโดว์ขริบภาพ วิวพอร์ต และวินโดว์แสดงผลโดยปกติจะกำหนดเป็นสี่เหลี่ยมผืนผ้าที่มีขอบขนานกับแกนของโคออร์ดิเนต หลักการมองภาพ 3 มิติ
อย่างไรก็ตาม ในการมองภาพ 3 มิตินั้น วินโดว์ขริบภาพถูกกำหนดตำแหน่งอยู่บนระนาบการมอง และภาพถูกขริบออกและล้อมรอบด้วยสิ่งว่างเปล่า ซึ่งกำหนดโดยชุดของระนาบการขริบ (clipping planes) ตำแหน่งการมอง, ระนาบการมอง, วินโดว์ขริบภาพ และระนาบการขริบ ทั้งหมดนี้ถูกกำหนดอยู่ภายในเฟรมอ้างอิงของโคออร์ดิเนตการมอง หลักการมองภาพ 3 มิติ
รูปต่อไปแสดงขั้นตอนทั่วไปในการสร้างและแปลงภาพ 3 มิติไปยังโคออร์ดิเนตของอุปกรณ์ เริ่มต้นที่การแปลงโมเดลของโคออร์ดิเนตโมเดล (MC) ไปเป็นโคออร์ดิเนตทางกายภาพ (WC) หลังจากนั้นทำการแปลงทางมุมมองให้เป็นโคออร์ดิเนตของมุมมอง (VC) โคออร์ดิเนตของมุมมองนี้จะกำหนดพารามิเตอร์ของการมอง รวมทั้งตำแหน่งและแนวของระนาบโปรเจ็กต์ชัน (ระนาบการมอง) ซึ่งเหมือนกับระนาบของฟิล์มในกล้องถ่ายรูป วินโดว์ขริบภาพ 2 มิติที่สัมพันธ์กับเลนส์ถูกกำหนดบนระนาบโปรเจ็กต์ชัน และมีการสร้างพื้นที่ขริบภาพ 3 มิติ หลักการมองภาพ 3 มิติ
พื้นที่ขริบภาพนี้เรียกว่า ปริมาตรการมอง (view volume) โดยมีรูปร่างและขนาดขึ้นกับมิติของวินโดว์ขริบภาพ, ประเภทโปรเจ็กต์ชันที่เราเลือก และขีดจำกัดตำแหน่งตามทิศทางการมอง โปรเจ็กต์ชันจะดำเนินการเพื่อแปลงโคออร์ดิเนตการมองของจอภาพเป็นตำแหน่งโคออร์ดิเนตบนระนาบโปรเจ็กต์ (PC) ออปเจ็กต์จะถูกแม็พไปยังโคออร์ดิเนตนอมอลไลซ์ (NC) และทุกส่วนของจอภาพที่อยู่ภายนอกของปริมาตรการมองจะถูกขริบออกไป การดำเนินการขริบสามารถประยุกต์ใช้ได้กับการแปลงโคออร์ดิเนตของอุปกรณ์ (จากโคออร์ดิเนตทางกายภาพไปเป็นโคออร์ดิเนตนอมอลไลซ์) หลักการมองภาพ 3 มิติ
หลักการมองภาพ 3 มิติ หลักทั่วไปในการสร้างและแปลงภาพ 3 มิติ
เช่นเดียวกับการมองภาพ 2 มิติ ขีดจำกัดของวิวพอร์ตมีผลต่อโคออร์ดิเนตนอมอลไลซ์ หรือโคออร์ดิเนตของอุปกรณ์ ในการพัฒนาอัลกอริทึ่มของมุมมอง เราสมมุติว่าวิวพอร์ตที่กำหนดในโคออร์ดิเนตของอุปกรณ์ และในโคออร์ดิเนตนอมอลไลซ์จะถูกโอนไปเป็นโคออร์ดิเนตของวิวพอร์ตตามขั้นตอนการขริบ ยังมีงานอีกเล็กน้อยต้องทำ เช่น การกำหนดพื้นผิวการมองเห็น และการการเรนเดอร์พื้นผิว ขั้นตอนสุดท้ายคือการแม็พโคออร์ดิเนตของวิวพอร์ตไปยังโคออร์ดิเนตของอุปกรณ์ภายในวินโดว์แสดงผล หลักการมองภาพ 3 มิติ
การสร้างเฟรมอ้างอิงการมองภาพ 3 มิติเหมือนกับการกำหนดเฟรมอ้างอิงการมองภาพ 2 มิติ ขั้นแรกเราเลือกตำแหน่งโคออร์ดิเนตทางกายภาพ P0 = (x0, y0, z0) สำหรับจุดกำเนิดการมองซึ่งเรียกว่า จุดมอง (view point) หรือ ตำแหน่งการมอง (viewing position) (บางครั้งจุดมองนี้ยังอ้างถึงตำแหน่งของตา หรือ ตำแหน่งของกล้อง) เรากำหนด view up vector (V) ซึ่งกำหนดเป็นทิศทาง yviewสำหรับภาพ 3 มิติ เรายังต้องกำหนดทิศทางของแกนที่เหลือหนึ่งแกนจากสองแกน ทำให้ได้เวกเตอร์ที่สองที่กำหนดเป็นแกน zview ที่มีทิศทางการมองตามแกนนี้ พารามิเตอร์ของโคออร์ดิเนตการมองภาพ 3 มิติ
พารามิเตอร์ของโคออร์ดิเนตการมองภาพ 3 มิติ ระบบโคออร์ดิเนตการมองแบบมือขวาที่มีแกน xview,yview, zviewสัมพันธ์กับเฟรมโคออร์ดิเนตทางกายภาพที่เป็นระบบมือขวา
เนื่องจากทิศทางการมองปกติจะเป็นไปตามแกน z ระนาบการมองซึ่งอาจจะเรียกว่าระนาบโปรเจ็กต์ชันนั้น ปกติจะสมมุติให้ตั้งฉากกับแกนนี้ ดังนั้นแนวของระนาบการมองจะเป็นทิศทางบวกสำหรับแกน zviewสามารถกำหนดได้ด้วยระนาบการมอง normal vector N แสดงดังรูป ระนาบการมอง Normal Vector
ระนาบการมอง Normal Vector แนวของระนาบการมอง และระนาบการมอง normal vector N
พารามิเตอร์เพิ่มเติมที่นำมาใช้ในการกำหนดตำแหน่งของระนาบการมองที่โคออร์ดิเนต zvpตามแกน zviewแสดงดังรูป ค่าพารามิเตอร์นี้โดยปกติกำหนดเป็นทิศทางจากจุดกำเนิดการมองไปตามทิศทางการมองซึ่งส่วนมากจะมีทิศทาง - zview ดังนั้นระนาบการมองมักจะขนานกับระนาบ xviewyview และโปรเจ็กต์ชันของออปเจ็กต์ไปยังระนาบการมองที่สัมพันธ์กับมุมมองของจอภาพที่แสดงออกทางอุปกรณ์แสดงผล ระนาบการมอง Normal Vector
ระนาบการมอง Normal Vector ตำแหน่งที่เป็นไปได้ 3 ตำแหน่งสำหรับระนาบการมองตามแกน zview
เวกเตอร์ N สามารถกำหนดได้หลายวิธี ในกราฟิกบางระบบ ทิศทางของ N ถูกกำหนดตามเส้นจากจุดกำเนิดโคออร์ดิเนตทางกายภาพไปยังตำแหน่งจุดที่เลือก ระบบอื่น ใช้ N อยู่ในทิศทางจากจุดอ้างอิง Pref ไปยังจุดกำเนิดการมอง P0ดังรูปในกรณีนี้จุดอ้างอิงจะอ้างถึงจุด look at point ภายในจอภาพโดยมีทิศทางการมองตรงข้ามกับทิศทางของ N ระนาบการมอง Normal Vector
ระนาบการมอง Normal Vector การกำหนดระนาบการมอง normal vector N ที่มีทิศทางจากจุดอ้างอิง Prefไปยังจุดกำเนิดการมอง P0
เราสามารถกำหนดระนาบการมอง normal vector และทิศทางของเวกเตอร์อื่นโดยการใช้มุมกำหนดทิศทาง (direction angle) โดยมี 3 มุมคือ , และ ที่สร้างด้วยแกน x, y และ z ตามลำดับ แต่ถ้ากำหนดทิศทางของเวกเตอร์ด้วยตำแหน่งของจุด 2 จุด จะเป็นเรื่องง่ายกว่าการกำหนดด้วยมุมกำหนดทิศทาง ระนาบการมอง Normal Vector
เมื่อเราเลือกระนาบการมอง normal vector N เราสามารถกำหนดทิศทางสำหรับ View-Up Vector V ซึ่งเวกเตอร์นี้นำมาสร้างทิศทางบวกสำหรับแกน yview ปกติ V ถูกกำหนดโดยการเลือกตำแหน่งที่สัมพันธ์กับจุดกำเนิดโคออร์ดิเนตทางกายภาพ ดังนั้นทิศทางสำหรับ View-Up Vector จะเริ่มจากจุดกำเนิดทางกายภาพไปยังตำแหน่งที่เลือก เนื่องจากระนาบการมอง normal vector N กำหนดทิศทางสำหรับแกน zviewเวกเตอร์ V ควรจะตั้งฉากกับ N View-Up Vector
แต่โดยปกติแล้วเป็นการยากที่จะกำหนดทิศทางของ V ให้ตั้งฉากกับ N ดังนั้นรูทีนในการมองจะปรับแนวเวกเตอร์ V ที่ผู้ใช้กำหนด ดังรูปดังนั้น V จะถูกโปรเจ็กต์ลงบนระนาบที่ตั้งฉากกับระนาบการมอง normal vector N เราสามารถเลือกทิศทางใด ๆ สำหรับ view-up vector V แต่ต้องไม่ขนานกับ N ตัวเลือกที่สะดวกและนำมาใช้บ่อย ๆ ก็คือทิศทางที่ขนานกับแกน ywที่กำหนด v = (0, 1, 0) View-Up Vector
View-Up Vector การปรับแนว view-up vector V ให้ตั้งฉากกับระนาบการมอง normal vector N
โคออร์ดิเนตการมองแบบมือซ้ายในบางครั้งก็นำมาใช้ในกราฟิกแพ็กเกจโดยทิศทางการมองในทิศทางบวก zview ในระบบมือซ้าย การเพิ่มค่า zviewจะเป็นการแปลค่าให้เป็นค่าที่อยู่ไกลออกไปตำแหน่งการมอง แต่ในระบบการมองแบบมือขวาซึ่งเป็นแบบปกติที่ใช้กันอยู่ เนื่องจากมีแนวเดียวกับเฟรมอ้างอิงทางกายภาพ สิ่งนี้เองที่ทำให้กราฟิกแพ็กเกจใช้เพียงโคออร์ดิเนตเดียวทั้งการอ้างอิงทางกายภาพและการมอง ในช่วงแรกแพ็กเกจกำหนดโคออร์ดิเนตการมองภายในเฟรมแบบมือซ้าย แต่กราฟิกแพ็กเกจปัจจุบันจะใช้โคออร์ดิเนตการมองแบบมือขวาเป็นมาตรฐาน อย่างไรก็ตาม การอ้างอิงโคออร์ดิเนตแบบมือซ้ายก็มีนำมาใช้บ่อยในการแสดงโคออร์ดิเนตของจอภาพ และการแปลงแบบนอมอลไลซ์ เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn
เนื่องจากระนาบการมอง 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
เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn 8.1
ระบบโคออร์ดิเนตที่มีเวกเตอร์ขนาดหนึ่งหน่วยนี้เป็นเฟรมอ้างอิงโคออร์ดิเนตการมอง uvn (ดังรูป) เฟรมอ้างอิงโคออร์ดิเนตการมอง uvn ระบบการมองแบบมือขวาที่กำหนดด้วยเวกเตอร์หนึ่งหน่วย u, v และ n
การเปลี่ยนค่าพารามิเตอร์การมองทำให้เราเห็นออปเจ็กต์บนจอภาพแตกต่างกันออกไป เช่น จากตำแหน่งการมองที่คงที่ เราสามารถเปลี่ยนทิศทางของ N เพื่อแสดงออปเจ็กต์ที่ตำแหน่งรอบ ๆ จุดกำเนิดโคออร์ดิเนตการมอง เรายังสามารถเปลี่ยนค่า N เพื่อแสดงเป็นหลาย ๆ มุมมองจากตำแหน่งกล้องที่คงที่ ในแอปพลิเคชันที่เป็นอินเตอร์แอ็กทีพ เวกเตอร์ N เป็นพารามิเตอร์การมองที่มักมีการเปลี่ยนแปลงเสมอ เมื่อเราเปลี่ยนทิศทางของ N เราต้องเปลี่ยนเวกเตอร์แกนอื่นด้วยเพื่อให้เป็นไปตามระบบโคออร์ดิเนตการมองแบบมือขวาไว้ การสร้างเอ็ฟเฟ็กต์การมองภาพ 3 มิติ
ถ้าเราต้องการจำลองการใช้เอ็ฟเฟ็กต์สำหรับภาพเคลื่อนไหว เช่นเมื่อกล้องเคลื่อนเข้าหาจอภาพ หรือตามออปเจ็กต์ที่เคลื่อนเข้าหาจอภาพ เราสามารถคงสภาพทิศทางของ N ให้คงที่ได้เช่นเดียวกับที่เราย้ายจุดมอง แสดงดังรูป เพื่อแสดงมุมมองแสดงผลที่แตกต่างของออปเจ็กต์ เช่น มุมมองด้านข้าง และด้านหน้า เราสามารถย้ายจุดมองไปรอบ ๆ ออปเจ็กต์ ดังรูปถัดไป อีกทางเลือกหนึ่งก็คือมุมมองที่แตกต่างของออปเจ็กต์หรือกลุ่มของออปเจ็กต์สามารถสร้างได้ด้วยการแปลงทางเรขาคณิตโดยไม่มีการเปลี่ยนพารามิเตอร์การมองอื่น ๆ การสร้างเอ็ฟเฟ็กต์การมองภาพ 3 มิติ