avatar pointing note

จะทำ avatar ให้ชี้ที่วัตถุได้แบบ แม่นยำ

ที่เห็นในโปรแกรม smartbody ก็คือ ทำ animation ทิ้งไว้หลายๆอัน ชี้ซ้ายขวา ขึ้นลง สูงต่ำ  ประมาณ40กว่าอัน

เสร็จแล้วก็มี ฟังก์ชัน pointing(ใส่วัตถุที่จะชี้) ซึ่งมันจะหา animation ที่มีตำแหน่งของมือที่ชี้ อยู่ใกล้ ตำแหน่งจริงที่จะชี้ มากที่สุด

แต่ว่า พอของที่จะชี้ มันอยู่ไกล…animationที่โปรแกรมเลือกมาให้เลยชี้ไม่ตรงของที่จะให้ชี้ (ไม่ตรงแบบเหมือนชี้มั่ว…หรือมันหา animation ให้ไม่ได้เลย random เอานะ?)

เห็นว่าถ้าเป็นฟังก์ชัน grab(ใส่วัตถุที่จะจับ) โปรแกรทก็จะเลือก animation ที่ใกล้ๆมาให้ แล้วก็ทำ inverse kinematic เพื่อยืดมือออกไปจับของอะนะ (แต่ไม่ได้ลองว่าถ้าของอยู่ไกลเกินมือเอื้อมจะเป็นยังไงแฮะ)

**

เราเลยพบว่า การเตรียม animation ทิ้งไว้นั้น ลำบาก เสียเวลา แถมยังชี้ไม่ตรงอีก(หรือไม่ก็ต้องมีanimationเตรียมไว้เยอะมากๆ)

เลยจะเสนอ algorithm สำหรับ pointing…ซึ่งมันก็คือ inverse kinematic 2 ข้อต่อ (ของคนอื่นเค้าเขียนทิ้งให้ใช้ฟรี….)

พอเอามาลองใช้แล้ว ก็เจอว่า แขนมันบิดผิดรูป กับ มือไม่แผ่มาหาทาง user (แบบว่าเวลาจะแนะนำอะำร มือมันควรจะหันออกมาทางคนที่กำลังพูดด้วย)

ตอนนี้ลอง fix องศาหมุนมือให้หันกาuserอยู่ แต่ก็ดูไม่สมจริงนิดนึง

กับถ้า เปลี่ยนตำแหน่ง avatar องศาที่fixไว้ มันใช้ไม่ได้ กลายเป็นชี้มั่วแขนบิดไปเลย…

กับอีกอันคือ ชี้มือขวา หรือมือซ้าย น่าจะทำให้มัน auto ได้นะ….

***

ยังมีัเรื่องของ ตำแหน่งของ avatar พอจะให้มันเดินหลบ หรือเดินตาม user ได้..

คือถ้าเขยิบนิดๆก็okอยู่…แต่พอต้องเขยิบมากๆ อยู่ใกล้ user เกินไป  , user เดินไปอีกทางละ จะเดินตามอะไรยังไงตอนไหนดี….

virtual agent stuff

1.ใช้โปรแกรม makehuman สร้าง humanoid model แล้วเอาเข้าไป animate posture ใน unity

http://nw.tsuda.ac.jp/lec/unity5/index-en.html

 

makehuman มันก็มี free model data ให้เลือกโหลดมาใส่ได้อยู่

http://www.makehumancommunity.org/clothesgallery.html

แต่เจอปัญหารองเท้าส้นสูงกับเท้ามันใส่ไม่เข้า เห็นว่าต้องไปดัดเท้าเองใน blender …

 

2. ใช้โปรแกรม mixamo สร้าง animation posture

https://www.mixamo.com/

คือมันจะมี character กับ animation ให้เราเลือก จะ upload character ของตัวเองขึ้นไปแล้วใส่ animationที่มีอยู่ก็ได้

แต่ลอง upload unitychan ไม่ได้อ่า…

แล้วก็ animation มัน fix ท่าทางมาละ ถ้าจะให้ชี้นู่นนี่ได้อิสระ น่าจะต้องเขียนโค๊ด ให้มันหมุนไหล่หมุนแขนเองแฮะ

 

3.โปรแกรม smartbody http://smartbody.ict.usc.edu/

โปรแกรมนี้มี example character มาให้ละ ใช้ python เขียนสั่ง bml ให้character ทำท่าทางอะไร มองไปทางไหน พูด lipsyn ได้

ฟังก์ชัน pointing นั่นจะ คำนวณตำแหน่งสิ่งที่ชี้ กับ animationที่จะให้ตำแหน่งของนิ้วอยู่ใกล้วัตถุมากที่สุด

animation ในการยกแขนชี้นู่นนี่มีอยู่ 39 ไฟล์ ถ้าของอยู่ใกล้จะสั่งให้หยิบแตะของนั้นก็ได้ ถ้าของอยู่ไกลตัวเหมือนจะคำนวณพังกลายเป็นชี้มั่วเลย

4.โปรแกรม vitual human toolkit https://confluence.ict.usc.edu/display/VHTK/vhtoolkitUnity

อันนี้เป็น โปรแกรมที่รวม smartbody + npc editor + gui +etc เข้าไปให้ใช้งานง่ายขึ้น เหมือนเป็นโปรแกรมทำ animation ตัวนึง…แต่ยังใช้ยากอยู่ดี…

ข้อดีคือ มันมี unity plugin ว่าจะลองใช้ดู

ก็ download ตัว indow installer 3.9Gb มา(ข้างในมี 3rd party installerให้แล้ว)

พอ installเสร็จ ให้ import

  • vhAssetsPackage
  • vhAssetsTestScenePackage

จากโฟลเดอร์ C:\vhtoolkit\bin\VHAssets  เข้าไปไว้ใน unity 2017.1.0f3 project…ก็จะใช้ vhtoolkitใน unity ได้ละ