# Instancer: Treating Babylon Lite Instances Like Real Application Objects

**URL:** <https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787>\
**Category:** Demos and projects\
**Created:** [July 12, 2026, 11:27pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787 "2026-07-12T23:27:55Z")\
**Posts on this page:** 16\
**Page:** 2

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [July 17, 2026, 10:22am UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/21 "2026-07-17T10:22:17Z")

</div>

> [@Joe\_Kerr](#):
>
> do I see this right: you keep the gltf root node, bake the VATs etc. and everything just works?

Basically, yes 🙂  
Drawcalls are minimal.

---

<div class="post-metadata">

**Author:** ![roland](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/roland/32/38940_2.png) [@roland](https://forum.babylonjs.com/u/roland)\
**Post date:** [July 19, 2026, 7:03am UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/22 "2026-07-19T07:03:56Z")

</div>

@labris `@preact/signals` - I am huge fan of this stuff! 😉

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [July 19, 2026, 1:05pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/23 "2026-07-19T13:05:11Z")

</div>

I hope you’ll like it too - Outline for GLB thin instances - [Thin Instance Outline Gallery](https://instancer.babylonpress.org/examples/thin-instance-outlines/?demo=marble)

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/a/3/a3918895637e4dc1e89e9fea7e9399551cb6fd9c.jpeg)

The outline renderer uses one compact thin-instance draw per attached host and stores only highlighted IDs. Use `createThinInstanceOutliner` for ordinary meshes or raw Babylon Lite thin-instance indices. A host with a live Babylon Lite skeleton automatically shares its joint/weight streams with the outline and mirrors current bone matrices each frame.

The original idea for this outline feature came from [increasinglyHuman/babylon-thin-instance-outline for Babylon.js](https://github.com/increasinglyHuman/babylon-thin-instance-outline). This package implements the approach natively for Babylon Lite and adds its own stable-ID, compact-pool, and live-skeleton workflows.

[https://www.npmjs.com/package/@litools/instancer](https://www.npmjs.com/package/@litools/instancer)

---

<div class="post-metadata">

**Author:** ![roland](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/roland/32/38940_2.png) [@roland](https://forum.babylonjs.com/u/roland)\
**Post date:** [July 19, 2026, 3:45pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/24 "2026-07-19T15:45:20Z")

</div>

Very very cool!

I wish I could switch entirely to WebGPU/Babylon Lite with my Digital Twin implementation, but support on iPhones requires the newest MacOS 26 (not just an updated browser) so unfortunately this would not happen anytime soon.

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [July 23, 2026, 7:42am UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/25 "2026-07-23T07:42:10Z")

</div>

@roland Specially for you 🙂

Instancer for Babylon.js - [https://www.npmjs.com/package/@litools/instancer-babylonjs](https://www.npmjs.com/package/@litools/instancer-babylonjs)

`npm i @litools/instancer-babylonjs`

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [September 23, 2026, 11:06pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/26 "2026-09-23T23:06:13Z")

</div>

Updated to Lite 1.31 with all breaking changes

> **[@litools/instancer](https://www.npmjs.com/package/@litools/instancer)**
>
> Stable IDs, pooling, picking, visibility, metadata, and batch updates for Babylon Lite instances.. Latest version: 0.7.0, last published: an hour ago. Start using @litools/instancer in your project by running \`npm i @litools/instancer\`. There are 0...

> **[@litools/interacter](https://www.npmjs.com/package/@litools/interacter)**
>
> Pointer, click, hover, and drag interaction utilities for Babylon Lite meshes.. Latest version: 0.3.1, last published: 40 minutes ago. Start using @litools/interacter in your project by running \`npm i @litools/interacter\`. There are no other projects...

> **[@litools/annotator](https://www.npmjs.com/package/@litools/annotator)**
>
> Spatial HTML annotations and GPU text labels for Babylon Lite meshes and stable Instancer IDs.. Latest version: 0.3.0, last published: 24 minutes ago. Start using @litools/annotator in your project by running \`npm i @litools/annotator\`. There are no...

---

<div class="post-metadata">

**Author:** ![ComicSans](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/comicsans/32/19314_2.png) [@ComicSans](https://forum.babylonjs.com/u/ComicSans)\
**Post date:** [October 7, 2026, 8:34pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/27 "2026-10-07T20:34:22Z")

</div>

Thanks! Can you also update @litools/instancer peer dependency in babylon-lite-explorer?

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 15, 2026, 8:40pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/28 "2026-10-15T20:40:09Z")

</div>

Done.

> [@Babylon Lite Explorer](https://forum.babylonjs.com/t/babylon-lite-explorer/63697/15):
>
> 0.7.0 - 2026-10-15 Changed Raised the Babylon Lite peer and development baseline to 1.34.0 and the optional Instancer baseline to 0.7.0. Migrated the VAT example from the removed mat4Compose() export to composeMat4(). Removed the environment Y rotation control: SceneContext.envRotationY is no longer public, and setEnvironmentRotation() has no public readback API. Updated integration guides and added [1.34.0 migration notes](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/Fiolent23/newrepos/babylon-lite-inspector/docs/babylon-lite-1.34.0-migration.md). Added regression coverage using current Lite light and material factorie…

---

<div class="post-metadata">

**Author:** ![DRLeria](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/drleria/32/50928_2.png) [@DRLeria](https://forum.babylonjs.com/u/DRLeria)\
**Post date:** [October 15, 2026, 8:51pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/29 "2026-10-15T20:51:12Z")

</div>

I need to start getting my hands on Babylon Lite and try instancer

---

<div class="post-metadata">

**Author:** ![riven04](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/riven04/32/35407_2.png) [@riven04](https://forum.babylonjs.com/u/riven04)\
**Post date:** [November 3, 2026, 8:18pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/30 "2026-11-03T20:18:18Z")

</div>

This is so good!

---

<div class="post-metadata">

**Author:** ![ComicSans](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/comicsans/32/19314_2.png) [@ComicSans](https://forum.babylonjs.com/u/ComicSans)\
**Post date:** [November 3, 2026, 11:14pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/31 "2026-11-03T23:14:34Z")

</div>

Ag

> [@riven04](#):
>
> This is so good!

Agreed. ❤

One thing makes me nervous though. I really appreciate lite’s clean design and commitment to allowing breaking changes when that’s best for the library’s goals. However, I’m quickly becoming dependent on add-on libraries like @litools/instancer, babylon-lite-explorer, and @litools/annotator. I don’t believe they are currently released in a coordinated way with breaking changes to lite.

Is there a path to having a set of “approved” libraries which are updated and re-released within some time horizon of a breaking lite release? Maybe 1-2 weeks? (Look at me volunteering other people’s time! Go me. 🙃)

My alternate approach would be to build in the parts of these libraries that I need, so I’m not dependent on the libraries themselves (or maintaining my own forked versions with patches). This path is consistent with lite’s philosophy of “build what you need”, so I wouldn’t be _too_ disappointed.

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [November 4, 2026, 4:51am UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/32 "2026-11-04T04:51:33Z")

</div>

PRs are always welcome! 🙂

---

<div class="post-metadata">

**Author:** ![riven04](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/riven04/32/35407_2.png) [@riven04](https://forum.babylonjs.com/u/riven04)\
**Post date:** [November 4, 2026, 1:52pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/33 "2026-11-04T13:52:51Z")

</div>

I don’t use lite at the moment (but I’d love to), due to WebGL2 compat requirements. The problem I think with maintaining our own solutions would be that we’d still need to maintain them as Lite udpates with breaking changes, at that point PR’s to the current solution seem more practical.

I hear your pain, but can’t think of another solution lol

---

<div class="post-metadata">

**Author:** ![ComicSans](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/comicsans/32/19314_2.png) [@ComicSans](https://forum.babylonjs.com/u/ComicSans)\
**Post date:** [November 5, 2026, 7:18pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/34 "2026-11-05T19:18:55Z")

</div>

I actually did send a PR, and it got missed. It didn’t bother escalating because I was able to just use my own fork in the meantime. So, maybe part of the solution is just to ensure there’s someone on the other end listening for PRs.

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [November 5, 2026, 7:42pm UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/35 "2026-11-05T19:42:28Z")

</div>

Seems I completely missed your PR 🙂

---

<div class="post-metadata">

**Author:** ![cadguide](https://avatars.discourse-cdn.com/v4/letter/c/a9a28c/32.png) [@cadguide](https://forum.babylonjs.com/u/cadguide)\
**Post date:** [November 6, 2026, 5:54am UTC](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787/36 "2026-11-06T05:54:41Z")

</div>

Wrapping thin-instance matrix buffers behind an object-oriented proxy that supports per-instance raycasting, bounding-box queries, and visibility toggling solves one of the biggest headaches when rendering large mechanical CAD assemblies in Babylon.js!

When we load multi-thousand-part **ISO 10303-21 STEP** assemblies (`NEXT_ASSEMBLY_USAGE_OCCURRENCE` trees) where fasteners, bearings, and brackets repeat hundreds of times, converting repeated B-Rep solids into thin instances cuts draw calls from 4,500+ down to under 80 while keeping individual part picking responsive. Before tessellating and instancing those assemblies, we also parse the STEP header and instance tree using a client-side [ISO 10303 STEP File Header & Assembly Parser](https://cadguide.tools/toolbox/step-file-header-parser) so identical geometry definitions share a single base `Mesh` buffer from the start.

[Previous page](https://forum.babylonjs.com/t/instancer-treating-babylon-lite-instances-like-real-application-objects/63787.md?page=1)
