Monthly Archives: March 2009

Aftershock Project

โครงการ Aftershock เป็นโครงการพัฒนาเกมส์แข่งรถแนว Indie Multiplayer โดยทีมเล็ก ๆ จาก บริษัทชือ Liquid Rock Games และหัวหน้าทีม คือ Yap Chun Fei และ Pang Lih-Hern

Yap Chun Fei ได้กล่าวถึงโครงการนี้
ก่อนอื่นผมอยากแนะนำหุ่นส่วนของผม Pang Lih-Hern และ Yap Chun Fei พวกเราเป็นบริษัทพัฒนาเกมส์อิสระชื่อ Liquid Rock Games เรามีทีมอยู่ 2-3 คน ตอนนี้เรากำลังทำ Game multiplayer ที่ชือ Project Aftershock ซึ่งตอนนี้ยังอยู่ในขั้นเริ่มต้นของการพัฒนา สิ่งที่น่าสนใจเกี่ยวกับโครงการนี้ก็คือเราเลือกใช้ Software Open Source มีดังนี้

Rendering engine : Ogre3D
โปรแกรมสำหรับสร้าง Modle 3D : Blender3d
โปรแกรมวาดรูป 2D : GIMP

ท่านสามารถตืดตามผลงานของเราได้ที่ official blog หรืออยากดูรูปการทำงานผลงานของเราได้ที่ Flickr หรือกระทู้ ของพวกเราที่ OGRE forums ซึ่งเป็น webboard ที่ทีมของเราได้ Update ข่าวสาร และได้รับการตอบรับเป็นอย่างดีทำให้พวกเรามีกำลังใจในการทำงานมากขึ้น ด้านล่างนี้เป็น Demo ของ Game ครับ

บทความโดย Yap Chun Fei
เรียบเรียงโดย
Candle3d.com

การ render Pecspective ภายนอก Vray by Red Vertex 3 (Material)

วัสดุ MATERIALS

Materials ของหญ้า ผมใช้ Vray2SidedMtl ซึ่ง Front material ใน 2Sided ใช้ translucency color RGB = 140 140 140 (สีเทา) สำหรับ Map ก็ใช้เพียง diffuse texture ปรับค่า Opacity โดยใช้ VrayColor ตั้งค่า RGB = 140 140 140 material ทั้งสองเหมือนกันแต่ material ที่สองจะขุ่นและมืดกว่าทำให้ หญ้าดูน่ม และ ไม่ใช้ Displacement มันจะส่งผลกับ GI ทำให้สีไม่พี้ยน

Map หญ้า grass texture

map หญ้าที่ ผมใช้
ไม่ได้ใช้เทดนิคอะไรพิเศษ Material ของลำต้น ก็จะใช้เทคนิดเดียวกันแต่จะปรับ Reflect และ Reflect Glossiness ให้เป็นสีเทา Fresnel IOR เท่ากับ 2.0 ใช้ค่านี้กับทุก ๆ วัสดุ แค่เปลี่ยน Texture เท่านั้น

ผิวของต้นไม้ barkshader
วัสดุของต้นไม้

วัสดุใบไม้ Leaves
การทำให้มันดูเหมือนจริงเป็นเรื่องท้าทายอย่างมากผมใช้เวลาทดลองเรื่องนี้อยู่สองถึงสามวัน สุดท้ายก็เลือก VrayMtl กับ translucency เพื่อให้มันดูเขียวแบบพิเศษ และใช้ SSS ปัญหาที่ผมพบอีกอย่างหนึ่งก็คือการใช้ หมอก แต่มันสามารถแสดงผลได้เฉพาะ Model เท่านั้นนั้นเห็นเหตุผลที่ผมต้องใช้ใบไม้เป็น Model ปัญหาอีกอย่างเรื่อง fog นั้นเราต้องใช้วัตถุที่มีปริมาตรเท่านั้นมันถึงจะแสดงผลได้อย่างถูกต้อง ผมจึงเลือกใช้ shell modifier เพื่อให้การแสดงผลตอน Render ได้ถูกต้อง(ให้ระวังเรื่องความหนาให้ดีเพราะถ้ามันบางเกินไปมันอาจจะมัปัญหากับหมอกได้)การ set sss Shader แล้วก็ set? refract เป็นสีขาว ปรับค่า Glossiness ประมาณ 0.6-0.8 ค่านี้สำคัญมากไม่งั้น translucency จะไม่ทำงาน จากนั้นก็เพิ่มค่า subdivisions เป็น 20 เพื่อให้มันดูนุ่ม จากนั้นก็ปรับ mode ของ? translucency ให้เป็น hybrid Model เพิ่มค่้า Light multiplier นิดหน่อย ผมพยามจำลองก้านเยื้อที่อยู่ในในไม้โดยกาใช้ map สีขาวดำเพื่อมาจำลองมันพอได้ผลลัพธืเป็นที่น่าพอใจแล้วก็จะปรับใช้ Reflection ด้วย ดูรูปด้านล่างประกอบครับ

ตัวอย่างการปรับวัสดุใบไม้

ตัวอย่างการปรับวัสดุใบไม้

ตัวอย่าง วัสดุใบไม้ Leaf material

ตัวอย่าง วสดุ ใบไม้ leavesshader

ตัวอย่าง วสดุ ใบไม้ leavesshader

ย้ายบ้าน

ช่วงเวลา 22.00 น. – 3.00 น. ของคืนวันที่ 4 มีนาคม candle3d ได้ทำการปรับปรุงและทำการย้าย server ใหม่เพื่อประสิทธิภาพการใช้งานให้ดีกว่าเดิม หากท่านมาเยี่ยมเราในเวลาดังกล่าว อาจจะเข้าใช้งานไม่ได้ จึงต้องขออภัยมาณที่นี้ด้วยครับ 🙂

Candle3d จะ Update นำข่าวสารสาระมาฝากท่าน ทุก ๆ วันครับ อย่าลืมสมัครสามชิกด้วยนะครับ

พิเชษฐ์ มณีรัตน์

3D Daily for Every One

การ render Pecspective ภายนอก Vray by Red Vertex 2 (Tree)

ต้นไม้ TREES

Model ต้นไม้เกือบทั้งหมดจะใช้ plugin ชือ Onyx มีสองต้นใช้ Bionatics Plugin เพราะมันสามารถกำหนดรูปแบบของใบได้ละเอียด สำหรับต้นไม้ที่ทำจาก Onyx ก็ไม่ได้มีอะไรพิเศษรูปแบบก็ Load Preset มาจาก File ที่มาพร้อมกับโปรแกรมส่วนที่ผมคิดว่ายากก็คือการให้รายละเอียดของใบโดยผมใช้ SSS Material (ดูรายละเอียดของเรื่องนี้ได้ในส่วนของ Material) ผมไม่ใช้ Opacity maps เลยใบไม้ทั้งหมดเป็น Model 3d จริง ๆ ซึ่ง Onyx มันไม่สามารถทำได้ ถ้าดูไกล ๆ ก็ พอได้ แต่ในงานนี้ผมต้องการให้ต้นไม้มีใบเป็นพุ่มหนา

Tree bark displacement

Tree bark displacement

ผมใช้ใบที่ให้มากับต้นใม้ของ Onyx ในระยะไกล ๆ แต่จะมีการเพิ่มรายละเอียดสำหรับต้นใม้ที่อยู่ด้านหน้าและต้นใม้ที่อยู่ ใกล้ ๆ ต้มไม่กลุ่มทางซ้ายมือก็จะใช้ใบแบบเดิมเพียงแต่ผมจะแยกใบออกมาแล้วใส่ Shell Modifier ให้กับมัน (ดูรายละเอียดของเรื่องนี้ในส่วนของ Material) ขั้นตอนในการทำดูเหมือนจะง่านแต่พอทำจริง ๆ นั้นการใส่ Modifier ให้กับส่วนใบเป็นที่มี polygon เป็น พัน ๆ กลับทำให้เครื่องค้างไปเลยผมแก้ปัญหานี้โดยแยกมันออกมากเป็นส่วน ๆ แล้วใส่ Shell ให้มันวิธีนี้ก็จะช่วยให้เครืองไม่ค้าง หลังจะนั้นผมก็ Attach มันกลับเข้าไปรวมกัน ปัญหที่พบในขั้นตอนนี้ก็คือการใช้? High Poly Leaves ผมทำ Model ใบไม้ขึ้นมาแแล้วต้องการนำไปแทนที่ ใบให้สี่เหลี่ยมของ Onyx แก้ปัญหานี้โดยสร้่างกลุ่มใบใม้ขึ้นมาแล้วใช้คำสั่ง scattered ต้นไม้ละเอียดลงในLowpoly จากนั้นก็ลบ lowpoly ทิ้ง

High poly leaves

High poly leaves

Low poly leaves

Low poly leaves

ส่วนลำต้น Onyx Tree และ Bionatics เป็น Plugin ที่มีรูปทรงของลำต้นและกิ่งดูดีอยู่แล้วแต่ก็จะใช้ subdivisionsเพื่อให้รายละเอียดผิวของต้นให้ให้ดูสมจริงมากยิ่งขั้นตรงนี้ถือเป็นหัวใจสำคัญของภาพเลยทีเดียว

Tree bark

Tree bark

ผมพยามใช้ VrayDisplacement กับต้นใม้ทั้งหมด…แต่มันไม่ใช่ความคิดที่ดีเลยเพราะคำคั่งนี้ใช้ memory มากจึงทำให้ไม่สามารถ render ได้(ไม่เจียมเลยเรา)เลยหันกลับมาใช้เฉพาะต้นไม้ที่อยู่ใกล้ ๆ แทนเวลาใช้ VrayDisplacement อยาลืมตรวจด้วยนะครับว่ามันเห็นในกล้องหรือเปล่าไม่งั้นเราจะเสียวเวลาในการ render มากขึ้นนะครับ

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

หลังจากนั้ผมก็จะ Convert มันให้เป็น Vray Proxy ทำให้เราสามารถใช้ต้นใม้หลาย ๆ ต้นได้โดยไม่มีปัญหาเรื่อง Memory โดยผมจะแยกส่วนประกอบของต้นไม้ออกเป็นสองส่วนคือ Proxy ของใบ และ Proxy ของลำต้นกิ่งก้านทำให้เราสามารถแทน Model High Poly ของใบหรือลำต้นได้ง่าย ในกรณีที่ต้นไม้นั้นเป็น Foreground

Tree proxies
Tree proxies

ผมใช้ต้นไม้ 5 ชนิด และไม้พุ่ม 5 ชนิด ซึงมี Polygon รวม มากว่า 1,000,000 Polygon ผมไม่แน่ใจเรื่องจำนวน Poly ที่แสดงทั้งหมดในฉากมีประมาณ 13.6ล้าน Polygon นี่ยังไม่รวม Polygon ที่จะเกิดจาก Displacement จากหญ้าและต้นใม้อีกนะนี้

อย่าลืมติดตามตอนต่อไปนะครับ 😉


การ render Pecspective Vray by Red Vertex 1 (Layout)

foliage vray render

foliage vray render

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

render ต้นไม้โดยใช้ Vray

นี่เป็นภาพรวม

การทำต้นหญ้านั้นทำง่าย ๆ โดยใช้ displacement เหมือนที่ใช้กันทั่วไปโดยหัวใจของหญ้าก็คือ displacement subdivisions ขนาดใหญ่และ Noise Map ที่ดี ผมใช้ VrayDisplacement modifier เลือก Type เป็น 2D mapping โดยจะปรับขนาดตามความเหมาะสมซึ่งแต่ละ Camera จะใช้ไม่เหมือนกัน โดยจะปรับให้ต้นหญ้าสั้นเมื่ออยู่ใกล้และปรับให้ยาวเมืออยู่ไกล การให้รายละเอียดของต้นหญ้าส่วนใหญ่จะปรับอยู่โดยประมาณ 3,500 ไม่ใช้ค่านี้ตลอดนะครับโดยมากผมจะปรับให้มากกว่า 2,000

การ render tiveภายนอกโดยใช้ Vray

มันอาจเป็นการยากที่ render polygon จำนวนมหาสาน ซึ่งเครื่องของผมที่มี Ram 6 GB ไม่สามารถ Render ได้ (ran out of memory เป็นเรื่องธรรมของการ Render Vray กับ File ที่มี Polygon จำนวนมาก) ผมแก้ปัญหานี้โดยการแบ่งพื้นที่หญ้าให้เป็นส่วน ๆ และเปิด Displacement เฉพาะที่จะเห็นในมุมมองนั้น ๆ นอกจากนั้นผมยังทำให้ผิวขรุขระ เพือให้ต้นหญ้าที่ได้ดูเป็นธรรมชาติ? โดยใช้ displacement modifier ที่ติดมากับ Max และใช้ Smoke map ให้กับมัน หลังจากนั้นก็เพิ่มต้นหญ้าไปบริเวณขอบของอาคารโดยใช้ Vray Proxy เพื่อลดจำนวน Polygon สำหรับ map ที่ใช้กับ VrayDisplacement ก็จะปรับให้มีสีขาวและดำมากยิ่งขึ้น โดยลดค่า High และ เพิ่มค่า Low ให้มากขึ้นดูรูปด้านล่างประกอบ

redvertex-foliage04

การ render tiveภายนอกโดยใช้ Vray


รูปแบบใหม่ของ Candle3d

สวัสดีครับ หลังจากที่ผมทำการเปิดเวป candle3d มาเกีอบสองปีแล้ว ตั้งใจให้เวป candle3d เป็นเวปสำหรับแบ่งปันความรู้และแลกเปลี่ยนประสบการณ์เกี่ยวกับเรื่องสามดี พบกว่า web board นั้นมีข้อจำกัดเกี่ยวกับการเขียนบทความที่ผมจะตั้งใจจะนำมาเล่าสู่ให้ทุกท่าน และคิดว่านี่จะเป็นก้าวเล็ก ๆ ที่จะพัฒนาเวป Candle 3d ของพวกเราให้โตขึ้นไปอีกขั้นเป็นกำลังใจให้ด้วยนะครับ

พิเชษฐ์ มณีรัตน์