วันศุกร์ที่ 22 สิงหาคม พ.ศ. 2557

Bifrost!!!

Bifrost!!! ต่อไปไม่ต้องหาโปรแกรมทำน้ำแตกแล้ว มาให้ใช้ใน Maya

วันนี้มาลอง Bifrost แค่ชื่อมันก็เท่แล้ว 55 ผมมีโอกาสได้ลองใช้ ทำงานให้ที่ออฟฟิศตัวนึงเป็น opening scene สำหรับ Showreel ครับ ตอนที่ได้ทำก็เลยถือว่าลองเทสต์ Bifrost ไปด้วยเลยพี่งได้โปรแกรมมาลองใช้พอดีมันมาพร้อมกะ Maya 2015 ครับ และด้วยความบ้าของผมก็เลยกะว่าจะไม่ได้ใช้โปรแกรมอื่นทำน้ำเลยในงานนี้ เช่น Realflow และมันก็ทำให้ผมเข้าใจ Bifrost ทั้งข้อดีและข้อเสีย ( ซึ่งอาจทำให้ไม่อยากใช้เลย 555) มาดูประวัติ Bifrost นิดนึง เดิมมันเคยเป็นโปรแกรมที่ชื่อ Naiad ครับเป็นโปรแกรมทำน้ำคล้ายๆกับ Realflow แต่มีข้อดีตรงที่ว่าการคำนวณค่อนข้างเร็วและได้ฟอร์มตอนน้ำแตกสวยมากๆ และ Autodesk เองก็ได้ซื้อโปรแกรมนี้เข้ามาใส่ใน Maya 2015 ครับ แต่ใช้เวลา develop แค่ราวๆปีนึงได้เพราะเห็นจากในเว็บไซต์ที่ Naiad บอกวา่จะหยุดทำเวอร์ชั่นต่อไปแล้ว ผมพูดตรงๆเลยที่ได้ลองใช้ Bifrost ดูมันค่อนข้างจะซิมูเลทได้เร็วมากครับ แต่ก็มีปัญหาในการใช้งานค่อนข้างเยอะยังไม่สมบูรณ์ ผมว่าถ้าเวอร์ชั่นต่อไปมามันคงเจ๋งกว่านี้แน่ๆ

อันนี้เป็นงานที่ทำด้วย Bifrost ทั้งหมดเลยครับ งานนี้สั้นๆ แต่ผมทำเป็นเดือนเลยครับคือเวลาซิมเป็นคัทที่เห็นเนี่ยบางคัทต้องซิมเผื่อถึง2-3 เท่าเพราะรอน้ำมันวิ่งมากว่าจะมาชนโมเดลเอย บางที่ชนแล้วก็ไม่สวยอีก ทั้งงานนี้ผมทำเกือบเดือน ได้T_T ระหว่างทำบางทีท้อมันไม่สวยซะที่อยากกลับไปใช้ Realflow แต่ด้วยความที่ตั้งใจจะใช้แต่ Bifrost ทำงานนี้ (บ้าหรือเปล่า) ก็เลยทู่ซี้ทำต่อไป 555 ซึ่งบอสผมก็ถามเมื่อไรจะเสร็จเนี่ยตัั้งแต่สัปดาห์แรกแล้ว 55 




1.ขั้นตอนแรกก็เปิด Maya 2015 เลยครับโปรแกรมคงช่วยหาให้ไม่ได้ หาโหลดกันเองนะครับ
คราวนี้มายาจะมาด้วยฟังก์ชั่นใหม่ๆหลายตัวเลยผมพูดตรงๆชอบเวอร์ชั่นนี้มากละก็ที่ลองใช้ดูมันไม่ค่อยแฮงค์บ่อยเท่ากับเวอร์ชั่นเก่าๆคราวนี้คงพูดแค่เรื่อง Bifrost ก่อนไว้ค่อยต่อส่วนอื่นที่หลังถ้ามีโอกาสครับ
เสร็จแล้วก็ดูส่วนของ Bifrost เลยครับ ปกติเลยครับ ของใหม่ก็มาพร้อมกับเรื่องใหม่ๆที่ชวนงง

คราวนี้ก็จะพูดส่วนการทำงานของมันนะ
- create Liquid สร้างน้ำ!!! แปลตรงตัวเลยไม่ได้กวน.. นะ คือเราเลือกสิ่งที่เราต้องการจะปล่อยให้น้ำออกมาเป็นโมเดลอะไรก็ได้ครับ
- Add emitter เพิ่มตัวปล่อยน้ำ ใช้คำคล้ายๆกะ Particle ครับเข้าใจไม่ยาก
- Add colider เพิ่มตัวที่เราจะให้มีสัมผัสกะน้ำครับ แปลไทยมันยากแฮะ 555
- Add accerelator เพิ่มตัวเร่ง ครับ ตอนแรกงงกะมันมากให้มาทำไรเนี่ย มาถึงบางอ้อก็ตรงที่ Bifrost ใช้ Field ของ Maya ไม่ได้เลยผมลองใส่ดูไม่มีผลซักนิด เวงละจะคอนโทรลน้ำยังไง ตอนหลังผมถึงได้รู้ไอ้ตัวเนี้ยสำคัญมากๆครับเดียวไว้อธิบายต่อ
- Remove emitter
- Remove colider
- Remove accelerato 3 ตัวนี้ก็คือเอาอันที่เราใส่แล้วออกไปถ้าเราไม่อยากใช้แล้ว ตามชื่อเลยครับ
- Add killplane อันนี้คือเวลาที่เราต้องการควบคุมน้ำให้ไม่เกินพิ้นที่ทีเป็น plane ก็คือ particle น้ำจะหายไปทันทีที่โดนแผ่นนี้ครับมันจะเป็นรูปแผ่น scale ได้นะครับ มีประโยชน์เวลาที่บางที่ particle มันจะมีกระเด็นออกไปจากที่เรา colider จะช่วยให้เราคำนวณได้เร็วขึ้นเพราะ particle ที่เกินก็จะหายไป
- Stop Background Processing สั่งให้หยุดคำนวณครับ อธิบายนิดนึงเวลา่ที่เราสั่ง play หลังจากสร้างน้ำไปแล้วตรง timeline จะมีแถบสีเหลืองขึ้นมาก่อน แล้วค่อยมีแถบสีเขียวขุึ้นตามมาซี่งแถบสีเหลืองคือ background processing ครับ ถ้าคำนวณเสร็จแล้วก็จะเป็นสีเขียวประมาณว่า Ram preview ใน After effect ครับน่าจะเข้าใจง่าย
- Flush Scratch Cache ลบแคชที่สร้างไปแล้วทิ้งจากตอนที่ Preview
- Bifrost Option ส่วนนี้จะควบคุมการคำนวณของ Bifrost ครับ
- Compute and Cache to Disk อันนี้เวลาเราเซ็ท scene เสร็จแล้วก็สั่ง cache เลยครับ สำคัญถ้าก่อนจะเรนเดอร์ควรจะ cache ครับ แต่ขอบอกว่ามันนานมากกว่าตอนเรา Ram preview ซึ่งมันกินเวลามากอย่างงานที่ผมทำนี้ แคชซีนละ วันเลยครับ T_T เจ็ท... นานมากซึ่งยังไม่เสร็จนะครับ เวลาเรา cache เสร็จแล้วก็จะสั่งให้ Bifrost export น้ำออกไปคล้ายๆกับ Realflow ครับด้วยคำสั่งใหม่ของมายา (อีกและ)
Pipeline Cache > Alembic Cache > Export to Alembic ซึ่งตัวนี้มัน Export เป็นไฟล์น้ำไฟล์เดียวให้เรา import เข้ามาใหม่ เริ่มงงละ เอาออกเอาเข้าไมว้า มันจะทำให้ Scene เราคำนวณเบาลงครับ แต่ก็มีวิธีเปิด mesh โดยไม่ต้องสั่ง export เลยก็ได้ครับ ร่ายซะยาวเลยอยากให้พอเข้าใจโครงสร้างมันน่ะครับ

2.ต่อมาให้สร้างห้องเตรียมไว้ colider ครับ

3.เลือก Sphere ก่อนนะครับเพราะผมจะให้ัมันเป็นตัวสร้างน้ำออกมา > Bifrost > Create Liquid

4.สั่ง Play ใน Maya เลยครับ ก็จะเห็นแถบเหลืองขึ้นมาแล้วก็จะมีแถบเขียวค่อยๆวิ่งตามแถบเหลืองดูเล่นเพลินๆครับถ้าเครื่องเร็วก็ดีหน่อยเครื่องช้านี่แถบเขียวกว่าจะมาทันแถบเหลืองรอนานครับ

5. ต่อไปก็เลือกตามลำดับเลย เลือก Cube > bifrost > Add colider กด shift ค้างไว้ด้วยนะ เพราะต้องเลือกทั้ง 2 ชิ้น

6.เปิด Attribute editor สำหรับ cube ขึ้นมาเลื่อนมาตรงแถบล่างสุดจะเห็น Bifrost >Collider ตรงนี้เป็น option ของมัน ให้เราเลือก Mode ไปที่ Shell ครับ ถ้า Solid คือมันจะมองกล่องเป็นแบบตัน Shell คือใช้แค่แผ่นผิวเป็นตัว Colide ครับ

7.สั่งซิมดูก็จะได้ตามภาพครับ ถ้าสังเกตุข้างล่างของกล่องอาจมี Particle ตกไปจากกล่องอันนี้เป็นเพราะว่าความหนาของตรง colider อาจเล็กไป

8.เลือก bifrost แล้วก็ไปที่ Bifrost liquid Container จะเห็น Master voxel size ตรงนี้คือปรับความละเอียดของน้ำยิ่งเล็กน้ำยิ่งละเอียด แต่ก็ยิ่งนานขึ้น ผมตั้ง 0.2

9.กลับไปที่ Cube แล้วไปที Bifrost > Colider เป็น 3 ทำให้เวลา colide แล้วผิวกล่องจะหนาขึ้น น้ำก็จะไม่ทะลุไปด้านล่าง

10.เริ่มปรับ Option BifrostLiquidContainer ครับมันเยอะมากกกก ตอนแรกที่เห็นมึนเลยครับค่าไรบ้างฟระเนี่ยและดูชื่อสิครับชวนมึนส์มาก
> Emission เกื่ยวกับการคำนวณของ particle ครับ คล้ายๆ substep ของ realflow อาจทำให้งงไปอีก 55ตรงนี้เป็นการสั่งให้เวลาคำนวณ particle จะมีความแม่นยำมากขึ้นหรือน้อยลง
> Transport Time Scale ตัวนี้เจ๋งมากครับก็คือสโลว์โมชั่นหรือ เร่งสปีดครับ ผมชอบ Bifrost ตรงนี้เลย ผมว่า Realflow ทำช็อท Slowmotion ยากมาเจอ Bifrost ใส่เลขปุปจบเลย 0.5 ก็คือช้าลง 50% ครับ


11.> Artistic Attribute (เล่นศัพท์ซะทำงง) อันนี้เกี่ยวกับการคำนวณการเกาะเป็นรูปทรงของน้ำครับ
ผมตั้ง Droplet Treshold 0.3 ก็คือเวลาที่น้ำกระเด็นไปถึงสวนปลายๆแล้ว Bifrost จะพยายามคงรูปทรงของน้ำไว้ทำให้มันยังดูยาวๆหนึดๆอยู่ครับ แต่ถ้าค่านี้ต่ำเวลากระเซ็นแล้วจะกลายเป็น Droplet ก็คือ Particle ที่แยกจากน้ำ Main ไปแล้วจะดูเป็นหยดแทน ข้อดีคือจะทำให้คำนวณได้เร็วขึ้น ( โอย อธิบายโครตยาก หวังว่าจะไม่งงนะครับ) ดูจากทีวงไว้ครับ จะเห็นส่วนปลายของน้ำ

12.คราวนี้ผมตั้ง Droplet Treshold 3 น้ำก็จะดูเป็นรูปทรงที่เกาะกันมากขึ้น เวลาผมทำงานพวกซิมน้ำนี่ส่วนมากลูกค้าจะชอบงานน้ำแบบให้มันดูยืดๆยาว หน่อย

13.ตอนนี้ก็เห็นแต่น้ำตกลงมาอย่างเดียวชักเบื่อละ อยากลองมุมอื่นบ้างแต่พอผมใส่ Field ของ Maya ไป ขึ้นตัวแดงมาเลยครับ Error blah blah blah เจ็ทละจะควบคุมมันยังไงเนี่ยผมก็คิดถึงคนเขียน มายานะไหนๆจะสร้างมาทั้งที่แล้วทำไม Field ของตัวกลับใช้ไม่ได้เนี่ยสงสัยจะรีบออก Bifrost ไปหน่อยกลัวจะไม่ทันได้ขาย Maya 2015 ทั้งๆที่มันแค่ปี 2014 คราวนี้ก็ไปอ่าน Help ของมันอีกที่ไปเจอเรื่อง Acceleration ก็พอจะเก็ทได้ละ โดยตัว Acceleration นี้ใช้ตัวเกิดของน้ำเป็นตัวควบคุมได้นะ มันจะเป็นตัวกำหนดทิศทางกะแรงที่มาส่งผลกับ Paritcle ครับ คราวนี้ผมก็เลือก Sphere > bifrost > Add Accelerator อย่าลืม Shift นะครับ

14. ใส่เสร็จแล้ว เปิด Attribute editor option Accerelator มันจะไปซ่อนอยู่ใน Sphere ของเรา tab Bifrost > Acceleration แล้วไปที่ Geometry influence ครับ ผมเพิ่ม Direct Magnitue 30 ( ความแรงของ Accerelator )
Direction ผมใส่แกน X =0, Y =0 , Z=1 เสร็จแล้วสั่ง Play ดูก็จะได้น้ำแบบนี้เอะมันคล้ายๆอะไรหว่าช่างมัน 55 อย่างน้อยตอนนี้ก็สั่งให้ Particle ไปตามทิศทางได้แล้ว

15.ต่อไปก็อยากเห็นแล้วว่าน้ำจะหน้าตาเป็นยังไง จริงๆสามารถ render ดูเลยได้นะครับ Bifrost จะสรา้ง Proxy แบบ Low มาให้ตอนเรนแต่ผมอยากเป็นเป็น Mesh ให้ดูเลยไปที่ BifrostShape > Bifrost Meshing
Enable on ถึงตรงนี้ถ้าเครื่องสเปคไม่สูงขอบอกเลยหนึดมากๆนี่เครื่องผมที่ออฟฟิศก็แรงพอได้อยู่ยังช้าเลยครับ

16.หน้าตา mesh ก็จะเป็นแบบนี้คราวนี้ถ้าเราเลื่อนไปดูเฟรมอื่น ก็จะคำนวณสร้าง mesh ของเฟรมนั้น ขอบอกเลยว่าช้ามาก 555 ผมไม่ชอบ Bifrost ตรงส่วนนี้แถมเราจะ export มาเช็คเป็น frame ก็ลำบากอีก

17.Bifrost Meshing อีกแล้วครับพลังจะมาพร้อมภาระอันยิ่งใหญ่ เอ้ยไม่เกี่ยว 55 ผมเปิดมาครั้งแรกไรวะเนี่ย เมิงตั้งศัพท์ให้อ่านละเข้าใจในครั้งแรกได้มั้ยไม่อยากเปิด dic ยิ่งโง่ๆ Eng อยู่แถม Help ของ Maya เนี่ยถ้าคนที่อ่านๆกันคงเข้าใจมันทำมาให้พวก Programmer ใช้หรือไงฟระ ภาษาโครตจะมึนรูปก็ไม่มี บร้าๆๆๆ อะแต่ด้วยความทีผมใช้เวลาอ่านเกือบทั้งวันกะลองซิมดู แค่ 6 option เองทำงงซะนาน
- Droplet reveal factor โอ้จอร์จ ประมาณว่า ค่าเยอะจะเห็น droplet ที่เป็นเม็ดๆมากขึ้นถ้าน้อยก็จะ smooth ครับ
-Surface Radius ขนาดของน้ำในเม็ด Particle ครับอันนี้จะเป็นของ ส่วน Main particle ที่ยังไม่แยกออกมาเป็น droplet
-Droplet Radius ขนาดของ droplet ครับ ก็เป็นหยดที่แยกออกไปแล้ว
-Kernel Factor ป็าด ทำ particle มาก็นานไม่เคยเจอคำแบบนี้เลย มันคือถ้าค่านี้ต่ำน้ำก็จะมีความหยาบ ส่วนถ้าสูงน้ำก็จะดู smooth ครับ
-Smoothing ความเรียบของผิวน้ำครับ
-Resolution Factor นี่คือความละเอียดของ mesh ครับ เพิ่มก็ทำให้ mesh น้ำละเอียดมากขึ้น


18.จากที่ดูแล้วน้ำยังดูเม็ดใหญ่อยู่ครับ คราวนี้ก็กลับไปปรับ Master voxel size เหลือ 0.1 ก่อนจะ Play นี่ควรปิด Enable mesh ไปก่อนเพราะมันจะคำนวณทุกเฟรมเวลา play คราวนี้ก็จะได้น้ำที่ดูเม็ดเล็กลงกว่าเดิมครับ

19.สั่งเรนเดอร์เลยครับ อะไหงมันแดงเถือกงี้ maya software เรนเดอร์ shade Bifrost ไม่ได้ครับต้อง mentalray ล้วนๆ ก็เปลี่ยน render setting > mentalray เลยครับ

20.เหมือนจะสวยนะครับ อันนี้ผมทำ Cube ให้เห็นตอน render แค่ผิวด้านในนะครับ ละก็ใส่ไฟ ไปดวงนึง เห็นจากที่ render bifrost shade นี่มาพร้อม Foam shader เลยครับ สวยดีแต่เรนเดอร์นานใช้ได้เทียบกะ scene ที่แทบจะไม่มีอะไรเลย

21.ผมเพิ่ม Bifrost meshing > Resolution factor 2 เพื่อให้ mesh ละเอียดขึ้น

22.ถ้าไปดูที่ bifrostLiquidMaterial อยู่ใน bifrost mesh ครับ จะเป็น ramp ให้ปรับ + ค่า min max อีกซึ่งเราสามารถ test ดูก่อนได้ที่ particle ครับไปที่ Bifrostshape > Particle Display > Color Channel Remap ตั้ง color channel ไปที Vorticity ก่อนนะครับ ramp จะทำงานตามค่านี้ ผมปรับ color channel Min 1 , color channel Max 150 จะเห็น ramp บน particle เป็นแบบใน ภาพ

23.ไปที่ bifrostLiquidMaterial > Foam Remap ตั้งค่า min 1 max 150 ผมปรับ ramp สีเทา ขาว แบบใน ภาพ  และก็ลด ramp weight ลงครับ เรนเดอร์ดูก็จะได้น้ำที่มีโฟมตรงส่วนปลายๆเท่านั้นไม่เต็มไปทั้งหมด

24.ใส่สีที่ reflection color , refraction color นิดหน่อยครับ สวยงาม

เรียบร้อยไปกะ Bifrost ละ หวังว่าจะมีประโยชน์กันบ้างนะครับ ผมไม่ใช่ว่าจะมาอวดโชว์ว่าทำงานได้หรือยังไงแค่อยากแบ่งปันสิ่งที่ได้รู้มาจากการศึกษาตามเน็ทกะทดลองเองถ้าชอบก็ช่วย share like หน่อยนะครับ
contact      kulapong_vai@yahoo.com
                 artstream (facebook)
                 kul vai (linkin)
                 http://kulapong.cgsociety.org