PDA

View Full Version : Bones - why so slow performance?



RFFL
08-23-2009, 02:41 PM
Hello!

I loaded a rigged character in Lightwave and started to deal with the bones and the system became very slow, almost impossible to deal with it.

The character has about 90 bones...

But I loaded the same character in others softwares and it was way faster and normal performance...

So, has anyone have experimented this when working with bones in LW before?

SplineGod
08-23-2009, 05:37 PM
Its because of the way LW bones work. Im many o ther apps bones are simply pivot points that you assign points to usign weight maps, clusters etc.
In LW bones are actually deformers. When you REST your bones every vertex is effected by every bone. How much each vertex is effected depended upon the bones, rest length, rest orientation and rest position etc etc. This influence can be fruther modifiedd by using the faster bones option (which limits each vertex to being effected by the 4 closest bones), falloff, bone strength, multiply by rest length and any weight maps.
Lots of weight maps, other Vmaps, expressons etc will also slow things down.
The esiest way around the deformation issue is to use lower poly standin characters while animating or lower the bounding box threshold.
Also try turning off show motion paths, show keys in timeline, closing the graph editor.

oobievision
08-24-2009, 05:51 AM
also u can set it to frontface wireframe that helps too

RFFL
08-24-2009, 01:07 PM
Thanks!

So, there must be some advantage of this Bone system be like this. I can't figure yet the reason that it deal with it bones that way.

SplineGod
08-24-2009, 01:15 PM
The advantage is that you dont have to use weight maps or cluster points and go thru the tedious process of assigning them to bones and trying to tweak and tune the influence.
With LW you add the bones, rest them and they work immediately.
I find that in general you get a more natural influence on vertices.

Castius
08-24-2009, 01:53 PM
With that you can interactively adjust bone stretch and rest length to adjust there influence on the mesh. Then once you are are happy with these results. You can swap out your mesh for ANY mesh. Most times you replace it with a low res mesh for performance. But if you have two character with similar proportions you can copy your rig. And replace with the new character mesh. So in the end you only need to do the work once.

You also have muscle flex and joint compensation. These feature can add a lot to your deformation and they basically come free. For example to simulate joint compensation in Maya we add an extra joint between ever joint and constrain it with 50% rotation. This can cause a lot of performance loss on our rigs. Then we add cMuscle system to simulate basic muscles. By the time we are done we cache our rigs on our farm to handle all the complexity. With LW you get these features up front. So performance can drop fast but you get a lot for your investment. It just means you need to plan for the complexity of your characters.

I tested Maya and LW joint performance. With A character with about 100 bones. LW with "faster bones" on was only a few FPS slower. I'd take LWs joints over weight painting any day.

Nemoid
08-24-2009, 01:53 PM
What about the new joints instead? are they faster than current bones? Do they require weights?

Castius
08-24-2009, 02:08 PM
I think they are about the same speed. No they do not require weight maps. As a matter of fact 100% weight maps are not good with joints. You can still use weight maps to limit joints. But I'd use zBones for 100% weighting

Cageman
08-26-2009, 09:25 AM
I did some RnD about a year ago where I was playing with the idea of having an ingame APC driving over a car, realtime in the game-engine. For the car, I ended up in LW and just positioned bones, added, removed, moved around etc without having to paint a single weigth. Then I moved the bones+object into Modeler and used Vertex Paint to autogenerate weights for each bone (simply just using the same settings that I had in Bone properties). I could then transfer it over to Maya for animation, and then back to LW for export into the game-engine.

Doing that rig in Maya would have been a nightmare, because of how joints and weights works in that package.

:)

Stooch
08-27-2009, 08:54 PM
Doing that rig in Maya would have been a nightmare, because of how joints and weights works in that package.

:)



nah, i can think of a few ways to automate that with python. besides why would you want to use bones when you have ncloth... with some good stiffness settings combined with restitution angle you can beat up a car quite good without using a single bone.

Cageman
09-01-2009, 02:09 AM
nah, i can think of a few ways to automate that with python. besides why would you want to use bones when you have ncloth... with some good stiffness settings combined with restitution angle you can beat up a car quite good without using a single bone.

Yeah... but you obviously forgot the fact that I was talking about realtime ingame stuff here and the engine can't read MDDs or Geometrycaches.

EDIT: And, this is an inhouse engine with limited dynamic functions. For our realtime ingame cinematics we have to rely on bones or animated items pre-defined in a 3D-application.