Sintel Rig in Blender - In Progress


#1

We have an in-progress version of the sintel character in Blender that uses the Interface skeleton standard. The Blender file contains the Interface skeleton and the Sintel mesh. The mesh in aligned with the skeleton however it’s NOT yet skin weighted. That’s coming next or you guys can feel free to skin weight yourselves. We did a simple animation test in blender and maya and got consistent results. That’s a promising indicator for the joint orients. It was a preliminary test, however, and we need to test more thoroughly.

I posted the latest version here.
https://hifi-public.s3.amazonaws.com/ozan/avatars/sintel/sintelBlenderRig/SintelRigNoSkinning.blend

-Ozan


#2

THANKS @ozan and TEAM!


#3

Thanks @Ozan,

Unfortunately these rotations are nearly the same as the ones that I’ve been using after I reverse engineered the mixamo rig back in late april and documented in my thread ( Main arms bone normal’s facing down so that if one would hug they would be pointing the thing being hugged ) So this still does not solve the issue we have been having.

You will see the main issue as soon as the rig and the model is exported from Blender and animated using cross-suite animations. For example, animating the same mesh and rig exported from blender with an animation exported from Maya, or trying to use procedural animations with Blender exported rig , or when using Blender animations on a Maya mesh and rig. I have been trying to convey that its a quite an important feature to get content that is compatible with other content that is built in the same specifications, regardless of the 3D suite used.

Also please note that the Mixamo prefix doesn’t really automatically map with the packager, these could be dropped from the Blend File.

Thanks for the work though, Now I don’t have to reverse engineer the thumbs to working properly, and with a consistent test rig, someone working closer to the graphics engine, like @sam could probably figure out exactly how to fix the issue.

Also I noticed your metric scale was set to 0.01. So as an important factor one should then use the same scale value for the fbx export otherwise end up with a 100x sized model.


#4

Hi,

Let’s figure it out. I need to understand a bit better what you trying to achieve.

I did some more tests to validate the rig that blender exports and things are looking good from what I see. For example, when I import both the blender rig and the original fbx rig into maya, I see that the joint orientations match quite closely. See the attached snapshot.

https://hifi-public.s3.amazonaws.com/ozan/support/sintel/jointOrientations.png

Also, when I apply a mixamo animation to both rigs, side by side, they play correctly. See that attached video.

From this I would anticipate that animations would work correctly and consistently in Interface. We’ll need to test that next. First, I’d like to skin the sintel mesh to the skeleton in Blender so I can validate a pure Blender based workflow.

Let me know.

Ozan


#5

The main issue here is that the Maya FBX importer works with the FBX SDK, so it will interpret the FBX exported in Blender as it should be, which is correct according to one of their FBX standards (3dMax). Same thing with Mixamo, it can switch between rotation modes fine, but it also exports the animations in the same rotation format.

These tests I made should illustrate the issue that is in High Fidelity: While the rotations are not same as with the sintel version you are working on: these are the mixamo autorig results, and a rexported version from blender (simply import export)

(Edit corrected list, had some wrong tests in there, it should now be correct)
##Quick and Dirty Avatar Tests

The avatar it self has sides color coded to indicate what part they are especially if the avatar is folded up.
(Red is inner leg, Green is Joints and top of the avatar, all other colors are other parts of the body and the back of the avatar)
##Animations

Current Results


  • Running the Control on Control works as expected.
  • Running the Re-exported on Re-exported works as expected
  • Running Control with Re-exported animation avatar folds in way A
  • Running Reexported with Control folds the avatar in way B
  • Running Control with Walk scripts works as expected
  • Running Re-exported with Walk script folds the avatar similar to way B

Occasionally when switching between animations rotations and scales are also “forgotten”, but thats a different issue, a re log usually solves this.

The re-export collides goes into the ground by half, but also another bug i wont get into. usually the work around is making the Armature as the root in the fst, but this will bug up the name-placement.


#6

I have weighted the mesh using auto weighting to test.
I select the mesh parts and then the armature last.
On WIndows it’s CTRL+P to select Armature Deform > With Automatic Weights.

I’m having problems with Interface to upload but suspect as Menithal is saying the problem needs to be resolved at the FBX reader code level.


#7

@ozan - @Menithal was nominated our Alpha Wolf (er… Fox? lol) in an alpha meeting two weeks from the time of this post with respect to the guidance of avatar question and answer. We were all in agreement that he is the best to convey the issue. Which is quite obviously the way HiFi reads-in the FBX data.

It’s not to say that what you have present is bad; we are ALL very much excited about resolution. It is just in our best interest as Alphas to collectively stand behind @Menithal while the issue is worked on.

Looking forward to the weeks to come!


#8

Aha. I see. So we’re stipulating that the problem is related to how Interfaces handles FBX files that are exported from Blender. Okay. That’s helpful. I’ll try uploading the Blender FBX shortly and see what problems we run into.

Ozan


#9

With my pose editor in hf I have seen, that the leg bones from blender have a rotation of 180 degree.
If I now move them one degree at the x rotation, so it should be 181, but the Avatar.getJointRotation gives suddenly -179. And if I now subtract 2 degrees it dos spring again to 181.

It is connected with Quat.safeEulerAngles(MyAvatar.getJointRotation(pose[i].joint));

I think this one reason for the animation problems.


#10

Yeah I was thinking this too a while ago, the issue you are describing is similar to a Gimbal lock which tends to happen with “Safe Eulers”

As far as Ive gathered,
It is possible that the issue comes from the fact that Blender Exports using Max style rotations way, in which there is only a single vector3 euler rotation (LCL rotation) for armatures.

Maya exports using three vector3 euler rotations (prerot, rot, postrot), which are all applied to each other during the final transformation matrix, which the existing avatars, which translates well in Hifi, as it has the Quaternion libraries. Its unfortunately however that FBX doesnt support quaternions by its nature, as blender does everything by those by default.

Hifi should indeed support -both- formats like other applications, as there is only a limited amount of software that can do Maya method.

It could be highly likely however that this could be quite simple to fix, but unfortunately, as I have said earlier my Matrice math is horrible.


#11

Hi folks… did anyone manage to get the Sintel avatar working in High Fidelity and have to hand a URL for the .fst file that works in recent versions?

Some time ago I did have Sintel working as an avatar… but now when I try it again the legs whirl round like mad :slight_smile:


#12

This is an ages old thread. After all “3 years later”, so a thread rises again from the dead. (So appropriately I have flagged this thread)

I suggest checking out the Blender Add on which generates a skeleton that you can use with high fidelity and tries to simplify pretty much everything related to blender.

While it doesnt use the original sintel rig, the skeleton it creates and the tools in there make it abit more straight forward.


#13

The old ones are the best ones @Menithal :-):grinning: Seriously, I think its worth keeping threads open as people find them when looking at previous posts in case someone already has comments on a topic a forum user might be searching for.

Thanks for that pointer… I will explore rigging one day when I get chance. But I actually managed to get a simple .fbx I had from the Blender Sintel Lite through the Edit -> Package Model process to create the .fst and that worked.