 			{
 				var localToWorld 	: Matrix4x4	= _localToWorldTransforms[nodeId];
 				var numChildren		: uint		= _numChildren[nodeId];
-				var isDirty			: Boolean	= localToWorld._hasChanged;
 				var firstChildId	: uint		= _firstChildId[nodeId];
 				var lastChildId		: uint		= firstChildId + numChildren;
+				var isDirty			: Boolean	= localToWorld._hasChanged ||
+												  !_localToWorldTransformsInitialized[nodeId];
 				
 				localToWorld._hasChanged = false;
+				_localToWorldTransformsInitialized[nodeId] = true;
 				
 				for (var childId : uint = firstChildId; childId < lastChildId; ++childId)
 				{
 					var childTransform		: Matrix4x4		= _transforms[childId];
 					var childLocalToWorld	: Matrix4x4		= _localToWorldTransforms[childId];
-					var childIsDirty		: Boolean		= isDirty || childTransform._hasChanged;
+					var childIsDirty		: Boolean		= isDirty || childTransform._hasChanged
+						|| !_localToWorldTransformsInitialized[childId];
 					
-					if (childIsDirty)
+					if (childIsDirty || _localToWorldTransformsInitialized[childId])
 					{
 						var child	: ISceneNode	= _idToNode[childId];
 						

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


				_idToNode[nodeId] = node;
				_transforms[nodeId] = node.transform;
				_localToWorldTransforms[nodeId] = new Matrix4x4().lock();
				_localToWorldTransformsInitialized[nodeId] = false;

				if (group)
				{
					var numChildren 	: uint = group.numChildren;
