Coke-Can by Polygon อะฮะหลังจากที่ อธิบายเกี่ยวกับ Basic Maya ให้รู้นิดนึงแล้วนั้นเราก็มาลองทำอะไรที่ง่ายๆกันดีกว่างั้นวันนี้ก็จะขอเสนอตอน "Make it Easy by Polygon" สำหรับโพลิกอนนั้นเมื่อเราทำโมเดลมาแล้วจะมีลักษณะที่เป็นเหลี่ยมมากกว่าการขึ้นโมเดลโดย Nurbs(ไว้จะทำให้ดูทีหลัง) โดยส่วนตัวแล้วคิดว่าโพลิกอนนั้นปั่นโมเดลได้ง่ายกว่าและเร็วกว่าเพราะมันมีเครื่องมือที่คอยช่วยตลอดไม่ว่าจะเป็นการ Exturd, Split Polygon, Cut Faces, Duplicate, insert Edge loop, delete Edge สิ่งเหล่านี้จะได้ใช้ตลอดแน่นอน !!!
งั้นเรามาเริ่มทำกระป๋องด้วย Polygon กันดีกว่า เอ๊ะอย่าลืมนะครับว่าถ้าเราจะทำงานด้วย Polygon นั้นเราต้องอย่าลืมเปลี่ยน Mode การทำงานเป็น Polygon ด้วยนะครับตามรูป
จากนั้นให้เราไปที่ Create > Polygon Primitives >แล้วให้เอาเครื่องหมายถูกตรง Interactive Creation ออกตามรูป ซึ่งตรงนี้จะต่างกันกับการติ๊กเครื่องหมายถูกตรงที่ว่า ถ้าติ๊กเปิดการทำงานแบบ Interactive Creation นั้นจะเป็นการสร้อง Poly Object แบบเรากำหนด ฐานและความสูงเอง แต่ถ้าเราปิดการทำงานในส่วนนี้ มันจะสร้าง Poly Object จะสร้างมาให้แบบอัตโนมัติ ในขนาดที่สุดด้านเท่ากันหมด(ซึ่งโดยส่วนตัวแล้วชอบปิดการทำงานของ Interactive Creation มากกกว่า)
จากนั้นให้เราสร้างทรงกระบอกขึ้นมาโดยเลือก Create > Polygon Primitives > cylinder ก็จะได้ทรงกระบอกตามที่เราต้องการ จากนั้นให้เราเลือก object ที่เราสร้างขึ้นมาแล้วลองดูทางขวามือหรือที่เค้าเรียกว่า Channel Box นั้นแล้วให้ไปตรงคำว่า INPUTS จะเห็นว่าข้างใต้มี polyCylinder1 อยู่ให้คลิ๊กที่ชื่อนั้น เมื่อคลิ๊กแล้วจะมี Attribute ให้ปรับให้ปรับตามรูปเลยนะครับ จะเห็นว่า Object ด้านซ้ายก่อนปรับ กับ Object ด้านขวาหลังปรับแล้วต่างกันยังไงบ้าง
- Subdivision Axis : เป็นการเพิ่ม/ลดจำนวนเส้นรอบทรงกระบอก (เส้นแนวตั่ง)
- Subdivision Height : เป็นการเพิ่ม/ลดจำนวนเส้นรอบทรงกระบอก (เส้นแนวนอน)
- Subdivision Caps : เป็นการเพิ่ม/ลดจำนวนเส้นด้านบนและด้านล่างทรงกระบอก
เมื่อได้ทรงกระบอกตามต้องการแล้วให้เรา Scale ความสูงตามที่เราต้องการในแบบ ผม Scale แกน Y = 2.5 เมื่อผมได้ความสูงตามต้องการแล้วให้เราเลือก Object แล้วคลิ๊กขวาค้างไว้แล้วเลือก Face ตามรูป
จากนั้น Object ของเราจะเป็นเส้นสีฟ้าให้เราเลือกตรงก้นจากนั้นให้ กด Shift + คลิ๊กขวา ค้างไว้แล้วจะมีเมนูขึ้นมาให้เลือก ก็เลือก Exturd Faces เมื่อกดแล้วมันจะมี ลูกศรกับสี่เหลี่ยม นั้นเอาไว้ move กับ scale ก็ให้เราลากลงมาทางแกน Z หรือหัวลูกศรสีน้ำเงิน แล้วก็ Scale ให้เล็กลงมา ตามรูป
จากนั้นก็ให้ทำการ Exturd Face เช่นเดิมทำให้เป็นก้นกระป๋องตามรูป
เมื่อเราได้ก้นกระป๋องแล้วให้เราทำการย้ำขอบของกระป๋อง เพราะถ้าเรา " กด3 " แล้วมันจะยังไม่สวยให้เราเน้นขอบให้มันคมขึ้นโดยเลือก Object แล้วก็กด Shift + คลิ๊กขวา ค้างไว้แล้วเลือก Insert Edge Loop แล้วก็เพิ่ม Loop จะเห็นว่าก่อนเพิ่มแล้วหลังเพิ่มเป็นยังไง พอ "กด3" แล้วจะสวยขึ้นตามรูป
จากนั้นก็ใช้วิธีนี้ทำกับด้านบนของกระป๋องเหมือนกันตามรูป
หรือถ้ามตามไม่ทันจะทำเป็นไฟล์วีดีโอไว้เลย
Read More......
:: mind.aey ::
[ Rigging Blah Blah ]
Monday, December 6, 2010
Sunday, December 5, 2010
BaSic BaSic Maya
หลังจากที่ได้ไปสอนก็เลยคิดว่าจะทำ Blog อันนี้ไว้ให้น้องๆได้ดูว่าที่สอนไปทำอย่างไรบ้างเพราะคิดว่าบางทีเรียนในห้องอาจไม่กล้าถามหรือว่าไม่ทันเวลาสอน เพราะถ้าตามไม่ทันแล้วอาจทำให้ความอยากเรียนลดลงไปด้วยจากที่สังเกตุมาโอเคงั้นก็เริ่มกันเลยนะครับ
เริ่มต้นเลยเราจะมาเริ่มจากการใช้เครื่องมือที่สำคัญๆก่อนแบบว่าใช่บ่อยมากรูปร่างหน้าตาโปรแกรมจะเป็นแบบนี้สีดำดูเข้มขรึม มั๊กๆ
เริ่มต้นเลยการที่เราจะทำ Project อะไรขึ้นมาเราต้องมีที่เก็บงานของมันก่อนให้เราไปที่ File > Project > New เมื่อเรากดแล้วจะมี Dialog ขึ้นมาตารูป
จะเห็นว่าจะมีช่องให้เขียนเยอะแต่ให้เราไปเขียนเฉพาะใน Name กับ Location ก็พอซึ่ง
- Name : คือชื่อของ Project หรืองานที่เราทำ
- Location : คือต่ำแหน่งที่จะเซพว่าเราเก็บงานไว้ที่ไหน โดยกด Browser เพื่อเลือกที่ๆจะเก็บงานหลังจากใส่ทั้ง 2 อย่างเสร้จแล้วก็ให้เราไปกด Use Defaults แล้ว ก็ Accept เป็นอันเสร็จในการ สร้างที่เก็บงานเราขึ้นมา
ต่อมาเรามารู้จักกับ Tool Box กันดีกว่าเพราะใช้บ่อยที่สุด มันจะเป็นแถบเครื่องมือด้านซ้ายมือนั้นเองซึ่งเครื่องมือแต่ละอันจะมีการใช้ งานที่ต่างกันไปดังนี้
- Select Tool : เอาไว้ใช้ในการเลือก Object ที่เราต้องการจะมีลักษณะเป็นลูกศร
[ HotKey "q" ] ตามรูป
- Lasso Tool : จะเหมือนใน PhotoShop เลยเอาไว้ลากเป็นเส้นประ ตามที่เราต้องการเลือก Object ตามรูป
- Paint Selection Tool : ส่วนมากเอาไว้ให้กับการเลือก Vertex กับ Face ที่มันเยอะๆเราจิ้มไม่ไหวก็ Paint เอาเลยตามรูป
- Move Tool : เอาไว้สำหรับเลื่อนตำแหน่งของตัว Object ซึ่งจะมีลักษณะเป็น หัวลูกศร มี3สี แดง, เขียว, น้ำเงิน ซึ่งถ้าเราต้องการให้ไปด้านไหนก็เลือกหัวลูกศรด้านนั้นแล้วก็ลากไปตาม ตำแหน่งที่ต้องการ แต่ถ้าเราเลือกตรงกลางนั้นจะเป็นการเคลื่อนที่ทุกตำแหน่ง
[ HotKey "w" ] ตามรูป
- Rotate Tool : เอาไว้สำหรับหมุนองศาของตัว Object ซึ่งจะมีลักษณะเป็นเส้นวงกลม มี3สี แดง, เขียว, น้ำเงิน ซึ่งถ้าเราต้องการให้หมุนไปด้านไหนก็เลือกเส้นด้านนั้นแล้วก็หมุนไปตามองศา ที่ต้องการ แต่ถ้าเราเลือกตรงกลางนั้นจะเป็นการหมุนทุกแกน
[ HotKey "e" ] ตามรูป
- Scale Tool : เอาไว้สำหรับขยายขนาดของตัว Object ซึ่งจะมีลักษณะเป็นหัวสีเหลี่ยม มี3สี แดง, เขียว, น้ำเงิน ซึ่งถ้าเราต้องการขยายขนาดไปด้านไหนก็เลือกหัวสี่เหลี่ยมนั้นแล้วก็ลากขนาด ไปตามที่ต้องการ แต่ถ้าเราเลือกตรงกลางนั้นจะเป็นการขยายขนาดทุกด้าน
[ HotKey "r" ] ตามรูป
เกือบลืมอีกอย่างที่ใช้บ่อยมากคือการดู View หน้าจอเช่นการหมุนดูรอบๆ การซูมเข้าออก การแพนไปซ้ายขวา มีการทำดังนี้
- กด alt + คลิ๊กซ้าย ค้างไว้ : จะเป็นการหมุน ViewPort ดูรอบๆ
- กด alt + คลิ๊กขวา ค้างไว้ : จะเป็นการ ซูมเข้าซูมออก
- กด alt + คลิ๊กกลาง ค้างไว้ : จะเป็นการ แพนไปทางซ้ายแล้วขวาตามต้องการ
ในหัวข้อนี้ก็เอาแค่นี้ก่อนละกัน ไว้ในหัวข้อหน้าจะเป็นการสอนใช้เครื่องมือ การสร้างโมเดล Polygon นะครับไว้ติดตามต่อไปละกัน
Read More......
เริ่มต้นเลยเราจะมาเริ่มจากการใช้เครื่องมือที่สำคัญๆก่อนแบบว่าใช่บ่อยมากรูปร่างหน้าตาโปรแกรมจะเป็นแบบนี้สีดำดูเข้มขรึม มั๊กๆ
เริ่มต้นเลยการที่เราจะทำ Project อะไรขึ้นมาเราต้องมีที่เก็บงานของมันก่อนให้เราไปที่ File > Project > New เมื่อเรากดแล้วจะมี Dialog ขึ้นมาตารูป
จะเห็นว่าจะมีช่องให้เขียนเยอะแต่ให้เราไปเขียนเฉพาะใน Name กับ Location ก็พอซึ่ง
- Name : คือชื่อของ Project หรืองานที่เราทำ
- Location : คือต่ำแหน่งที่จะเซพว่าเราเก็บงานไว้ที่ไหน โดยกด Browser เพื่อเลือกที่ๆจะเก็บงานหลังจากใส่ทั้ง 2 อย่างเสร้จแล้วก็ให้เราไปกด Use Defaults แล้ว ก็ Accept เป็นอันเสร็จในการ สร้างที่เก็บงานเราขึ้นมา
ต่อมาเรามารู้จักกับ Tool Box กันดีกว่าเพราะใช้บ่อยที่สุด มันจะเป็นแถบเครื่องมือด้านซ้ายมือนั้นเองซึ่งเครื่องมือแต่ละอันจะมีการใช้ งานที่ต่างกันไปดังนี้
- Select Tool : เอาไว้ใช้ในการเลือก Object ที่เราต้องการจะมีลักษณะเป็นลูกศร
[ HotKey "q" ] ตามรูป
- Lasso Tool : จะเหมือนใน PhotoShop เลยเอาไว้ลากเป็นเส้นประ ตามที่เราต้องการเลือก Object ตามรูป
- Paint Selection Tool : ส่วนมากเอาไว้ให้กับการเลือก Vertex กับ Face ที่มันเยอะๆเราจิ้มไม่ไหวก็ Paint เอาเลยตามรูป
- Move Tool : เอาไว้สำหรับเลื่อนตำแหน่งของตัว Object ซึ่งจะมีลักษณะเป็น หัวลูกศร มี3สี แดง, เขียว, น้ำเงิน ซึ่งถ้าเราต้องการให้ไปด้านไหนก็เลือกหัวลูกศรด้านนั้นแล้วก็ลากไปตาม ตำแหน่งที่ต้องการ แต่ถ้าเราเลือกตรงกลางนั้นจะเป็นการเคลื่อนที่ทุกตำแหน่ง
[ HotKey "w" ] ตามรูป
- Rotate Tool : เอาไว้สำหรับหมุนองศาของตัว Object ซึ่งจะมีลักษณะเป็นเส้นวงกลม มี3สี แดง, เขียว, น้ำเงิน ซึ่งถ้าเราต้องการให้หมุนไปด้านไหนก็เลือกเส้นด้านนั้นแล้วก็หมุนไปตามองศา ที่ต้องการ แต่ถ้าเราเลือกตรงกลางนั้นจะเป็นการหมุนทุกแกน
[ HotKey "e" ] ตามรูป
- Scale Tool : เอาไว้สำหรับขยายขนาดของตัว Object ซึ่งจะมีลักษณะเป็นหัวสีเหลี่ยม มี3สี แดง, เขียว, น้ำเงิน ซึ่งถ้าเราต้องการขยายขนาดไปด้านไหนก็เลือกหัวสี่เหลี่ยมนั้นแล้วก็ลากขนาด ไปตามที่ต้องการ แต่ถ้าเราเลือกตรงกลางนั้นจะเป็นการขยายขนาดทุกด้าน
[ HotKey "r" ] ตามรูป
เกือบลืมอีกอย่างที่ใช้บ่อยมากคือการดู View หน้าจอเช่นการหมุนดูรอบๆ การซูมเข้าออก การแพนไปซ้ายขวา มีการทำดังนี้
- กด alt + คลิ๊กซ้าย ค้างไว้ : จะเป็นการหมุน ViewPort ดูรอบๆ
- กด alt + คลิ๊กขวา ค้างไว้ : จะเป็นการ ซูมเข้าซูมออก
- กด alt + คลิ๊กกลาง ค้างไว้ : จะเป็นการ แพนไปทางซ้ายแล้วขวาตามต้องการ
ในหัวข้อนี้ก็เอาแค่นี้ก่อนละกัน ไว้ในหัวข้อหน้าจะเป็นการสอนใช้เครื่องมือ การสร้างโมเดล Polygon นะครับไว้ติดตามต่อไปละกัน
Read More......
Friday, October 22, 2010
Ribbon :Part3:
มาถึง Part3 อันสุดท้ายแล้วนะครับสำหรับการทำ Ribbon
เราจะทำ Squash กับ Auto Squash และการใช้ Node MultiplyDivide, plusMinusAverage, blendColors เหล่านี้
1. Connect ค่า Squash ของ Test_rbbnelemMidIIILFT_ctrl ไปยัง Squash ของ Test_rbbnelemIIILFT_nrb
2. Connect ค่า Arclenght ของ Test_rbbnelemStretchIIILFT_crvinfo ไปยัง arclen ของ Test_rbbnelemIIILFT_nrb
3. ให้สร้าง Node ใน mel Box ขึ้นมาตามนีและเปลี่ยนชื่อตามนี้
- สร้าง blendColors ขึ้นมา 1 node
- createNode blendColors -n "Test_rbbnSquashDivIIILFT_bc"
- สร้าง multiplyDivide ขึ้นมา 2 node
- createNode multiplyDivide -n "Test_rbbnsquashDivIIILFT_mdv" **[Operation = Divide]
- createNode multiplyDivide -n "Test_rbbnsquashPowIIILFT_mdv" **[Operation = Power,input2X=0.5]
- สร้าง plusMinusAverage ขึ้นมา 5 node
- createNode plusMinusAverage -n "Test_rbbnSquash1IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash2IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash3IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash4IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash5IIILFT_pma"
หลังจากนั้นจะทำการ Connect ทั้งหมดเริ่มจาก
1. connect ค่าจาก Test_rbbnelemIIILFT_nrb ไปยัง Test_rbbnSquashDivIIILFT_bc
- arclen To color1R
- Divider To color2R
- Squash To blender
2. connect ค่าจาก Test_rbbnelemIIILFT_nrb ไปยัง Test_rbbnsquashDivIIILFT_mdv
- Divider To input1X
3. connect ค่าจาก Test_rbbnSquashDivIIILFT_bc ไปยัง Test_rbbnsquashDivIIILFT_mdv
- outputR To input2X
4. connect ค่าจาก Test_rbbnsquashDivIIILFT_mdv ไปยัง Test_rbbnsquashPowIIILFT_mdv
- outputX To input1X
5. connect ค่าจาก Test_rbbnsquashPowIIILFT_mdv ไปยัง Test_rbbnSquash#IIILFT_pma [ของแต่ละNode]
- outputX To input1D
6. connect ค่าจาก Test_rbbnelemMidIIILFT_ctrl ไปยัง Test_rbbnSquash#IIILFT_pma [ของแต่ละNode]
- Squash To input1D
7. connect ค่าจาก Test_rbbnelem#IIILFT_ctrl ไปยัง Test_rbbnSquash#IIILFT_pma [ของแต่ละNode]
- Squash To input1D
8. connect ค่าจาก Test_rbbnSquash#IIILFT_pma ไปยัง Test_rbbnelem#JntIIILFT_grp [ของแต่ละNode]
- output1D To scale X
- output1D To scale Z
9. connect ค่าจาก Test_rbbnelem1JntIIILFT_grp ไปยัง Test_rbbnelem1IIILFT_jnt [ของแต่ละNode]
- scale To scale
- scale To inverseScale
ใกล้ถึงขั้นตอนสุดท้ายแล้วๆๆๆ อันนี้เราจะมาทำการ connect ค่า Rotate Y กันนะครับ
สำหรับค่า Rotate Y ของ Test_rbbnelem1JntIIILFT_grp ให้เอาค่า Rotate Y ของ Test_rbbnBttmPostelemIIILFT_loc มา connect ได้เลย
สำหรับค่า Rotate Y ของ Test_rbbnelem5JntIIILFT_grp ให้เอาค่า Rotate Y ของ Test_rbbnTopPostelemIIILFT_loc มา connect ได้เลย
ส่วน Test_rbbnelem2JntIIILFT_grp, Test_rbbnelem3JntIIILFT_grp, Test_rbbnelem4JntIIILFT_grp ให้ทำดังนี้
- สร้าง multiplyDivide ขึ้นมา 3 node
- createNode multiplyDivide -n "Test_rbbnelem2IIILFT_mdv"
**[1X = 0.75,1Y=0.25]
- createNode multiplyDivide -n "Test_rbbnelem3IIILFT_mdv"
**[1X = 0.50,1Y=0.50]
- createNode multiplyDivide -n "Test_rbbnelem4IIILFT_mdv"
**[1X = 0.25,1Y=0.75]
- สร้าง plusMinusAverage ขึ้นมา 3 node
- createNode plusMinusAverage -n "Test_rbbnelem2IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnelem3IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnelem4IIILFT_pma"
แล้วให้เอา rotate Y ของ Test_rbbnTopPostelemIIILFT_loc connect เข้า input1Y ของ Test_rbbnelem#IIILFT_mdv [2, 3, 4] แต่ละอัน
แล้วให้เอา rotate Y ของ Test_rbbnBttmPostelemIIILFT_loc connect เข้า input1X ของ Test_rbbnelem#IIILFT_mdv [2, 3, 4] แต่ละอัน
และให้ connect ค่าจาก Test_rbbnelem#IIILFT_mdv [2, 3, 4] ไปยัง Test_rbbnelem#IIILFT_pma [2, 3, 4] [ของแต่ละNode]
- outputX To input1D
- outputY To input1D
จากนั้นให้เอาค่าของ Test_rbbnelem#IIILFT_pma [2, 3, 4] ไป connect กับ Test_rbbnelem#JntIIILFT_grp [2, 3, 4]
- output1D To rotate Y
สุดท้ายให้ Paint Weight ให้ Test_rbbnelemIIILFT_nrb กับ Test_rbbnelemStretchIIILFT_crv สวยงาม
หมดแล้วครับการทำ Ribbon หวังว่าจะเป็นประโยชนืกับทุกคนนะครับ
ถ้ามีอะไรสงสัยก็ แอด msn : gimojung@hotmail.com มาคุยได้นะครับ Read More......
เราจะทำ Squash กับ Auto Squash และการใช้ Node MultiplyDivide, plusMinusAverage, blendColors เหล่านี้
1. Connect ค่า Squash ของ Test_rbbnelemMidIIILFT_ctrl ไปยัง Squash ของ Test_rbbnelemIIILFT_nrb
2. Connect ค่า Arclenght ของ Test_rbbnelemStretchIIILFT_crvinfo ไปยัง arclen ของ Test_rbbnelemIIILFT_nrb
3. ให้สร้าง Node ใน mel Box ขึ้นมาตามนีและเปลี่ยนชื่อตามนี้
- สร้าง blendColors ขึ้นมา 1 node
- createNode blendColors -n "Test_rbbnSquashDivIIILFT_bc"
- สร้าง multiplyDivide ขึ้นมา 2 node
- createNode multiplyDivide -n "Test_rbbnsquashDivIIILFT_mdv" **[Operation = Divide]
- createNode multiplyDivide -n "Test_rbbnsquashPowIIILFT_mdv" **[Operation = Power,input2X=0.5]
- สร้าง plusMinusAverage ขึ้นมา 5 node
- createNode plusMinusAverage -n "Test_rbbnSquash1IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash2IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash3IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash4IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnSquash5IIILFT_pma"
หลังจากนั้นจะทำการ Connect ทั้งหมดเริ่มจาก
1. connect ค่าจาก Test_rbbnelemIIILFT_nrb ไปยัง Test_rbbnSquashDivIIILFT_bc
- arclen To color1R
- Divider To color2R
- Squash To blender
2. connect ค่าจาก Test_rbbnelemIIILFT_nrb ไปยัง Test_rbbnsquashDivIIILFT_mdv
- Divider To input1X
3. connect ค่าจาก Test_rbbnSquashDivIIILFT_bc ไปยัง Test_rbbnsquashDivIIILFT_mdv
- outputR To input2X
4. connect ค่าจาก Test_rbbnsquashDivIIILFT_mdv ไปยัง Test_rbbnsquashPowIIILFT_mdv
- outputX To input1X
5. connect ค่าจาก Test_rbbnsquashPowIIILFT_mdv ไปยัง Test_rbbnSquash#IIILFT_pma [ของแต่ละNode]
- outputX To input1D
6. connect ค่าจาก Test_rbbnelemMidIIILFT_ctrl ไปยัง Test_rbbnSquash#IIILFT_pma [ของแต่ละNode]
- Squash To input1D
7. connect ค่าจาก Test_rbbnelem#IIILFT_ctrl ไปยัง Test_rbbnSquash#IIILFT_pma [ของแต่ละNode]
- Squash To input1D
8. connect ค่าจาก Test_rbbnSquash#IIILFT_pma ไปยัง Test_rbbnelem#JntIIILFT_grp [ของแต่ละNode]
- output1D To scale X
- output1D To scale Z
9. connect ค่าจาก Test_rbbnelem1JntIIILFT_grp ไปยัง Test_rbbnelem1IIILFT_jnt [ของแต่ละNode]
- scale To scale
- scale To inverseScale
ใกล้ถึงขั้นตอนสุดท้ายแล้วๆๆๆ อันนี้เราจะมาทำการ connect ค่า Rotate Y กันนะครับ
สำหรับค่า Rotate Y ของ Test_rbbnelem1JntIIILFT_grp ให้เอาค่า Rotate Y ของ Test_rbbnBttmPostelemIIILFT_loc มา connect ได้เลย
สำหรับค่า Rotate Y ของ Test_rbbnelem5JntIIILFT_grp ให้เอาค่า Rotate Y ของ Test_rbbnTopPostelemIIILFT_loc มา connect ได้เลย
ส่วน Test_rbbnelem2JntIIILFT_grp, Test_rbbnelem3JntIIILFT_grp, Test_rbbnelem4JntIIILFT_grp ให้ทำดังนี้
- สร้าง multiplyDivide ขึ้นมา 3 node
- createNode multiplyDivide -n "Test_rbbnelem2IIILFT_mdv"
**[1X = 0.75,1Y=0.25]
- createNode multiplyDivide -n "Test_rbbnelem3IIILFT_mdv"
**[1X = 0.50,1Y=0.50]
- createNode multiplyDivide -n "Test_rbbnelem4IIILFT_mdv"
**[1X = 0.25,1Y=0.75]
- สร้าง plusMinusAverage ขึ้นมา 3 node
- createNode plusMinusAverage -n "Test_rbbnelem2IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnelem3IIILFT_pma"
- createNode plusMinusAverage -n "Test_rbbnelem4IIILFT_pma"
แล้วให้เอา rotate Y ของ Test_rbbnTopPostelemIIILFT_loc connect เข้า input1Y ของ Test_rbbnelem#IIILFT_mdv [2, 3, 4] แต่ละอัน
แล้วให้เอา rotate Y ของ Test_rbbnBttmPostelemIIILFT_loc connect เข้า input1X ของ Test_rbbnelem#IIILFT_mdv [2, 3, 4] แต่ละอัน
และให้ connect ค่าจาก Test_rbbnelem#IIILFT_mdv [2, 3, 4] ไปยัง Test_rbbnelem#IIILFT_pma [2, 3, 4] [ของแต่ละNode]
- outputX To input1D
- outputY To input1D
จากนั้นให้เอาค่าของ Test_rbbnelem#IIILFT_pma [2, 3, 4] ไป connect กับ Test_rbbnelem#JntIIILFT_grp [2, 3, 4]
- output1D To rotate Y
สุดท้ายให้ Paint Weight ให้ Test_rbbnelemIIILFT_nrb กับ Test_rbbnelemStretchIIILFT_crv สวยงาม
หมดแล้วครับการทำ Ribbon หวังว่าจะเป็นประโยชนืกับทุกคนนะครับ
ถ้ามีอะไรสงสัยก็ แอด msn : gimojung@hotmail.com มาคุยได้นะครับ Read More......
Ribbon :Part2:
มาเริ่มกันที่ Part2 กันเลย
เริ่มจากเราจะสร้าง Joint กับ Locator เพื่อเอาไว้ Aim ทิศทางของ joint
เราจะสร้าง joint กับ locator โดยการพิมพิ์ใน mel box ว่า
"createNode joint"
"CreateLocator"
แล้วทำการตั่งชื่อแล้วก็ทำ group และเรียง Hierarchy ตามนี้
- Test_rbbnTopPostelemIIILFT_loc ------->Locator
- Test_rbbnTopAimelemIIILFT_grp ------->Group
- Test_rbbnTopelemIIILFT_jnt -------> Joint
- Test_rbbnMidPostelemIIILFT_grp ------->Group
- Test_rbbnMidAimelemIIILFT_grp ------->Group
- Test_rbbnMidOffmelemIIILFT_loc ------->Locator
- Test_rbbnMidelemIIILFT_jnt -------> Joint
- Test_rbbnMidUpelemIIILFT_grp ------->Group
- Test_rbbnBttmPostelemIIILFT_loc ------->Locator
- Test_rbbnBttmAimelemIIILFT_grp ------->Group
- Test_rbbnBttmelemIIILFT_jnt -------> Joint
ทั้งหมดนี้จะอยู่ใน Group "Test_rbbnelemCtrlJntAllIIILFT_grp"
แล้วเราจะย้ายตำแหน่งของแต่ละ Group ไปแล้ว Freeze Tranformation ทั้งหมดดังรูป
จากนั้นให้เราเลือก Test_rbbnTopelemIIILFT_jnt,Test_rbbnMidelemIIILFT_jnt,
Test_rbbnBttmelemIIILFT_jnt แล้วให้ไป Bind Skin กับ Test_rbbnelemIIILFT_nrb และ Test_rbbnelemIIILFT_crv หลังจากนั้นเราจะมาทำการ Aim กัน
แต่ผมจะใช้ Object rotation Up กับ Object Up แล้วจะอธิบายตอนท้ายว่ามันต่างกันยังไงนะครับ
1. ให้เลือก Test_rbbnBttmAimelemIIILFT_grp ก่อนแล้วเลือก Test_rbbnTopAimelemIIILFT_grp ตามแล้วไปที่ Option Box ของ Aim Constrain แล้วตั่งค่าตามนี้
- aim Vector 0 -1 0
- Up Vector 0 0 1
- World Up Type Object Up
- World Up Vector 0 0 1
- World UP Object Test_rbbnTopPostelemIIILFT_loc
แล้วกด Add
2. ให้เลือก Test_rbbnTopAimelemIIILFT_grp ก่อนแล้วเลือก Test_rbbnBttmAimelemIIILFT_grp ตามแล้วไปที่ Option Box ของ Aim Constrain แล้วตั่งค่าตามนี้
- aim Vector 0 1 0
- Up Vector 0 0 1
- World Up Type Object Up
- World Up Vector 0 0 1
- World UP Object Test_rbbnBttmPostelemIIILFT_loc
แล้วกด Add
3. ก่อนทำให้เลือก Test_rbbnMidUpelemIIILFT_grp แล้วให้ translateX =1 แล้วให้เลือก Test_rbbnTopelemIIILFT_jnt ก่อนแล้วเลือก Test_rbbnMidAimelemIIILFT_grp ตามแล้วไปที่
Option Box ของ Aim Constrain แล้วตั่งค่าตามน
- aim Vector 0 1 0
- Up Vector 1 0 0
- World Up Type Object Up
- World UP Object Test_rbbnMidUpelemIIILFT_grp
แล้วกด Add
หลังจากที่เรา aim เสร้จแล้วนั้น ให้เรามาเลือก Test_rbbnelemMidIIILFT_ctrl มา Parent constrain กับ Test_rbbnMidelemIIILFT_jnt แล้วจากนั้นให้มาเลือก Test_rbbnTopelemIIILFT_jnt กับ Test_rbbnBttmelemIIILFT_jnt มา point constrain กับ Test_rbbnMidPostelemIIILFT_grp และสุดท้ายให้เอา
Test_rbbnMidAimelemIIILFT_grp ไป parent constrain กับ Test_rbbnelemMidCtrlIIILFT_zG เป็นอันเสร็จ
ให้เราเลือก Test_rbbnelemMidIIILFT_ctrl แล้ว add attribute เพิ่มตามนี้
- squash
- auto squash [min=0, max=1]
- Upr_twist
- Lwr_twist
- Detail_vis [min=0, max=1]
ให้เอา Upr_twist connect เขากับ Rotate Y ของ Test_rbbnTopPostelemIIILFT_loc
แล้วเอา Lwr_twist connect เขากับ Rotate Y ของ Test_rbbnBttmPostelemIIILFT_loc
แล้วเอา Detail_vis connect เข้ากับ visibility ของ Test_rbbnelem#CTRLIIILFT_zG แต่ละอัน
แค่นี้ก็หมดของส่วน Part2 แล้ว เราไปต่อกันที่ Part3 กันดีกว่า Read More......
เริ่มจากเราจะสร้าง Joint กับ Locator เพื่อเอาไว้ Aim ทิศทางของ joint
เราจะสร้าง joint กับ locator โดยการพิมพิ์ใน mel box ว่า
"createNode joint"
"CreateLocator"
แล้วทำการตั่งชื่อแล้วก็ทำ group และเรียง Hierarchy ตามนี้
- Test_rbbnTopPostelemIIILFT_loc ------->Locator
- Test_rbbnTopAimelemIIILFT_grp ------->Group
- Test_rbbnTopelemIIILFT_jnt -------> Joint
- Test_rbbnMidPostelemIIILFT_grp ------->Group
- Test_rbbnMidAimelemIIILFT_grp ------->Group
- Test_rbbnMidOffmelemIIILFT_loc ------->Locator
- Test_rbbnMidelemIIILFT_jnt -------> Joint
- Test_rbbnMidUpelemIIILFT_grp ------->Group
- Test_rbbnBttmPostelemIIILFT_loc ------->Locator
- Test_rbbnBttmAimelemIIILFT_grp ------->Group
- Test_rbbnBttmelemIIILFT_jnt -------> Joint
ทั้งหมดนี้จะอยู่ใน Group "Test_rbbnelemCtrlJntAllIIILFT_grp"
แล้วเราจะย้ายตำแหน่งของแต่ละ Group ไปแล้ว Freeze Tranformation ทั้งหมดดังรูป
จากนั้นให้เราเลือก Test_rbbnTopelemIIILFT_jnt,Test_rbbnMidelemIIILFT_jnt,
Test_rbbnBttmelemIIILFT_jnt แล้วให้ไป Bind Skin กับ Test_rbbnelemIIILFT_nrb และ Test_rbbnelemIIILFT_crv หลังจากนั้นเราจะมาทำการ Aim กัน
แต่ผมจะใช้ Object rotation Up กับ Object Up แล้วจะอธิบายตอนท้ายว่ามันต่างกันยังไงนะครับ
1. ให้เลือก Test_rbbnBttmAimelemIIILFT_grp ก่อนแล้วเลือก Test_rbbnTopAimelemIIILFT_grp ตามแล้วไปที่ Option Box ของ Aim Constrain แล้วตั่งค่าตามนี้
- aim Vector 0 -1 0
- Up Vector 0 0 1
- World Up Type Object Up
- World Up Vector 0 0 1
- World UP Object Test_rbbnTopPostelemIIILFT_loc
แล้วกด Add
2. ให้เลือก Test_rbbnTopAimelemIIILFT_grp ก่อนแล้วเลือก Test_rbbnBttmAimelemIIILFT_grp ตามแล้วไปที่ Option Box ของ Aim Constrain แล้วตั่งค่าตามนี้
- aim Vector 0 1 0
- Up Vector 0 0 1
- World Up Type Object Up
- World Up Vector 0 0 1
- World UP Object Test_rbbnBttmPostelemIIILFT_loc
แล้วกด Add
3. ก่อนทำให้เลือก Test_rbbnMidUpelemIIILFT_grp แล้วให้ translateX =1 แล้วให้เลือก Test_rbbnTopelemIIILFT_jnt ก่อนแล้วเลือก Test_rbbnMidAimelemIIILFT_grp ตามแล้วไปที่
Option Box ของ Aim Constrain แล้วตั่งค่าตามน
- aim Vector 0 1 0
- Up Vector 1 0 0
- World Up Type Object Up
- World UP Object Test_rbbnMidUpelemIIILFT_grp
แล้วกด Add
หลังจากที่เรา aim เสร้จแล้วนั้น ให้เรามาเลือก Test_rbbnelemMidIIILFT_ctrl มา Parent constrain กับ Test_rbbnMidelemIIILFT_jnt แล้วจากนั้นให้มาเลือก Test_rbbnTopelemIIILFT_jnt กับ Test_rbbnBttmelemIIILFT_jnt มา point constrain กับ Test_rbbnMidPostelemIIILFT_grp และสุดท้ายให้เอา
Test_rbbnMidAimelemIIILFT_grp ไป parent constrain กับ Test_rbbnelemMidCtrlIIILFT_zG เป็นอันเสร็จ
ให้เราเลือก Test_rbbnelemMidIIILFT_ctrl แล้ว add attribute เพิ่มตามนี้
- squash
- auto squash [min=0, max=1]
- Upr_twist
- Lwr_twist
- Detail_vis [min=0, max=1]
ให้เอา Upr_twist connect เขากับ Rotate Y ของ Test_rbbnTopPostelemIIILFT_loc
แล้วเอา Lwr_twist connect เขากับ Rotate Y ของ Test_rbbnBttmPostelemIIILFT_loc
แล้วเอา Detail_vis connect เข้ากับ visibility ของ Test_rbbnelem#CTRLIIILFT_zG แต่ละอัน
แค่นี้ก็หมดของส่วน Part2 แล้ว เราไปต่อกันที่ Part3 กันดีกว่า Read More......
Ribbon :Part1:
" Ribbon "
การทำ Ribbon นั้นมีไว้เพื่อเป็นการช่วยให้ animator นั้นสามารถจัดโพสของแขนหรือขาเพื่อให้ได้ silhouette ได้ตามที่ต้องการหรือเอาไว้แก้ไข shape หรือ Pose ของตัวละครเราได้เราลองไปดูการทำ Ribbon กันเลยดีกว่า
ขั้นแรกเลยเราจะทำการสร้าง Nurbs Plans ขึ้นมาก่อนในที่นี้้เราจะใส่ค่าดังนี้
- Rotate X = 90
- Scale Z = 5
ใน makeNurbPlane1
- PatchesU = 1
- PatchesV = 5
หลังจากนั้นจะ Freeze Transformation แล้วก็ Delete History แล้วตั่งชื่อ "Test_rbbnelemIIILFT_nrb" แล้วเราจะสร้าง Curve ขึ้นมาโดยไปที่ Option Box ของ CV Curve Tool แล้วเลือก 3 Cubic
แล้วสร้างให้อยู่กลางแผ่น Nurbs จากบนลงล่างให้พอดีแล้วให้ไปที่ Rebuilt Curve
โดยเลือก " Number of Spans = 5 "ก็จะได้ Curve CV ที่อยู่ตรงเส้นพอด
แล้วก็ตั่งชื่อเป็น "Test_rbbnelemIIILFT_crv"
ทีนี้เราจะมาหาความยาว Curve นี้โดยการสร้าง CurveInfo โดยเลือก Curve แล้วไปพิมพ์ใน mel Boxว่า"arclen -ch 1"แล้วตั่งชื่อ Nodeนี้ว่า"Test_rbbnelemStretchIIILFT_crvinfo"ซึ่งเอาไว้สามารถดู Arclenght ของ Curve นี้ได้ จากนั้นเลือก Nurbs แล้ว add attribute ตามนี้
- arclen
- divider
- squash
เสร็จแล้วจะ Group เข้าไว้ด้วยกันแล้วตั่งชื่อ "Test_rbbnelemStillAllIIILFT_grp"
ต่อมาผมจะทำ Group เปล่าขึ้นมาเพื่อเอาไวให้มันเกาะอยู่กับ Nurbs สร้างและตั่งชื่อตามนี้
- Test_rbbnelem1IIILFT_folicle
- Test_rbbnelem2IIILFT_folicle
- Test_rbbnelem3IIILFT_folicle
- Test_rbbnelem4IIILFT_folicle
- Test_rbbnelem5IIILFT_folicle
แล้ว Group รวมกันทั้งหมดและตั่งชื่อ "Test_rbbnelemIIILFT_folicleGrp"
ในการที่เราจะทำให้มันเกาะกับ Nurbs นั้นในวิธีนี้เราจะใช้ Node pointOnSurface การที่ใช้ Node นี้มันจะช่วยแก้ปัญหาเรื่องการ Flip ได้มากการสร้างให้ไปที่ Mel Box แล้วพิมพิ์ว่า "createNode pointOnSurfaceInfo" มา 5Node แล้วตั่งชื่อตามนี้
- Test_rbbnelem1IIILFT_foliclePosi
- Test_rbbnelem2IIILFT_foliclePosi
- Test_rbbnelem3IIILFT_foliclePosi
- Test_rbbnelem4IIILFT_foliclePosi
- Test_rbbnelem5IIILFT_foliclePosi
เมื่อได้ Node มาครบแล้วจะทำการ Connect เพื่อให้ได้ตำแหน่งบน Nurbs โดยเราจะconnect
.worldSpace ของ Nurbs ไปเข้าที่ .inputSurface ของ pointOnSurface แต่ละอันวิธีนี้สามารถทำได้จาก Connection Editior หรือ Script Editor ได้
ถ้าใช้ Script Editor จะมีวิธีดังนี้
จากนั้นเราจะเอาค่าของ .position ของ pointOnSurface มาconnectเข้า .translate ของ Test_rbbnelem#IIILFT_folicle ของแต่ละอัน
หลังจาก Connect .translate ไปแล้วให้ไปเลือก pointOnSurface มาปรับตำแหน่งตามต้องการโดยไปแก้ใน
attribute Editor โดยแก้ที่ค่า Parameter U = 0.5 กับ V=ตำแหน่งที่เราต้องการ เราสามารถดูตำแหน่งได้จาก
Group ที่เรา connect .translate เข้าไปแล้วไปเลือก Display > Transfoem Display > Local Rotationn Axesโดยค่า Parameter จะได้แบบนี้
- Test_rbbnelem1IIILFT_foliclePosi [U = 0.5 , V = 0.1]
- Test_rbbnelem2IIILFT_foliclePosi [U = 0.5 , V = 0.3]
- Test_rbbnelem3IIILFT_foliclePosi [U = 0.5 , V = 0.5]
- Test_rbbnelem4IIILFT_foliclePosi [U = 0.5 , V = 0.7]
- Test_rbbnelem5IIILFT_foliclePosi [U = 0.5 , V = 0.9]
เมื่อเสร็จแล้วทีนี้เราจะมาสร้าง Node aimConstraint ขึ้นมา Node นี้มีไว้เพื่อ
พิมพิ์ใน mel box "createNode aimConstraint"
เข้าไปที่ attribute Editor ของ aim แต่ละnodeแล้วให้เปลี่ยนค่า
- Test_rbbnelem1IIILFT_folicleAim
- Test_rbbnelem2IIILFT_folicleAim
- Test_rbbnelem3IIILFT_folicleAim
- Test_rbbnelem4IIILFT_folicleAim
- Test_rbbnelem5IIILFT_folicleAim
เริ่มจากเราจะ connect ค่า .tangentV จาก foliclePosi ไปconnectกับ .worldSpace ของ folicleAim
แล้วก็ connect ค่า .normal ไปยัง .target[0].targetTranslate ซึ่งจะใช้ connection Editor ทำไม่ได้ต้องแบบนี้
สุดท้ายเราจะ connect .constraintRotate[x,y,z] ของ FolicleAim ไปยัง .rotate[x,y,z] ของ folicle
เป็นการเสร็จในขั้นตอนนี้ก่อน
(อย่าลืม Parent Test_rbbnelem1IIILFT_folicleAim เข้าไปไว้ใน Test_rbbnelem1IIILFT_folicle ของแต่ละอัน)
เริ่มกันต่อเลยหล้งจากที่ทำตามขั้นต้นมาแล้วเราจะทำการสร้าง joint + Control ขึ้นมาและตั่งชื่อตามนี้
- สร้าง Joint แล้วทำการ Group ของแต่ละ joint และตั่งชื่อตามนี้ให้พิมพิ์ใน mel box "createNode joint"
- Test_rbbnelem1JntIIILFT_grp
- Test_rbbnelem1IIILFT_jnt
- Test_rbbnelem2JntIIILFT_grp
- Test_rbbnelem2IIILFT_jnt
- Test_rbbnelem3JntIIILFT_grp
- Test_rbbnelem3IIILFT_jnt
- Test_rbbnelem4JntIIILFT_grp
- Test_rbbnelem4IIILFT_jnt
- Test_rbbnelem5JntIIILFT_grp
- Test_rbbnelem5IIILFT_jnt
แล้ว Group รวมกันแล้วตั่งชื่อ "Test_rbbnelemJntAllIIILFT_grp"
- สร้าง Control มา6อันมี [Circle = 5, square = 1 ] และตั่งชื่อตามนี้
- "square"
- Test_rbbnelemMidCtrlIIILFT_zG
- Test_rbbnelemMidIIILFT_ctrl
- "circle"
- Test_rbbnelem1CTRLIIILFT_zG
- Test_rbbnelem1IIILFT_ctrl
- Test_rbbnelem2CTRLIIILFT_zG
- Test_rbbnelem2IIILFT_ctrl
- Test_rbbnelem3CTRLIIILFT_zG
- Test_rbbnelem3IIILFT_ctrl
- Test_rbbnelem4CTRLIIILFT_zG
- Test_rbbnelem4IIILFT_ctrl
- Test_rbbnelem5CTRLIIILFT_zG
- Test_rbbnelem5IIILFT_ctrl
แล้ว add attribute "Squash" ให้กับcontrolด้วย
แล้ว Group รวมกันแล้วตั่งชื่อ "Test_rbbnelemCTRLAllIIILFT_grp"
เมื่อเรามีทั้ง joint แล้ว control แล้วก็ให้เราทำการย้ายตำแหน่งไปไว้ทีเดียวกับ pointOnSurfaceโดยเลือก Test_rbbnelem#IIILFT_folicle ก่อนแล้วเลือก Test_rbbnelem#JntIIILFT_grp
แล้วก็ใช้ Point Constrain กับ Orient Constraint ซึ่งจะได้ตามแบบนแล้วให้เรา Break Connection ของ Rotate Y ออกให้หมด
เมื่อเราย้ายตำแหน่ง joint ไปแล้วคราวนี้เรามาย้ายตำแหน่งของ Control กันบ้าง
โดยเลือก Test_rbbnelem#JntIIILFT_grp ก่อนแล้วเลือก Test_rbbnelem#CTRLIIILFT_zG
แล้วก็ใช้ Parent Constrain โดยใน option ให้เอา Maintain Offset ออกด้วยแล้วเอา
Test_rbbnelem#IIILFT_ctrl ของแต่ละอัน Parent Constrain เข้ากับ Test_rbbnelem#IIILFT_jnt
เป็นการเสร็จในส่วนของ Part1 ไว้เรามาต่อกันใน Part2 นะครับ
Read More......
การทำ Ribbon นั้นมีไว้เพื่อเป็นการช่วยให้ animator นั้นสามารถจัดโพสของแขนหรือขาเพื่อให้ได้ silhouette ได้ตามที่ต้องการหรือเอาไว้แก้ไข shape หรือ Pose ของตัวละครเราได้เราลองไปดูการทำ Ribbon กันเลยดีกว่า
ขั้นแรกเลยเราจะทำการสร้าง Nurbs Plans ขึ้นมาก่อนในที่นี้้เราจะใส่ค่าดังนี้
- Rotate X = 90
- Scale Z = 5
ใน makeNurbPlane1
- PatchesU = 1
- PatchesV = 5
หลังจากนั้นจะ Freeze Transformation แล้วก็ Delete History แล้วตั่งชื่อ "Test_rbbnelemIIILFT_nrb" แล้วเราจะสร้าง Curve ขึ้นมาโดยไปที่ Option Box ของ CV Curve Tool แล้วเลือก 3 Cubic
แล้วสร้างให้อยู่กลางแผ่น Nurbs จากบนลงล่างให้พอดีแล้วให้ไปที่ Rebuilt Curve
โดยเลือก " Number of Spans = 5 "ก็จะได้ Curve CV ที่อยู่ตรงเส้นพอด
แล้วก็ตั่งชื่อเป็น "Test_rbbnelemIIILFT_crv"
ทีนี้เราจะมาหาความยาว Curve นี้โดยการสร้าง CurveInfo โดยเลือก Curve แล้วไปพิมพ์ใน mel Boxว่า"arclen -ch 1"แล้วตั่งชื่อ Nodeนี้ว่า"Test_rbbnelemStretchIIILFT_crvinfo"ซึ่งเอาไว้สามารถดู Arclenght ของ Curve นี้ได้ จากนั้นเลือก Nurbs แล้ว add attribute ตามนี้
- arclen
- divider
- squash
เสร็จแล้วจะ Group เข้าไว้ด้วยกันแล้วตั่งชื่อ "Test_rbbnelemStillAllIIILFT_grp"
ต่อมาผมจะทำ Group เปล่าขึ้นมาเพื่อเอาไวให้มันเกาะอยู่กับ Nurbs สร้างและตั่งชื่อตามนี้
- Test_rbbnelem1IIILFT_folicle
- Test_rbbnelem2IIILFT_folicle
- Test_rbbnelem3IIILFT_folicle
- Test_rbbnelem4IIILFT_folicle
- Test_rbbnelem5IIILFT_folicle
แล้ว Group รวมกันทั้งหมดและตั่งชื่อ "Test_rbbnelemIIILFT_folicleGrp"
ในการที่เราจะทำให้มันเกาะกับ Nurbs นั้นในวิธีนี้เราจะใช้ Node pointOnSurface การที่ใช้ Node นี้มันจะช่วยแก้ปัญหาเรื่องการ Flip ได้มากการสร้างให้ไปที่ Mel Box แล้วพิมพิ์ว่า "createNode pointOnSurfaceInfo" มา 5Node แล้วตั่งชื่อตามนี้
- Test_rbbnelem1IIILFT_foliclePosi
- Test_rbbnelem2IIILFT_foliclePosi
- Test_rbbnelem3IIILFT_foliclePosi
- Test_rbbnelem4IIILFT_foliclePosi
- Test_rbbnelem5IIILFT_foliclePosi
เมื่อได้ Node มาครบแล้วจะทำการ Connect เพื่อให้ได้ตำแหน่งบน Nurbs โดยเราจะconnect
.worldSpace ของ Nurbs ไปเข้าที่ .inputSurface ของ pointOnSurface แต่ละอันวิธีนี้สามารถทำได้จาก Connection Editior หรือ Script Editor ได้
ถ้าใช้ Script Editor จะมีวิธีดังนี้
connectAttr -f Test_rbbnelem1IIILFT_nrbShape.worldSpace[0] Test_rbbnelem1IIILFT_foliclePosi.inputSurface;
connectAttr -f Test_rbbnelem2IIILFT_nrbShape.worldSpace[0] Test_rbbnelem2IIILFT_foliclePosi.inputSurface;
connectAttr -f Test_rbbnelem3IIILFT_nrbShape.worldSpace[0] Test_rbbnelem3IIILFT_foliclePosi.inputSurface;
connectAttr -f Test_rbbnelem4IIILFT_nrbShape.worldSpace[0] Test_rbbnelem4IIILFT_foliclePosi.inputSurface;
connectAttr -f Test_rbbnelem5IIILFT_nrbShape.worldSpace[0] Test_rbbnelem5IIILFT_foliclePosi.inputSurface;
จากนั้นเราจะเอาค่าของ .position ของ pointOnSurface มาconnectเข้า .translate ของ Test_rbbnelem#IIILFT_folicle ของแต่ละอัน
connectAttr -f Test_rbbnelem1IIILFT_foliclePosi.position Test_rbbnelem1IIILFT_folicle.translate;
connectAttr -f Test_rbbnelem2IIILFT_foliclePosi.position Test_rbbnelem2IIILFT_folicle.translate;
connectAttr -f Test_rbbnelem3IIILFT_foliclePosi.position Test_rbbnelem3IIILFT_folicle.translate;
connectAttr -f Test_rbbnelem4IIILFT_foliclePosi.position Test_rbbnelem4IIILFT_folicle.translate;
connectAttr -f Test_rbbnelem5IIILFT_foliclePosi.position Test_rbbnelem5IIILFT_folicle.translate;
หลังจาก Connect .translate ไปแล้วให้ไปเลือก pointOnSurface มาปรับตำแหน่งตามต้องการโดยไปแก้ใน
attribute Editor โดยแก้ที่ค่า Parameter U = 0.5 กับ V=ตำแหน่งที่เราต้องการ เราสามารถดูตำแหน่งได้จาก
Group ที่เรา connect .translate เข้าไปแล้วไปเลือก Display > Transfoem Display > Local Rotationn Axesโดยค่า Parameter จะได้แบบนี้
- Test_rbbnelem1IIILFT_foliclePosi [U = 0.5 , V = 0.1]
- Test_rbbnelem2IIILFT_foliclePosi [U = 0.5 , V = 0.3]
- Test_rbbnelem3IIILFT_foliclePosi [U = 0.5 , V = 0.5]
- Test_rbbnelem4IIILFT_foliclePosi [U = 0.5 , V = 0.7]
- Test_rbbnelem5IIILFT_foliclePosi [U = 0.5 , V = 0.9]
เมื่อเสร็จแล้วทีนี้เราจะมาสร้าง Node aimConstraint ขึ้นมา Node นี้มีไว้เพื่อ
พิมพิ์ใน mel box "createNode aimConstraint"
เข้าไปที่ attribute Editor ของ aim แต่ละnodeแล้วให้เปลี่ยนค่า
Aim Vector 0 0 1
Up Vector 0 1 0
แล้วตั่งชื่อตามนี้- Test_rbbnelem1IIILFT_folicleAim
- Test_rbbnelem2IIILFT_folicleAim
- Test_rbbnelem3IIILFT_folicleAim
- Test_rbbnelem4IIILFT_folicleAim
- Test_rbbnelem5IIILFT_folicleAim
เริ่มจากเราจะ connect ค่า .tangentV จาก foliclePosi ไปconnectกับ .worldSpace ของ folicleAim
connectAttr -f Test_rbbnelem1IIILFT_foliclePosi.tangentV Test_rbbnelem1IIILFT_folicleAim.WorldUpVector;
connectAttr -f Test_rbbnelem2IIILFT_foliclePosi.tangentV Test_rbbnelem2IIILFT_folicleAim.worldUpVector;
connectAttr -f Test_rbbnelem3IIILFT_foliclePosi.tangentV Test_rbbnelem3IIILFT_folicleAim.worldUpVector;
connectAttr -f Test_rbbnelem4IIILFT_foliclePosi.tangentV Test_rbbnelem4IIILFT_folicleAim.worldUpVector;
connectAttr -f Test_rbbnelem5IIILFT_foliclePosi.tangentV Test_rbbnelem5IIILFT_folicleAim.worldUpVector;
แล้วก็ connect ค่า .normal ไปยัง .target[0].targetTranslate ซึ่งจะใช้ connection Editor ทำไม่ได้ต้องแบบนี้
connectAttr -f Test_rbbnelem1IIILFT_foliclePosi.normal Test_rbbnelem1IIILFT_folicleAim.target[0].targetTranslate;
connectAttr -f Test_rbbnelem2IIILFT_foliclePosi.normal Test_rbbnelem2IIILFT_folicleAim.target[0].targetTranslate;
connectAttr -f Test_rbbnelem3IIILFT_foliclePosi.normal Test_rbbnelem3IIILFT_folicleAim.target[0].targetTranslate;
connectAttr -f Test_rbbnelem4IIILFT_foliclePosi.normal Test_rbbnelem4IIILFT_folicleAim.target[0].targetTranslate;
connectAttr -f Test_rbbnelem5IIILFT_foliclePosi.normal Test_rbbnelem5IIILFT_folicleAim.target[0].targetTranslate;
สุดท้ายเราจะ connect .constraintRotate[x,y,z] ของ FolicleAim ไปยัง .rotate[x,y,z] ของ folicle
connectAttr -f Test_rbbnelem1IIILFT_folicleAim.constraintRotateX Test_rbbnelem1IIILFT_folicle.rotateX;
connectAttr -f Test_rbbnelem1IIILFT_folicleAim.constraintRotateY Test_rbbnelem1IIILFT_folicle.rotateY;
connectAttr -f Test_rbbnelem1IIILFT_folicleAim.constraintRotateZ Test_rbbnelem1IIILFT_folicle.rotateZ;
connectAttr -f Test_rbbnelem2IIILFT_folicleAim.constraintRotateX Test_rbbnelem2IIILFT_folicle.rotateX;
connectAttr -f Test_rbbnelem2IIILFT_folicleAim.constraintRotateY Test_rbbnelem2IIILFT_folicle.rotateY;
connectAttr -f Test_rbbnelem2IIILFT_folicleAim.constraintRotateZ Test_rbbnelem2IIILFT_folicle.rotateZ;
connectAttr -f Test_rbbnelem3IIILFT_folicleAim.constraintRotateX Test_rbbnelem3IIILFT_folicle.rotateX;
connectAttr -f Test_rbbnelem3IIILFT_folicleAim.constraintRotateY Test_rbbnelem3IIILFT_folicle.rotateY;
connectAttr -f Test_rbbnelem3IIILFT_folicleAim.constraintRotateZ Test_rbbnelem3IIILFT_folicle.rotateZ;
connectAttr -f Test_rbbnelem4IIILFT_folicleAim.constraintRotateX Test_rbbnelem4IIILFT_folicle.rotateX;
connectAttr -f Test_rbbnelem4IIILFT_folicleAim.constraintRotateY Test_rbbnelem4IIILFT_folicle.rotateY;
connectAttr -f Test_rbbnelem4IIILFT_folicleAim.constraintRotateZ Test_rbbnelem4IIILFT_folicle.rotateZ;
connectAttr -f Test_rbbnelem5IIILFT_folicleAim.constraintRotateX Test_rbbnelem5IIILFT_folicle.rotateX;
connectAttr -f Test_rbbnelem5IIILFT_folicleAim.constraintRotateY Test_rbbnelem5IIILFT_folicle.rotateY;
connectAttr -f Test_rbbnelem5IIILFT_folicleAim.constraintRotateZ Test_rbbnelem5IIILFT_folicle.rotateZ;
เป็นการเสร็จในขั้นตอนนี้ก่อน
(อย่าลืม Parent Test_rbbnelem1IIILFT_folicleAim เข้าไปไว้ใน Test_rbbnelem1IIILFT_folicle ของแต่ละอัน)
เริ่มกันต่อเลยหล้งจากที่ทำตามขั้นต้นมาแล้วเราจะทำการสร้าง joint + Control ขึ้นมาและตั่งชื่อตามนี้
- สร้าง Joint แล้วทำการ Group ของแต่ละ joint และตั่งชื่อตามนี้ให้พิมพิ์ใน mel box "createNode joint"
- Test_rbbnelem1JntIIILFT_grp
- Test_rbbnelem1IIILFT_jnt
- Test_rbbnelem2JntIIILFT_grp
- Test_rbbnelem2IIILFT_jnt
- Test_rbbnelem3JntIIILFT_grp
- Test_rbbnelem3IIILFT_jnt
- Test_rbbnelem4JntIIILFT_grp
- Test_rbbnelem4IIILFT_jnt
- Test_rbbnelem5JntIIILFT_grp
- Test_rbbnelem5IIILFT_jnt
แล้ว Group รวมกันแล้วตั่งชื่อ "Test_rbbnelemJntAllIIILFT_grp"
- สร้าง Control มา6อันมี [Circle = 5, square = 1 ] และตั่งชื่อตามนี้
- "square"
- Test_rbbnelemMidCtrlIIILFT_zG
- Test_rbbnelemMidIIILFT_ctrl
- "circle"
- Test_rbbnelem1CTRLIIILFT_zG
- Test_rbbnelem1IIILFT_ctrl
- Test_rbbnelem2CTRLIIILFT_zG
- Test_rbbnelem2IIILFT_ctrl
- Test_rbbnelem3CTRLIIILFT_zG
- Test_rbbnelem3IIILFT_ctrl
- Test_rbbnelem4CTRLIIILFT_zG
- Test_rbbnelem4IIILFT_ctrl
- Test_rbbnelem5CTRLIIILFT_zG
- Test_rbbnelem5IIILFT_ctrl
แล้ว add attribute "Squash" ให้กับcontrolด้วย
แล้ว Group รวมกันแล้วตั่งชื่อ "Test_rbbnelemCTRLAllIIILFT_grp"
เมื่อเรามีทั้ง joint แล้ว control แล้วก็ให้เราทำการย้ายตำแหน่งไปไว้ทีเดียวกับ pointOnSurfaceโดยเลือก Test_rbbnelem#IIILFT_folicle ก่อนแล้วเลือก Test_rbbnelem#JntIIILFT_grp
แล้วก็ใช้ Point Constrain กับ Orient Constraint ซึ่งจะได้ตามแบบนแล้วให้เรา Break Connection ของ Rotate Y ออกให้หมด
เมื่อเราย้ายตำแหน่ง joint ไปแล้วคราวนี้เรามาย้ายตำแหน่งของ Control กันบ้าง
โดยเลือก Test_rbbnelem#JntIIILFT_grp ก่อนแล้วเลือก Test_rbbnelem#CTRLIIILFT_zG
แล้วก็ใช้ Parent Constrain โดยใน option ให้เอา Maintain Offset ออกด้วยแล้วเอา
Test_rbbnelem#IIILFT_ctrl ของแต่ละอัน Parent Constrain เข้ากับ Test_rbbnelem#IIILFT_jnt
Read More......
"Love one person why"
"รักคนคนหนึ่งเพราะอะไร"
...นั่นเป็นรักจากสมอง สมองมักมีเหตุผล
มีคำตอบในการที่ต้องรัก
และอาจไม่ใช่รักแท้...
เพราะรักแท้ เป็นรักที่ไม่มีคำตอบ
...เป็นความรัก ที่มาจากความรู้สึก
ถ้ารักจากสมอง ชีวิตรักเหมือนอยู่ในโลกความจริง
มักไม่อ่อนหวาน ทำอะไรก็มีแผนการ
...มีเหตุผล มีคำอธิบายร้อยแปดพันอย่าง
ต่างจากรักที่มาจากความรู้สึก
...ชีวิตเหมือนอยู่ในความฝัน ...อ่อนหวาน อบอุ่น
ใช้หัวใจในการตัดสิน กลายเป็นคนไม่มีสมอง...
ถ้าใครบอกว่ารักคุณเพราะอะไร...
พึงจำไว้ว่ารักแท้จะไม่มีเหตุผล จะไม่มีคำว่าอะไร มาทำให้รัก
เพราะถ้าบอกว่ารัก เพราะคุณสวย
...เมื่อความสวยหมด อาจเลิกรักได้
หรือถ้ารักเพราะคุณเป็นคนดี
วันหนึ่งก็อ้างได้ว่า ตอนนั้นเห็นคุณเป็นคนดีได้อย่างไร...
หรือถ้ารักเพราะคุณเป็นคุณ
...ก็คงเบื่อที่จะหาคำอื่นมาพูด คำนี้ใช้ง่ายที่สุด...
จงฟังคนที่บอกว่า รักคุณ และไม่เข้าใจว่าทำไมถึงรัก
นั่นเเสดงว่าใช้หัวใจรัก ไม่ว่าวันข้างหน้า คุณจะเป็นอย่างไร
หัวใจก็จะยังไม่มีเหตุผลในการรักอยู่ดี
จะเลือกรักคนที่เค้าไม่รักคุณแต่คุณรักเค้า หรือ จะเลือกคนที่คุณไม่รักแต่เค้ารักคุณ แต่ความรักที่ดีที่สุดคือความรักจากใจสองใจ
จะเลือกคนที่ใช้หัวใจรัก หรือคนที่ใช้สมองรัก...ขึ้นอยู่กับคุณ Read More......
...นั่นเป็นรักจากสมอง สมองมักมีเหตุผล
มีคำตอบในการที่ต้องรัก
และอาจไม่ใช่รักแท้...
เพราะรักแท้ เป็นรักที่ไม่มีคำตอบ
...เป็นความรัก ที่มาจากความรู้สึก
ถ้ารักจากสมอง ชีวิตรักเหมือนอยู่ในโลกความจริง
มักไม่อ่อนหวาน ทำอะไรก็มีแผนการ
...มีเหตุผล มีคำอธิบายร้อยแปดพันอย่าง
ต่างจากรักที่มาจากความรู้สึก
...ชีวิตเหมือนอยู่ในความฝัน ...อ่อนหวาน อบอุ่น
ใช้หัวใจในการตัดสิน กลายเป็นคนไม่มีสมอง...
ถ้าใครบอกว่ารักคุณเพราะอะไร...
พึงจำไว้ว่ารักแท้จะไม่มีเหตุผล จะไม่มีคำว่าอะไร มาทำให้รัก
เพราะถ้าบอกว่ารัก เพราะคุณสวย
...เมื่อความสวยหมด อาจเลิกรักได้
หรือถ้ารักเพราะคุณเป็นคนดี
วันหนึ่งก็อ้างได้ว่า ตอนนั้นเห็นคุณเป็นคนดีได้อย่างไร...
หรือถ้ารักเพราะคุณเป็นคุณ
...ก็คงเบื่อที่จะหาคำอื่นมาพูด คำนี้ใช้ง่ายที่สุด...
จงฟังคนที่บอกว่า รักคุณ และไม่เข้าใจว่าทำไมถึงรัก
นั่นเเสดงว่าใช้หัวใจรัก ไม่ว่าวันข้างหน้า คุณจะเป็นอย่างไร
หัวใจก็จะยังไม่มีเหตุผลในการรักอยู่ดี
จะเลือกรักคนที่เค้าไม่รักคุณแต่คุณรักเค้า หรือ จะเลือกคนที่คุณไม่รักแต่เค้ารักคุณ แต่ความรักที่ดีที่สุดคือความรักจากใจสองใจ
จะเลือกคนที่ใช้หัวใจรัก หรือคนที่ใช้สมองรัก...ขึ้นอยู่กับคุณ Read More......
Saturday, October 16, 2010
Blog Rigging
อยากทำอะไรที่ดีกับตัวเองซะหน่อย เกี่ยวกับงานที่ทำอยู่ทุกวันๆ
เลยอยากจะมาแชร์ประสบการณ์และวิธีการคิดและทำออกมา
ไว้มาค่อยดูกันนะครับว่ามีอะไรใหม่ๆมานำเสอนบ้าง Read More......
เลยอยากจะมาแชร์ประสบการณ์และวิธีการคิดและทำออกมา
ไว้มาค่อยดูกันนะครับว่ามีอะไรใหม่ๆมานำเสอนบ้าง Read More......
Subscribe to:
Posts (Atom)




















