Live Steam ด้วย Meta Human x Rokoko | Unreal Engine 5

Live Steam ด้วย Meta Human x Rokoko | Unreal Engine 5

จากครั้งก่อนที่เราได้แชร์เทคนิคการทำ Animation ด้วย Charater ต่างๆ และการบันทึก Face Mocap ไปใช้กับ Meta Human ในครั้งนี้เราจะมาผนวกรวมเทคนิดการทำงานเหล่านี้เข้าด้วยกัน
เพื่อโชวให้เห็นถึงศักยภาพของชุดตรวจจับความเคลื่อนไหวสุดล้ำอย่าง Rokoko Smart Suit Pro II ที่ทำงานร่วมกับ Rokoko Smart Gloves และอุปกรณ์ช่วยจับ Smart Phone ที่เพิ่งมาใหม่สดๆร้อนๆ
อย่าง Rokoko Headrig สำหรับบันทึการเคลื่อนไหวของใบหน้า หรือ Face capture

โดยสิ่งที่เราจะทำกันในวันนี้ก็คือการบันทึกการเคลื่อนไหวจากชุด Rokoko แล้วส่งไปใช้กับตัวละครเสมือนจริงอย่าง Meta Human กันแบบ Real Time ในโปรแกรม Unreal Engine 5
ซึ่งทาง Rokoko เองก็มีฟังก์ชันที่รองรับการส่งข้องมูลการเคลื่อนไหวแบบ Real Time นั่นก็คือระบบ Live Steaming ที่ไม่ใช่แค่รองรับการส่งข้อมูลไปยัง Unreal Engine เท่านั้น
เรายังสามารถส่งข้อมูลการเคลื่อไหวไปยังโปรแกรม Animation อื่นๆได้อีก เช่น Maya, Unity, Blender เป็นต้น และเพื่อเป็นตัวอย่างกับผู้ที่ต้องการใช้ชุด Rokoko ในการ Live Steaming
ด้วย 3D Character เราจะมาแสดงให้เห็นถึงขั้นตอนการทำงานการเชื่อมต่อชุดไปยัง 3D Character อย่าง Metahuman ในโปรแกรม Unreal Engine ให้ดูกัน

ขั้นตอนการเชื่อมต่อชุด Rokoko ไปยัง Meta Human จะแบ่งอกเป็น 2 ส่วนหลักๆ
1.การเตรียม Asset ที่จำเป็นใน Unreal Engine

2.การเชื่อมต่อชุด Rokoko เพื่อส่งข้อมูลการเคลื่อนไหวมายัง Unreal Engine

Create & Import Meta Human
ก่อนที่จะทำการเชื่อมต่อชุด Rokoko มายัง Meta Human กัน แน่นอนว่าก่อนอื่นเราก็ต้องมาสร้าง Metahuman กันก่อนซึ่งสามารถสร้างผ่านเว็บของ Metahuman ได้เลยซึ่งอาจสร้างได้ตามจินตนาการ
หรือแบบ Character ที่เราอยากได้ได้เลย (อ่านวิธีการสร้าง Meta Humanเพิ่มเติมได้ที่นี่ )หรืออาจเพิ่มความน่าสนใจในการนำตัวละครไปทำการ Live Steaming โดยการสร้างตัวละคร Metahuman
ที่มีความคล้ายตัวเราก็ได้ โดยสามารถใช้วิธีแสกน 3 มิติ เพื่อสร้างตัวละครเราใน Unreal Engine ได้ (อ่านวิธีการทำงานการสร้างตัวละคร Meta Human จากไฟล์แสกนเพิ่มเติมได้ที่นี่ )

หลังจากที่สร้างตัวละคร Meta Human เสร็จเรียบร้อยแล้ว ตัวละครของเราก็จะถูกบันทึกไว้ในบัญชี Epic Game ของเราโดยอัตโนมัติ โดยเราจะใช้บัญชีนี้เอง Log-in เพื่อ Import ตัวละคร Meta Human
ของเราเข้ามาใน Unreal โดยทำได้ผ่าน Plug-in ที่มีชื่อว่า Quixel Bridge สามารถเลือก Download แล้ว Import Meta Human เข้ามาได้เลย

ก็จะได้ Asset ทั้งหมดเข้ามาใน Unreal แล้ว โดยสามารถดูได้ที่หน้าต่าง Content Drawer ที่มุมซ้ายล่างใน Folder ที่ชื่อเดียวกันกับที่เราตั้งชื่อ Meta Human จะเห็น Asset ABP_ชื่อMetahuman
สามารถลองลากเข้าไปใน Scene เพื่อลองดูได้

T-pose Set
การที่ตัวละครจะเชื่อมต่อกับ Motion จาก Rokoko ได้จำเป็นต้องมีการจัดการหลักๆ อยู่ 2 อย่าง อย่างแรกคือ การตั้งค่า Body Map Data หรือการเซ็ทว่าให้กระดูกส่วนต่างๆของ Metahuman
Link ไปยังกระดูกแต่ละส่วนของ Rokoko Motion และอย่างที่สองคือการเซ็ทท่าให้ตัวละครอยู่ในท่า T-pose ซึ่งถือเป็นท่าที่เป็นค่าเริ่มต้นที่จำเป็นสำหรับตัววละครที่จะนำมาเชื่อมต่อกับ Motion
จากชุด Rokoko โดยสำหรับใครที่ต้องการความง่าย และรวดเร็ว ก็สามารถ Downloads Asset สำเร็จของ Bodymap Data และ T-pose Asset ที่สร้างไว้แล้วไปใช้ได้ แต่ถ้าใครอยากตั้งค่า
T-pose ด้วยตัวเองสามารถทำได้โดยดับเบิ้ลคลิกเข้าไปยัง Animation Blueprint ของตัวละครเรา จากนั้นที่ด้านขวาบนเลือก icon Skeleton เพื่อทำการเซ็ทท่า ที่ด้านซ้ายจะเป็น List กระดูก
ของตัวละคร ให้เลือกท่อนที่ต้องการ จากนั้นใช้เครื่องมือ Rotate เพื่อจัดท่า T-Pose โดยควรใช้มุมกล้อง Orthographic เช่น หน้าตรง ซ้ายหรือขวา และด้านบน เพื่อที่จะสามารถจัดท่า Pose ได้ตรง

เมื่อได้ท่า T-Pose แล้วเราจะสร้างเป็น Pose Asset เก็บไว้เพื่อนำไปใช้กับ Animation Blueprint ต่อไป โดย ไปที่แถบด้านบนของ Viewport คลิกCreate Asset>Create Pose Asset>Current Pose
เพื่อสร้าง Pose Asset สำหรับนำไปใส่ โดย Asset อื่นก็สามารถโหลดได้เลยแล้วนำไปไว้ใน Folder Project Unreal ของเรา

Animation Blueprint Set
Animation Blueprint เปรียบเสมือนพิมพ์เขียวของตัวละคร ใช้สำหรับใส่คำสั่งที่จำเป็นสำหรับตัวละคร โดยก่อที่เราจะเชื่อต่อกับ Motion ได้จำเป็นต้องมาเซ็ทค่าและคำสั่งต่างๆในส่วนนี้ซะก่อน
โดยจะใช้ Animation Blueprint ที่เป็นตัวพื้นฐานของ Meta Human ก่อนจากนั้นค่อยนำไปใช้กับตัวละครของเรา ให้เข้าไปยัง Folder Metahuman>Common>Female>Medium>NormalWieght
>Body ให้ดับเบิ้ลคลิกเพื่อเปิด Animation Blueprintจากนั้น เราจะสร้าง Node Rokoko Body Pose (การที่จะสร้างได้จำเป็นต้องเปิดการทำงานของ Plugin ก่อน) และเราจะสร้าง Node
จาก Tab Variables ที่ด้านซ้ายสองตัว ที่ชื่อว่า “Rokoko Actor Name” และ “Rokoko Body Map Data” โดย Rokoko Actor Name ให้เลือก Typeเป็น Name ส่วน Rokoko Body Map Data
ให้เลือก Type เป็น Rokoko Body Map Data>Class Reference จากนั้นนำ Node ทั้งสองไปต่อเข้ากับ Rokoko Body Pose

โดยทั้งสาม Node นี้จะต่อกันต่อจาก Node Control Rig จากนั้นนำ Pose Asset ที่ทำไว้หรือโหลดมา โดยลากจากหน้าต่าง Content Drawer มาใส่ได้เลย จากนั้นคลิกขวาและเลือก
Convert to Pose By Name จากนั้นไปที่ช่อง Pose Name ใน Tab Setting ที่ด้านขวา จากนั้น เปลี่ยนชื่อเป็น Pose_0 เมื่อกด Compile และ Save ที่บนซ้าย Model ของเราใน Viewport
ก็จะเป็นท่า T-pose แล้ว

จากนั้นเลือกที่ Rokoko Body Pose ที่หน้าต่างตั้งค่า เลือก Bodymap เป็น Bodymap Asset ที่เราโหลดมา และ Actor Name ตั้งตาม Actor ที่เราใช้ใน Rokoko Studio

Even Graph Set
ต่อไปเราจะมาตั้งค่าในส่วนของ Even graph กัน โดยให้ดับเบิ้ลคลิกเพื่อเปิด Animation Blueprint ของตัวละครเรา จากนั้นไปที่ Even Graph ให้ลาก Body ใส่ลงไปในพื่นที่
เพื่อต่อกับ Node Get Anim Instance จากนั้นต่อไปยัง Cast to f_med_nmw_animBP และนำ Event BeginPlay มาต่อเข้ากับ Node นี้ด้วย จากนั้นต่อ Cast to f_med_nmw_aniimBP
ไปยัง Set Rokoko Actor Name โดยต่อให้ครบทั้ง 2 เส้น แล้วตั้งชื่อ Actor ตาม Actor ที่เราใช้ใน Rokoko เมื่อเสร็จแล้วกด Compile และ Save

Rokoko Live link
หลังจากเสร็จขั้นตอนในการเตรียม Asset ใน Unreal Engine ในขั้นตอนที่เหลือก็ไม่ยากแล้ว โดยให้เราใส่ชุด Rokoko ถุงมือ และ Headrig เรียบร้อยแล้วก็ทำการเชื่อมต่อในโปรแกรม Rokoko Studio
จากนั้นทำการ Calibrate เมื่อพร้อมแล้ว เราจะไปเปิดฟังก์ชั่นการส่งข้อมูลการเคลื่อนไหวแบบ Real Time ในส่วนของระบบ Live Steamimg ที่ด้านขวาของโปรแกรม โดยเลือกในช่อง icon
ของ Unreal Engine จากนั้นกดให้ขึ้นติ้กถูกสีเขียวในช่องเพื่อ Enable ระบบ Live Steaming จากนั้นจะเห็น Icon Live สีเขียวกระพริบเป็นสัญญาณว่าโปรแกรมได้ทำการส่งข้อมูลอยู่ขณะนี้

ในส่วนของ โปรแกรม Unreal อันที่จริงแล้วก่อนเริ่มทำงานเราต้องเปิด Plugin Rokoko Studio ซะก่อนเพื่อให้ Unreal Engine รองรับคำสั่งต่างๆจาก Rokoko โดยไปที่ Edit>Plugins
แล้วค้นหา Rokoko Studio live จากนั้น คลิกติ้กถูกเพื่อ Enable Plugin จากนั้นโปรแกรมจะให้เรา Restart กด Restart Now

จากนั้นเราจะเปิดการรับการ Live จาก Rokoko ให้ไปที่ Window>Virtual Production>Livelink จะปรากฏหน้าต่าง Live Link ขึ้นมา ให้เราคลิกที่ไอคอน +Source>Rokoko Studio Source>Studio
จะปรากฎการ Link Motion ที่มาจาก Rokoko เลือกที่ Actor ของเราขึ้นมาใน List เป็นอัน Link สำเร็จจากนั้นก็ปิดหน้าต่างนี้ไปได้

และเพื่อให้การเชื่อต่อทำงานให้เลือก Body,Torso,Legs,Feet ในหน้าต่าง Detail ด้านขาวและเปลี่ยน Anim Class เป็น f_med_nmw_animnp และในแถบ Live Ling เลือก Actor:Face ที่ Link
มาจาก Rokokoและติ้กถูกที่ Use ARkit Face เพียงแค่นี้การเชื่อมการ Link Motion ก็ทำงานแล้ว

ตัวอย่างการทำงงาน Live Steaming ด้วย Meta Human ใน Unreal ผ่านชุด Rokoko