Mighty Morphing

Thanks again @Mr_F!

So this is where I’m at

  • The biggest deal here is the FPS… it drops from 60 to ~4
  • Also, .setWeight starts to slowly deform the mesh as the animation moves forward

things to note:

  • the morph data is being matched… meaning that some of the blendshape used to capture the data are not a direct match to the current model’s blendshapes. For example the capture data has BrowsUp_L, where the model has BrowOutterUp_Left, BrowsInnerOutter_Left, Brows_Up_Left., etc. So that can account for the unnatural expressions on the model. I’m still tweaking it to mirror them better.
  • The capture data includes things link LookUp_L, LookOut_L, LookDown_L, which I’ve converted to traditional bone animation by updating the rotation for children under this.entity.model.skinInstances.bones hierarchy (Right and Left eye). That doesn’t seem to be happening though…
  • Unfortunately the data was captured at 24fps, haven’t figured a way to speed it up to 60fps using the .update (that’s the least of my worries at this point)
  • I haven’t added the lerp. It just felt like overkill with the current FPS situation.

Any thoughts on how this could be improved?

Sorry for a late reply. 4 fps, really?! How many vertices are in the model and how many of them are morphing? How many blendshapes are active (weight > 0) at the same time? What device/browser?

That doesn’t seem to be happening though…

Bones are just regular scene nodes - you can try finding them via entity.findByName(“bone”) and rotate. Does it help?

I think this is the most relevant conversation regarding the issue I am running into. If I am reading this correctly, there is no way ‘out of the box’ to have the animations in a fbx drive the morph targets in real time. The animation would have to be parsed and updated on every frame. Is this correct?

@Mr_F can you elaborate a little more on:

Animation for morphs isn’t loaded at the moment. Animation system isn’t good in terms of blending. So your best bet is to export morph animation to a custom file format or animate procedurally.

As it happens, the glTF loader supports animated morphs just fine! For example:

https://cx20.github.io/gltf-test/examples/playcanvas/index.html?category=tutorialModels&model=AnimatedMorphCube&scale=1&type=glTF

We’ll be integrating this into the Editor over the next few months.