Displacement Map
สร้างฉากใต้ทะเล โดยใช้ Displacement Map
Chamferbox
ขั้นตอนการสร้าง เตียง ผ้าคลุมเตียง หมอนใบนั้น
Compesite Map
ขั้นตอนการสร้างวัสดุ น้ำ Compesite Map

[Let's move with MotoinBuilder : Characterizing]
ในการทำ character animation ขั้นตอนหนึ่งที่ขาดไม่ได้เลยคือ Character Setup หรือ Character Rigging เป็นขั้นตอนในการสร้าง Controller ต่างๆ บนตัวละคร เพื่อให animator สามารถ animate ได้ง่าย และ รวดเร็ว ใน software ทั่วไปเช่น 3ds max, Maya, Lightwave ปกติต้อง setup ใหม่ทุกครั้ง ทั้งที่เป็นงานที่ควรจะอัตโนมัตได ้สาเหตุที่ทำให ้อัตโนมัตไม่ได้มาจากตัว software ต้องการให้ผู้ใช้สร้างโครงสร้าง ของตัวละคร ได้อย่างอิสระ ไม่ยึดติดอยู่กับรูปแบบใด รูปแบบหนึ่ง ซึ่งก็เป็นข้อดีแต่ข้อเสียที่ตามมาคือ เมื่อ ไม่มีรูปแบบที่แน่นอนในการ setup ทำให้เป็นการยาก ที่จะสร้าง non-linear animation ที่มีความยืดหยุ่งสูงให้ใช้งานง่าย เป็นต้นว่า อยากรวม animation clip การเดิน กับ animation clip การวิ่งเข้าด้วยกัน จะต้องมีการ match ตำแหน่ง ให้สามารถ blend เข้าหากันได ้เราสามารถเขียน script เพื่อกำหนดตำแหน่งได ้แต่ไม่ใช่สำหรับ ทุกๆตัวละคร การ เขียน script เพื่อให้ใช้ได้กับทุกตัวละคร เป็นเรื่องยาก และเมื่อเขียนออกมาแล้ว การใช้งานก็ไม่สะดวกอย่างที่ควรจะเป็น ดังนั้น ทางออกสำหรับปัญหานี้คือ สร้างระบบกระดูกและ animation ขึ้นมาใหม ่และตัวละครทุกตัวใช้ระบบเดียวกัน จะทำให้ตัวละครทุกตัวใช animatoin clip เดียวกันได ้สามารถสร้างความสามารถในการ blend clip เข้าด้วยกันได้ง่าย ตัวอย่างของ software ประเภทนี้เช่น Character Studio ของ 3ds max และ MotionBuilder

MotionBuilder เดิมเป็นของ Kaydara จนถึง version 5 และ Alias เจ้าของ Maya ก็ได้ซื้อมาพัฒนาต่อ และออกมาเป็น Alias MotionBuilder 6 ผมมีโอกาศได้รู้จัก MotionBuilder เมื่อเข้ามาเปิดตัวในไทย เมื่อประมาณ 3 ปีกอน จอนนั้นยังเป็น Kaydara MotionBuilder 4 เป็นครั้งแรกที่ได้เห็นระบบ non-linear ที่มีความสามารถ และ ความ ยืดหยุ่นสูงระดับนี้ระบบ constraint ของ MotionBuilder มีความยืดหยุ่นสูงมาก สามารถเขียน script เพื่อควบคุม animation ได้อย่างมีประสิทธิภาพ เช่นสามารถเขียน script เพื่อ ให animator สามารถ ควบคุมตัวละครผ่านทาง joystick ได ้สามารถออกอากาศสดได ้จากความสามารถแบบนี้ทำให้สามารถนำไปประยุกต์ใช้งาน ในงานที่เคยทำด้วยความยาก ลำบากในอดีต ได้อย่างง่ายดาย เช่นการทำ digital puppet เป็นต้น
Workflow
เนื่องจาก MotionBuilder ออกแบบมาเพื่องาน animation โดยเฉพาะ จึงไม่มีในส่วนของการขึ้น model จำเป็นต้องทำงานร่วมกับ software อื่นๆ เช่น Maya หรือ 3ds max หรือ software ใดๆที่สามารถ import/export เป็นไฟล .FBX ได ้ขั้นตอนการทำงานหยาบๆ เป็นดังนี้
1. สร้าง model ใน software อะไรก็ได ้ใส texture สร้างกระดูก ใส skin ทำ blend shape หรือ morph และ export ออกมาเป็น .FBX ด้วย plugin โดยไม่ต้องทำ character setup
2. เปิด .FBX ใน MotoinBuilder และ animate ตามต้องการ อาจจะ animate เก็บไป clip แล้วมาตัดต่อรวมกัน หรือ animate ทีเดียวก็ได ้นอกจากนี้ยังสามารถใช้ข้อมูลจาก motion capture ในขั้นตอนนี้ได้อีกด้วย
3.
bake animation ลงไปที่กระดูก (plot) และ shape channel
4.
output โดย
-ต่อเข้า video แล้วบันทึกมาแบบ realtime
- render ออกโดยใช OpenGL (hardeware render)
-
export กลับเข้าไปใน software อื่นๆเช่น Maya หรือ 3ds max เพื่อ render หรือทำขึ้นตอนอื่นๆที่ต้องการต่อไป
-
export ในรูปแบบที่สามารถนำไปใช้กับการสร้างเกมได 
Defining and Characterizing character from Maya
เนื่องจาก MotoinBuilder รับไฟล์จาก software อื่น ดังนั้นจึงมีกฎเกณฑ์บางอย่างที่ต้องทำตามในบทความนี้จะยกตัวอย่าง การเตรียมงาน จาก Maya และ import เข้า MotoinBuilder
เมื่อมีmodel และ texture เรียบร้อยแล้วก็ทำการใส่กระดูก สิ่งที่ต้องคำนึงถึงคือ
-ตัวละครต้องยืนอย ู่grid เท้าชิด grid
-ตั้ง scale ให้เรียบร้อย อาจใช scale 1:1 เลยก็ได ้เนื่องจาก Maya และ MotionBuilder ใช้หน่วยโดย default เป็น cm เหมือนกัน
-ตัวละครต้องหันหน้าไปทิศ +Z
-ต้องยืนในท่า T-Stance หรือยืนตรง กางแขนออกเหมือนไม้กางเขน
-ด้าน front view แนวกระดูกขาและลำตัวต้องขนานกับแกน Y แนวกระดูกแขนต้องขนานแกน X

ตั้งชื่อตามรูปแบบชื่อของ MotionBuilder ดังรูป

เมื่อตั้งชื่อตรงตามนี้จะทำให้การ import เข้าไป characterize ใน MotionBuilder สำดวกขึ้นมาก ไม่ต้องบอกว่ากระดูกชิ้นไหนคืออะไร MotionBuilder ก็สามารถเข้าใจได้เอง ใน ภาพแสดงด้านซ้ายด้านเดียว แต่ต้องตั้งชื่อทั้งสองด้าน โดนเปลี่ยน Left เป็น Right
ชื่อของกระดูกที่เป็นสีดำตัวใหญ ่หมายถึง กระดูกชิ้นนั้นเป็นกระดูกที่จำเป็นต้องมีส่วนที่เหลือ จะมีหรือไม่ก็ได ้แต่แนะนำว่าควรมีอย่างน้อย เท่ากับในภาพ เพื่อให้การเคลื่อนไหวเป็น ไปอย่างราบรื่น
จัดการกับระดับชั้นของ node ต่างๆใน hyperGraph

มีlocator ชื่อ Reference อยู่เหนือ Hips อีกทีซึ่ง locator ตัวนี้ต้องอยู่ที่ตำแหน่ง 0 0 0 มีgSimBoy อยู่ชั้นบนสุด ซึ่งใช้ชื่ออะไรก็ได ้ในการ export ออกเป็น .FBX Maya ต้องการ plugin fbxmaya60.mll ซึ่งโหลดได้จาก www.alias.com หรือถ้าใช Maya 6.5 ก็มีให้เลย ไม่ต้องโหลดเพิ่มเติม แต่ก็ต้องใช 
Plug-in Manager เปิดใช้งาน

เปิด MotionBuilder

เปลี่ยน layout ให้เหมาะสมกับการทำงานด้วยคำสั่ง Layout เช่นเลือก Creation เมื่อต้องการ characterize แต่ก็สามารถเปิดปิดหน้าต่างต่างๆ ได้เอง จากเมนูWindow

คำสั่ง Setting >> Keyboard Configuration ทำให้เลือก hotkey ให้เป็นแบบที่คุ้นเคยได ้เช่นเลือกเป็น Maya ก็สามารถใช Alt+เม้าส์ซ้าย เพื่อ หมุนหน้าจอไปมาได 

ใน Preference มีสิ่งที่ควรตั้งค่าเช่น Selection Options ควรติ๊กไว้ทั้งสองบรรทัด เพื่อให้การ select และ deselect ทำได้ง่าย นอกจากนี้Undo Level ก็ควรตั้งไว 100 หรือ มากกว่า เพื่อให้สามารถย้อยกลับไปมากเมื่อทำงานผิดพราด
ใช้คำสั่ง File >> Open เปิดไฟล์ที่export ออกมากจาก Maya

เมื่อเข้ามาก็พบปัญหาคือ MotionBuilder ไม่สามารถหา texture ให้กับ model ได ้แก้ไขโดยการดูที่Navigator

ในหัวข้อ Textures เลือกไฟล์ที่ต้องการ แล้ว double click จะมีหน้าต่าง Video Settings ขึ้นมา ในบรรทัด Path กดปุ่ม Browse ไปหาภาพที่ต้องการ

ใน viewport ก็จะแสดง texture ที่ถูกต้อง ที่หน้าต่าง Asset Browser click ที่folder ชื่อ Characters มีicon ปรากฏขึ้นด้านล่าง

ลาก icon Character ไปที่viewport วางบน locator ตัวกลาง ที่ชื่อ Reference

แล้วเลือก Characterize

ใน Navigator หัวข้อ Characters มีCharacter เพิ่มขึ้นมา เปลี่ยนชื่อให้เป็นชื่อที่สามารถสื่อถึงตัวละครของเราได ้เช่น CharacterSimBoy คือตัวละครที่ชื่อ SimBoy เป็นต้น

ในหัวข้อ Character Definition มีรายชื่อกระดูกชิ้นต่างๆที่ตั้งชื่อจาก Maya เข้ามาอยู่ในชองที่ถูกต้อง ยกเว้น 4 ช่องคือ Right Foot Floor, Left Foot Floor, Right Hand Floor

และ Left Hand Floor ซึ่งต้องลากชื่อมาวางเอง โดย click ที่locator และกด X ค้าง แล้วลากมาวางที่ช่อง ให้ครบทั้ง 4 ช่อง (ถ้าใช keyboard layout แบบ MotionBuilder กด Alt ค้างแทนปุ่ม X)

เมื่อครบแล้วกดที่ชอง Characterize

เลือก Biped เนื่องจากเป็นตัวละครที่ยืน 2 ขา ถ้าเป็น 4 ขาเลือก Quadruped

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

เมื่อเสร็จแล้ว ที่หัวข้อ Control Rig กดปุ่ม Create เพื่อสร้าง Control Rig สำหรับตัวละครตัวนี้

เลือก FK/IK เมื่อต้องการใช้ทั้ง FK และ IK หรือ IK อย่างเดียวเมื่อไม่ต้องการ FK แนะนำให้ใช้ทั้ง FK และ IK จะมีความสามารถในการควบคุมมากกว่า IK อย่างเดียว มาก

มีControl Rig เพิ่มขึ้นมาในหัวข้อ Control Rigs

ใช้คำสั่ง Window >> Actor/Character Controls เพื่อเปิดหน้าต่าง Character Controls ขึ้นมา ที่หัวข้อ Active ติ๊ก Ctrl Rig In เพื่อเปิดการใช้งาน Control Rig ที่สร้างขึ้น

มีMaker หรือ Controller ที่ใช้ควบคุมกระดูกต่างๆขึ้นมาแต่ขนาดใหญ่เกินไป

click ที่ช่องว่างในช่อง Character Control เพื่อ select marker ทั้งหมด

ที่ช่อง Properties ตั้ง Size เป็น 50 ขนาดจะเล็กลงตามต้องการ

ที่Character Controls ปุ่ม Show สามารถเลือกได้ว่าจะให้แสดงอะไรบ้างใน viewport เช่นยังไม่ได้ใช FK ก็ปิด FK ไปก่อน

ปุ่ม Display บน viewport ก็สามารถเลือกได้ว่าต้องการแสดงผลอะไรบ้าง

ภาพนี้เลือกให้ปิดการแสดงผล model ทำให้เห็นกระดูกชัดเจน เพื่อทำ constraint ให้ตาสามารถหมุนได ้

เนื่องจาก ระบบกระดูกของ MotionBuilder ไม่มีcontroller ตา มาให ้จึงต้องทำเอง หรือกลับไป animate ตา ใน Maya ก็ได ้การมีcontroller ตาเอาไว้ใช้งานเป็นสิ่งที่ทำให้การ รับรู้ของ animator เกี่ยวกับการวางอารมณ์ของตัวละครทำได้ขึ้น
ใน Asset Browser เลือก Elements และลาก Marker ลงไปบนจอ 2 อัน

กด 4 ทำให maker เป็น wireframe ไม่ให้ทับลูกตา

กด X ค้างแล้วลาก maker มาวางที่กระดูกตา เลือก Align >> Traslation/Rotation เป็นการ snap maker มาที่ตา

ใน Asset Browser เลือก Constraints ลาก Rotations ลงไปที่viewport 2 ครั้ง

ตั้งชื่อ rotation constraint และ marker ที่สร้างขึ้นมา ใน Navigator

กด X ค้างแล้วลาก maker ลงมาที่Source และกระดูกตาลงมาที่Constrained Object กด Active ที่สอง constraint

กด X ค้างที่marker แล้วลากมาที่maker คอ (สีนํ้าเงิน) แล้วเลือก parent ทั้ง maker ตาซ้านและขวา ก็จะทำให้สามารถหมุนลูกตาได ้
หลักในการทำ constraint ของ MotionBuilder เหมือนๆกับ software ตัวอื่นๆ เว้นแต constraint ของ MotionBuilder มีความหลากหลายมาก และที่สำคัญ สามารถเขียน script เพื่อควบคุมได้ด้วย

double click ที่CharacterSimBoy ในหัวข้อ Floor Contacts เปลี่ยน Floor Contact Behavior เป็น Always Sync และติ๊กให้หมดทั้ง 4 ช่อง ในช่อง Feet Floor Contact Setup ติ๊ก Automatic Toe Base ทั้งหมดนี้เพื่อให้เท้าและนิ้วเท้าไม่ทะลุพื้น เมื่อเท้าสำผัสพื้น
ความสามารถเรื่อง floor contact เป็นความสามารถที่อำนวยความสะดวกให animator อย่างมาก ไม่จำเป็นต้องพะวงการทะลุพื้นของตัวละคร ทำให้ทำงานได้เร็ว และแม่นยำมากขึ้น หรืออาจจะปิดเมื่อต้องการให้ทะลุ

locator 4 ตัว ที่สร้างจาก Maya เพื่อเป็น floor contact สามารถ animate ได้เพื่อย้ายระดับของพื้น เช่นพื้นที่ไม่สมํ่าเสมอ หรือขึ้นบันได

ที่ช่อง Character Controls เลือก Feet คลิกขวาที่maker เท้าเลือก Create Aux Pivot สามครั้ง

ด้านข้างของ viewport เลือก Pivot

เลื่อนตำแหน่งของ pivot ให้อยู่ในตำแหน่งดังรูปเพื่อให้สามารถหมุนเท้าในมุมต่างๆได ้และตั้งชื่อให้ได้ความหมาย

เลื่อนตำแหน่งด้าน front ให้ตรงกับแนวกระดูก

เนื่องจากตัว controller ไม่มีความสามารถในการทำ foot roll ได้ด้วยตัวเอง จึงต้องใช้วิธีเพิ่ม pivot เข้าไป คลายการทำ group และย้ายตำแหน่ง pivot ของ group ให้อยู่ตามที่ต่างๆ วิธีเพิ่ม pivot ทำให้ตัวละครหมุนส้นได้คล้ายกับการ ทำ foot roll ใน Maya นั่นเอง

เมื่อเสร็จแล้วก็สามารถใช้หน้าต่าง Character Controlls เพื่อ pose ตัวละครให้อยู่ใน pose ต่างๆได ้อาจจะลองทำ keyframe animation ง่ายๆ ด้วยการเปิด Key Controls ขึ้น มาแล้วกด Key ก็จะได keyframe animatoin แบบง่ายๆ และสามารถเก็บเป็น clip ไว้ใช้ทีหลังได ้
ขั้นตอนหยาบๆมีเท่านี้รายละเอียดอื่นๆลอง mail มาถามได้ครับ
การ setup ใน MotionBuilder เป็นขั้นตอนที่ค่อนข้างง่าย เมื่อเทียบกับการ Setup เองทั้งหมดใน Maya และทำให้ใช้ความสามารถอื่นๆ ของ MotionBuilder ได้อีก เช่น Story เป็นต้น ครั้งหน้ามาดูเรื่องอื่นๆกันบ้างครับ

<<Back