 			var rootTransform		: Matrix4x4		= _transforms[nodeId];
 			var root				: ISceneNode	= _idToNode[childId];
 			
-			if (rootTransform._hasChanged)
+			if (rootTransform._hasChanged || !_localToWorldTransformsInitialized[nodeId])
 			{
 				rootLocalToWorld.copyFrom(rootTransform);
 				
 				if (nodeId != 0)
 					rootLocalToWorld.append(_localToWorldTransforms[_parentId[nodeId]]);
 				
+				rootTransform._hasChanged = false;
+				_localToWorldTransformsInitialized[nodeId] = true;
 				root.localToWorldTransformChanged.execute(root, rootLocalToWorld);
 			}
 

		}
		
		private function renderingBeginHandler(scene			: Scene,
										  viewport		: Viewport,
										  destination	: BitmapData,
										  time			: Number) : void
		{
			if (_invalidList)
				updateTransformsList();
			
			if (_transforms.length)
			{
				var rootTransform 	: Matrix4x4	= _transforms[0];
				var isDirty			: Boolean	= rootTransform._hasChanged;
				
				if (isDirty)
				{
					_localToWorldTransforms[0].copyFrom(rootTransform);
					rootTransform._hasChanged = false;
				}
				
				updateLocalToWorld();
			}
		}
		
		private function updateLocalToWorld(nodeId : uint = 0) : void

	 */
	public final class TransformController extends AbstractController
	{
		private var _target								: ISceneNode;
		
		private var _invalidList						: Boolean;
		
		private var _nodeToId							: Dictionary;
		private var _idToNode							: Vector.<ISceneNode>
		private var _transforms							: Vector.<Matrix4x4>;
		private var _localToWorldTransformsInitialized	: Vector.<Boolean>;
		private var _localToWorldTransforms 			: Vector.<Matrix4x4>;
        private var _worldToLocalTransforms 			: Vector.<Matrix4x4>;
		private var _numChildren						: Vector.<uint>;
		private var _firstChildId						: Vector.<uint>;
		private var _parentId							: Vector.<int>;
		
		public function TransformController()
		{
