โดย เอมิ
บางครั้งเมื่อคุณ 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 ในอนาคตได้
ขอให้โชคดีและมีวันที่ดี!