diff --git a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp index bf2a05fcc..c6545449b 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp @@ -491,7 +491,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.Positions.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.Positions[i] = ToVector3(vertices[i + firstVertexOffset]); + mesh.Positions.Get()[i] = ToVector3(vertices[i + firstVertexOffset]); } // Indices (dummy index buffer) @@ -503,7 +503,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.Indices.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.Indices[i] = i; + mesh.Indices.Get()[i] = i; } // Texture coordinates @@ -512,7 +512,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.UVs.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.UVs[i] = ToVector2(uvs[i + firstVertexOffset]); + mesh.UVs.Get()[i] = ToVector2(uvs[i + firstVertexOffset]); } if (data.ConvertRH) { @@ -537,14 +537,14 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.Normals.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.Normals[i] = ToVector3(normals[i + firstVertexOffset]); + mesh.Normals.Get()[i] = ToVector3(normals[i + firstVertexOffset]); } if (data.ConvertRH) { // Mirror normals along the Z axis for (int32 i = 0; i < vertexCount; i++) { - mesh.Normals[i].Z *= -1.0f; + mesh.Normals.Get()[i].Z *= -1.0f; } } } @@ -559,14 +559,14 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.Tangents.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.Tangents[i] = ToVector3(tangents[i + firstVertexOffset]); + mesh.Tangents.Get()[i] = ToVector3(tangents[i + firstVertexOffset]); } if (data.ConvertRH) { // Mirror tangents along the Z axis for (int32 i = 0; i < vertexCount; i++) { - mesh.Tangents[i].Z *= -1.0f; + mesh.Tangents.Get()[i].Z *= -1.0f; } } } @@ -614,7 +614,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.LightmapUVs.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.LightmapUVs[i] = ToVector2(lightmapUVs[i + firstVertexOffset]); + mesh.LightmapUVs.Get()[i] = ToVector2(lightmapUVs[i + firstVertexOffset]); } if (data.ConvertRH) { @@ -636,7 +636,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb mesh.Colors.Resize(vertexCount, false); for (int i = 0; i < vertexCount; i++) { - mesh.Colors[i] = ToColor(colors[i + firstVertexOffset]); + mesh.Colors.Get()[i] = ToColor(colors[i + firstVertexOffset]); } } @@ -732,13 +732,13 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb blendShapeData.Vertices.Resize(shape->getVertexCount()); for (int32 i = 0; i < blendShapeData.Vertices.Count(); i++) - blendShapeData.Vertices[i].VertexIndex = i; + blendShapeData.Vertices.Get()[i].VertexIndex = i; auto shapeVertices = shape->getVertices(); for (int32 i = 0; i < blendShapeData.Vertices.Count(); i++) { - auto delta = ToVector3(shapeVertices[i]) - mesh.Positions[i]; - blendShapeData.Vertices[i].PositionDelta = delta; + auto delta = ToVector3(shapeVertices[i]) - mesh.Positions.Get()[i]; + blendShapeData.Vertices.Get()[i].PositionDelta = delta; } auto shapeNormals = shape->getNormals(); @@ -749,7 +749,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb if (length > ZeroTolerance) delta /= length;*/ auto delta = Vector3::Zero; // TODO: blend shape normals deltas fix when importing from fbx - blendShapeData.Vertices[i].NormalDelta = delta; + blendShapeData.Vertices.Get()[i].NormalDelta = delta; } } } diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp index 85d0a328c..e9d14da32 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp @@ -718,7 +718,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op // Remove blend shape vertices with empty deltas for (int32 i = blendShape.Vertices.Count() - 1; i >= 0; i--) { - auto& v = blendShape.Vertices[i]; + auto& v = blendShape.Vertices.Get()[i]; if (v.PositionDelta.IsZero() && v.NormalDelta.IsZero()) { blendShape.Vertices.RemoveAt(i); @@ -739,7 +739,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op int32 rootIndex = -1; for (int32 i = 0; i < data.Skeleton.Nodes.Count(); i++) { - const auto idx = data.Skeleton.Nodes[i].ParentIndex; + const auto idx = data.Skeleton.Nodes.Get()[i].ParentIndex; if (idx == -1 && rootIndex == -1) { // Found root @@ -767,7 +767,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op Swap(data.Skeleton.Nodes[rootIndex], data.Skeleton.Nodes[prevRootIndex]); for (int32 i = 0; i < data.Skeleton.Nodes.Count(); i++) { - auto& node = data.Skeleton.Nodes[i]; + auto& node = data.Skeleton.Nodes.Get()[i]; if (node.ParentIndex == prevRootIndex) node.ParentIndex = rootIndex; else if (node.ParentIndex == rootIndex) @@ -775,7 +775,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op } for (int32 i = 0; i < data.Skeleton.Bones.Count(); i++) { - auto& bone = data.Skeleton.Bones[i]; + auto& bone = data.Skeleton.Bones.Get()[i]; if (bone.NodeIndex == prevRootIndex) bone.NodeIndex = rootIndex; else if (bone.NodeIndex == rootIndex) @@ -845,7 +845,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op // Apply import transform on root bones for (int32 i = 0; i < data.Skeleton.Bones.Count(); i++) { - auto& bone = data.Skeleton.Bones[i]; + auto& bone = data.Skeleton.Bones.Get()[i]; if (bone.ParentIndex == -1) { bone.LocalTransform = importTransform.LocalToWorld(bone.LocalTransform); @@ -921,8 +921,6 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op } reorder_nodes_and_test_it_out! #endif - - // TODO: remove nodes that don't have bone attached and all child nodes don' have any bones } else if (options.Type == ModelType::Animation) {