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



[maya] ลองเปลี่ยนมาใช้ maya 2017 และเรนเดอร์ด้วย arnold
เขียนเมื่อ 2017/04/09 17:35
แก้ไขล่าสุด 2021/09/28 16:42
หลังจากที่มายา 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


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

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

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

หมวดหมู่

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

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

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

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

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



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

  ค้นหาบทความ

  บทความแนะนำ

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

บทความแต่ละเดือน

2024年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2023年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2022年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2021年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2020年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

ค้นบทความเก่ากว่านั้น

ไทย

日本語

中文