This add-on will not be ported to SDK V2 (but an LTS version of C3 that is compatible with it will be available for use for quite a while).
I am working on a new, similar addon with more capabilities, which is working with SDK V2 now. I will announce here when it is ready (it will take a bit to get to the same feature set, but it already supports PBR texture and normal maps.)
I am slowly working on this in my spare time. It is open source, so others can work on it. I need to update the latest state to get it working again in C3. I did add shadowmaps to it, in my test environment. However, not yet integrated with C3 addon yet.
Hey there! Thanks for the plugin, it has opened the doors to a lot of cool opportunities. However, I'm having issues after I updated to the newest version of construct 3, and can't seem to find any working solutions.
Issue A: After updating, objects in the project stopped using opacity values. Meaning any opacity related events, like the 'Fade' built-in addon just don't work. Any objects with a set opacity are also now just set to 100 aswell. For this, I am using both the latest versions of construct and the addon, and have tested on multiple browsers/machines with a friend.
I really only noticed the issue after I tried to export as an html, as before that I believe it was working as intended. However, now the project is bricked unless I find a fix for this.
Issue B: In trying to get around this, I backported construct to beta r448. Opacity works in this version however any layout with a '3D Object' opens in debug to a black screen, reading 0 fps. I've tried using both r448 and r447, given they are both versions I've used while making the game. I've also tried multiple versions of this addon (specifically 2-77-0, 2-76-5, 2-76-2), all of which cause the 0 fps bug.
If any more information is needed, I am happy to send whatever. I don't really know how to read logs in construct, so that's the one place I haven't checked. Any help with this. or if there is a easy fix I've missed, would be much appreciated. Thanks!
The issue is that C3 recently changed how their webgl2 renderer handled opacity and color and they changed how the vertex and fragment shader interfaced with it. In the end it will likely be a good thing, since it could improve performance for rendering standard C3 objects with varying opacity and color.
I will take a look tonight and see if there are changes possible in 3DObject to support this.
Hi! Thanks for the timely fix. I'm personally still having issues with opacity after updating however.
Layouts without 3DObjects don't render opacity, alongside one's that have 3DObjects. Maybe I'm doing something wrong with the static geometry, but I can't find the setting outside of setting it at runtime on start of layout (which still doesn't fix the issue).
(edit: Just tested BIN712's example layout again after updating and can confirm it does not work there either, both without and with setting the 3DObject's static geometry at runtime)
Hi! First of all, I want to thank @kindeyegames for such a great tool — thank you, you are the best!!!
I have a problem with enemies. Specifically, when there are two or more enemies — if I create just one enemy, all animations play correctly as intended. But if there are two or more enemies on the scene, an animation like death for example, only plays on one model. "for each" doesn't work in this case.
The gist is he doesn't want to do more development on 3d.
That error looks like webgl2 is not available. Can you show some of the earlier parts of the log where it shows the C3 initialization and what renderer c3 is using?
local.html:1 The powerPreference option is currently ignored when calling requestAdapter() on Windows. See https://crbug.com/369219127Understand this warning
workermain.js:1 Uncaught (in promise) GPUPipelineError: The fragment input at location 0 doesn't have a corresponding vertex output.
at ValidateInterStageMatching (..\..\third_party\dawn\src\dawn\native\RenderPipeline.cpp:790)
at ValidateInterStageMatching (..\..\third_party\dawn\src\dawn\native\RenderPipeline.cpp:790)
Yes, you can rotate camera around the z axis. I recommend looking at the Construct 3 manual page on the 3DCamera object, check out some of the look at ACEs (you'll need to use math to calculate the rotation)
i love use this plugin. Will there be an update for SDK v2 in the future? because I got a notification like this, in the future if c3 removes the addon sdk v1, will this plugin also develop?
previewWindow.js:1 [C3 preview] Browser opened wrong size popup: wanted 854 x 480, got 854 x 479; resizing to compensate
local.html:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was receivedUnderstand this error
plugin.js:8 opts Object
plugin.js:171 [3DObject] allow gpu skinning
plugin.js:188 [3DObject] shader mikal_frag_light-8 not found
Object3DPlugin @ plugin.js:188Understand this warning
40[.WebGL-0x2b14000d4600] GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.Understand this warning
40[.WebGL-0x2b14000d4600] GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.Understand this warning
plugin.js:47 [3DObject] Dummy UBO for bones created and bound.
instance.js:71 Monkey patching C3 renderer...
instance.js:174 Uncaught (in promise) TypeError: this._ExtendQuadBatch is not a function
at C3.Gfx.WebGLRenderer.Quad3D2 (instance.js:174:12)
at i.Plugins.Shape3D.Instance._DrawFace (runtime.js:1:7650)
at i.Plugins.Shape3D.Instance.Draw (runtime.js:1:5856)
at C3.Instance.Draw (instance.js:1:4154)
at C3.Layer._DrawInstance (layer.js:1:29009)
at C3.Layer._DrawInstanceMaybeWithEffects (layer.js:1:28891)
at C3.Layer._DrawInstances_3DCamera (layer.js:1:27673)
Also just a heads up, I had to regress from 2.74.3 to 2.73 because it wasn't working on mobile. I couldn't get any debug info because I couldn't get the chrome remote dev tools working to peek at the console on mobile
Getting a lot of these now, my layout looks invisible until I switch to a new layout [.WebGL-0x2e4402d20d00] GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.
Possible regression in the latest version (2-75-4), videos no longer show (GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.)
The latest beta broke the plugin, my project won't preview unless I delete the 3d object plugin from my project. I looked at the patch notes, they changed the way that things are rendered in order to be more efficient. The error code:
canvasManager.js:1 Error creating WebGL renderer: Error: Error linking shader program: Types of varying 'vColor' differ between VERTEX and FRAGMENT shaders. FRAGMENT varying vColor does not match any VERTEX varying
3Dobject plugins after 2.71 are not installed on Xiaomi brand phones and remain at 0%. I don't understand exactly what the problem is but I lost this version for some reason. Can you re-install 2.71?
Hi, are there any tips to make the game light when running on mobile, I tried it on Construct3 everything was fine, but when running it on mobile the game became slow
Can I add outlines to the model? I tried adding outlines to the model in blender but it doesn't show up in Construct 3, does the plugin not support that?
Is there a way to increase the limit of model loads during runtime? I'm making a multiplayer game and want players to be able to change models. I can't use "load from prefab instance" because 1) other instances of the player object are treated as extra players and 2) when the host syncs instances to peers, the UIDs are different for peers. My current approach works great except for the one-load runtime limit.
I'm also open to suggestions if you have any ideas! Thanks!
Use a 2d sprite as the main player. So uid never changes. Connect the current model / 3DObject to that 2d sprite. When model changes delete old, create new model and attach it to the original 2d sprite.
In general, I'd also say this is a good game dev pattern, for exactly the reasons you describe. Your model or animated sprite is decoupled from the 'player controller' and you can be more flexible in control vs animation or mode.
Thanks so much for the replies! This worked. I was using a 2d sprite for the controller originally, but I had it in a container with the model for ease of referencing so I couldn't destroy the model without destroying the player controller. Instead of using a container, I added an instance variable to the model representing which 2d player controller it should follow. This way, I can easily destroy and re-create the model without impacting a player's container. Your idea to destroy & create new works just as well as the "reload" I initially wanted.
Is there anyway I can contact you or send you a demo for troubleshooting. I am having trouble rotating a 3d object along its x-axis. It seems to be rotating around it's bounding box (what I've got) instead of the object's centre of origin (what I've wanted).
Hi! I have a question. Is it safe to release a game on Steam using this plugin? I need to clear this up before committing to developing a 3D game with it. Can I develop the game without any issues? My main concern is: once the game is released on Steam, do I need to worry about the SDK? Or once it's released, do I no longer need to worry about the SDK?
Once released SDK does not impact, if you want to change it later after it may impact, but if you just use the version of C3 that you originally developed the game with you will be ok.
Uploaded the latest version addon (2-74-3). Upon launch, a pop up msg saying "Error loading GLTF:TypeError:Cannot read properties of undefined (reading 'length') [via Web Worker]" Any idea what this is?
Thanks Mikal. I reuploaded the files and things are back to normal. However, is there a way to restart an animation. Currently there is only options to speed up, change rate, pause, resume animation. I also noticed upon start of layout, the 3D objects don't appear instantly (delay in spawning). Thanks!
I think you can set animation time, try that. Yes, takes some time to load 3d from files, so the usual solution is to have some kind of loading screen cover the models as they load.
Sorry as I'm a little new to this but where do you set the animation time? I saw set/delete node, blend time, animation speed, rate, pause and resume animation. Since the object keeps looping non-stop, I just want to restart the animation whenever I wanted it to. I'm sorry for being so bad at this. 😔
Hello i have 1 object that load different models depending on character selected. The first time works good but for next selections the character still the same. There is a way to unload that model? Stay even when destroy and create again.
When moving to a new level at some point models stop loading. what could be the problem? with the problem encountered on ios. at first it starts to slow down animations, then after a level or two, stop loading models completely.
I'm testing on iphone 8plus. i don't see any errors in xcode console. cpu consumption within 9-20%, memory usage 50-250 mb, very high energy impact. here is the data i have. plugin version 2.73.0
This happens on iphone when running through remote preview in construct 3. It also happens when running on iphone through xcode. Where can I send the project?
Hello Kindeye the last version of the 3D Object 2.74.3 give a black screen when try to preview on S23 Ultra. Dont know why just on that phone. Not happend with the 2.73.0 and older. Do you know what could be the problem?
This add-on will not be ported to SDK V2 (but an LTS version of C3 that is compatible with it will be available for use for quite a while).
I am working on a new, similar addon with more capabilities, which is working with SDK V2 now. I will announce here when it is ready (it will take a bit to get to the same feature set, but it already supports PBR texture and normal maps.)
Alpha channels are having a weird effect where they clip through geometry behind them. I am using 3d shapes for the smoke effect. the world is a 3d object
Yes, transparency/alpha in 3D, in general, is always a challenge. The better results for simple renderers like C3 are to render in order as much as possible.
Check that the render order is the distance from the camera and all layers are 3D.
If your 'world' is one big GLB/GLTF model, it will be hard to sort properly (near and far meshes will all be part of one model.)
An alternate option is the 'screendoor transparency' in the 3D effect, which has a particular 'look' but will make the rendering support out-of-order rendering better.
Hello, thank you for this great plugin, I have a doubt, when I import a 3d object with the texture embeded appears compresed in game.
If I search the texture manually in construct 3 it shows ok.
The problem is I can´t search the texture for a mesh with multiples materials, also if I set a mesh as "static" with the texture checkbox marked, the texture appears corrupted.
Hi, there! First of all, congratulations and thank you for developing this much needed plugin!
I am creating a 2.5D platformer, but, after implementing some basic functionality to make the camera follow the player, I noticed that the objects on the left or right border of the screen pop in instead of just being there. Any idea of how I can prevent that and make sure that objects within the camera view are always visible?
I've attached a gif to illustrate the issue. The issue is noticeable if you look at the floor close to the horizontal border the player moves toward.
Yes, I used the bounding box scale ACE. Here is a screenshot of a model at the right border, with its bounding box scale set to 2x:
I've noticed that this behavior during runtime is very similar to what happens to 3D models in the layout editor. Here is a gif to illustrate what I mean (I'm scrolling the layout manually with the mouse):
I don't know if seeing the same symptom happening in the layout editor might give us any clue, but I thought I should include this. Perhaps this is caused by some project setting?
Can you send me a simple test project with your models showing this issue? I can take a better look at it that way. Layout debug may not help since you can't use the ACE. I send sendgb.com to share files temporarily.
secondary nodes seem to light weird. notice that when I export just one node (the sprockets here) they light fine on their own. any idea? (the turret is it's own object so is unrelated to the body) It must be related to my object as testing with the clerk model from your examples is fine. But I don't what property of my object could be influenced by the other nodes
there was no lighting but I figured it out. I had a mesh with a material but no texture. and that dark blue in the picture was the same base color of that material.
I don't know why it overrode other materials (and only on nodes not the first one selected) but that was it
i dont know where should i post this comment on 3D object plugin or 3D physic plugin xD, my question is how can i update bounding box while 3D object animation play?
ah that was it. I did not know that was even an export setting. It seems to have been added in Blender 4.0 as this was never an issue in 3.0 up. For anyone else that has this issue. You can find it here in Blender 4.X export settings.
I see what you want to do, this takes some 3d math to do. I will add an ACE to set a quaternion, but then you need to do the 3d math to set it properly. Probably will add next week.
← Return to asset pack
Comments
Log in with itch.io to leave a comment.
Does this plugin support WebGL 1? Or only WebGL2? because I tested my game on another pc and here is what I got (my game is not loading)
Only webgl2. I am curious what type of Pc/OS/Browser/GPU does not support webgl2 these days.
My game was okay, but I recently came back to it, and it is not loading.
Please help.
btw I'm using r449 construct 3
Please update to latest version of 3dobject for later versions of C3.
Thank you. I installed 3DObject-2-78-0.c3addon version and now everything seems to be ok.
Hi, love this addon!
I read this comment of yours......
This add-on will not be ported to SDK V2 (but an LTS version of C3 that is compatible with it will be available for use for quite a while).
I am working on a new, similar addon with more capabilities, which is working with SDK V2 now. I will announce here when it is ready (it will take a bit to get to the same feature set, but it already supports PBR texture and normal maps.)
Any news on when this will be available please?
Phill
I am slowly working on this in my spare time. It is open source, so others can work on it. I need to update the latest state to get it working again in C3. I did add shadowmaps to it, in my test environment. However, not yet integrated with C3 addon yet.
ok thank you! Do I keep a look out on this web site for it?
When it's ready I'll make a dev log post
Hey there! Thanks for the plugin, it has opened the doors to a lot of cool opportunities. However, I'm having issues after I updated to the newest version of construct 3, and can't seem to find any working solutions.

Issue A:
After updating, objects in the project stopped using opacity values. Meaning any opacity related events, like the 'Fade' built-in addon just don't work. Any objects with a set opacity are also now just set to 100 aswell. For this, I am using both the latest versions of construct and the addon, and have tested on multiple browsers/machines with a friend.
I really only noticed the issue after I tried to export as an html, as before that I believe it was working as intended. However, now the project is bricked unless I find a fix for this.
Issue B:
In trying to get around this, I backported construct to beta r448. Opacity works in this version however any layout with a '3D Object' opens in debug to a black screen, reading 0 fps. I've tried using both r448 and r447, given they are both versions I've used while making the game. I've also tried multiple versions of this addon (specifically 2-77-0, 2-76-5, 2-76-2), all of which cause the 0 fps bug.
If any more information is needed, I am happy to send whatever. I don't really know how to read logs in construct, so that's the one place I haven't checked. Any help with this. or if there is a easy fix I've missed, would be much appreciated. Thanks!
I experienced the same thing, working on an old project in the latest version of Construct cause the opacity parameter not working.
here the sample, try to open c3p in R440.2 and than try open in R449
https://drive.google.com/file/d/16rOr9gWgFQnNxtxAPqTpxvEFI96zg75G/view?usp=shari...
Thanks for the example, please try 2-77-3:
https://kindeyegames.itch.io/c3-3dobject-alpha/devlog/993531/fix-opacity-and-col...
perfect! its already solved, thank you for responsive update really appreciate it
The issue is that C3 recently changed how their webgl2 renderer handled opacity and color and they changed how the vertex and fragment shader interfaced with it. In the end it will likely be a good thing, since it could improve performance for rendering standard C3 objects with varying opacity and color.
I will take a look tonight and see if there are changes possible in 3DObject to support this.
https://kindeyegames.itch.io/c3-3dobject-alpha/devlog/993019/fix-opacity-and-col...
Please try this fix (must use static geometry or gpu skinning).
Hi! Thanks for the timely fix. I'm personally still having issues with opacity after updating however.
Layouts without 3DObjects don't render opacity, alongside one's that have 3DObjects. Maybe I'm doing something wrong with the static geometry, but I can't find the setting outside of setting it at runtime on start of layout (which still doesn't fix the issue).
(edit: Just tested BIN712's example layout again after updating and can confirm it does not work there either, both without and with setting the 3DObject's static geometry at runtime)
Any advice or info is much appreciated! Thanks!
Don't set both, only set one or the other. Can you please send a small project with your bug reproduction?
set one also still having issue, here the file https://drive.google.com/file/d/1kiAFi06XVw8UfBAT6qsYzgmJwJQgKPL7/view?usp=shari...
Hi! First of all, I want to thank @kindeyegames for such a great tool — thank you, you are the best!!!
I have a problem with enemies. Specifically, when there are two or more enemies — if I create just one enemy, all animations play correctly as intended. But if there are two or more enemies on the scene, an animation like death for example, only plays on one model. "for each" doesn't work in this case.
Is it possible to make each model play its own animation separately?)
Video demonstration of the problem:
https://drive.google.com/file/d/1RAP7pqHRVGX9iK5E0JA5SnjUNNBaIuTv/view?usp=shari...
You might find this interesting, I’m creating a 3D game about mechs in Construct 3. I'll be uploading the development progress on my YouTube:
Looks great! Let us know how it goes.
Yes, each instance can play a different animation. i suspect it is a 'picking' issue in the events.
I see you are already getting a lot of replies about the newest beta builds.
This is the one I am getting in Chrome. as for a test project it happens in a blank project with only a 3d object in it.
instance.js:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'bindBuffer')
at Object3DInstance.Tick (instance.js:1:5086)
at Array._tickFunc (sdkInstanceBase.js:1:3226)
at C3.Event.Handler._FireNonCancellable (handler.js:1:2241)
at C3.Event.Dispatcher.dispatchEvent (dispatcher.js:1:970)
at C3.Runtime.Step_AfterPreTick (runtime.js:1:40202)
at C3.Runtime.Tick (runtime.js:1:38223)
at normal (runtime.js:1:3193)
So what is needed in SDK V2 for this to work?
This looks like you are using webgpu not webgl2 for the project.
SDK V2 requests were denied by Ashley.
did he say why?
As for the webgl2 thing. I disabled WebPGU. I assume when it says webgl, it also includes webgl2?
The gist is he doesn't want to do more development on 3d.
That error looks like webgl2 is not available. Can you show some of the earlier parts of the log where it shows the C3 initialization and what renderer c3 is using?
I guess that makes sense. Construct is a 2d engine after all. Still a shame though.
[SW-Preview] Up to date
plugin.js:8 opts
{runtime: C3.Runtime, isSingleGlobal: false, isWorld: true, isRotatable: false, hasEffects: true, …}
plugin.js:171 [3DObject] allow gpu skinning
plugin.js:188 [3DObject] shader mikal_frag_light-8 not found
The powerPreference option is currently ignored when calling requestAdapter() on Windows. See https://crbug.com/369219127
local.html:1 The powerPreference option is currently ignored when calling requestAdapter() on Windows. See https://crbug.com/369219127
runtime.js:1 [C3 runtime] Hosted in worker, rendering with WebGPU [nvidia/lovelace]
instance.js:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'bindBuffer')
at Object3DInstance.Tick (instance.js:1:5086)
at Array._tickFunc (sdkInstanceBase.js:1:3226)
at C3.Event.Handler._FireNonCancellable (handler.js:1:2241)
at C3.Event.Dispatcher.dispatchEvent (dispatcher.js:1:970)
at C3.Runtime.Step_AfterPreTick (runtime.js:1:40202)
at C3.Runtime.Tick (runtime.js:1:38223)
at C3.Runtime.Start (runtime.js:1:19364)
at async C3.Runtime.Init (runtime.js:1:12312)
at async InitRuntime (workermain.js:1:3322)
Tick @ instance.js:1
_tickFunc @ sdkInstanceBase.js:1
_FireNonCancellable @ handler.js:1
dispatchEvent @ dispatcher.js:1
Step_AfterPreTick @ runtime.js:1
Tick @ runtime.js:1
Start @ runtime.js:1
await in Start
Init @ runtime.js:1
await in Init
self.C3_InitRuntime @ runtime.js:1
InitRuntime @ workermain.js:1
await in InitRuntime
HandleInitRuntimeMessage @ workermain.js:1
in this I notice it wants the frag light shader and GPU skinning on. when I enable those I get this error
[C3 preview] Browser opened wrong size popup: wanted 854 x 972, got 854 x 971; resizing to compensate
plugin.js:8 opts Object
plugin.js:171 [3DObject] allow gpu skinning
The powerPreference option is currently ignored when calling requestAdapter() on Windows. See https://crbug.com/369219127Understand this warning
local.html:1 The powerPreference option is currently ignored when calling requestAdapter() on Windows. See https://crbug.com/369219127Understand this warning
workermain.js:1 Uncaught (in promise) GPUPipelineError: The fragment input at location 0 doesn't have a corresponding vertex output.
at ValidateInterStageMatching (..\..\third_party\dawn\src\dawn\native\RenderPipeline.cpp:790)
at ValidateInterStageMatching (..\..\third_party\dawn\src\dawn\native\RenderPipeline.cpp:790)
As i thought - It is webgpu not webgl2, change project settings to not use webgpu.
runtime.js:1 [C3 runtime] Hosted in worker, rendering with WebGPU [nvidia/lovelace]
is it possible to realize the parameter of 3D camera rotation by Z?
Yes, you can rotate camera around the z axis. I recommend looking at the Construct 3 manual page on the 3DCamera object, check out some of the look at ACEs (you'll need to use math to calculate the rotation)
i love use this plugin. Will there be an update for SDK v2 in the future? because I got a notification like this, in the future if c3 removes the addon sdk v1, will this plugin also develop?

no, sdk v2 did not get the requested features to support this addon
Can you send details about your test system (OS, Browser, GPU, C3 version, 3DObject version) and the errors you see in the console?
Thank you for this, please try the latest (2-76-2)
Argh, ok, will take a new approach to this. Thanks for your patience, reports and examples.
When i try open my project in relase 441 or more i always receive black screen in preview. someone also have this problem? Console shows:
[SW-Preview] Up to date
bootPreview.js:105 Registered service worker on https://preview.construct.net/
previewWindow.js:1 [C3 preview] Browser opened wrong size popup: wanted 854 x 480, got 854 x 479; resizing to compensate
local.html:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was receivedUnderstand this error
plugin.js:8 opts Object
plugin.js:171 [3DObject] allow gpu skinning
plugin.js:188 [3DObject] shader mikal_frag_light-8 not found
Object3DPlugin @ plugin.js:188Understand this warning
runtime.js:1 [C3 runtime] Hosted in worker, rendering with WebGL 2 [ANGLE (NVIDIA, NVIDIA GeForce RTX 4070 (0x00002786) Direct3D11 vs_5_0 ps_5_0, D3D11)]
40[.WebGL-0x2b14000d4600] GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.Understand this warning
40[.WebGL-0x2b14000d4600] GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.Understand this warning
plugin.js:47 [3DObject] Dummy UBO for bones created and bound.
instance.js:71 Monkey patching C3 renderer...
instance.js:174 Uncaught (in promise) TypeError: this._ExtendQuadBatch is not a function
at C3.Gfx.WebGLRenderer.Quad3D2 (instance.js:174:12)
at i.Plugins.Shape3D.Instance._DrawFace (runtime.js:1:7650)
at i.Plugins.Shape3D.Instance.Draw (runtime.js:1:5856)
at C3.Instance.Draw (instance.js:1:4154)
at C3.Layer._DrawInstance (layer.js:1:29009)
at C3.Layer._DrawInstanceMaybeWithEffects (layer.js:1:28891)
at C3.Layer._DrawInstances_3DCamera (layer.js:1:27673)
at C3.Layer.Draw (layer.js:1:26158)
at C3.Layout._DrawLayerList (layout.js:1:24177)
at C3.Layout.DrawMain (layout.js:1:23029)
I don't see it on my simple test projects.
If you have a test project for me to try, please share.
i add one GLB model file and nothing more, preview cause black screenexample you can download here: https://drive.google.com/file/d/1MRyHZvYAUpO6FdNsrtlAfDboju97Jbee/view?usp=shari...
Also just a heads up, I had to regress from 2.74.3 to 2.73 because it wasn't working on mobile. I couldn't get any debug info because I couldn't get the chrome remote dev tools working to peek at the console on mobile
which mobile? I am working on something for optimizing mobile now, I'll post, so you can try it later tonight
Getting a lot of these now, my layout looks invisible until I switch to a new layout
[.WebGL-0x2e4402d20d00] GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.
ok, thanks for the report, I will be able to start looking at this in a week. If you have a test project, that could help.
Can you also tell me what version number you are using,
happens both on 440.2 stable and 443 beta
I meant the version of 3DObject, but glad also to see which version of c3. A test project will help me debug also.
Latest version of the 3DO, I reinstalled 2.74.3 and it seems to be working, so I'll stick to this version
Got it, will take a look tomorrow. Thanks for the report.
Try this:
https://kindeyegames.itch.io/c3-3dobject-alpha/devlog/977467/fix-for-unbound-buf...
Possible regression in the latest version (2-75-4), videos no longer show (GL_INVALID_OPERATION: glDrawElements: It is undefined behaviour to have a used but unbound uniform buffer.)
What do you mean by 'videos', can you give more context?
As in the video plugin built into C3. I'll do some more testing to see if I can resolve this
I see, if you have a test project, that will help me debug.
Nevermind, Updated it to the latest version of the addon and it works!
The latest beta broke the plugin, my project won't preview unless I delete the 3d object plugin from my project. I looked at the patch notes, they changed the way that things are rendered in order to be more efficient.
The error code:
canvasManager.js:1 Error creating WebGL renderer: Error: Error linking shader program: Types of varying 'vColor' differ between VERTEX and FRAGMENT shaders. FRAGMENT varying vColor does not match any VERTEX varying
I will see if it can be fixed, it probably can.
3Dobject plugins after 2.71 are not installed on Xiaomi brand phones and remain at 0%. I don't understand exactly what the problem is but I lost this version for some reason. Can you re-install 2.71?
I found the version in my backups, let the comment stand maybe it will help to update somehow
Can you please run this on the phone and send back a couple screencaps of the result (it is typically larger than one screen)
https://webglreport.com/?v=2
https://disk.yandex.com.tr/d/-YrftDogrOdybA
Results when opened on the phone
Hi, are there any tips to make the game light when running on mobile, I tried it on Construct3 everything was fine, but when running it on mobile the game became slow
Try lower poly, try worker animation, try lower animation rate.
Try gpu skinning, try static geometry
Can I add outlines to the model? I tried adding outlines to the model in blender but it doesn't show up in Construct 3, does the plugin not support that?
it doesn't support blender shaders, you can try playing with C3 effect shaders though
Okay, thanks, I will try it
Is there a way to increase the limit of model loads during runtime? I'm making a multiplayer game and want players to be able to change models. I can't use "load from prefab instance" because 1) other instances of the player object are treated as extra players and 2) when the host syncs instances to peers, the UIDs are different for peers. My current approach works great except for the one-load runtime limit.
I'm also open to suggestions if you have any ideas! Thanks!
Use a 2d sprite as the main player. So uid never changes. Connect the current model / 3DObject to that 2d sprite. When model changes delete old, create new model and attach it to the original 2d sprite.
In general, I'd also say this is a good game dev pattern, for exactly the reasons you describe. Your model or animated sprite is decoupled from the 'player controller' and you can be more flexible in control vs animation or mode.
Thanks so much for the replies! This worked. I was using a 2d sprite for the controller originally, but I had it in a container with the model for ease of referencing so I couldn't destroy the model without destroying the player controller. Instead of using a container, I added an instance variable to the model representing which 2d player controller it should follow. This way, I can easily destroy and re-create the model without impacting a player's container. Your idea to destroy & create new works just as well as the "reload" I initially wanted.
Thanks again, and great plugin!
Great! When you are ready, would love to see some gameplay vids!
Is there anyway I can contact you or send you a demo for troubleshooting. I am having trouble rotating a 3d object along its x-axis. It seems to be rotating around it's bounding box (what I've got) instead of the object's centre of origin (what I've wanted).
you can send on discord, I am on the Construct Community server.
Did you check the center point of the object in blender?
Hi! I have a question. Is it safe to release a game on Steam using this plugin? I need to clear this up before committing to developing a 3D game with it. Can I develop the game without any issues? My main concern is: once the game is released on Steam, do I need to worry about the SDK? Or once it's released, do I no longer need to worry about the SDK?
Once released SDK does not impact, if you want to change it later after it may impact, but if you just use the version of C3 that you originally developed the game with you will be ok.
Hi, will you release the update with the new SDK for Construct 3?
Not for this addon, SDK2 does not have the requested features to support it.
Uploaded the latest version addon (2-74-3). Upon launch, a pop up msg saying "Error loading GLTF:TypeError:Cannot read properties of undefined (reading 'length') [via Web Worker]" Any idea what this is?
missing file or bad gltf? drop me a demo project if you are still having problems and I'll debug
Thanks Mikal. I reuploaded the files and things are back to normal. However, is there a way to restart an animation. Currently there is only options to speed up, change rate, pause, resume animation. I also noticed upon start of layout, the 3D objects don't appear instantly (delay in spawning). Thanks!
I think you can set animation time, try that. Yes, takes some time to load 3d from files, so the usual solution is to have some kind of loading screen cover the models as they load.
Sorry as I'm a little new to this but where do you set the animation time? I saw set/delete node, blend time, animation speed, rate, pause and resume animation. Since the object keeps looping non-stop, I just want to restart the animation whenever I wanted it to. I'm sorry for being so bad at this. 😔
Looks great, but which is the single addon I need to add? There are like 40 + individual download files here?
look from bottom up, pick the 3DObject* with the largest version number
Okay Thanks 🙏
everything is still pretty much place holder. but the plugin is working great for my tank game. A spiritual successor to BattleTanx .
can scroll the UV for tracks and morph shapes for damage. I plan to have a proper explosion animation for tanks and buildings down the line.
Looks fun! Nice work.
Hello i have 1 object that load different models depending on character selected. The first time works good but for next selections the character still the same. There is a way to unload that model? Stay even when destroy and create again.
Try using instance models, or templates, but it may take more resources. see devlog for examples
When moving to a new level at some point models stop loading. what could be the problem? with the problem encountered on ios. at first it starts to slow down animations, then after a level or two, stop loading models completely.
Hmm, difficult to know from the description. Perhaps old models are not being destroyed? Can you see the ios console?
I'm testing on iphone 8plus. i don't see any errors in xcode console. cpu consumption within 9-20%, memory usage 50-250 mb, very high energy impact. here is the data i have. plugin version 2.73.0
Can you send me a bug repro project? Does it happen on remote preview on iphone?
You can DM me on C3 Discord to send bug repro (Mikal)
This happens on iphone when running through remote preview in construct 3. It also happens when running on iphone through xcode. Where can I send the project?
Hello. The plugin stopped working on android. What to do?
try revert back to older version when it was working
The project will not load on the old version
Can you share the issue you see with loading with the old version 2-73-0 (dev console screen when C3 editor reports that loading is not working.)
Hello Kindeye the last version of the 3D Object 2.74.3 give a black screen when try to preview on S23 Ultra. Dont know why just on that phone. Not happend with the 2.73.0 and older. Do you know what could be the problem?
When booting a project on a mobile device the project simple refuses to load. Is there a workaround?
Hey there! I'm certain that you're aware that the latest update on C3 is warning about this, do you intend to update the plugin in a near future?
This add-on will not be ported to SDK V2 (but an LTS version of C3 that is compatible with it will be available for use for quite a while).
I am working on a new, similar addon with more capabilities, which is working with SDK V2 now. I will announce here when it is ready (it will take a bit to get to the same feature set, but it already supports PBR texture and normal maps.)
It great news, we will waiting you )
Really great news! Appreciate all the effort and skill you put into these tools
Alpha channels are having a weird effect where they clip through geometry behind them. I am using 3d shapes for the smoke effect. the world is a 3d object
Yes, transparency/alpha in 3D, in general, is always a challenge. The better results for simple renderers like C3 are to render in order as much as possible.
Check that the render order is the distance from the camera and all layers are 3D.
If your 'world' is one big GLB/GLTF model, it will be hard to sort properly (near and far meshes will all be part of one model.)
An alternate option is the 'screendoor transparency' in the 3D effect, which has a particular 'look' but will make the rendering support out-of-order rendering better.
DAN
yah the level was one big object. I will cut it up into smaller chunks to help. Thanks
Hello,
Watching FoozleCC, he shows sample code to copy and use. I have no idea where this code is – which sample is he showing/using?
https://www.youtube.com/watch?v=p02bz6jax8Y&t=1105s
Construct 3 r416.2 stable
Installed addons: Frag Light 2.8.0, SSAO 1.6, 3DObject, Rotate 3D
Preview 3DObjectFragLight - Scene is completely black.
F12 – I now see I have an error:
main.js:98 Uncaught TypeError: Cannot set properties of undefined (setting 'GetDefaultVertexShaderSource') at main.js:98:57
(anonymous) @ main.js:98Understand this errorAI
c3runtime.js:280 Uncaught (in promise) Error: Error compiling fragment shader: ERROR: 0:11: 'pos' : redefinition
at C3.Gfx.WebGLShaderProgram.Compile (c3runtime.js:280:1243)
at async C3.Gfx.WebGLShaderProgram.Create (c3runtime.js:280:1904)
at async C3.Gfx.WebGLRenderer.CreateShaderProgram (c3runtime.js:460:9318)
at async Promise.all (3DObjectFragLight-8/index 1)
at async C3.CanvasManager._InitWebGL (c3runtime.js:1190:6728)
at async C3.CanvasManager._InitRenderer (c3runtime.js:1190:7050)
at async C3.CanvasManager.CreateCanvas (c3runtime.js:1190:4819)
at async C3.Runtime._InitialiseCanvas (c3runtime.js:1195:18300)
at async C3.Runtime.Init (c3runtime.js:1195:10955)
at async Q._InitDOM (main.js:26:12442)
Same error after publishing and running in chrome using IIS.
3DObjectVertexColor –
Project exported – running in Chrome.. Scene is completely black.
Error log:
main.js:99 Uncaught TypeError: Cannot set properties of undefined (setting 'GetDefaultVertexShaderSource') at main.js:99:57Understand this errorAI
c3runtime.js:280 Uncaught (in promise) Error: Error compiling fragment shader: ERROR: 0:11: 'pos' : redefinition
ERROR: 0:12: 'vColor' : redefinition
at C3.Gfx.WebGLShaderProgram.Compile (c3runtime.js:280:1243)
at async C3.Gfx.WebGLShaderProgram.Create (c3runtime.js:280:1904)
at async C3.Gfx.WebGLRenderer.CreateShaderProgram (c3runtime.js:460:9318)
at async Promise.all (3DObjectVertexColor/index 0)
at async C3.CanvasManager._InitWebGL (c3runtime.js:1190:6728)
at async C3.CanvasManager._InitRenderer (c3runtime.js:1190:7050)
at async C3.CanvasManager.CreateCanvas (c3runtime.js:1190:4819)
at async C3.Runtime._InitialiseCanvas (c3runtime.js:1195:18300)
at async C3.Runtime.Init (c3runtime.js:1195:10955)
at async Q._InitDOM (main.js:26:12442)
Please use the latest version of 3DObject, and do not use a main.js.
Try these sample projects instead, I will remove the old ones:
Hello, thank you for this great plugin, I have a doubt, when I import a 3d object with the texture embeded appears compresed in game.
If I search the texture manually in construct 3 it shows ok.
The problem is I can´t search the texture for a mesh with multiples materials, also if I set a mesh as "static" with the texture checkbox marked, the texture appears corrupted.
Any idea how to resolve it? Thank you so much
Do you still have this issue? Please share a project if you do; I'm not sure I understand the problem yet.
How do I use the affine texture effect on a 3d object?
you need to also use 3d effect addon, 3d effect addon has a parameter to enable. works best on low poly/large poly objects
is that the mikal_frag_light-8-2.8.0.c3addon? what parameter is it? I have tried toggling the booleans but I don't notice anything.
yes that is it, it doesn't have an effect unless large polys at low texture rez at angle more parallel to camera
Error
https://kindeyegames.itch.io/c3-3dobject-alpha/devlog/855987/fix-file-corrupted-...
Hi. I don't remember when this might have appeared. I don't use this effect at all. i have only 5 different 3Dobjects on a location.
I see a message in the console
"plugin.js:130 [3DObject] shader mikal_frag_light-8 not found"
how clean it?
Does it still render ok, or does it stop working? If it is still working, just ignore that message.
Ah.ok. Yes work fine.
Hi, there! First of all, congratulations and thank you for developing this much needed plugin!
I am creating a 2.5D platformer, but, after implementing some basic functionality to make the camera follow the player, I noticed that the objects on the left or right border of the screen pop in instead of just being there. Any idea of how I can prevent that and make sure that objects within the camera view are always visible?
I've attached a gif to illustrate the issue. The issue is noticeable if you look at the floor close to the horizontal border the player moves toward.
Try scaling the bounding box using ACEs and also use C3 debug mode to check the current bounding box.
Thank you for getting back to me on this!
I tried setting the bounding box scale of those 3d models, but no luck. I even tried absurd numbers like 100, but to no avail.
Any other suggestions?
Did you try the bounding box scale ACE? Did you look at the objects bounding box in debug? Can you post a screenshot of that neat the edge?
Yes, I used the bounding box scale ACE. Here is a screenshot of a model at the right border, with its bounding box scale set to 2x:
I've noticed that this behavior during runtime is very similar to what happens to 3D models in the layout editor. Here is a gif to illustrate what I mean (I'm scrolling the layout manually with the mouse):
I don't know if seeing the same symptom happening in the layout editor might give us any clue, but I thought I should include this. Perhaps this is caused by some project setting?
Can you send me a simple test project with your models showing this issue? I can take a better look at it that way. Layout debug may not help since you can't use the ACE. I send sendgb.com to share files temporarily.
secondary nodes seem to light weird. notice that when I export just one node (the sprockets here) they light fine on their own. any idea? (the turret is it's own object so is unrelated to the body) It must be related to my object as testing with the clerk model from your examples is fine. But I don't what property of my object could be influenced by the other nodes
to add on to this the model loads fine on the tester sites

How are you doing lighting? Is it enabled on all the objects? Do you have any shaders for materials? Bump maps, etc., are not supported.
there was no lighting but I figured it out. I had a mesh with a material but no texture. and that dark blue in the picture was the same base color of that material.
I don't know why it overrode other materials (and only on nodes not the first one selected) but that was it
Good job figuring it out.
i dont know where should i post this comment on 3D object plugin or 3D physic plugin xD, my question is how can i update bounding box while 3D object animation play?
Are you using gpu skinning support? You may need to use static geometry instead.
okey thank you!
hey I got this error after installing the 2-27-0 version
Try the latest version uploaded.
https://kindeyegames.itch.io/c3-3dobject-alpha/devlog/828933/fix-addon-fix-corru...
Apologies if the addon was corrupted for you; use safe mode to uninstall the addon:
https://www.construct.net/en/make-games/manuals/addon-sdk/guide/safe-mode
thank you! it works now
I am getting an error and I am not sure what it means.
When I set the object source in C3 I get "error: gltf, unhandled bufferView, try exporting gltf without using sparse accessors"
The model loads fine on the tester sites. the error it gives me is "
0
UNUSED_OBJECT
This object may be unused.
2
/meshes/0/primitives/0/attributes/TEXCOORD_0
" But I Don't know what that means.
I uploaded the file I am testing if you wanted to look at it.
https://drive.google.com/file/d/1JPLh9YELbWTffP7mHefZT7v2FmyJtujR/view?usp=shari...
Hmm, you could try importing to blender and then exporting, but change the export properties to not allow sparse accessors.
ah that was it. I did not know that was even an export setting. It seems to have been added in Blender 4.0 as this was never an issue in 3.0 up.

For anyone else that has this issue. You can find it here in Blender 4.X export settings.
Great, thanks for adding the picture.
Try this with the original file:
https://kindeyegames.itch.io/c3-3dobject-alpha/devlog/828684/fix-accessors-add-s...
that fixed the issue
thanks again
https://sendgb.com/UWXo3nvhNTx
, here is link...
I see what you want to do, this takes some 3d math to do. I will add an ACE to set a quaternion, but then you need to do the 3d math to set it properly. Probably will add next week.
ok thanks
Ok, I looked and the ACE is already there. Use Enable Quaternion and Set Quatrenion.
Set quaternion uses this format: "[x,y,z,w]", where x,y,z,w are the values of the quaternion.
You can use JS to create the quaternion using the globatThis.glMatrix libraries, they are documented here:
You could try:
setAxisAngle(out, axis, rad)
https://glmatrix.net/docs/module-quat.html
thanks