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

  • In addition to the performance suggestions from QuaziGNRLnose in the above posts, here is the summary of performance optimization findings with whatever limited features (and with my limited knowledge of the plugin) I have used so far...These could be helpful to optimize the performance for someone trying build such apps, especially for mobile.


    • A balancing act : If I create and destroy too many models upfront, then the FPS dips to pretty low rates. Rather, I saw optimized performance, understandably, when I create/destroy a group of them at different times OR you could even consider dynamic loading if the .js model files are very small.
    • Optimization when using morph animations: The morph animations seems to account for major percentage of "kb" in the .js files. So if I try to consolidate many morph animations of the same model with different animation names into a single .js file, then the size of the .js file becomes too large when loading for the first time to cause a enough pause/dip in FPS. Rather a dynamic loading of each small file seemed better from user experience perspective.
    • Beware of Transparent objects : Making a model transparent ( with draw sides of front and back) makes the model appear patchy...probably a threejs limitation but definitely brings the user experience down when this feature is used. I also noticed that having the transparency on, made the performance little bit lower, for valid rendering reasons, ofcourse! With such limitation, the user experience is still a compromise if you want to show transparent objects.
    • Lights on mobile? : With addition of even a single light, the performance on iPad2 ( I haven't tested on other mobile platforms) is pretty low. So need to get rid of all lights if you plan to launch it on iPad2 ( and probably true for many mobile platforms as well!).
    • .js model file size: if the .js file to be loaded is very big ( lets say more than 2Mb or so), then there is quite a good chance that the model will not load on iPad2. So try to have smaller .js model files. Not sure if .obj files are smaller in size and load faster than .js files? If some experts could comment, please welcome.


    Not sure if its related to performance but I observed that the navigation seemed slightly jittery in iPad in-app browser ( when launched as an app) compared to running the same app on the iPad safari browser when in online preview mode. Again, could be a limitation from Apple to support such stuff...

  • I see many people are using this plugin without problem. How about mobile performance with lights? anyone tested it?

    Performance on mobile varies widely between device types / OS / hardware

    The WebGL standard is support better by some (google / android) than others (apple / IOS). My current stance is to optimize the plugin for current average desktop hardware. Phones will get there when they get there, but I can't do much to make it more performant that wouldn't mean severe limitations. When Q3D was in V1.0 most (probably all) phones couldn't run/render 3D WebGL with much success, and now I've gotten 60 fps on a nexus 5. I'd say mobiles are catching up, but first and foremost Q3D and really WebGL itself are optimized for desktop web applications right now. Test the mobile demo on the first page for an example on your phone browser. It has 6 lights i believe. I'm working to make it a fast game engine for the web, but WebGL's still pretty cutting edge so the mobile environment/devs aren't as fast on the uptake of the technology as desktop browsers have been. I'd say anything you make with it will eventually (in the not so distant future) be running just as well on mobiles.

  • kmsravindra

    Thanks for being so helpful with your testing on iPad, I'm doing my best to ensure Q3D performs as well as it can. somethings you listed like the transparency are simply shortcomings of forward renderers that i can't avoid without a heavy performance tradeoff, and other things like morph animation size are just a drawback of the technique. When skeletal animation is available you should be able to improve loading/filesize issues (morph animations love to chew memory when not used for procedural morphing stuff) at the cost of some performance (skeletal animations are more cpu-intensive, since they require extra transformation matrices). That's quite an old iPad you're testing on, so it's understandable to me now why there have been these issues, as i stated my nexus 5 can run many lights simultaneously in the browser no less! i think this stuff varies widely among platforms.

  • Thanks! With this said, I am really enjoying developing with Q3Dplugin so far and I plan on building some interesting stuff in the near future...Cutting edge technologies always have few trade-off's and I tend to look at the brighter side of the things

  • lost my q3d plugin pass ... is there a way to find out what was it? since on website i dont see a password recovery ... :-s

  • lost my q3d plugin pass ... is there a way to find out what was it? since on website i dont see a password recovery ... :-s

    email davioware(at)davioware.com with your contact info / name / any useful identification so we can check the database/email history for your purchase and resend it.

  • Hi QuaziGNRLnose,

    I am trying to build something like as in here - http://threejs.org/examples/webgl_inter ... inter.html

    I understood that I have to use the Q3Draycaster for this and tried working my way with the plugin. I have looked at the example of Raycaster and viewports.capx in this regard.

    However, I am stuck with some basic questions like -

    1. how do I pickup the cube and limit the cube movement in 3d axis while moving it only the grid.

    2. how to move it step by step on the grid in x or y directions (exactly into the square positions) along the grid

    3. Should I make the grid a Q3DModel object having one single object OR multiple square Q3DModel objects connected together?

    4. How can I place the cube only on top ( if there is a cube already at the bottom) etc., To do this, would I need to use collision testing feature as well?

    5. I think I can pick up the cube using the 2 conditions - Q3DViewport projection point in frame to mouse co-ordinates and Q3Dviewport --> Project,pick 1st, then I see I can pick-up the cube? Then should I use Q3Draycaster to move the cube along the raycaster? If so, how can I move along the raycaster? (Also, I assume I have to position the Q3Draycaster to cameraposition.xw, cameraposition.yw, cameraPosition.zw and direct it at the highlighted cube model?)

    Do you see this as relatively easy one to build OR slightly complex? Any quick helpful pointers on how to achieve this functionality would be really helpful.

  • Awesome plugin! Do anyone know if this works with the Wii U? I'm guessing probably not due to WebGL rendering, but I may be wrong?

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Its possible with q3d, but the math/linear algebra involved (unrelated to q3d) is a bit complex if youve never done it. Q3d viewport casts rays too, just based on x / y coordinates, the intersection gives you info about the point of intersection in X,Y,Z , normal of intersections, etc. through the expressions (they have useful descriptions).

    You'd make the grid one big Q3D Model, and test for intersections with it. then you'd take the intersection point and do something like x= round(.x/cellsizex)*cellsizex to get it aligned to the grid. Just check out the source for the page to get an idea of how they did it! obviously it'll be simpler with Q3D since it has lots of functions and objects to do it, but not vastly different.

  • Awesome plugin! Do anyone know if this works with the Wii U? I'm guessing probably not due to WebGL rendering, but I may be wrong?

    I'm pretty sure it wont work because it's WebGL. I haven't gotten anything to run in my WiiU browser at least.

  • I am having problems getting textures to work.

    I got really frustrated before, and the post before was posted here shortly after i threw myself onto the floor and .. well.. I apologize for my awkward bluntness.

    I had fought this for little over an hour, and that was after I tried to install the JSON exporter into Maya ... Which also took like an hour of understanding it wouldn't work.

    I'm stubborn, probably too stubborn. And I get angry with things that simply does not work, no matter how hard you try to follow the instructions, So I'm sorry.

  • Polygallon

    you need to name the animation "DiffuseMap", its explained in the example for textured models

  • Polygallon

    you need to name the animation "DiffuseMap", its explained in the example for textured models

    ... Oh, wow. ... Makes sense. Thanks a lot for your help once again! I knew there was something I had missed.

    .. And sorry for the sarcasm, amongst other things. ... Keep up the good work as always!

  • hy guys, 1 quick question why my sphere ball is oval instead of being round? i use top down view , dont have a floor since i dont have a gravity on it, i just added the q3d so i can load up balls for pool, now, when it rotates its showing all faces, but is like something it pools it down, and morhps the animation or the model, and makes it like an egg looking , im using the propertys on unaltered, for the ball . and if i do it with fit then model does the same thing... i all resizings are same, x1y1z1 it should be round , maybe is there something im missing and need to do with q3dmaster to make it not alter itself? maybe depth of field is the fault ? tryng to touch the bottom of it? not sure... the green background is the q3dmaster, the ball is the one in front of the stick. works like in 2d as physics and movement , doesnt rotate cause its not having a gravity or something to roll on, i tried using the 2d physics example but when i move camera above the plane, when i click the top part or bottom the ball instead of just rolling towards that position its jumping or passes trough the floor. any ideeas on second issue?

    also when i try preview on nodewebkit, the direction of ball isnt in 2d anymore i mean the force i apply to it, to move forward position of mouse x.y its not acting normal it goes somewhere else but not there , when im using firefox or chrome or even internet explorer everything is allright? maybe is nodewebkit not supported?

    ah silly me the egg shape solved it, i had the size of model 20,20 but the z size 25 thats why i made all 25,25 and zsize 25 now its all good

  • nodewebkit is supported but the events for that capx don't do the right thing for the different window size. It's just the expressions for that file that are likely wrong, not the plugin itself. I wrote it for webpages so something funny is happening in NW that could easily be fixed.

    no idea what you mean about the physics example.

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