โดย เอมิ
บางครั้งเมื่อคุณ import โมเดลไปยัง 3DCoat normal map บนตัวเรนเดอร์วิวพอร์ตจะไม่แสดงอย่างถูกต้อง แต่จะเริ่มต้นจากวิธีที่คุณส่งออกโมเดลของคุณบนซอฟต์แวร์อื่นๆ
แผนที่ปกติอาจแก้ไขปัญหาการแรเงาเล็กน้อยเกี่ยวกับวิธีการอ่านแผนที่ปกติโดยซอฟต์แวร์ และนั่นอาจทำให้ปัญหาสังเกตเห็นได้น้อยลงเล็กน้อย แต่ปัญหายังคงอยู่ คุณต้องใช้กฎบางข้อที่จะช่วยแก้ไขปัญหาจริงเพื่อทำให้งานและชีวิตง่ายขึ้นโดยการจัดทำแผนที่ปกติที่ดีขึ้น
หากไม่ใช้กฎนี้ โดยทั่วไปแล้วสิ่งปกติส่วนใหญ่จะมีค่าเฉลี่ยและมีเพียงไม่กี่อย่างเท่านั้นที่ยาก ซึ่งดูแปลก แต่นั่นเป็นสาเหตุหลักของปัญหาอย่างชัดเจน วิธีส่งออกกลุ่มการปรับให้เรียบสำหรับโมเดลของคุณ และวิธีอ่านกลุ่มเหล่านั้นในซอฟต์แวร์อื่น
ประการแรก กล่องต้องไม่ใช่ขอบอ่อนหรือปานกลาง กล่องมีมุม 90° และไม่ว่าคุณจะทำอะไร กล่องเหล่านี้จะมีปัญหาเรื่องแสงเสมอหากไม่ได้ตั้งค่าไว้ที่ขอบแข็ง ในอดีต ก่อนที่โปรแกรมการอบขั้นสูงอย่าง Marmoset จะทำให้ง่ายขึ้น คุณต้องสร้างกรงอยู่เสมอ และกรงจะเป็นกรงที่มีจุดสุดยอดปกติ ดังนั้นกรงก็จะถูกนำมาใช้ทำค่าเฉลี่ย ‘ การค้นหา’โพลีสูง’ โดยไม่ทำให้เกิดข้อผิดพลาดในการอบเนื่องจากกล่องจะเตือนถึงขอบที่แข็ง แน่นอนว่าตอนนี้ Marmoset มีช่องทำเครื่องหมาย “กรงเรียบ” ที่ทำเช่นเดียวกัน และตอนนี้คุณไม่จำเป็นต้องมีกรง เว้นแต่ว่าคุณต้องการกรงจริงๆ
จึงมี ‘กฎ’ สองข้อที่นี่และเชื่อมโยงกันด้วย:
1. เมื่อคุณทำแบบจำลองที่มีมุม 90° พวกมันควรจะยากเสมอ แน่นอน คุณสามารถทำการบากเล็กน้อยและหลีกเลี่ยงขอบที่เป็นมุม 90° ได้ สิ่งนี้จะไม่เพียงแต่เป็นไปตามรูปทรงของโมเดลความละเอียดสูงเท่านั้น แต่คุณยังสามารถใช้ขอบอ่อนบนกล่องและทำให้มันดูสวยงามขึ้นและมีปัญหาน้อยลง ทั้งยังโค้งมนและสวยขึ้นอีกด้วย
2. ขอบแข็ง (ซึ่งค่อนข้างมากควรเป็นมุม 90°) ควรถูกแยกบน UV เสมอ เพื่อหลีกเลี่ยงปัญหาเช่นกัน คุณอาจไม่สังเกตเห็นมันบนแบบจำลองของคุณ แต่มันอยู่ตรงนั้น และเกี่ยวข้องกับวิธีการ พิกเซลมาบรรจบกันที่มุม 90° และพิกเซลอาจผสมกันอย่างไร และพวกมันต่างกันเพียงนั้น ดังนั้นจึงมีพื้นที่ไม่เพียงพอเหมือนกับการเสริมเพื่อแก้ไขปัญหาเล็กๆ น้อยๆ ที่อาจเกิดขึ้น ใช่ มันขึ้นอยู่กับความละเอียดและ UVs และทั้งหมดนั้นและนั่นอาจทำให้มองเห็นได้ชัดเจนกว่าสิ่งอื่น แต่ใช่ ในกรณีเช่นนี้ที่คุณกำลังทำกล่อง คุณจะต้องแยกขอบ 90° เหล่านั้นออกทั้งหมด และใช่ นั่นหมายถึง 6 ด้านของกล่อง = 6 เกาะเพื่อหลีกเลี่ยงปัญหา
พูดคุยเกี่ยวกับ 3DCoat และวิธีการทำงานกับค่าที่ตั้งไว้ล่วงหน้าและอื่นๆ อีกมากมาย สิ่งที่ฉันเข้าใจก็คือการใช้ค่าที่ตั้งล่วงหน้าเช่น Blender หรือ Unity แสดงว่าคุณกำลังใช้ไฟล์ที่กำหนดไว้ล่วงหน้าซึ่งไม่เพียงแต่จะจัดการกับแผนที่ Normal อย่างไรเท่านั้น แต่ยังจะพลิกเป็นสีเขียวหรือไม่อีกด้วย แต่ยังรวมถึง Tangent Space สามเหลี่ยม และวิธีที่มันส่งออกภาวะปกติและตัวเลือกอื่นๆ หากคุณใช้ตัวเลือก Unknown คุณจะสามารถใช้ตัวเลือกเหล่านี้กับการตั้งค่าที่คุณตั้งไว้ได้
หากคุณไปที่ C:Program Files 3DCoat-VXXXToolsPresetsExtTools คุณจะเห็นไฟล์ XML และความแตกต่างระหว่าง Unity กับ Blender เนื่องจากค่าที่ตั้งล่วงหน้าของ Blender ใช้ MikkTSpace ในขณะที่ unity ตั้งค่าเป็น LengyelAreaAngleWeightedSpace นั่นคือความแตกต่างเพียงอย่างเดียว แต่เห็นได้ชัดว่าเพียงพอสำหรับคุณที่จะเห็นมันเพราะว่ามันถูกตีความแตกต่างออกไป ในทางเทคนิคแล้ว พวกเขาไม่ควรส่งผลกระทบใดๆ มากนัก และมีเพียงวิธีการอ่าน normal map เท่านั้นหากเป็น ‘DirectX’ หรือ ‘OpenGL’ แต่สาเหตุของปัญหาการแรเงาไม่ได้เกี่ยวกับ normal map แต่เป็นเรื่องเกี่ยวกับโมเดลและจะ เป็นแบบอย่างเสมอ
นอกเหนือจากกฎเกณฑ์เกี่ยวกับ UVs แล้ว ปัญหาที่เกิดขึ้นจะมีน้อยมาก หากคุณทราบ คุณก็เป็นทางเลือกของคุณที่จะประหยัดพื้นที่ UV และไม่สนใจขอบ และปัญหาที่อาจเกิดขึ้นเทียบกับการทำอย่างถูกต้องเนื่องจากคุณจะต้องเข้าใกล้เกินไป เพื่อสังเกตประเด็นต่างๆ บางครั้งก็มีช่องว่างขนาดใหญ่ระหว่างขอบเกิดขึ้นกับฉัน
หากคุณไม่สามารถมีกล่องเป็นจุดยอดปกติหรืออ่อนได้ กล่องเหล่านั้นจะต้องดูเหมือนกล่องขอบแข็งเนื่องจากมีขอบทำมุม 90° หากคุณต้องการใช้ขอบอ่อน คุณต้องสร้างมุมเอียง
บ็อกเซอร์ควรมีขอบแข็ง 100% ขอบกระบอกควรแข็งด้านบนและด้านล่าง และด้านข้างนุ่ม
สำหรับโมเดลโพลีต่ำ ฉันแนะนำให้สร้างมุมเอียง แค่มุมเอียงเล็กๆ จะสร้างความแตกต่างอย่างมากในหลายกรณี โดยเฉพาะอย่างยิ่งในปัจจุบันที่ไม่มีข้อแก้ตัวที่จะมีกล่องที่ไม่มีมุมเอียงเลยสำหรับสิ่งนี้
ค่าที่ตั้งไว้ล่วงหน้า 3DCoat เป็นเพียงรูปแบบเล็กๆ น้อยๆ ที่คุณสามารถเลือกได้ด้วยตนเองโดยใช้ค่าที่ตั้งล่วงหน้าที่ไม่รู้จัก คุณไม่จำเป็นต้องใช้ค่าที่ตั้งล่วงหน้า พวกมันมีไว้เพื่อช่วย 3DCoat ตีความ normal map และแบบจำลอง แต่ฉันไม่เคยเชื่อถือค่าที่ตั้งไว้ล่วงหน้า เพราะอย่างที่คุณบอกว่าค่าที่ตั้งล่วงหน้า Unity ควร ตั้งค่าเป็น MikkTSpace แต่ประเด็นของฉันคือไม่ใช่แค่เกี่ยวกับ OpenGL กับ DirectX normal map
ดังนั้น เมื่อฉันใช้ 3DCoat ซึ่งโดยปกติใช้ในการทาสี ทุกอย่างทำงานได้ดี แต่นั่นเป็นเพราะฉันแน่ใจว่าทุกอย่างในโพลีต่ำของฉันก็ดีเช่นกัน ฉันหมายถึง การสร้างแผนที่ปกติที่ดีและทำให้มันทำงานได้ทุกที่ที่คุณต้องการระดับต่ำที่ดี โพลีที่สามารถจับรายละเอียดโพลีสูงๆ ที่คุณสร้างได้ ไม่มีเวทย์มนตร์ใด ๆ มันได้ผลเพราะฉันมั่นใจในทุกสิ่ง เช่น กลุ่มการปรับให้เรียบ UVs และทั้งหมดนั้น
สิ่งที่ฉันหมายถึงคือ โมเดลที่มีขอบ 90° ควรตั้งค่าเป็นขอบแข็งโดยอัตโนมัติ ไม่มีทางอื่นอีกแล้ว แค่นั้นเอง ไม่สำคัญว่าลูกบาศก์จะมี 6 ด้านเหมือนในกรณีนี้หรือแบ่งความกว้าง ความสูง และความลึก 1,000 ส่วน หากคุณไม่ได้ตั้งค่ามุม 90° ของกล่องให้เป็นขอบแข็ง มันก็จะมีเงาแปลกๆ บนขอบที่เป็น 90° เสมอ แต่จะถูกกำหนดให้เป็นแบบอ่อนหรืออะไรก็ตาม
หากคุณใช้กลุ่มการปรับให้เรียบ กลุ่มเดียว กับวัตถุทั้งชุด… นั่นถือว่าผิด เพราะคุณไม่สามารถสร้างขอบอ่อนให้กับกล่องได้ โดยเฉพาะอย่างยิ่งหากวัตถุเหล่านั้นเป็นเพียงลูกบาศก์ที่มี 6 หน้า
คุณ ไม่สามารถ “ทำให้เรียบ” บางอย่างได้ โดยเฉพาะถ้าคุณมีกล่องรูปหลายเหลี่ยม 6 รูปธรรมดา หากคุณต้องการใช้กล่อง ให้ตั้งค่าทุกด้านเป็น Hard Edges หรือวิธีเดียวเท่านั้นคือเพิ่มมุมเอียงรอบขอบเพื่อหักมุม 90° ที่รุนแรงแล้วตั้งค่าเป็นนุ่มนวล Baking normal map เพื่อซ่อนปัญหาไม่ใช่วิธีแก้ปัญหา อาจดูดีขึ้นเล็กน้อย แต่ข้อผิดพลาดในการแรเงายังคงมีอยู่ในโมเดล แม้แต่ทรงกระบอกก็ควรมีขอบอ่อนที่ด้านข้าง และที่ด้านบนและด้านล่างก็ควรตั้งให้เป็นขอบแข็ง เว้นแต่คุณจะเพิ่มมุมเอียง
คำถามก็คือ: คุณยังต้องการเก็บทุกอย่างไว้เป็นกลุ่มที่ปรับให้เรียบเป็นกลุ่มเดียวหรือไม่? เว้นแต่ว่าคุณทำงานอย่างถูกต้องและตั้งค่าสิ่งที่ควรเป็นขอบแข็ง ขอบแข็งและขอบอ่อน หรือเพิ่มมุมเอียงบนเทวดาทุก ๆ 90° ก็จะไม่มีอะไรแก้ไขปัญหาของคุณได้ และคุณต้องซ่อนปัญหาด้วย normal map และแสร้งทำเป็นว่าไม่มีปัญหา มีอยู่จริง
ฉันหวังว่าฉันจะอธิบายได้อย่างเหมาะสมว่าปัญหาต่างๆ เกิดขึ้นที่นี่อย่างไร เพื่อที่มันอาจจะช่วยคุณในการทำ normal map ในอนาคตได้
ขอให้โชคดีและมีวันที่ดี!
ไทย
English
Українська
Español
Deutsch
Français
日本語
Русский
한국어
Polski
中文 (中国)
Português
Italiano
Suomi
Svenska
中文 (台灣)
Dansk
Slovenčina
Türkçe
Nederlands
Magyar
हिन्दी
Ελληνικά
Tiếng Việt
Lietuviškai
Latviešu valoda
Eesti
Čeština
Română
Norsk Bokmål