Just to add to this. A friend compared it with Unity3D. Good to know it’s also crippling Unity. Although not as bad as Blender.
This could be a thing to enhance even further in Blender. I’m not sure how yet but scenegraph parsing is one of those tasks which could be enhanced using threads or some more clever math.
in the SG_Node class:
void SG_Node::UpdateWorldData(double time, bool parentUpdated)
if (UpdateSpatialData(GetSGParent(),time,parentUpdate d))
// to update the
// The node is updated, remove it from the update list
// update children's worlddata
for (NodeList::iterator it = m_children.begin();it!=m_children.end();++it)
That could be divided over cpu’s or even the gpu. Can’t tell if this could be done threadsafe just like that but perhaps it can. Since a tree of objects always has just one parent there’s never data memory mixing. So the tree can be parsed safely. Every child will be calling this function it self. The ActivateUpdateTransformCallback() calls the update function which is set as a callback but I can’t find just yet what function this is. Oh well, just a thought, perhaps someone with more insight in the scenegraph knows better.