# Thin instances intersection with static objets in the scene

**URL:** <https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922>\
**Category:** Questions\
**Tags:** thininstances\
**Created:** [November 25, 2023, 3:08pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922 "2023-11-25T15:08:22Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bumpy](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bumpy/32/36258_2.png) [@Bumpy](https://forum.babylonjs.com/u/Bumpy)\
**Post date:** [November 25, 2023, 3:08pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922/1 "2023-11-25T15:08:22Z")

</div>

Hello everyone!  
Does anyone know how to calculate thin instances intersection with another static mesh on a scene?  
What im trying to do is filling the scene with thin instances of Box (fill whole scene by its boundingbox) and \*exclude intersecting instances. By excluding I mean set custom attribute, or just turn alpha to 0 on the instance.

How Im trying to reach that:

```auto
    const wall = scene.getMeshByName('wall');
    let count = 0;

    const wallBBOX = wall.getBoundingInfo();
        

    const voxelHalf = voxelSize / 2;
    vox.thinInstanceGetWorldMatrices().forEach((matrix, index) => {
        const x = matrix.m[12];
        const y = matrix.m[13];
        const z = matrix.m[14];
        const maximum = new BABYLON.Vector3(x + voxelHalf, y + voxelHalf, z + voxelHalf);
        const minimum = new BABYLON.Vector3(x - voxelHalf, y - voxelHalf, z - voxelHalf);

        const thinBBox = new BABYLON.BoundingInfo(minimum, maximum, matrix);
        
        
        if (wallBBOX.intersects(thinBBox, false)) {
            vox.thinInstanceSetAttributeAt("color", index, [0, 0, 0, 0]);
            console.log('intersection');
        }
    })

```

---

<div class="post-metadata">

**Author:** ![Bumpy](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bumpy/32/36258_2.png) [@Bumpy](https://forum.babylonjs.com/u/Bumpy)\
**Post date:** [November 25, 2023, 4:07pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922/2 "2023-11-25T16:07:49Z")

</div>

Ok, I gust realized that i was thinking the right way

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/3/e/3e39bc09a50c409f6dd5fbe0fc7626d9edf20d29.png)

Seems like I need to do smth with world matrix so the “instances filling” starts from “scene bounding box minimum”.  
The intersected part has alpha 0 on the picute :).

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/0/9/0935488fcb35589fb6daf14a95a5f16fe5b14fc4.png)

PS. The hole looks weird, curious why I can see all the way through the instances.

---

<div class="post-metadata">

**Author:** ![Bumpy](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bumpy/32/36258_2.png) [@Bumpy](https://forum.babylonjs.com/u/Bumpy)\
**Post date:** [November 25, 2023, 4:45pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922/3 "2023-11-25T16:45:23Z")

</div>

Ok, I made it by adding scene bounding box (x, y, z) for each step of filling instances buffer:

```auto
    let matricesData = new Float32Array(16 * instanceCount);
    let colorData = new Float32Array(4 * instanceCount);
    let collisionData = new Float32Array(instanceCount);

    for (var x = 0; x < _width; x++) {
        // @ts-ignore
        identityMatrix.m[12] = (-size / 2 + ofst * x) + bbox.minimum.x;
  
        for (var y = 0; y < _height; y++) {
        // @ts-ignore
            identityMatrix.m[13] = (-size / 2 + ofst * y) + bbox.minimum.y;
            for (var z = 0; z < _depth; z++) {
            // @ts-ignore
                identityMatrix.m[14] = (-size / 2 + ofst * z) + bbox.minimum.z;

                identityMatrix.copyToArray(matricesData, index * 16);
                
                collisionData[index] = 0;
                
                const r = Math.random();
                const g = Math.random();
                const b = Math.random();
                const alpha = 1;
                new BABYLON.Color4(r, g, b, alpha).toArray(colorData, 4 * index);

                index++;
                col += 0xffffff / instanceCount;
            }
        }
    }

```

---

<div class="post-metadata">

**Author:** ![Bumpy](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bumpy/32/36258_2.png) [@Bumpy](https://forum.babylonjs.com/u/Bumpy)\
**Post date:** [November 25, 2023, 5:31pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922/4 "2023-11-25T17:31:09Z")

</div>

Still curious why my instances (when their alpha turns from 0 to 1) half-transparent?

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/e/7/e7163c81c4d745d3ed865ade4e5c825a01f95c78.png)

---

<div class="post-metadata">

**Author:** ![Bumpy](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/bumpy/32/36258_2.png) [@Bumpy](https://forum.babylonjs.com/u/Bumpy)\
**Post date:** [November 25, 2023, 5:41pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922/5 "2023-11-25T17:41:10Z")

</div>

Looks like there already was the answer.  
[https://forum.babylonjs.com/t/different-transparency-while-using-thin-instances/30574/10](https://forum.babylonjs.com/t/different-transparency-while-using-thin-instances/30574/10)

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [November 27, 2023, 4:50pm UTC](https://forum.babylonjs.com/t/thin-instances-intersection-with-static-objets-in-the-scene/45922/6 "2023-11-27T16:50:44Z")

</div>

Nice job on finding all your answers 🙂
