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

  • Heres a demo of the physics for those who are interested :

    3D Physics Demo using Oimo.js plugin

  • QuaziGNRLnose

    Pretty cool demo!

    I cant seem to get the bullet behavior working with Q3D sprites. Is it even possible to use the bullet behavior on them?

    And also, for me to use the raycast, it seems I have to have a model present on an object in order for that to work. I tried using an object with model set to no, and raycast does not catch it, is this intentional?

  • It should work. Dunno why it isnt. Not home atm so i cant test why.

    Yea you need a model, raycast wasnt meant to pick colliders. You can mimic the behaviour with colliders if you have to by using a Q3DModel with a collider of a long thin box as a fake ray.

  • QuaziGNRLnose

    I cant get it to work for some strange reason.

    And okay, I just created a box model and set it to invisible for detection, it seems to be working fine

  • QuaziGNRLnose, the demo looks great!

  • You're the man, man. I don't want to build my own rigid body physics, but i'll keep my flight physics for my project. Can't wait.

  • Sorry if I missed something but is there any post processing support in Q3D at the moment? Would love to mess with HDR and DOF!

  • Sorry if I missed something but is there any post processing support in Q3D yet? Would love to mess with HDR and DOF!

    ATM simple post processing effects can be done by using "inside" render mode on Q3DMaster and setting up effects on Q3DMaster as you would on a sprite. I plan to possibly add more complicated systems for applying post processing effects that access the depth buffer like DOF and SSAO but its not on the cards yet. you can definitely do HDR though with the inside mode trick, with the proper construct effect (not sure if someones made one yet).

    I might allow more complicated effects through an "inside" mode on Q3DViewports, and a special depth/normals rendering mode, so you can layer things up in construct. I'm not sure how things like alpha/transparency would be handled though in those cases. Theres a lot to work out! another way I might do it is by having a separate plugin for controlling post effects. I was toying around with adding deferred renderer support but its very experimental atm in three.js so a lot of features are buggy / lacking. I don't have a crazy amount of time to work on things right now so updates will be slowing down again.

  • this would be perfect to achieve in Q3DMASTER with shaders

    and http://stemkoski.github.io/Three.js/Bubble.html

  • QuaziGNRLnose

    For my game, I was thinking I may have to create some sort of "chunk loading" system for a mass amount of objects present in the world.

    How does Q3D exactly render? Does it just render what is in the viewport or will I have to make a chunk loading system for many objects spread out through the entire world to make sure performance remains in tact

    A better way to explain it possibly, is how can I load many objects without the CPU usage going through the roof?

  • The engine checks whats in the view frustum, rendering/updating only what it has to based on that. It doesnt do occlusion culling however. The best way is to destroy/hide what isnt needed if its a performance issue, but leave things alone if it isnt. Also remember its a js engine, so dont expect to make things that are too crazy. If you can set unique materials and unique textures off that helps with performance too. At some point too much is too much however, so i cant recommend more what i have, necessary optimizations can get really complex if needed. I suggest making tests before deciding your game needs to be a certain scale and then ending up dissapointed it isnt.

    One thing i can say is that a lot of Q3D models will be slower than one with an equal number of triangles, so batching static objects into a single model can give a huge boost since it makes the gpu do the work.

  • QuaziGNRLnose

    If the engine only renders what in the frustum, then why does it seem to run so poorly when I create (example 10,000 cube objects, with a diffuse texture in the animation editor), wouldn't it only render whats in view aka frustum?

    Occlusion culling shouldn't matter right? due to the 2d platform nature of my project, as all object faces are to be seen in the screen view.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • GameThirsty

    That's because each object still has to perform checks against the frustum and updates each frame, even if its not rendered. every Q3D Model introduces a CPU cost, you can't compare the performance to something like a sprite in C2, 10,000 unique objects existing simultaneously is a lot in 3D. If you're trying to do something like minecraft Q3DModel isn't going to work, there's particular optimizations needed to get something like that with so many "blocks" to perform properly, which can't easily be done in Q3D, they aren't equivalent to something like Q3D model. It requires a special system built from the ground up just for that, using octrees and optimized raycasts to carefully prune and display only whats necessary.

    Even around 500 Q3D models on screen at once on a normal system is pushing it. You could have really complicated geometry which has millions of triangles perform better in a single model, than you could have a 100th as many spread across 500 objects because the program will be CPU bound because of all the transforms it'll have to do. Q3D is optimized, so I can't really improve the performance, this is just the way things are. Eventually i'll have particle objects perhaps for stuff like smoke, but there can never be 10000s of unique objects, even modern games don't have this. Stuff is batched together, without unique transforms. Something like minecraft would require a custom plugin for stuff just like that.

  • QuaziGNRLnose

    Thanks for the input, I am going to try out a simple chunk loading system like Minecraft, utilizing arrays, and comparing them to the players position.

    Might be a messy way, but could work

  • Im pretty sure minecraft uses raycasting against an axis aligned octree.

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