เหตุใดแผนที่ปกติจึงเป็นสีน้ำเงินส่วนใหญ่


44

เหตุใดแผนที่ปกติจึงเป็นสีน้ำเงินส่วนใหญ่แทนที่จะเป็นสีแบบสุ่ม

ฉันเดาว่าเวกเตอร์ปกติของวัตถุ 3 มิติสามารถชี้ไปในทุกทิศทางได้เช่น:

(1.0, 0.1, 0.5), (0.1, -0.5, 0.3), (-0.51, 0.46, -1.0) ... 

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


71

แผนที่ปกติมีสองประเภทที่ใช้กันทั่วไปในการพัฒนาเกม วิธีที่คุณคิดว่าพวกเขาควรจะทำงานคือวิธีการทำงานประเภทหนึ่ง (แผนที่ปกติแบบจำลองพื้นที่ - เว้นวรรค) แต่เกมส่วนใหญ่ใช้ประเภทอื่น (แผนที่ปกติพื้นที่ว่างสัมผัส) ซึ่งเป็นสาเหตุที่คุณเชื่อมโยงพื้นผิวสีน้ำเงินส่วนใหญ่เข้ากับแผนที่ปกติ

ตัวอย่างแผนที่ปกติของพื้นที่ตัวอย่าง

ด้วยแผนที่ปกติพื้นที่จำลองแต่ละช่องสัญญาณจะเข้ารหัสค่าที่แม่นยำของปกติโดยใช้ระบบพิกัดเดียวกับจุดยอดของรุ่นที่ใช้ ซึ่งหมายความว่าส่วนต่าง ๆ ของแผนที่ปกติจะมีเฉดสีที่แตกต่างกัน แต่พิกเซลที่อยู่ใกล้กันจะมีสีเหมือนกัน ตัวอย่างของแผนที่ปกติของ model-space ปรากฏขึ้นด้านบน ( ต้นฉบับ )

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

ส่วนประกอบของปกติตามปกติ (ไม่มีเล่นสำนวนเจตนา) [-1, 1]ช่วงจาก แต่ส่วนประกอบของสีในช่วงภาพจาก[0, 1](หรือ[0, 255]ปกติแล้วพวกมันจะถูกทำให้เป็นมาตรฐาน[0, 1]) ดังนั้นภาวะปกติจะมีการปรับขนาดและชดเชยดังกล่าวว่าปกติจะกลายเป็นสี(0, 0, 1) (0.5, 0.5, 1)นี่คือสีฟ้าอ่อนที่คุณเห็นในแผนที่ปกติและบ่งชี้ว่าไม่มีการเบี่ยงเบนจากจุดยอดที่สอดแทรกปกติเมื่อใช้บรรทัดฐานแทนเจนต์ - สเปซ

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


6
ชอบคำอธิบายนี้ - กระชับรวมคณิตศาสตร์อธิบายเกี่ยวกับประเภทต่าง ๆ ที่ใช้สำหรับแผนที่ปกติและทำไมจึงใช้
Tom 'Blue' Piddock

ขอบคุณที่รับความแตกต่างระหว่างbitangentและbinormalถูกต้อง
imallett

2
@imallett ใช่พื้นผิวมีลักษณะปกติสัมผัสและ bitangent ในขณะที่เส้นโค้งมีสัมผัสแทนปกติและทวินาม อย่างน้อยนั่นก็เป็นความเข้าใจของฉัน
bcrist

8

แผนที่ปกติส่วนใหญ่ชี้ออกไปจากพื้นผิว สมมติว่าคุณไปกับการทำแผนที่ปกติขององค์ประกอบ Z ของเวกเตอร์ปกติ XYZ เป็นทิศทาง "ความลึก" และการทำแผนที่นั้นไปยังองค์ประกอบ B ของพื้นที่สี RGB คุณจะท้ายด้วยเวกเตอร์ปกติส่วนใหญ่เป็นสีน้ำเงิน

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

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


3
เพื่อให้ชัดเจนขึ้นอีกนิดแผนที่ปกติถือไม่ใช่เวกเตอร์ปกติจากมุมมองของคุณ แต่มันเก็บตัวเวกเตอร์ปกติจากมุมมองของใบหน้าดังนั้นหลังจากคุณได้ใบหน้าปกติจากใบหน้าคุณผสมสิ่งนี้กับ normalmaps-normalvector และเนื่องจากสีฟ้าส่วนใหญ่ของมันคือ (0, 0, 1) นี่หมายความว่าหมอปกติที่คุณได้รับไม่เปลี่ยนแปลง (คิดเกี่ยวกับเรื่องนี้เหมือนว่าคุณจะวางหน้าทุกแบนบนพื้นก่อนที่จะวาดมันแล้วใช้ตัวแทนปกติจากแผนที่ปกติซึ่งส่วนใหญ่จะขึ้นด้านบนหากด้านซ้ายหรือขวา
tkausl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.