# GLB ScreenShoter

**URL:** <https://forum.babylonjs.com/t/glb-screenshoter/58325>\
**Category:** Demos and projects\
**Created:** [May 9, 2025, 1:54am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325 "2025-05-09T01:54:36Z")\
**Posts on this page:** 13\
**Page:** 1

<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:** [May 9, 2025, 1:54am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/1 "2025-05-09T01:54:36Z")

</div>

> **[GLB ScreenShoter](https://screenshoter.babylonpress.org/)**

When you’re dealing with hundreds or even thousands of GLB files , manually uploading and capturing screenshots becomes inefficient and time-consuming. GLB ScreenShoter batch processing automates this workflow, enabling:

- Time savings: Generate hundreds of previews in minutes.
- Consistency: Apply uniform lighting, camera angles, and resolution across all outputs.

Upload and preview your 3D models. Simply drag and drop GLB files or click to select them. A screenshot will be automatically generated for each model. One may change background color, opacity and screenshot size in Settings.Download reports in HTML or PDF or zip-archive with all screenshots.

This tool is particularly useful for developers, designers, and content creators who need to quickly generate preview images of 3D models without setting up a full 3D engine environment.

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

Whether you’re preparing assets for a game, showcasing products online, or building a portfolio, this tool can save time and streamline your creative process.

More settings and functions will follow, suggestions are welcome!

---

<div class="post-metadata">

**Author:** ![inteja](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/inteja/32/22553_2.png) [@inteja](https://forum.babylonjs.com/u/inteja)\
**Post date:** [May 9, 2025, 3:29am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/2 "2025-05-09T03:29:56Z")

</div>

Great work @labris! Works well.

---

<div class="post-metadata">

**Author:** ![AlitarSemiramis](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/alitarsemiramis/32/49920_2.png) [@AlitarSemiramis](https://forum.babylonjs.com/u/AlitarSemiramis)\
**Post date:** [May 9, 2025, 3:38am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/3 "2025-05-09T03:38:12Z")

</div>

This is pretty cool! Agreed that having an easy way to generate consistent screenshots (size, angle, background…) across models is a really nice time saver 🙂

---

<div class="post-metadata">

**Author:** ![Joe\_Kerr](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/joe_kerr/32/39017_2.png) [@Joe\_Kerr](https://forum.babylonjs.com/u/Joe_Kerr)\
**Post date:** [May 9, 2025, 7:56am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/4 "2025-05-09T07:56:51Z")

</div>

Definitively useful 👍 I indeed have reached the point where I lose track of the 3d models in my current project 😮

So fyi, my use case is cataloging assets.

* * *

Got some feature requests if you do not mind:

1. Allow directories to be dragged in ([apparently this is possible according to google](https://stackoverflow.com/questions/3590058/does-html5-allow-drag-drop-upload-of-folders-or-a-folder-tree/53058574#53058574)). Currently, I have models spread over 37 (sub-)dirs. So it would be very useful if I could drag and drop the root folder.
2. Allow filtering of file name (regex?). E.g.: For some models I use an actualModel.glb and anActualModel\_ext.glb. The latter contains stuff like simplified bounding boxes or destruction cells for which I do not need a screenshot. (_This is only useful when drag and dropping directories_)
3. Display model directories as well or even display in actual categories.  
3.1 Embed the model path (or maybe only the last 2 subdirs, idk) in the screenshot file name  
_Points 3 are just for convenience so that the web view or the file name shows you instantly where the model is located._

---

<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:** [May 9, 2025, 2:52pm UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/5 "2025-05-09T14:52:33Z")

</div>

> [@Joe\_Kerr](#):
>
> I indeed have reached the point where I lose track of the 3d models

That was my initial motivation 🙂

Sure, directory handling and reporting is possible. I believe I’ll add a separate mode for it, in order not to deal with some browsers which have poor support (or its own syntax) for directories dragging.  
Also, the report in this case should be done a bit in another way to be more informative.

Later I am planning to add some model stats, currently testing this feature.

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

---

<div class="post-metadata">

**Author:** ![Joe\_Kerr](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/joe_kerr/32/39017_2.png) [@Joe\_Kerr](https://forum.babylonjs.com/u/Joe_Kerr)\
**Post date:** [May 11, 2025, 10:31am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/6 "2025-05-11T10:31:10Z")

</div>

Is it too early for bug reports? Sometimes the preview pics seem to be unlit (or so):

 ![Screenshot 2025-05-11 122119](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/3/2/32dc87a300097cadec70aa969f0ac79d4aff9972.png)

In case of the 3 wooden planks, the 3rd one should like the other two. If I click the preview, it renders just fine.

I should mention that I drag&dropped the whole directory of 41 files. Maybe some sort of shader readiness issue or so?

There also is some console warnings:

> **console log**
>
> ```auto
> WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. index-COPEEpL7.js:282:24587
> BJS - [12:15:37]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:15:39]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:15:40]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:41]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:42]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> Loading progress: 100.00% index-COPEEpL7.js:6739:243398
> BJS - [12:15:43]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:44]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:45]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> Loading progress: 100.00% index-COPEEpL7.js:6739:243398
> BJS - [12:15:47]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:15:48]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> Loading progress: 100.00% index-COPEEpL7.js:6739:243398
> BJS - [12:15:50]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:15:51]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:52]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:53]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:15:54]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:55]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:56]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:15:57]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:58]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:15:59]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:16:01]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:16:02]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:16:04]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:16:05]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:16:06]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:16:07]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> BJS - [12:16:08]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:16:09]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> BJS - [12:16:10]: Babylon.js v6.49.0 - WebGL2 2 index-COPEEpL7.js:274:1482
> WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. index-COPEEpL7.js:282:24587
> BJS - [12:17:05]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Z level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Z level 0 is incurring lazy initialization.
> WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. index-COPEEpL7.js:282:24587
> BJS - [12:17:32]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Z level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Z level 0 is incurring lazy initialization.
> WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. index-COPEEpL7.js:282:24587
> BJS - [12:17:53]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Z level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Z level 0 is incurring lazy initialization.
> WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. index-COPEEpL7.js:282:24587
> BJS - [12:18:00]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> Loading progress: 100.00% index-COPEEpL7.js:6739:243398
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Z level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Z level 0 is incurring lazy initialization.
> WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. index-COPEEpL7.js:282:24587
> BJS - [12:19:51]: Babylon.js v6.49.0 - WebGL2 index-COPEEpL7.js:274:1482
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_X level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Y level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_POSITIVE_Z level 0 is incurring lazy initialization.
> WebGL warning: generateMipmap: Tex image TEXTURE_CUBE_MAP_NEGATIVE_Z level 0 is incurring lazy initialization.
> 
> ​
> 
> ```

---

<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:** [May 11, 2025, 1:51pm UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/7 "2025-05-11T13:51:03Z")

</div>

Thanks, I think I’ll add more readiness checks to be sure 🙂

---

<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:** [May 11, 2025, 6:56pm UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/8 "2025-05-11T18:56:23Z")

</div>

Let me know if it is better now 🙂 - [https://screenshoter.babylonpress.org/](https://screenshoter.babylonpress.org/)

---

<div class="post-metadata">

**Author:** ![Joe\_Kerr](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/joe_kerr/32/39017_2.png) [@Joe\_Kerr](https://forum.babylonjs.com/u/Joe_Kerr)\
**Post date:** [May 12, 2025, 11:42am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/9 "2025-05-12T11:42:15Z")

</div>

Ohoh 😮 It is still not working. 🥺 I tried the same files. It is different files though that look “unlit” and the display order is different, too (if that matters). The console log is similar, too.

* * *

Did some experimentaitons: I selected the 3 wood plank models and drag&dropped them into your app. I repeated this serveral times. I reloaded the browser in between trials. It consistently displayed the 1st plank (15x10) correct but the other 2 (15x25, 30x50) looked unlit again. Here is the files:  
[woodPlankModels.zip](https://forum.babylonjs.com/uploads/short-url/hg353hkAUXt4aOria55aAaqPc2u.zip) (3.8 KB)

Let me know if I can do anything else.

* * *

Wait, come to think of it: could it be something with the [uv channel](https://doc.babylonjs.com/typedoc/classes/BABYLON.Texture#coordinatesindex)? Babylon defaults to the 1st. I use the 2nd channel for all my models. Hm, but then why do some models work…

---

<div class="post-metadata">

**Author:** ![CodingCrusader](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/codingcrusader/32/29857_2.png) [@CodingCrusader](https://forum.babylonjs.com/u/CodingCrusader)\
**Post date:** [May 12, 2025, 12:12pm UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/10 "2025-05-12T12:12:09Z")

</div>

looks good to me

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/6/2/62f813d2560a0f7f514d837a9c47951c1a6ee083.png)

[3D Models Report.zip](https://forum.babylonjs.com/uploads/short-url/bWZMR2zqmXVcSZLQV9A3OJiA9wO.zip) (73.7 KB)

---

<div class="post-metadata">

**Author:** ![CodingCrusader](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/codingcrusader/32/29857_2.png) [@CodingCrusader](https://forum.babylonjs.com/u/CodingCrusader)\
**Post date:** [May 12, 2025, 12:12pm UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/11 "2025-05-12T12:12:37Z")

</div>

I am using the Edge Browser.

---

<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:** [May 12, 2025, 1:24pm UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/12 "2025-05-12T13:24:05Z")

</div>

The same result for me with Chrome.  
I believe this is Firefox issue…  
But probably it is a good idea to update Babylon version and have a look.  
I’ll do some update soon.

---

<div class="post-metadata">

**Author:** ![Joe\_Kerr](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/joe_kerr/32/39017_2.png) [@Joe\_Kerr](https://forum.babylonjs.com/u/Joe_Kerr)\
**Post date:** [May 13, 2025, 8:47am UTC](https://forum.babylonjs.com/t/glb-screenshoter/58325/13 "2025-05-13T08:47:13Z")

</div>

Thanks guys! Chrome it is 🙂
