Today's Solution For Facial Animation in Workspace

About Truespace Archives

These pages are a copy of the official truespace forums prior to their removal somewhere around 2011.

They are retained here for archive purposes only.

Today's Solution For Facial Animation in Workspace // Archive: Tech Forum

1  |  

Post by brucegregory // Jul 15, 2007, 7:53am

brucegregory
Total Posts: 7
I am a totally new TrueSpace user who has been modeling and animating characters with other software since the early 90's. TrueSpace finally got my attention with the new "styles" incorporated in the bone system. The way the bones move is truly unique and very much like one would expect a rig should behave.


But, I also totally depend on advanced tools for facial animation, and these seem to be absent on the WorkSpace side of the application. So far I have been committed to using only the WorkSpace since it is where all future development of the software will lie. So, unless I am missing something obvious, am I right in saying that there are no tools for facial animation, today, on the workspace side? Can simple vertex level animation be performed and keyframed? Can live manipulation be captured with the scene "record" feature and translated into keyframe data? If not, when?


Thanks,


Greg Smith

Post by trueSpaced // Jul 15, 2007, 1:53pm

trueSpaced
Total Posts: 544
pic
I unfortunately don't think so (don't know for sure though, so don't give up hope until someone from Caligari tells me I'm wrong again ;))...

There are many tools missing from the Workspace side that are in the Model side.

Have you tried the Facial Animator in the Model side?

-TrueSpaced:banana:

Post by Jack Edwards // Jul 15, 2007, 4:26pm

Jack Edwards
Total Posts: 4062
pic
Other than a couple of bones orientation oddities that don't seem to affect the animations, Morpher script works with rigged meshes. In the LE, you have to "export" the mesh from each copy of the actor and they need to have the same animations on the bones. So best to copy after animations have been applied.

Another option would be to use a disconnected head approach with multiple heads (morph targets) driving the morph and attached the morpher object to a rig as an object instead of a skin. The extra heads can be set to be invisible for DX rendering. I'm not sure if there's any kind of Null shader option for VRay but I suppose a material with completely transparent alpha would do the trick. That or just move the morph target heads off camera somewhere.

Here's the link to the Morpher script:
http://forums1.caligari.com/truespace/showthread.php?t=2573

If you need more than 8 morph targets, you can chain morpher objects. One way to manage it might be to have one morpher brick for eye shapes, one for mouth shapes, another for hair, etc. and then chain those into a final morpher that is attached to your character rig.

An alternate approach for simple facial animation would be to build a facial rig with bones. Simple open and closing of the mouth and eye animations would probably be ok animated that way.

-Jack.

Post by brucegregory // Jul 15, 2007, 7:33pm

brucegregory
Total Posts: 7
Jack:

Thanks for the link. I have read about this script but really have no idea how to put everything together. I'm a step-by-step kind of guy. If you post a text "step-by-step" example, I'd be happy to produce an annotated and narrated video tutorial demonstrating the whole process. I've done a few of these for the Blender community that were viewed quite a few times. The part that is especially unclear to me is the "just link all of your models" part and also the "chaining" morphs part, (I definitely need more than eight morphs). I know I can manipulate a basic mesh into various targets but the details of the process are still a blur to me.

By the way, I've tried setting up a facial "surface rig" with bones, but it just tore the face to pieces, no matter how I weighted it. Morph targets have got to be the way, then.

Thanks again,

Greg Smith

Post by Jack Edwards // Jul 16, 2007, 12:15am

Jack Edwards
Total Posts: 4062
pic
Definitely going to have to do somekind of tutorial because I think mostly everyone is having trouble linking up the script.

The first and most important part: The models have to be identical geometry. You can push and pull verts all you want, but no adding edges, extrudes, Bevels, or booleans, etc.
The best way to create your morph targets is to copy the base mesh with Ctrl-C then vertex manipulate each copied mesh to the target shape you need.

Linking them up:

1.) Open the LE.
2.) Select the base mesh object's brick in the LE
3.) Click the default tab
4.) Click drag from the "Mesh" label on the now expanded base mesh brick and drag a connection to the "Base Mesh" label on the tsMorpher object.
5.) Select a morph target mesh.
6.) Click the default tab to expand the brick.
7.) Click drag from the "Mesh" label on the morph target mesh to the "MorphMesh1" label on the tsMorpher object.
8.) Link the "ObjMatrix" label on your base mesh to the "OwnerMatrix" label on tsMorpher. The morpher object will then snap to the position, scale, and rotation of the base mesh. Disconnect this link (tsMorpher remembers the values) and move the morpher object to where you need it.

[I should make up an offset brick so that the ObjMatrix can be left linked, but the Morpher object will likely need to have it's own separate orientation values if it's going to be attached to a character rig. Probably more useful would be for me to add a "setup matrix" input to link to, and a button to click that would tell morpher to reset it's scale to be the same as the linked object.]

Now you're ready to morph. Just click on toggle to "On" and move the slider MorphMesh1 slider to get Morpher to display the morphed object.

To link multiple morphers, just link the base mesh to the "BaseMesh" input on the other morpher and the "Mesh" output from the first Morpher to the "MorphMesh1" input on the 2nd Morpher.

BTW, don't use the "Add Method" check box for normal morphing. I put that there for doing additive displacement type morphing.

Let me know if that helps. If I get some time later in the week I'll add screen caps.

-Jack.

Post by Jack Edwards // Jul 16, 2007, 12:22am

Jack Edwards
Total Posts: 4062
pic
Guess it also helps if I tell how to get the Morpher object into the LE in the first place. ;)


1.) Click on the Library Panel of the Stack view.

2.) Right click in the library that you want to add the Morpher object to and select "Import".

3.) Browse to where you saved tsMorpher on the Harddrive. Select Morpher and click open.

4.) drag the Morpher object from the library into the LE.


Once you have the Morpher object in your library you can drag as many copies as you need into the LE to use for any project.


-Jack.

Post by brucegregory // Jul 16, 2007, 5:50am

brucegregory
Total Posts: 7
Jack:


Thanks for the step-by-step. I become confused when you speak of a rigged mesh attached to the morpher object likely needing its own orientation settings. If a head is part of a uni-mesh, and the entire uni-mesh is rigged with bones, including at least one bone for the head, and you want to morph the facial features using your morpher script, doesn't the head gain its orientation from the rotation of the head "bone"? I thought that the bone structure is present to create general orientation of the base mesh and that "morpher" adds "tissue" changes on top of the orientation dictated by the bones, like facial expressions and muscle bulges. Can you clarify exactly what is going on when using your script on top of such a rigged mesh? I'm really in the dark regarding all of the technicalities of the process, but maybe you can make it clear even to such as me.


Thanks,


Greg Smith

Post by Jack Edwards // Jul 16, 2007, 8:05am

Jack Edwards
Total Posts: 4062
pic
Well it's really a bit of a hack getting morpher to work with rigged meshes. i found I had to expose the Mesh property up a level. This causes the bones to display oddly even though they still work as if they were oriented correctly. It's not a seamless integration by any stretch of the imagination. ;) The more important thing is that it does work. I'll have to post a walk through on how to use morpher with a rigged mesh.

Keep in mind that Morpher only works with whole meshes, so if your character is all one mesh then you'd have to make a copy of your mesh with your rig AND your animations for EACH morph target. Since Morpher does a straight vertex position blend of vertex change different animation would affect the cause the morph to stretch the model in incorrect directions.... Also could you imagine how you're computer would get with a fully rigged and animated mesh duplicated for each Morph chanel you needed?

So I would definitely recommend having a seperate head, unless you intend to morph muscles and stufff on the body itself.

....I'm falling asleep at the keyboard here, so I'm probably not making much sense. I write more about it later tonight.

-Jack.
Awportals.com is a privately held community resource website dedicated to Active Worlds.
Copyright (c) Mark Randall 2006 - 2021. All Rights Reserved.
Awportals.com   ·   ProLibraries Live   ·   Twitter   ·   LinkedIn