protected void ProcessNode(Node node) { }
/// <summary> /// Recursively converts a node, all of its children and all of its meshes /// </summary> void ProcessNode(Node node, Matrix parentGlobalRotation) { // mirror all base vectors at the local Z axis node.Transformation.M31 = -node.Transformation.M31; node.Transformation.M32 = -node.Transformation.M32; node.Transformation.M33 = -node.Transformation.M33; node.Transformation.M34 = -node.Transformation.M34; // now invert the Z axis again to keep the matrix determinant positive. // The local meshes will be inverted accordingly so that the result should look just fine again. node.Transformation.M13 = -node.Transformation.M13; node.Transformation.M23 = -node.Transformation.M23; node.Transformation.M33 = -node.Transformation.M33; node.Transformation.M43 = -node.Transformation.M43; // continue for all children foreach (var child in node.Children) { ProcessNode(child, parentGlobalRotation * node.Transformation); } }
protected void FindInstancedMesh(Node node) { }