Thai Blender Wiki
Register
Advertisement
TODO
  • ใช้ Blender 2.5 อ้างอิงแทน การ upload screenshot ควรระบุเวอร์ชันให้ชัดเจน
  • ไว้เนื้อหานิ่งแล้วค่อยทำส่วน footer สำหรับหน้าก่อน/หน้าต่อไป
  • เพิ่มส่วนเกม
  • ยุบรวมส่วน Blender เข้ากับส่วน 3D computer graphics โดยเพิ่มส่วน User Interface แยกไว้เป็นบท Blender 101
จัดการเมนู

นอร์มอล (surface normal)[]

FIXME
แปะๆไว้ก่อน สำหรับเนื้อหาที่ลิงก์ไปวิกิพีเดียภาษาไทยบางส่วนอาจยังไม่มีอยู่จริง ก็เอาไว้ค่อยไปตามเขียน และควรแยกโซนเพราะบางส่วนอาจละเอียดเกินความจำเป็นสำหรับบางงาน
Normal กับการสะท้อนแสง

นอร์มอล (normal) กับการสะท้อน โดยมุมตกกระทบ (θi) จะมีค่าเท่ากับมุมสะท้อน (θr)

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

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

นอร์มอลของเวอร์เทกซ์ (vertex normal)[]

Vertex normal

vertex normal กับการเปลี่ยนแปลงการสะท้อนของพื้นผิว (a) vertex normal ชี้ไปทิศทางเดียวกับ surface normal (b) vertex normal ชี้ไปในทิศทางเดียวกับ vertex normal ของพื้นผิวข้างเคียง การสะท้อนแสงจึงต่อเนื่องเสมือนเป็นพื้นผิวเดียวกัน

นอร์มอลมีผลกับการหักเห

นอกจากการเฉลี่ยนอร์มอลจะมีผลกับการสะท้อนแล้วยังมีผลกับการหักเห

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


การคำนวณ[]

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


ในส่วนนี้จะกล่าวถึงแนวทางคร่าว ๆ สำหรับการคำนวณแสงแบบต่าง ๆ ไว้บ้าง หากยากต่อความเข้าใจก็ข้ามไปก็ได้

การคำนวณทิศทาง[]

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

ถ้าระนาบเกิดจากสมการ เวกเตอร์ จะเป็นค่านอร์มอลของระนาบ ถ้าพื้นผิว(ที่อาจไม่เรียบ) S ถูกพาราเมไทรซ์ในระบบพิกัดเชิงเส้นโค้ง x(s, t) โดยจำนวนจริง s และ t ค่านอร์มอลจะหาได้จากผลคูณไขว้ของอนุพันธ์บางส่วน

การคำนวณค่าความสว่าง[]

การคำนวณแสงสะท้อนแบบ Lambertian (หรือ diffuse) ซึ่งไม่ขึ้นกับทิศทางผู้มองนั้นหาค่าความสว่างได้จากผลคูณจุดของเวกเตอร์หนึ่งหน่วยจากจุดที่จะให้สีไปยังจุดกำเนิดแสง กับเวกเตอร์หนึ่งหน่วยนอร์มอลตรงจุดที่จะให้สีนั้น ผลที่ได้คือค่าความเข้มหรือความสว่างของแสงที่จุดนั้น

ค่าความเข้มแสงที่สะท้อนแบบ diffuse, ค่าเวกเตอร์หนึ่งหน่วยจากจุดตกกระทบไปยังจุดกำเนิดแสง, ค่านอร์มอลเวกเตอร์หนึ่งหน่วย, สี และ คือความเข้มแสงขาเข้า

การใช้ลำดับของ vertex กำหนดค่า normal[]

ลำดับของ vert ยังอาจถูกใช้ในการกำหนดทิศทางที่นอร์มอล ของ face หันไปโดยการใช้ร่วมกับกฎมือขวา เช่น ถ้ามี vert 3 vert a b และ c ถูกโยง edge เป็นวง จาก abca ตามลำดับ normal ของ face จะหันไปทิศทางหนึ่ง แต่ถ้าเปลี่ยนลำดับโดยวนย้อนกลับเป็น acba normal ของ face จะหันกลับไปในทิศตรงข้าม

Advertisement