Skip to content

Commit 57c072a

Browse files
committed
fix bug of supporting i3dm code
1 parent 752997b commit 57c072a

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

native~/Runtime/src/UnityPrepareRendererResources.cpp

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,11 @@ void ExtractInstanceDataFromExtMeshGpuInstancing(
15081508
glm::dmat4 instanceTransform = glm::dmat4(1.0);
15091509
instanceTransform = glm::translate(instanceTransform, position);
15101510
instanceTransform *= glm::mat4_cast(rotation);
1511+
1512+
//upside down.
1513+
instanceTransform *= CesiumGeometry::Transforms::Y_UP_TO_Z_UP;
1514+
instanceTransform *= CesiumGeometry::Transforms::Y_UP_TO_Z_UP;
1515+
15111516
instanceTransform = glm::scale(instanceTransform, scale);
15121517

15131518
// Apply node transformation
@@ -1715,19 +1720,17 @@ void* UnityPrepareRendererResources::prepareInMainThread(
17151720
std::vector<UnityEngine::GameObject> intanceObjects;
17161721

17171722
if (isI3dmType) {
1718-
// Extract instance data from models already processed by existing converters
1719-
ExtractInstanceDataFromGltfModel(
1720-
gltf,
1721-
tileTransform,
1722-
instanceData);
1723+
// Extract instance data from models already processed by existing
1724+
// converters
1725+
1726+
::DotNet::UnityEngine::Object::DestroyImmediate(primitiveGameObject);
17231727

1724-
intanceObjects.push_back(primitiveGameObject);
1728+
ExtractInstanceDataFromGltfModel(gltf, tileTransform, instanceData);
17251729

1726-
for (size_t instanceDataIndex = 1;
1727-
instanceDataIndex < instanceData.size();
1730+
for (size_t instanceDataIndex = 0;
1731+
instanceDataIndex < instanceData.size() / mesh.primitives.size();
17281732
++instanceDataIndex) {
17291733

1730-
int64_t primitiveIndex = &primitive - &mesh.primitives[0];
17311734
UnityEngine::GameObject intanceGameObject(System::String(
17321735
"Mesh " + std::to_string(instanceDataIndex) +
17331736
" Primitive " +
@@ -1753,7 +1756,7 @@ void* UnityPrepareRendererResources::prepareInMainThread(
17531756

17541757
if (!instanceData.empty() && meshes.Length() != 0) {
17551758
// Using the first mesh (i3dm is an instance of the same model)
1756-
UnityEngine::Mesh baseMesh = meshes[0];
1759+
UnityEngine::Mesh baseMesh = meshes[primitiveIndex];
17571760

17581761
UnityEngine::Material opaqueMaterial =
17591762
tilesetComponent.opaqueMaterial();
@@ -1842,11 +1845,6 @@ void* UnityPrepareRendererResources::prepareInMainThread(
18421845
material,
18431846
matList);
18441847

1845-
1846-
UnityEngine::MeshFilter meshFilter =
1847-
pModelGameObject->AddComponent<UnityEngine::MeshFilter>();
1848-
meshFilter.sharedMesh(baseMesh);
1849-
18501848
// For backwards compatibility.
18511849
if (metadataComponent != nullptr) {
18521850
metadataComponent.NativeImplementation().addMetadata(

0 commit comments

Comments
 (0)