Tutorial Rigging Face

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

เริ่ม จากการใส่กระดูกให้กับโมเดล ในที่นี้นั้น จะมีให้เห็นแค่โมเดลส่วนหัว
ให้ เรามองจากด้านข้างของโมเดล ถ้าจะให้ง่ายต่อการมอง ก็ปรับเป็นแบบ xray
เพื่อ ที่จะมองเห็น joint ภายใน และอีกทั้งมองเห็นสีผิวภายนอกแบบเบาบางด้วยครับ

*** อย่าลืมตั้งชื่อให้กับ joint แต่ละส่วนนะครับ เพื่อนที่ต่อไปจะง่ายต่อการเลือก***
ในที่นี้ผมตั้ง neck, Head, HeadTip, jaw, jawTip
============================================
หลังจาก นั้น เราก็มาปรับดูในมุมมอง Pers
และนำโมเดลนั้น ไปไว้ใน Layer และกดซ่อนก่อนครับ
เพื่อที่จะง่ายต่อการ set joint
เลือกที่ IK Handle Tool ตามในรูปครับ
============================================
เมื่อ เลือกแล้ว เราก็คลิกเลือกที่ joint : neck และเลือกที่ joint : Head
ผล ที่ออกมาก็จะได้ดังรูปครับ
============================================
จากนั้น ให้เราสร้าง เส้นวงกลม circle ขึ้นมา
และนำไปไว้ในจุดกึ่งกลางของ joint : Head
ซึ่งทำโดยการ เลือกเส้นวงกลมโดยใช้เครื่องมือ Move Tool
โดย ให้จุดกึ่งกลางของ ลูกศร Move Tool นั้น เป็นสีเหลือง
จากนั้น ให้เรา Zoom ไปที่ joint : Head
แล้วก็คลิกเม้าส์ ปุ่มกลาง(ไม่ต้องกด Alt)
และ กดที่ตัว v บนคีย์บอร์ด
กดเม้าส์ปุ่มกลางค้างไว้และเลื่อนไปยังที่ Join : Head
จากนั้น เส้นวงกลมนั้น ก็จะมาอยู่ที่จุดกึ่งกลางของ joint : Head

***กด v ค้างไว้นั้นคือการย้ายจุดกึ่งกลางวัตถุนั้น
มาอยู่ในจุด vertex แต่ในที่นี้ joint ก็ด้วยเช่นกัน***

***ถ้ากด c ค้างไว้นั้นคือการย้ายจุดกึ่งกลางวัตถุนั้น
มาอยู่บนเส้น curve(Nurbe) ไม่ก็เส้น Edge(Polygon)***

***ถ้ากด x ค้างไว้นั้นคือการย้ายจุดกึ่งกลางวัตถุนั้น
มาอยู่บนเส้น Grid (ใน view port นั้นต้องเปิดโชว์เส้น Grid ด้วย)***

============================================
หลังจาก ที่น้ำเส้น circle มาไว้ที่ Head(Joint) แล้ว
เราก็ติ๊ก Layer ของโมเดล ให้ปรากฏขึ้น เพื่อจะมองในส่วนของผิวโมเดล
แล้วเราก็ปรับรูปทรงเส้น circle นั้นให้ได้ขนาด
เอียงไปในทิศทางเดียวกับกรามของโมเดล
============================================
กดซ่อน Layer ของโมเดล
============================================
เลือก ที่เส้น circle นั้น และเลือกคำสั่ง Freeze Transformations ดังรูป
เพื่อ ที่จะให้มันตั้งค่า Move , Rotate , Scale ให้เป็น 0 (ศูนย์) ให้หมด
============================================
และทำ การลบ History ดังรูป
============================================
จากนั้น ให้เชื่อมระหว่าง Head(Joint) กับ เส้น circle
ให้เราเลือกที่เส้น Circle ก่อน และกด Shift ค้างไว้
จากนั้นก็กดเลือกที่ Head(Joint)..........
ให้เชื่อมกันโดยการเลือก Orient
แต่!!! เราควรไปปรับค่า Option ก่อน โดยการคลิกที่กล่องสี่เหลี่ยม
หลังคำว่า Orient ดังรูป
============================================
ปรับตาม รูปเลยครับ
ติ๊กเครื่องหมายถูก ที่ Maintian Offset
เพื่อที่มันจะไม่ สนใจว่าแกน x,y,z ของวัตถุ 2 ชิ้น
ที่จะมาเชื่อมกันนั้น อยู่คนละทิศทางกัน
============================================
จากนั้น ก็เลือก Circle ก่อน กด Shift ค้างไว้
และตามด้วย ikHandle ตรงส่วนของ Head(Joint)
และไปเลือกที่ Point Option ดังรูป
============================================
อันนี้ ไม่ต้องติ๊กที่ Maintain offset นะครับ (ไม่รู้เหมือนกัน)
แต่ผมก็ติ๊กไป ไม่เห็นเกิดปัญหาไรเลยนี่นา....
จากนั้นก็กด Add ดังรูป
============================================
จากนั้น สร้าง Locator ขึ้นมา ดังรูป
============================================
และทำ การย้ายมาไว้ยังจุด neck(Joint)
โดยทำการย้ายเหมือนในข้างต้น
ที่เรา ย้ายเส้น circle มาไว้ที่ Head(Joint)
เหมือนกัน
***สร้าง Locator นี้ขึ้นมาเพื่อจะทำหน้าที่ควบคุมส่วนคอขึ้นไป
หมายถึงว่าเวลาย้ายไปไหน หรือหมุน
ก็ให้เลือก Locator ตรงคอนี้เป็นหลัก***
============================================
ต่อไป ให้เราเลือกที่ Locator กด Shift ค้างไว้ และตามด้วย neck(Joint)
และไป ที่คำสั่ง Parent Option ดังรูป
============================================
ให้ เลือกติ๊กถูกที่ Maintian offset และกด Add ดังรูป
============================================
จากนั้น ให้ลองใช้เครื่องมือ Move Tool ลองกดย้ายไปมาที่ Locator ดู
และดูผล
============================================
แต่ถ้า เราใช้เครื่องมือ Rotate Tool มันจะเหมือนไปได้แค่ตัว Locator
============================================
ให้ เลือกที่เส้น circle กด Shift และตามด้วย Locator
กด p ที่แป้นคีย์บอร์ดเพื่อนทำการ Parent

***Parent ในที่นี้ คือการ Parent ตรงที่ Edit > Parent
หลักการทำงานจะเหมือนๆกับ Constrain > Parent ในข้างต้น
แต่การเลือก Object นั้น ก่อนหลังไม่เหมือนกัน***
============================================
พอ Parent แล้ว ให้เราลองเลือกที่ Locator ดู
และคราวนี้ลองหมุนดู ก็จะเห็นได้ว่ามันได้ควบคุม
ส่วน neck(Joint) ขึ้นไปทั้งหมด
============================================
ต่อมา ให้เราเลือก ikHandle นั้น และ Group มัน
โดยการกดคีย์ลัด (Hot key) กดที่ Ctrl+g
และทำการเปลี่ยนชื่อมัน เพื่อให้ง่ายต่อการเลือกในครั้งต่อไป
ตั้งชื่อว่า ikGRP (GRP ย่อมาจาก Group)
============================================
จากนั้น ให้เราเปิด Outliner ดังรูปถ้าใครทำเป็น
หรือก็ไปกดเลือกได้ที่ Window > Outliner
และในส่วนของ view port นั้น ให้เราเลือก Locator ที่คุมส่วน neck(Joint)
และกด Ctrl ค้างไว้ และเลือกที่ ikGRP ที่ใน Outliner
============================================
จากนั้น ให้เราทำการ Parent ดังรูป
============================================
ต่อไป ให้เราเลือกที่เส้น circle ในที่นี้ผมเปลี่ยนชื่อใหม่
ให้เป็น headControl เมื่อเลือกแล้ว
ให้ไปที่ Add Attribute
============================================
ให้เรา พิมส่วนข้างบนไปว่า jawX และกด Add
พิมพ์ไปอีกว่า jawY และกด Add
jawZ และกด OK ไป

*** jaw X,Y,Z นี้ เราจะมาใช้ทำการควบคุมส่วน คาง ***
============================================
ให้ลอง มาดูที่แถบขวามือ ในส่วนของ Channels Box
จะเห็นได้ว่า มีคำสั่งที่เราเพิ่มไป ขึ้นมาใหม่
============================================
จากนั้น ให้เราทำการเชื่อมระหว่างคำสั่งที่ทำขึ้นมาใหม่
กับ jaw(Joint)
โดย การไปเลือกที่ Connection Editor ดังรูป
============================================
ใน Viewport นั้นให้เรากดเลือกที่เส้น headControl
และกด Reload Left ที่หน้าต่าง Connection Editor
============================================
จากนั้น ให้เลื่อนลงมาจนเห็นคำว่า JawX, JawY, JawZ
และในส่วน viewport นั้น ให้เราเลือกที่ jaw(Joint)
และในหน้าต่าง Connection Editor ให้กดที่ Reload Right
============================================
และ เลื่อนลงมาเรื่อยๆ จนเห็นคำว่า Rotate
ให้กดรูป + หน้าคำว่า Rotate ในหน้าฝั่ง Reload Right
พอกดแล้ว จะเห็นย่อยๆลงมาคือของแกน X, Y, Z
============================================
จากนั้น ให้เรากดเชื่อมด้วยกัน
โดยการเลือกที่
JawX > RotateX
JawY > RotateY
JawZ > RotateZ
ตามลำดับ และจะได้เป็นเหมือนดังรูป
============================================
จากนั้น ให้เราลองเลือกที่เส้น headControl
และกดเลือกที่ JawZ ที่ Channels Box
เมื่อ เลือกแล้วจะขึ้นเป็นแถบสีดำตรงส่วนที่เลือก ดังรูป
และให้เราลองคลิกที่ เม้าส์ปุ่มกลาง(ไม่ต้องกด Alt)
บนส่วนของ viewport และเลื่อนไปมา
จะ เห็นได้ว่าส่วนของ joint : jaw จะเหมุนในส่วนของแกน Z ตามไปด้วย
============================================
 หลังจากนั้นก็เปิด ที่ Layer ของ faceLayer ให้เป็น V ให้เราเลือก

Hair(Model) > headTop(Joint) > Parent
browsGRP(Model) > headTop(Joint) > Parent

eyesGRP(Model) > headTop(Joint) > Parent
upperTeeth(Model) > headTop(Joint) > Parent

lowerTeeth(Model) > jaw(Joint) > Parent 

gums(Model) > head(Joint) > Parent
 ============================================
 ต่อมาก็เลือก Head(Model) > neck(Joint) > Smooth Bind
============================================
เลือกที่ Head(Model) จากนั้นเลือกที่จุด Vertex ดังรูป
============================================
จากนั้นไปที่ Window > General Editors > Component Editor
จะมีหน้าต่าง Component Editor ขึ้นมา จากนั้นเลือกที่ Option
แล้วติ๊กตรง Hide Zero Columns
============================================
 จากนั้นเลือกทางแถบของ Head(Joint) ทั้งหมด
แล้วแก้ค่าเป็นเลข 1

**แถบด้านซ้ายคือรายชื่อแต่ละจุด Vertex ที่เราเลือก
แถบด้านบนคือรายชื่อของ Joint ที่แต่ละจุด Vertex
ที่เราเลือกอยู่นั้น มันเชื่อมต่อกันทั้งมากและน้อย
ถ้าเป็นเลข 1 คือเชื่อมต่อเต็มๆ ถ้าเป็น 0 คือไม่มีเลย**
============================================
พอรู้วิธีการทำงานของ  Component Editor แล้ว
ทีนี้เราก็ปรับแก้ ค่าที่มันผิดเพี้ยนต่างๆบนใบหน้า
ให้มันถูกต้อง อย่างเช่น จุด Vertex ของปากบนนั้น
จะต้องไม่ติดกับ jaw(Joint) เราเลยต้องตั้งค่าให้
ริมฝีปากด้านบนนั้น เชื่อมกับส่วนของ Head(Joint)
มีค่าเท่ากับ 1 จะทำให้ริมปากบนไม่ติดไปกับปากล่าง
============================================
 
เลือก Vertex ของ gums ดังภาพ
============================================
 
 ไปที่ Deform > Create Cluster > Option
แล้วติ๊กเลือก Relative แล้วกด Create
ล้วเปลี่ยนชื่อ Cluster นั้น เป็น ClusterGums
============================================
 จากนั้นเลือก ClusterGums กด Shift ค้างไว้
แล้วเลือก Head(Joint) แล้วกดคำสั่ง Parent
============================================
 เสร็จแล้วก็เลือกที่ ClusterGums แล้วย้ายจุด Pivot
ของ ClusterGums นั้นไปที่กึ่งกลางของ jawEnd(Joint)
จากนั้นกดเลือก jawEnd(Joint) แล้วกด Shift ค้างไว้
แล้วเลือก ClusterGums แล้วไปที่คำสั่ง Constrain > Point
============================================
 จากนั้นสร้าง Circle ขึ้นมา 3 วง เพื่อทำเป็นจุดโฟกัส
ของสายตาตัวละครที่จะมอง แบบในรูป
แล้วตั้งชื่อด้วย อย่างในที่นี้ผมตั้งว่า
Right_EyeControl , Left_EyeControl , EyeControl
(ชื่ออันหลังสุดนั้น เป็นเส้นวงรอบนอกสุด)
ต่อไปก็ เลือก  Right_EyeControl > EyeControl > Parent
แล้วก็ Left_EyeControl > EyeControl > Parent
============================================
 จากนั้นทำการปรับสีของเส้น Circle (แล้วแต่ว่าจะทำหรือไม่)
เพื่อง่ายต่อการแบ่งแยกในการใช้งาน...
โดยไปที่ Attribute ของเส้น Circle นั้น > Drawing Overrides
ติ๊กใช้งาน Enable Overrides ดังรูป...
============================================
 EyeControl(Line) นั้น ควรห่างจากตาของตัวละครพอประมาณ ดังรูป..
============================================
 จากนั้น เลือกลูกตาใน กับกระจกตา แล้ว Group เข้าด้วยกัน
แล้วตั้งชื่อแต่ละข้างว่า... RightEye(GRP) , LeftEye(GRP)
============================================
 เลือก RightEye(GRP) , LeftEye(GRP)
แล้ว ไปที่คำสั่ง Modify > Center Pivot
เพื่อให้ RightEye(GRP) , LeftEye(GRP) นั้น
มีจุด Pivot มาอยู่ตรงจุดกลางของลูกตา แต่ละข้าง
============================================
 จากนั้นเลือก RightEyeControl(Line) > RightEye(GRP)
> Constrain > Aim > Option...
คลิกเปิดที่ Maintain Offset > Add
แล้วทำแบบเดิมอีกครั้งสำหรับ LeftEye(GRP)
============================================
 เลือก EyeControl(Line) แล้ว Group ตั้งชื่อว่า EyeControlGRP
 ============================================
 เลือก Head(Joint) > EyeControlGRP > Constrain > Parent
============================================
 จากนั้นเลือก EyeControlGRP > Modify > Add Attribute...
แล้วตั้งค่า ว่า...

Attribute Name = lockEye
Minimum = 0
Maximum = 10
Default = 0

กด OK
============================================

 เลือก  EyeControlGRP > Animate > Set Driven Key > Set > Option
กด Load Driver แล้วเลือก lockEye(Driver)
เลือก EyeControlGRP_ParentConstrain (ต้องเปิด EyeControlGRP 
ที่อยู่ใน Outliner แล้ว EyeControlGRP_Parent จะอยู่ในนั้นอีกที)
แล้วกด Load Driven  
============================================
 คลิกเลือกที่ headW0(Driven) ตามรูป...
============================================
 คลิกเลือก EyeControl(Driver)
แล้วดูทางด้านของ Channels Box ตรง Lock Eyes
ว่ามีค่าเป็น 0 อยู่หรือไม่ ถ้าไม่ก็ปรับเป็น 0 ซะ... (ดังรูป)
============================================
 คลิกเลือก EyeControlGRP_ParentConstrain(Driven)
ใน Channels Box ปรับค่า Head W0 = 0
แล้วกด Key (ที่หมายเลข 3 ดังรูป...)
============================================
 เลือก EyeControl(Driver)
ใน Channels Box ปรับค่า Lock Eyes = 10
============================================
คลิกเลือก EyeControlGRP_ParentConstrain(Driven)
ใน Channels Box ปรับค่า Head W0 = 1
กด Key (ที่หมายเลข 8 ดังรูป...)
แล้วกดปิดหน้าต่าง Set Driven Key ลงไป
 ============================================
 เลือก EyeControlGRP แล้วกด Group

 ตั้งชื่อเป็นว่า EyesControl_GRPHI
============================================
 เลือก neckControl(Locator) (1)
กด Shift ค้างไว้
เลือก EyesControl_GRPHI(GRP) (2)
เลือกคำสั่ง Constrain > Parent (3)
============================================
 จากนั้นเลือก Model ทั้งหมด เหลือไว้แต่ "ลิ้น"
(เลือก Model ไม่ได้เลือก Joint)
แล้วกด Ctrl+h เพื่อซ่อนโมเดลที่เลือกไว้
============================================
 มองในมุมมอง Side View แล้วโฟกัสไปที่โมเดล "ลิ้น"
เลือกคำสั่ง Skeleton > Joint Tool
แล้วกดสร้าง Joint

3 ความคิดเห็น:

  1. ลูกศิษย์ keko ใช่ไม๊ครับ ผมก็เคยเรียนตอนคลาส 2
    จะขอก็อบปี้บทความไปใส่ไว้ในเว็ปหน่อยได้มะครับ พอดีเปิดเว็ปแนวนี้
    ลองเข้าไปดูได้ที่ www.thaicgjob.com ครับ
    หรือช่วยไปโพสให้ด้วยก็ดีครับ ขอบคุณมาก 555

    ตอบลบ
    คำตอบ
    1. ผมไม่ค่อยได้มาเช็คเลย ไม่คิดว่าจะมีคนมาเม้นด้วย 555+
      เกือบจะ 2 ปีแหน่ะที่กว่าจะมาตอบ ตอนนั้นผมไม่ได้ไปเรียนคลาสพี่ตุลอ่ะครับ
      แต่ผมเพิ่งไปเรียนคลาสอนิเมทมาเมื่อ ต.ค. 2011 น่ะครับ
      แต่ที่เอามาให้ดูนี้ผมก็แคปมาจาก วีดีโอสนของ Digital tutor อีกทีน่ะครับ ^^
      เหมือนก๊อปเขามารึป่าวไม่รู้อ่ะครับ 55555+

      ลบ
  2. ไม่ระบุชื่อ17 กันยายน 2555 เวลา 08:12

    ขอบคุณสำหรับบทความดีๆครับผม

    ตอบลบ