@@ -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