φυβλαςのβλογ
บล็อกของ phyblas



[maya] ลองเปลี่ยนมาใช้ maya 2017 และเรนเดอร์ด้วย arnold
เขียนเมื่อ 2017/04/09 17:35
หลังจากที่มายา 2017 ออกมาได้สักพักใหญ่แล้ว ในที่สุดก็ได้ฤกษ์ตัดสินใจเปลี่ยนมาลองใช้

ก่อนหน้านี้ได้เคยลองใช้มาแล้วนิดหน่อยตอนที่ทดสอบโปรแกรม mmdpaimaya ดังที่เขียนไปใน https://phyblas.hinaboshi.com/20170221

แต่เนื่องจากตอนนั้นชินกับ 2016 เต็มที่และยังไม่มีใจที่จะเปลี่ยนก็เลยปล่อยไว้อย่างนั้นก่อน

ส่วนหนึ่งที่ทำให้การเปลี่ยนจาก 2016 มาเป็น 2017 เป็นเรื่องลำบากก็คือการที่ 2017 เลิกสนับสนุนตัวเรนเดอร์เมนทัลเรย์ซึ่งเคยใช้มาตลอด หันมาใช้อาร์โนลด์ (arnold) แทน

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



เริ่มเปิดมายา 2017 ขึ้นมา สำหรับใน mac หน้าจอเป็นแบบนี้ ดูเผินๆก็ไม่ได้ต่างจากมายา 2016 มากนัก



หากดูในรายละเอียดแล้วที่จริงก็ความเปลี่ยนแปลงมีพอสมควร มีสิ่งที่น่าพูดถึงอีกหลายอย่าง แต่ประเด็นสำคัญสุดซึ่งจะพูดถึงคราวนี้ก็คือเรื่องการใช้อาร์โนลด์

หากลองเปิดไฟล์ที่เคยทำแล้วเรนเดอร์ด้วยเมนทัลเรย์ในมายา 2016 มาก่อนขึ้นมาก็จะมีข้อความเตือนว่าพบโหนดเมนทัลเรย์ ซึ่งตอนนี้จะไม่สามารถใช้การได้แล้ว แต่ก็ไม่มีปัญหาอะไร ยังเอามาใช้ทำอะไรอื่นๆได้ตามปกติที่ไม่เกี่ยวกับเมนทัลเรย์

งานที่เปิดมาลองทดสอบดูคราวนี้คือเทพธิดาอควา ที่เคยลงไปตอนที่เขียนเรื่องวัสดุ mia ใน https://phyblas.hinaboshi.com/20170324

จากนั้นลองเอามาเรนเดอร์ด้วยอาร์โนลด์ดูเลย สิ่งที่พบก็คือ ผลที่ได้ต่างไปจากเดิมมาก




ภาพบนคือภาพเดิมที่เรนเดอร์ด้วยเมนทัลเรย์ภาพล่างคือใช้อาร์โนลด์

พื้นผิวเป็น blinn ธรรมดาทั้งหมด แต่พอใช้อาร์โนลด์กลับกลายเป็นผิวที่มันวาวแบบสากๆอย่างนี้ไปเลย

นั่นแสดงว่าอาร์โนลด์ประมวลผลความมันวาวของ blinn ในทางที่แตกต่างออกไปจากมายาซอฟต์แวร์หรือเมนทัลเรย์

ปกติแล้วในการใช้อาร์โนลด์เพื่อการเรนเดอร์นั้นโดยทั่วไปแล้วมักต้องใช้วัสดุเฉพาะของอาร์โนลด์เองที่เรียกว่า aiStandard แทนที่จะใช้วัสดุมาตรฐานที่มีในมายาอย่าง blinn

วัสดุนี้อาจเทียบเท่ากับวัสดุ mia ของเมนทัลเรย์ เพียงแต่ค่อนข้างแกมบังคับว่าควรจะต้องใช้หากใช้อาร์โนลด์เรนเดอร์ ในขณะที่ mia จะไม่ใช้ก็ได้

ยังดีที่ในโปรแกรมได้เตรียมหนทางสำหรับเปลี่ยนวัสดุชนิดต่างๆมาเป็น aiStandard ไว้แล้ว เป็นโค้ด python สามารถหาโค้ดนั้นได้ โดยถูกเตรียมมาอยู่ในไฟล์ชื่อ mrShadersToArnold.py ซึ่งถูกใส่ไว้ในโฟลเดอร์ชื่อ docs ภายในโฟลเดอร์ที่ลง MtoA

ลองเอาโค้ดมารัน เสร็จแล้ว blinn ทั้งหมดในนี้ก็จะเปลี่ยนเป็น aiStandard

จากนั้นลองเรนเดอร์ดู ก็พบว่า ได้ผลเหมือนเดิมเป๊ะเลย (เลยไม่มีความจำเป็นต้องลงรูปซ้ำ) เท่ากับว่าการเปลี่ยนจาก blinn เป็น asStandard ในที่นี้สมบูรณ์แบบจริงๆ



เพียงแต่ว่ายังไงก็ไม่สามารถกลับไปเป็นเหมือนตอนใช้เมนทัลเรย์ได้อยู่ดี ยังไงก็ยังต้องลองปรับอะไรดูหลายๆอย่าง

สาเหตุที่ทำให้ภาพเป็นแบบนี้เกิดจากการที่มีค่าความหยาบ (roughness) ในส่วนของสเป็กคิวลาร์ ค่านี้ถูกแปลงมาจากค่าความเยื้อง (eccentricity) ของ blinn โดยตรง

ค่าตั้งต้นของ blinn จะมีค่าความเยื้อง เป็น 0.3 ทำให้ความหยาบในที่นี้กลายเป็น 0.3 ด้วย เลยได้ผิวขรุขระแบบนี้

ที่จริงแล้วค่าความเยื้องใน blinn เป็นตัวที่กำหนดความแรงของแสงไฮไลต์ แต่พอเป็นใน aiStandard กลับถูกแปลงเป็นความหยาบไป

ขอลองปรับความหยาบให้เป็น 0 ให้หมดแล้วเรนเดอร์ใหม่ พิมพ์โค้ดตามนี้วัสด aiStandard ทั้งหมดก็จะมีความหยาบเป็น 0
for a in mc.ls(typ='aiStandard'):
    mc.setAttr(a+'.specularRoughness',0)

พอไม่มีความหยาบแล้วก็เลยกลายเป็นกระจกสะท้อนแสงชัดเจนตามแบบที่ blinn ควรจะเป็นดังเดิม แต่ก็ยังไม่เหมือนเดิมซะทีเดียวอยู่ดี



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

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

ลองมาดูที่เครื่องมือปรับแต่งการเรนเดอร์เลือกมาที่แถบ Arnold Renderer กดที่ Ray Depth ดูตรงค่า Diffuse คือความลึกในการสะท้อนแพร่ จะเห็นว่าเป็น 1



ในที่นี้ลองปรับให้เป็น 3

ถ้าจะปรับโดยใช้โค้ดก็แค่พิมพ์
mc.setAttr('defaultArnoldRenderOptions.GIDiffuseDepth',3)

เพียงแต่ว่าโดยปกติแสงที่ถูกสะท้อนจะยังไม่ได้นับรวมความวางของวัสดุเข้าไปด้วย จนกว่าจะไปเปิด enable glossy caustics ในโหนดของวัสดุ



ในที่นี้ลองสั่งเปิดคอสติกความวาวลงไปให้กับวัสดุทั้งหมด แต่ถ้าต้องมาไล่ติ๊กทีละวัสดุก็เสียเวลาแย่ ก็เลยใช้โค้ดช่วยดีกว่า ทำง่ายๆโดยพิมพ์โค้ดนี้
for a in mc.ls(typ='aiStandard'):
    mc.setAttr(a+'.enableGlossyCaustics',1)

ส่วนความลึกในการสะท้อนความวาวก็เพิ่มเป็น 3 ด้วยเช่นเดียวกับการแพร่
mc.setAttr('defaultArnoldRenderOptions.GIGlossyDepth',3)

แล้วเรนเดอร์ ผลที่ได้ออกมาดูสว่างขึ้น แต่เวลาเรนเดอร์ก็นานขึ้นตาม



แต่จะเห็นว่าออกมาดูแปลกๆขัดตา เพราะแสงดูแตกๆ เหมือนมีคลื่นรบกวนมากมาย

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

ในที่นี้ลองเปลี่ยนจำนวนแซมเปิลของการแพร่กับความวาวเป็น 5 จากที่เดิมเป็น 2

หากปรับด้วยไพธอนก็เขียนตามนี้
mc.setAttr('defaultArnoldRenderOptions.GIDiffuseSamples',5)
mc.setAttr('defaultArnoldRenderOptions.GIGlossySamples',5)

แล้วเรนเดอร์ ผลที่ได้ก็ออกมาดูดีขึ้นมาก อย่างไรก็ตาม ใช้เวลาเรนเดอร์นานขึ้นมาก



จะเห็นได้ว่าในอาร์โนลด์ การตั้งค่าความลึกของแสงให้มากขึ้นจะทำให้ภาพสมจริงขึ้นแต่ก็จะทำให้ภาพแตกๆ แต่ก็สามารถแก้ได้ด้วยการเพิ่มจำนวนแซมเปิล

พอทั้งเพิ่มความลึกของแสงและเพิ่มจำนวนแซมเปิลทำให้เวลาในการเรนเดอร์นานขึ้นเป็น ๑๐ เท่า ดังนั้นคงจะดีถ้าตอนเรนเดอร์ทดสอบใช้ความลึกและจำนวนแซมเปิลน้อยๆ พอจะเรนเดอร์เอาจริงค่อยใช้ค่าสูงๆ



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





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

อาร์โนลด์จะดีกว่าเมนทัลเรย์ได้หรือเปล่าตอนนี้ยังไม่ขอตัดสินจนกว่าจะลองใช้ไปอีกสักพัก



เว็บต่างๆที่ใช้อ่านเพื่อเรียนรู้การใช้อาร์โนลด์
http://area.autodesk.jp/movie/arnold/01.html
http://maya.indyzone.jp/tag/arnold
http://cls-studio.co.jp/category/アーノルドレンダー検証
http://arnold.jp.net


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> maya

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

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
python
-- numpy
-- matplotlib

-- pandas
-- pytorch
maya
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
javascript
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
เรียนภาษาจีน
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

เรียนรู้วิธีการใช้ regular expression (regex)
หลักการเขียนทับศัพท์ภาษาจีนกวางตุ้ง
การใช้ unix shell เบื้องต้น ใน linux และ mac
หลักการเขียนทับศัพท์ภาษาจีนกลาง
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
บันทึกการเที่ยวสวีเดน 1-12 พ.ค. 2014
แนะนำองค์การวิจัยและพัฒนาการสำรวจอวกาศญี่ปุ่น (JAXA)
เล่าประสบการณ์ค่ายอบรมวิชาการทางดาราศาสตร์โดยโซวเคนได 10 - 16 พ.ย. 2013
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
บันทึกการเที่ยวญี่ปุ่นครั้งแรกในชีวิต - ทุกอย่างเริ่มต้นที่สนามบินนานาชาติคันไซ
หลักการเขียนทับศัพท์ภาษาญี่ปุ่น
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ
ทำไมถึงอยากมาเรียนต่อนอก
เหตุผลอะไรที่ต้องใช้ภาษาวิบัติ?

ไทย

日本語

中文