บันทึก Mocap จาก Rokoko ส่งไปใช้กับ Character ใน Unreal Engine

บันทึก Mocap จาก Rokoko ส่งไปใช้กับ Character ใน Unreal Engine

หลังจากที่เราแชร์เทคนิคการนำข้อมูล Motion ที่ได้จาก  Rokoko Smart Suit Pro II กันมาหลายหลังแล้ว โดยก่อนหน้านี้เราได้นำ Motion ที่ได้ไปใช้ในโรแกรมสร้างงาน 3D Animation
อย่าง Blender ซึ่งก็สามารถให้งานได้ฟรีและมีประสิทธิภาพ แต่วันนี้เราจะมาแชรน์การทำงานในอีหนึ่งซอฟแวร์ที่น่าสนใจไม่แพ้กัน นั่นก็คือโปรแกรม Unreal Engine 5 จาก Epic Game
ผู้เป็นเจ้าของ Platform ที่ให้บริการ Download Game เจ้าใหญ่เจ้าหนึ่ง ซึ่งที่จริงแล้ว Unreal Engine เป็นโปรแกรมที่ถูกพัฒนาสำหรับสร้างเกมเป็นหลัก โดยจุดเด่นของโปรแกรมนี้
ที่มองข้ามไม่ได้นั่นก็คือ ระบบการจัดการทรัพยากร หรือ Asset 3D ต่างๆที่ใส่เข้าไปในโปรแกรม การที่มีระบบจัดการที่ดีนี้เองทำให้ Unreal Engine สามารถ Render ได้ในระบบ
Real-Time Rendering ซึ่งเราสามารถใช้ประโยชน์ในความสามารถตรงนี้ของโปแกรม นำมาประยุกต์ใช้กับงาน Animation ได้ หรืเรียกได้ว่าทำให้คนธรรมดาอย่างเราที่ไม่ใช่บริษัทใหญ่ๆ
ก็สามารถ Render งาน Animation สวยๆได้ นอกจากนี้ Unreal Engine pยังสามารถให้คนทั่วไปใช้งานได้โดยไม่เสียค่าบริการหากงานนั้นๆไม่ทำรายได้ถึงที่ทาง Unreal กำหนด หรือถ้าเรียกง่ายๆ
ก็ถือว่าคนที่ใช้งานทั่วๆไปอย่างเรา ใช้งานได้ฟรีเลยนั่นเอง โดยเวอร์ชั่นที่เราสาธิตในวันนี้จะเป็นเวอร์ชั่น 5.3.1

ตัวละครที่เราเลือกใช้ในวันนี้คือตัวละครที่ถือว่าหลายๆคนน่าจะรู้กันกันอย่างเจ้า “Stormtrooper” หรือเหล่าทหารอวกาศที่เป็นเหมือนกองทหารลูกสมุนฝั่งตัวร้าย จากเรื่อง Star War หนังสงครามอวกาศ
สุดคลาสสิกที่หลายคนชื่นชอบ ซึ่งก็ถือว่าเจ้า Stormtrooper นี้เองก็แอบเท่ไม่น้อยเลยทีเดียว ซึ่ง Model ที่เป็นตัวละครที่คนทั่วไปรู้จักเหล่านี้สามารถหาโหลดได้จากเว็บโหลดไฟล์ 3D ทั่วไปได้ไม่ยาก
หรือจะขึ้น Model เองก็ได้แล้วแต่ความถนัด

ขั้นตอนการนำ Motion ไปใช้กับ Character ใน Unreal มีดังนี้
1.Import Model เข้ามาใน Unreal
2.Create Body Map Data & T-Pose Asset
3.Set Animation Blue Print
4.Set Actor Blue Print
5.Rokoko Live Link

1.Import Model เข้ามาใน Unreal
ในขั้นตอนแรก ก่อนอื่นก็ต้อง Download หรือ เตรียม Model Character ที่ต้องการนำมาใส่ Motion กันก่อน โดย Model ที่นำมาใช้ควรต้องเตรียมพร้อมสำหรับทำ Animation แล้วเช่น Topology
หรือ เส้นของ Modelมีความเหมาะสมกับงาน Animation หรือ Texture Map ต่างๆ แต่ที่สำคัญที่สุดต้องเป็น Model ที่มีการ Riging หรือ ใส่กระดูกเรียบร้อยแล้ว (ควรศึกษารูปแแบบการ Rig
สำหรับใช้ใน Unreal Engine มาก่อน หรือถ้าใครเพิ่งเริ่มต้นก็สามารถ Download Model ไปทดลองทำก่อนได้) โดยวันนี้เราจะเลือกใช้ Model ตัวละคร Stormtrooper หรือทหารอวกาศ
หนึ่งในตัวละครสุดเท่ที่มีเอกลักษ์เฉพาะตัวจาก Star War โดยจะเตรียมตัวละครเป็นไฟล์ .fbx ที่สามารถ

เมื่อเตรียมตัวละครเรียบร้อยแล้ว เราจะ Import เข้ามายัง Unreal Engine แต่ก่อนอื่นต้องติดตั้ง Plugin ที่ชื่อว่า Rokoko Live Link ก่อน โดยสามารถ Download ได้ฟรี
ในโปรแกรม Epicgame>Unreal Engine Maket place โดยก่อนที่จะเริ่มทำงานใน Porject ที่สร้างมา ต้องทำการเปิดการทำงานของ Plugin ก่อน ให้ไปที่ Edit>plugin (โปรแกรมจะให้ทำการ Restart)

จากนั้น Import Model ของเราเข้ามาใน Unreal โดยสามารถลากไฟล์ Model เข้ามาใน Content Drawer ได้เลย ควรสร้าง Folder แยกเพื่อใส่ Asset ของตัวละครของเราโดยเฉพาะ
เพื่อให้สะดวกต่อการทำงานเพราะอาจมี Asset อีกหลายอย่างที่สร้างเพิ่มเติมภายหลัง

2.Create Body Map Data & T-Pose Asset
การที่โมเดลจะรองรับการ Link Motion จาก Rokoko ได้ต้องมีการทำงาน ที่สำคัญสองอย่างหลักๆนั่นคือ การทำ Body Map และ T-Pose (หากโมเดลเป็น T-pose อยู่แล้วก็ไม่ต้องมาทำใน Unreal อีก)
ซึ่งการทำ Body Map ก็คือการระบุให้ชุดกระดูกใน Unreal ตรงกับชุดกระดูกของ Model การสร้างทำได้โดยคลิกขวาที่ Content Drawer เลือก Blueprint Class ที่ All Class
ให้ค้นหา Rokoko Body Map Data และเลือก จากนั้นดับเบิ้ลคลิกเข้าไป จะโชว์หน้าต่าง List-ของกระดูกทั้งหมด ให้เปิด Tab Skeleton ของ Model วางเทียบคู่ไปด้วยเพื่อที่เราจะคัดลอกชื่อกระดูก
ของ Model ไปยัง Body Map Data โดยคลิกขวาที่กระดูกแต่ละท่อนของ Model กด Copy แล้วไปวางแทนชื่อกระดูกใน Body Map เมื่อเสร็จแล้วกด Save และปิดหน้าต่างไปได้เลย

ในขั้นตอนนี้หาก Model ของเราเป็นท่า T-Pose อยู่แล้วก็สามารถข้ามได้ แต่หากยังไม่ใช่เราจะมาทำโมเดลให้เป็น T-pose ก่อน โดยเปิดหน้าต่าง Skeleton แล้วจัดท่ากระดูกให้เป็น T-pose
โดยเลือกกระดูกแต่ละท่อน แล้ว Rotate เพื่อให้ได้ท่า T-pose (เปิดการแสดงผลกระดูกที่ Character>Bone)เปลี่ยนมุมกล้องเป็นมุมหน้า และมุมบนในการจัดท่าเพื่อให้ทำงานให้ง่ายขึ้น
เมื่อเสร็จแล้วกดที่ Create Asset>Create Pose Asset>Current Pose เพื่อสร้าง Pose Asset

3.Set Animation Blue Print
Unreal Engine จะทำงานในระบบ Node-Base System หรือการต่อชุดคำสั่งต่างๆเข้าด้วยกันตามลำดับ เรียกแต่ละชุดคำสั่งว่า Node โดยเริ่มแรกเราจะมาสร้าง Animation Blue Print
เพื่อต่อ Node ที่จำเป็นทั้งหมด ให้คลิกขวาที่ Model Skeleton Mesh เลือก Create>Animation Blueprint ตั้งชื่อ ABP_Name(ชื่อ Model) จากนั้นดับเบิ้ลคลิกเข้าไป
คลิกขวาสร้าง Node Rokoko Body Pose จากนั้นต่อ Node ไปยัง Output สร้าง Variables 2 ตัว ตั้งชื่อว่า Rokoko Actor Name (เลือก Type เป็น Name)และ Rokoko Body Map
(เลือก Type เป็น Rokoko Bodymap Data>Class Reference) จากนั้นลากเข้าไปใน Blue print และต่อเข้ากับ Rokoko Body Pose กด Complie และ Node Name ตั้งชื่อตามชื่อ Actor
ใน Rokoko ส่วน Node Rokoko Body Map ใน Tab Default>Rokoko Body Map เลือกเป็น Body Map ที่เราสร้าง

ลาก Pose Asset ไปยัง Animation Blue Print คลิกขวา Convert Pose by Name เปลี่ยน Pose Name เป็น Pose_0 จากนั้นต่อเข้าไปยัง Rokoko Body Pose ที่ช่อง Component Pose
กด Complie Model ของเราก็จะเป็น T-pose แล้ว

4.Set Actor Blue Print
ขั้นตอนต่อไปเราจะมาสร้าง Actor เพื่อใช้วางเข้าไปใน Scene และ Link Motion จาก Rokoko โดยกดคลิกขวาที่ Content Drawer เลือก Blueprint Class>Actor จากนั้นดับเบิ้ลคลิกเข้าไป
กด Add เลือก Skeleton Mesh จากนั้นไปที่ Even Graph

ลาก Skeleton Mesh ที่สร้างไปใส่ใน Evengraph จากนั้นต่อไปยัง Node Get Anim Instant (ลากขาที่จะต่อแล้วปล่อยที่ว่างจะมีช่องให้ค้นหา Node ที่ต้องการ ) จากนั้นต่อ Node Get Anim Instant
ไปยัง Cast to ABP (เลือก Animation Blue Print ของ Model เรา) จากนั้นนำ Node Even BeginPlay มาต่อเข้าที่ Cast To ABP…และต่อขาออกของ Cast to ABP…
ไปยัง Set Rokoko Actor Nameโดยต่อให้ครบทั้ง 2 เส้นตามภาพตัวอย่าง และให้ใส่ชื่อ Actor จาก Rokoko แล้วกด Compile

ไปที่ View Port กดเลือก Skeleton Mesh ที่เราสร้างมาและไปที่ Tab Mesh เลือก Model ของเราเข้ามา โดย Model จะแสดงผลขึ้นใน View Port


5.Rokoko Live Link
เปิด Rokoko Studio สร้าง Scene และ Set Actor ให้เรียบร้อย (ควรสร้าง Actor ให้ชื่อเหมือนกับที่เราใช้ใน Unreal) จากนั้นไปที่ Tab Live Streaming ติ้กถูกที่ Active ในช่อง Unreal Engine
เท่านี้ Motion ของเราก็จะสามารถส่งไปยัง ได้แบบ Real Time แต่เราสามารถทำการ Record Motion ไว้ก่อนได้แล้ว กด Play ทิ้งไว้จากนั้น Live ไปยัง Unreal ก็ได้เหมือนกัน


กลับมาที่ Unreal Engine ให้ไปที่ Window>Virtual Production>Livelink เพื่อเชื่อมต่อการ Live Steaming จาก Rokoko คลิกที่ไอคอน +Source>Rokoko Studio Source>Studio
จะปรากฎการ Link Motion ที่มาจาก Rokoko เลือกที่ Actor ของเรา

จากนั้นเปิด Actor ของ Model เราอีกครั้ง คลิกเลือก Skeleton Mesh ของเราและไปที่ Tab Animation>Anim Class และเลือก Animation Blueprint ของ Model เรา มาถึงตอนนี้
ถ้าเราทำทุกอย่างได้ถูกต้อง Model ของเราใน View port จะได้รับ Motion จาก Rokoko และขยับตามแล้ว


กลับมาที่หน้าต่าง Scene หลักให้ลากตัวละครเข้าไปใน Scene ได้เลย จากนั้นกดปุ่ม Play สีเขียวเพื่อ Record Sequence Track ต่อไปได้เลย

วิดีโอแสดง Work-Flow การทำงาน