Q3D V-2.4 [3D Physics + Skeletal Animation UPDATE]

From the Asset Store
Template for a basketball game with a 3D aspect (illusion of 3D)
  • blurymind

    I didn't write the three.js animation export/import, only the code which links it to Q3Ds various systems, and some modifications to the way skeletal animations are loaded. The exporter/importer code is open source and wasn't made by me, but I've done what I can, and have gotten it working with . A lot of animation features that you can use in blender wont export / are missing, and you'll need to figure out what does/doesn't work. Make sure you use the r69 exporter, from the source package in this link (https://github.com/mrdoob/three.js/releases/tag/r69). If you want a working example of animated models try/look at the files in examples/models/skinned, these load properly. the marine_anims.js file has a few animations. I was unaware of the underscore causing issues with morph anims, I'm not entirely sure why its messing things up but ill investigate.

    for the 2D/3D projection thing, there's no built-in method to get the view-space coordinates or projection matrix. Generally that's supposed to be what you use Q3D sprite for.

    If you know javascript/sdk you can modify Q3D easily enough to give you what you need, just look at the tick2 function for Q3D bone where the debug text is displayed and you can add some new expressions that use a similar process. I'll look into adding it for the final update i'll do, but no word on how long that'll be.

    Q3D isn't going to be undergoing any updates for a long time though, it's already grown way larger than I had intended it to when i made it 2+ years ago. There's a build I've yet to release that moves to a slightly newer version of three.js and fixes some bugs but that's incomplete, and after that there wont really be any more updates. It was never meant to be a full-blown game engine with all the features and UX of something like Unity, and frankly it can't become much better because of the edit-time SDK limitations of construct 2. Originally it was just meant as a simple way of getting 3D graphics to display with WebGL in a construct 2 project, and now it's got features like physics, collision checking, animation etc which I literally spent a whole year and a half researching/optimizing/refactoring. There isn't much more I can do to improve it which is worth my time, You shouldn't be using Q3D for a large scale 3D game where an engine like unity would be much better suited and have improved workflow, you should use it if you need some 3D touches to your C2 game, or want to make a simple 3D game like the tiny tank demo.

  • cool QuaziGNRLnose thanks for the updates on Q3D.

  • blurymind

    I didn't write the three.js animation export/import, only the code which links it to Q3Ds various systems, and some modifications to the way skeletal animations are loaded. The exporter/importer code is open source and wasn't made by me, but I've done what I can, and have gotten it working with . A lot of animation features that you can use in blender wont export / are missing, and you'll need to figure out what does/doesn't work. Make sure you use the r69 exporter, from the source package in this link (https://github.com/mrdoob/three.js/releases/tag/r69). If you want a working example of animated models try/look at the files in examples/models/skinned, these load properly. the marine_anims.js file has a few animations. I was unaware of the underscore causing issues with morph anims, I'm not entirely sure why its messing things up but ill investigate.

    for the 2D/3D projection thing, there's no built-in method to get the view-space coordinates or projection matrix. Generally that's supposed to be what you use Q3D sprite for.

    If you know javascript/sdk you can modify Q3D easily enough to give you what you need, just look at the tick2 function for Q3D bone where the debug text is displayed and you can add some new expressions that use a similar process. I'll look into adding it for the final update i'll do, but no word on how long that'll be.

    Q3D isn't going to be undergoing any updates for a long time though, it's already grown way larger than I had intended it to when i made it 2+ years ago. There's a build I've yet to release that moves to a slightly newer version of three.js and fixes some bugs but that's incomplete, and after that there wont really be any more updates. It was never meant to be a full-blown game engine with all the features and UX of something like Unity, and frankly it can't become much better because of the edit-time SDK limitations of construct 2. Originally it was just meant as a simple way of getting 3D graphics to display with WebGL in a construct 2 project, and now it's got features like physics, collision checking, animation etc which I literally spent a whole year and a half researching/optimizing/refactoring. There isn't much more I can do to improve it which is worth my time, You shouldn't be using Q3D for a large scale 3D game where an engine like unity would be much better suited and have improved workflow, you should use it if you need some 3D touches to your C2 game, or want to make a simple 3D game like the tiny tank demo.

    Thats the thing though - without being able to have objects from q3d collide with objects from c2- you are quite limited as the two engines cant communicate fully. The q3d sprite has no collisions. Sounds like a basic thing that anyone can do by editing your java files- but i dot have the knowledge of your api or java experience.

    I wanted to use 3d graphics for my 2d rhytm game, and this pretty much killed it. You cant even get the 2d coordinate of a 3d object

  • Is there a right way to get a 3dsprite moving around a crocotile 3d environment? I have a test model and a set camera i'll adjust later, I'm just struggling to get the 3dsprite(set up to represent an 8 dir sprite relative to it's angle and camera angle to it) moving around with collision and i guess gravity?

    I can post some pics if this is too rough.

    Thanks in advance!

  • What sort of collisions do you have in mind, mxwring ? Will you be using a tilemap?

    You could for example use a tilemap to represent colideable areas, and have a regular Sprite, to collide with the tilemap. Then you could position the q3dsprite to the Sprite's position. It also would get more complicated if you want to be able to jump ontop of stuff or walk underneath things- in which case, a tilemap may not be enough. If that's the case, I'd probably create my own collision checks using the q3draycaster against a 3d model that represents the colideable area.

    But yea.. depends what you have in mind I guess.

  • I can see I haven't given this enough thought lol. Camera rotation is probably most important to me? Without that I might as well just stick with 2d. Lemme think on what kinda system i oughta

  • blurymind

    Collisions between C2 and Q3D dont make sense. They have different camera setups, and Q3Ds collision system is completely different than the one C2 uses., you can either use an invisible Q3D model for collisions, in a container, or use an invisible sprite for collisions with a Q3D object for display. If u need collisions on a Q3D sprite just add a Q3Dmodel in a container... Its actually NOT trivial to add collision support on Q3D sprites, and theyre not meant to be lightweight objects just for display, since you always can just tie them to a dummy Q3Dmodel if u need collisions.

    In anycase, i really dont see why you need 2D coordinates if youre making a 3D game, except for very specific UI overlays. Try to rethink what youre attempting, why do you need the 2D coords so bad instead of using Q3Dsprites.

  • thats as far as i am

  • Example of some stuff that might help give you some ideas.

    enemy sprite stuff

    enemy creation sprite stuff

    camera position stuff..

    Forum post might cutoff the side of it, so you can open them in their own tab to see full image.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Wooooooooah okay cool i am immediately on this!

    Thanks so much, this is super helpful!

    Let me set to this and if I can't get there on my own i will come back with panic and accusations

  • Also, I used Models instead of q3dsprites, because with models you can set orientation, whereas with q3dsprites they always look straight at the camera. The models are a flat plane with the uv set to cover the whole face of the plane, then you add the animation to the model.

    This is so that I could have them stand straight up from the ground, regardless of camera angle.

  • K. I'm still going in on this and that is super helpful, thank you. Are you open to the possibility of me paying you for maybe a capx with features like that so i can have a quicker jumping off point? I'm much more of an artist and the degree to which i'm struggling now indicates i may need to prioritize art for 3d.

  • You could pm me a list of the features you'd want in the capx, and what you'd be willing to pay, and I can look it over and see if it is something I'd be willing to do.

  • First of all , thanks Quazi for this amazing plugin that in my opinion really deserves to be purchased. I’m working on a 2D/3D side scrolling game with 2d sprites and 3d background, and I’d like to know if there is a way to visualize different viewports on different levels, so I can place 2d construct sprites (not q3DSprites) in between 2 viewports and make a 3d foreground. Thanks in advance.

  • Prominent can you share the example file? Thank you very much!

Jump to:
Active Users
There are 4 visitors browsing this topic (0 users and 4 guests)