👉 See also the "How to use VRM models" section below.
📢The "WithThreeJS" extension has been removed from the list of community extensions available directly within GDevelop.
Instead, the new "Advanced 3D Features" extension is now included in the community extension list and can be installed directly from the GDevelop editor.
The "WithThreeJS" extension is still supported and available for download from this page.
⚠️ If you receive a black screen or a warning when using the WithThreeJS extension in GDevelop v5.3 or later, please see this page.
About the warning "Please add an Enable WithThreeJS object to a scene."
This extension is for creating advanced 3D scenes. It is not compatible with GDevelop Built-in 3D.
| 3D Features | WithThreeJS | Built-in 3D |
|---|---|---|
| Editor integration | ⛅ | 🌞 |
| 3D Collision detection | 🌞 | 🌞 (Extension) |
| 3D Raycast | 🌞 | 🌞 (Extension) |
| 3D Light | 🌞 | 🌞 (My extension) |
| 3D Shadow | 🌞 | 🌞 (My extension) |
| 3D Sound | 🌞 | ☔ |
| 3D Background image | 🌞 | 🌞 (My extension) |
| Environment map | 🌞 (Not HDR) | ☔ |
| 3D Sprite animation | 🌞 | 🌞 (Extension) |
| 3D Particles | ☔ | 🌞 (Extension) |
| 3D Physics engine | ☔ | 🌞 |
| 3D Tween | ⛅ | ⛅ (Extension) |
| Multiple 3D Cameras | 🌞 | ☔ |
| Grouping 3D Objects | 🌞 | ☔ |
| Parent-child structure | 🌞 | ☔ |
| Morph target | 🌞 | 🌞 (My extension) |
| 3D Helpers | 🌞 | 🌞 (My extension) |
| Post effect | ☔ | ⛅ |
| Supported 3D formats | GLB, OBJ, VRM | GLB |
| Supported 3D Animation formats | Mixamo (FBX ASCII), VRMA | ☔ |
Import the downloaded "WithThreeJS0.0.0.json" file into your project.
There is no manual at this time. Please refer to the following video.
ℹ️ For more information about Behaviors, see "About Behaviors" below.
There are more videos on my YouTube channel.

GDevelop units are pixels and 3D scene units are meters.

The camera shoots in the local negative Z axis direction.

This extension comes with very powerful behaviors.
The various projection behaviors project 2D objects onto 3D objects. When you create or move a 2D object, the 3D object changes in the same way.
The features supported by behaviors vary. Please also check the summary below.
ℹ️ Many various 3D actions have no effect on objects using behaviors. Because the 2D object values take precedence.
ℹ️ Do not add more than one of these behaviors to an object.
Please refer to the following video.
This extension comes with custom objects.
Custom Objects are similar to Projection Behaviors, but support different features.
Please also check the summary below.
👣Where did the "Create 3D Model From Built-In 3D Model" action go?

With an updated GDevelop interface, the action now appears when you select a 3D model.
⚠️3D models often have a parent-child structure. Therefore, if you want to use Bounding Box Collision, you need to know the ID (name) of the mesh that has the bounding box in advance.
The simplest solution is to add the 3D Model as a child of the 3D Box.


For more details, please seeWhat is VRM and how to make it.
👟 Steps
ℹ️ Note
It has some rules and restrictions.
ℹ️ Entering large OBJ strings directly into actions slows down GDevelop. I recommend using Javascript events as shown in the video.
From v0.3.2, "Alpha Channel Test" can be set in "Create 3D Sprite", "Create 3D Plane", "Create 3D Model" and "3D Sprite Projection".
This is a non-rendered transparency reference value.

0 to 1 (Recommended values: 0 or 0.5)
ℹ️ If the texture is opaque, you can set the value to 0 to reduce the drawing load.
To enable Skybox, you need to set an equirectangular image with a 2:1 aspect ratio.

As this image shows, you may not always get the values you expect from the rotation.

There is more than one way to represent any given rotation using XYZ (Euler angles). Comparing just one of the XYZ values of a rotation can be confusing.
The simplest solution is to use different variables for each XYZ to manage the rotation.
Example of limiting rotation:
Please refer to "Simple FPS Example" or "Third-person Perspective Example".
For more information on this problem, you may want to search for explanations of Euler and Quaternion by Unity, Unreal Engine, etc.
ℹ️3D Sprite do not support 3D Lights.
ℹ️ Lighting and drop shadows are different features.
This extension provides real-time shadows.
Real-time shadowing is a heavy process. Therefore, it is recommended to minimize the shadow generation range.
It is a good idea to move the light along with the camera so that shadows are generated only where necessary.
ℹ️3D Sprite do not support 3D Shadows.
ℹ️Many game engines often use pre-baked shadows and real-time shadows together, but with this extension it is difficult to use baked shadows and real-time shadows together due to limitations of Three.js.
For examples of adjusting 3D light properties,see this page.


ℹ️ Note that the Oriented Bounding Box is generated based on the unrotated state of the 3D object.


"WithThreeJsExtensionExamples0.0.0.zip" is the examples project.
Open "game.json" in GDevelop.
List of examples included in the project.
ℹ️ The "Projection Scale" and "View Mode" properties that affect Behavior can be set in the "Create 3D Scene" action.
Supported: position, animation, flip, scale, opacity, blend mode
Supported: position, angle, animation, flip, scale, opacity, blend mode
Supported: position, angle, image offset, opacity, (blend mode)
Supported: position, angle, image offset, opacity, (blend mode)
Supported: position, angle
Supported: position, angle
The 3D Box can have different textures on its 6 faces.
Supported: position, angle, opacity, (blend mode)
⚠️ This object is high load.
This custom object always enables built-in 3D rendering.
Click here for instructions on how to use it.
gd.games (Liluo.io) /Google Play
Copyright 2010-2023 Three.js Authors
https://github.com/mrdoob/three.js/blob/dev/LICENSE
In the future I would like to add many features to this extension. (e.g. particle system, physics, etc.)
However, developing this extension requires a lot of time.
Currently, I'm doing development in between jobs, but if many people support me, I will be able to devote more time to the development.
If you enjoy this extension, please consider downloading the Example project file to maintain this extension. (The Example project file will surely help you.😉)
| Updated | 3 days ago |
| Status | In development |
| Category | Other |
| Platforms | HTML5 |
| Rating | Rated 5.0 out of 5 stars (54 total ratings) |
| Author | PANDAKO |
| Made with | GDevelop |
| Tags | 3D,Pixel Art,Retro |
| Code license | MIT License |
Click download now to get access to the following files:
Log in with itch.io to leave a comment.
is there some kind of limit on the 3d lights? if i have 10 lights sometimes 13, with shadows turned on it makes everything in the layer vanish, so if i have all my props on "base layer" and i add the lights to base layer , then the entire layer becomes invisible until i turn off the shadows on at least 1 light , makeing it less than 10 lights with shadows, it seems 10 or 13 seems to be a max on 3d lights
Pandako can you add post processing screen shaders to extension, shaders like bloom, blur, chromatic aberration, color grading; if you add shaders to the next extension version the gdevelop will be able to create better graphics; other sugestion is the creations extra extensions like more advance camera extensions (third person with mouse look is one example of sugestions), that will help to create games more easy and speed in gdevelop 3d. Thanks for this amazing extension and for helped to made the official gdevelop add 3d support.
Hey, thanks for the extension Pandanko! I have a big-ish question. Is there any way that 2d Pixi filters can be applied to a 3d scene? Some filters/effects look ok on a 2d sprite covering the camera view, but objects behind the filter do not have the filter applied. Works ok for things like light rays but does not work for things like blur. The 2d sprite will be blurred but not anything behind it. I'm specifically trying to apply a tilt-shift filter to the cameras view, which is moveable, not on the objects individually.
Thanks either way, 3 j's is super dope!
Awesome extension! I am currently having trouble with the 3D lights however. When i delete the light object, the light stays in place of the object as shown in the screenshot.
Also i know this isn't relevant to this extension but i know you developed it, the Mouse Pointer Lock extension doesn't seem to work on desktop and (chromium-based) browser version of GDevelop, only in Firefox.
Hope to see more improvements to the extension in the future!
I don't know how, but trying to reproduce the bug in a new scene/project and now it works as intended when i toggle visibility of the light object. I honestly have no clue what i did wrong since both scene events look identical.
The only difference i made is i created the "light" boolean variable using "At the beginning of the scene" and made it a scene variable instead of a global variable.
I can maybe send the project file to you to check it out yourself.
>Do you mean the helper is not deleted? The helper is for debugging and will not be removed.
No, the bug happens when the helper is on or off. Doesn't matter.