ผลต่างระหว่างรุ่นของ "แนวฉาก"

จากวิกิพีเดีย สารานุกรมเสรี
เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Robbot (คุย | ส่วนร่วม)
โรบอต เพิ่ม: be-x-old, cs, da, de, eo, et, fi, fr, it, ja, nl, no, pl, ru, sv, zh
Banlu Kemiyatorn (คุย | ส่วนร่วม)
ไม่มีความย่อการแก้ไข
บรรทัด 3: บรรทัด 3:
'''surface normal''' หรือ '''นอร์มอล''' ค่า[[Euclidean vector|เวกเตอร์]]ที่ตั้งฉากกับพื้นผิวราบ สำหรับพื้นผิวที่ไม่เรียบ ค่านอร์มอลที่[[จุด (เรขาคณิต)|จุด]]หนึ่งๆบนพื้นผิวคือค่าเวกเตอร์ที่ตั้งฉากกับ[[ระนาบสัมผัส]]ที่สัมผัสพื้นผิวที่จุดนั้น หรือตั้งฉากกับเส้นสัมผัสเส้นโค้งในกรณีสองมิติ
'''surface normal''' หรือ '''นอร์มอล''' ค่า[[Euclidean vector|เวกเตอร์]]ที่ตั้งฉากกับพื้นผิวราบ สำหรับพื้นผิวที่ไม่เรียบ ค่านอร์มอลที่[[จุด (เรขาคณิต)|จุด]]หนึ่งๆบนพื้นผิวคือค่าเวกเตอร์ที่ตั้งฉากกับ[[ระนาบสัมผัส]]ที่สัมผัสพื้นผิวที่จุดนั้น หรือตั้งฉากกับเส้นสัมผัสเส้นโค้งในกรณีสองมิติ


ใน[[คอมพิวเตอร์กราฟิกส์สามมิติ]]นิยมใช้ค่านอร์มอลกำหนดมุมระหว่างทิศทางที่พื้นผิวหันไปทำกับทิศทางของต้นกำเนิดแสงเพื่อเพื่อคำนวณการสะท้อนแบบ [[flat shading]] หรือใช้กำหนดที่มุมแต่ละมุมของพื้นผิวโพลีกอน (vertex normal) เพื่อใช้เกลี่ยค่านอร์มอลของสองพื้นผิวที่ติดกันเข้าหากัน ทำให้พื้นผิวที่ทำมุมกันสามารถสะท้อนแสดงได้เหมือนกับเป็นพื้นผิวเรียบโค้ง ([[phong shading]])
<br clear="all"/>
<br clear="all"/>


บรรทัด 18: บรรทัด 19:
[[File:Phong-shading-sample.jpg|right|thumb|300px|การใช้ vertex normal เปลี่ยนแปลงการสะท้อนพื้นผิว ใน [[Phong shading]]]]
[[File:Phong-shading-sample.jpg|right|thumb|300px|การใช้ vertex normal เปลี่ยนแปลงการสะท้อนพื้นผิว ใน [[Phong shading]]]]


* [[Vertex normal]] : ในบางกรณี ซอฟต์แวร์สำหรับ[[การเรนเดอร์ภาพด้วยคอมพิวเตอร์|เรนเดอร์ภาพ]]อาจคำนวนค่านอร์มอลพื้นผิวจากค่า vertex normal เช่นในโพลีกอนสามเหลี่ยมหนึ่งอาจใช้ค่า vertex normal สามค่า ซึ่งเป็นค่าเวกเตอร์ที่ไม่จำเป็นต้องตั้งฉากกับพื้นผิวโพลีกอน มาคำนวน[[สนามเวกเตอร์]]ของนอร์มอลพื้นผิวโพลีกอน
* [[Vertex normal]] : ในบางกรณี ซอฟต์แวร์สำหรับ[[การเรนเดอร์ภาพด้วยคอมพิวเตอร์|เรนเดอร์ภาพ]]อาจคำนวนค่านอร์มอลพื้นผิวจากค่า vertex normal เช่นในโพลีกอนสามเหลี่ยมจะกำหนดค่า vertex normal สามค่าให้ vertex ทั้งสามมุม โดยจะเป็นค่าเวกเตอร์ที่ไม่จำเป็นต้องตั้งฉากกับพื้นผิวโพลีกอนเพื่อมาใช้คำนวน[[สนามเวกเตอร์]]ของนอร์มอลพื้นผิวโพลีกอน เช่นถ้ามีโพลีกอนสองชิ้นวางติดกัน แล้วในโพลีกอนชิ้นแรกกำหนด vertex normal ให้วิ่งไปทิศทางเดียวกับนอร์มอลพื้นผิว โพลีกอนนั้นจะแสดงรอยหยักตามขอบ แต่ถ้า vertex normal วิ่งไปทางเดียวกับ normal ของพื้นผิวโพลีกอนข้างเคียง การสะท้อนของโพลีกอนชิ้นแรกจะถูกเกลี่ยเข้าหาการสะท้อนของโพลีกอนข้างเคียง ทำให้มองดูเสมือนเป็นพื้นผิวเรียบโค้ง


[[หมวดหมู่:คอมพิวเตอร์กราฟิกส์สามมิติ]]
[[หมวดหมู่:คอมพิวเตอร์กราฟิกส์สามมิติ]]

รุ่นแก้ไขเมื่อ 03:40, 5 กุมภาพันธ์ 2552

ค่านอร์มอลสำหรับจุดบนพื้นผิวหาได้จากค่านอร์มอลของระนาบสัมผัสที่สัมผัสพื้นผิวตรงจุดนั้น

surface normal หรือ นอร์มอล ค่าเวกเตอร์ที่ตั้งฉากกับพื้นผิวราบ สำหรับพื้นผิวที่ไม่เรียบ ค่านอร์มอลที่จุดหนึ่งๆบนพื้นผิวคือค่าเวกเตอร์ที่ตั้งฉากกับระนาบสัมผัสที่สัมผัสพื้นผิวที่จุดนั้น หรือตั้งฉากกับเส้นสัมผัสเส้นโค้งในกรณีสองมิติ

ในคอมพิวเตอร์กราฟิกส์สามมิตินิยมใช้ค่านอร์มอลกำหนดมุมระหว่างทิศทางที่พื้นผิวหันไปทำกับทิศทางของต้นกำเนิดแสงเพื่อเพื่อคำนวณการสะท้อนแบบ flat shading หรือใช้กำหนดที่มุมแต่ละมุมของพื้นผิวโพลีกอน (vertex normal) เพื่อใช้เกลี่ยค่านอร์มอลของสองพื้นผิวที่ติดกันเข้าหากัน ทำให้พื้นผิวที่ทำมุมกันสามารถสะท้อนแสดงได้เหมือนกับเป็นพื้นผิวเรียบโค้ง (phong shading)


การคำนวณหาค่านอร์มอล

ภาพแสดงนอร์มอลทั้งสองค่าของโพลีกอน

การหาค่านอร์มอลของโพลีกอน สามารถหาได้จากผลคูณไขว้ของด้านสองด้านที่ไม่ขนานกันของโพลีกอน ค่านอร์มอลจะมีสองค่าชี้ไปในทิศทางตรงกันข้าม จึงอาจใช้กฎมือขวาร่วมกำหนดทิศทางที่นอร์มอลหรือหน้าของโพลีกอนหันไป

การใช้งาน

งานคอมพิวเตอร์กราฟิกส์สามมิติ

ค่านอร์มอล (normal) กับการสะท้อน
สนามเวกเตอร์ของนอร์มอลบนพื้นผิว

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

การใช้ vertex normal เปลี่ยนแปลงการสะท้อนพื้นผิว ใน Phong shading
  • Vertex normal : ในบางกรณี ซอฟต์แวร์สำหรับเรนเดอร์ภาพอาจคำนวนค่านอร์มอลพื้นผิวจากค่า vertex normal เช่นในโพลีกอนสามเหลี่ยมจะกำหนดค่า vertex normal สามค่าให้ vertex ทั้งสามมุม โดยจะเป็นค่าเวกเตอร์ที่ไม่จำเป็นต้องตั้งฉากกับพื้นผิวโพลีกอนเพื่อมาใช้คำนวนสนามเวกเตอร์ของนอร์มอลพื้นผิวโพลีกอน เช่นถ้ามีโพลีกอนสองชิ้นวางติดกัน แล้วในโพลีกอนชิ้นแรกกำหนด vertex normal ให้วิ่งไปทิศทางเดียวกับนอร์มอลพื้นผิว โพลีกอนนั้นจะแสดงรอยหยักตามขอบ แต่ถ้า vertex normal วิ่งไปทางเดียวกับ normal ของพื้นผิวโพลีกอนข้างเคียง การสะท้อนของโพลีกอนชิ้นแรกจะถูกเกลี่ยเข้าหาการสะท้อนของโพลีกอนข้างเคียง ทำให้มองดูเสมือนเป็นพื้นผิวเรียบโค้ง