Friday, 25 May 2012

Facial stabilization in MoBu(Motionbuilder)


This tutorial is going to show you how to stabilize mocap data in MotionBuilder

Usually, the face data that I got, has been cleaned and stabilized in vicon blade.
But this time I got a cleaned but not stabilized face data.
I have no idea how to do the cleaned and stabilized job in a proper way.
maybe this http://www.studiodaily.com/2008/12/set-up-a-facial-retarget-in-dcg-facepro/

Finally I figure out a way which works well in MotionBuilder.

Let's see the final result.


The idea is using Rigid Body constrain to get the mainly translation and rotation data to a copy root.
Then clean all the trans info of the root.

Constraints
Rigid Body
Relation

Object
marker data
face bone
stabilized rig(copy from maker data)

mocap system : vicon
software : motionbuilder

Make sure the data is facing Z axis in Mobu.



Pickup the stabilized markers which don't affect by face muscle.
For example: The top of head markers, tip of noes etc...

Drag them onto source of Rigid Body Constrain.
Duplicate marker data. And make them different color, so we could see what's different. (optional : make a new Maker/Null as root for copy one)




Set the "Copy:FaceMocap" as  Constrained object.




Drag FaceMocap markers, except stabilize ones, onto relation plan as senders. Drag copy one onto relation plan as receivers.


Now connect marker's translation to copy's. And iterate this step to the last one.
Well.. This is kind boring job but just for the first time setup.
(I wrote a simple python script to handle this boring job. Read and download from Here!)






Okay, we have everything setup.
playback they all move in same motion( of cause we duplicated them and use reation)
click Snap on the Right body.  playback again the null start moving but not in the center.
Find a facing straight neutral pose then click Zero button.
Right now the null should in the center of the face marker.





Final step:
Select copy markers and do plot.
Deactivate all constrains
Select copy null and clear it trans info

I've seem a lot people are interested in this article. Sorry for my bad skill of English writing. If you have any questions. Feel free to send me messages.




Saturday, 19 May 2012

Eyeball constrain 眼球運動設定


I made a quick sample to show how eyelid follow eyeball's movement.




Skeleton骨架
Head - EyeBall (0,0,0)
Head -UpperLid_Aim (0,0,0)- UpperLid_Ctrl (0,0,0)-UpperLid_end (0,0,x.x)
Head - BottomLid_Aim (0,0,0)-BottomLid_Ctrl (0,0,0)-BottomLid_end (0,0,x.x)
Head - HeadEnd #This is for ObjectUp of Aim Constrain

1. All bones are Y axis up.
2. Skin my creepy eye model.













3. Setup Controller in maya or mobu.
Controller(Mark) Group( Null)
Eye_GP-Ctrl_Eye-  UpperLid_GP- Ctrl_UpperLid
Eye_GP-Ctrl_Eye-  BottomLid_GP- Ctrl_BottomLid

4. Add 3 Aim and one Relation constrains
















EyeLip follow Eye movement Setting眼皮跟著眼球運動
Constrains
Aim_EyeBall      [EyeBall / Ctrl_Eye] Object up #控制眼球
Aim_UpperLid  [UpperLid _Aim/  Ctrl_Eye ] weight 50~30 ; Object up#跟隨眼球
Aim_BottomLid [BottomLid_Aim / Ctrl_Eye ] weight 50~30 ; Object up#跟隨眼球
ObjectUp[HeadEnd]

Relation_EyeLid # 控制眼皮上下左右
[Ctrl_UpperLid:ty / UpperLid_Ctrl :rx]
[Ctrl_UpperLid:rz / UpperLid_Ctrl :rz]
[Ctrl_BottomLid:ty / BottomLid_Ctrl:rx]
[Ctrl_BottomLid:rz / BottomLid_Ctrl:rz]
#important that the nodes should in local mode, and the Number for Multiply is depend on the envirment size.

Kinect MoCap

http://www.kinecthacks.com/guides/kinect-motion-capture-tutorial/
http://motioncapturedata.com/2011/06/kinect-motion-capture.html
http://nuicapture.com/

======
http://www.scannerkiller.com/getstarted.html
http://reconstructme.net/what-is-reconstructme/

======

http://processing.org/

Thursday, 3 May 2012

mobuBoneCreator mel script

The basic function of creating joints base on MotionBuilder order is completed.

How to use??
First  :
source  "oOmobuBoneCreator.mel";
run oOmobuBoneCreator() without select any object, it will creat temp locators named for MotionBuilder.
place locators to fit your model.
For the locators of finger, please using duplicate 3 times. then parent them.
Notice1: Once you add new locators please add a prefix name "P_". and re-parent it.

Second:
To create all joint by selecting all the roots of locator and run the script again.
it will automatically create joint base on locator and do mirror.
if you just want create a row then just select one root of locator.
Notice1: Right now this script only support a straight hierarchy or single joint. it is not support a hierarchy has branch.

maybe I should record a demo video, if I have time.

Thursday, 12 April 2012

FPS第一人稱設影機

前幾週終於有機會"間接"參予使用Virtual cam的專案,又看到另一個同事拿著Iphone控制UDK裡的攝影機,再加上另一個實驗中的專案,也看到有人寫出用Iphone控制MotionBuilder裡的攝影機,實在覺得太酷了。上網查找了一些資料,有個App可以控制Maya裡的攝影機。
http://the3dninja.com/blog/?page_id=1235
自己也想過用Mobur的constrians與Device來達到控制攝機移動,不過能力未及,達到的效果不是很理想。但有另外查到一篇文章
 http://gware.blogspot.com/2010/03/fps-camera-in-motion-builder-using.html
裡頭也提及了“pull”解決數值無法累計的問題。但在mobu的Samples\01_MBTools\02_RelationConstraints\Relation_Pong.fbx裡,是有用另一種簡單的方式達成
目前已能利用鍵盤控制攝影機的左右前後跟上下移動,用滑鼠控制目標點,接下來是軸向問題,可是程度不足,還看不懂別人的文章,也還沒想到自己的解決方式。

Devices中還有個SpaceBall,也許也能拿來控制攝影機,但手上沒硬體。

Friday, 6 April 2012

Class 5: Character Performance

Term 5The class is getting hard! But I can make it!
This time student need to find out an audio clip for assignment.
Teacher gave us three links below:
www.dailywav.com
www.wavcentral.com
www.wavsource.com

The timing of the audio needs between 10~15s
I found those might work.







==========Here comes more audios after I saw the female model===========
"Unfortunately, no one can be told what the Matrix is. You have to see it for yourself." [Laurence Fishburne (Morpheus) from Matrix, The]
http://www.dailywav.com/0102/cantbetold.wav
"Don't you ever use that tone of voice with me, missy. Who do you think you're talking to?" [Faye Dunaway (Joan Crawford) from Mommie Dearest]
http://www.dailywav.com/0304/thattone.wav
"You must choose, but choose wisely. Whereas the true Grail will bring you life, the false Grail will take it from you." [Robert Eddison (Grail Knight) from Indiana Jones and the Last Crusade]
http://www.dailywav.com/0804/youmustchoose1.wav
    "Honey, everyone has bad dreams. It's the times we live in, it's hard to be happy. It's hard to feel safe." [Adrienne Barbeau (Ruthie) from Carnivàle]
http://www.dailywav.com/0105/baddreams.wav
"I sit in the subway sometimes, on buses, or the movies, and I look at the people next to me and I think… 'What would you say if I told you I was a witch?'" [Elsa Lanchester (Aunt Queenie Holroyd) from Bell Book And Candle]
http://www.dailywav.com/1006/whatwouldUwitch.wav