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)
  • So I tried to follow your suggestions and had a hard time making it work with a plane. A cube worked flawlessly but not a plane.

    In the end I was able to solve it and discovered a bug. Technically is not a bug, but it's an unexpected behavior that could be improved.

    Here's a capx that demonstrates the problem: q3d-fit-bug-A01.capx

    • Try to run the preview. You will see the cube textured rotating as expected.
    • Then enable the create plane event, disable the create cube and preview again. The plane will not show up.

    To make it work you need to change the Model Fit to Fit X or Y. Apparently it tries to fit the Z of the plane that technically has no Z dimension.

    It would be better if the Model Fit "Fit" ignored the Z of flat geometries like planes and circles, so it doesn't disappear unexpectedly.

  • Try Construct 3

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

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

    i'll upload a minor update at the end of the week or something that fixes this and some other little bugs i've found

    Any luck with this so that I can prepare to release my version. Thanks a lot!

  • QuaziGNRLnose

    Are you planning to make a support for mobile devices??

  • kmsravindra

    Should be soon but im still busy with personal matters

    Q3d should work on mobile browsers already. Cordova breaks model loading, but the plugin otherwise works (oddly enough) and ive been unable to find out a way to fix it, but ill try to take another look.

  • QuaziGNRLnose

    But on local wi-fi preview this problem was also.

  • I tested on a MotoX 2013 (Kitkat), a MotoG 2014 (Lollipop) and a Galaxy S4 (Lollipop) and all worked really well on Chrome when exported for web (with minify script off). I use the MotoX for preview over wifi and never had a problem. I haven't tested exporting with Crosswalk yet, but I'm planning to do soon.

    QuaziGNRLnose

    I don't know if you have considered, but I have a suggestion to merge similar actions to make the plugins simpler. For example, there's three different "Set Position" actions, one for each coordinate space with the exact same parameters. They could all be merged into one that have a dropdown parameter to select the transform space. The same could be done for "Look At" and "Rotate Around" actions. The "Translate" action could also benefit from a dropdown to select different transform spaces.

    *It seems a bit inconsistent that in Q3DModels and secondary plugins it's called "Translate (local space)" and in the Q3DMaster it's called "Move along local vector". They do essentially the same thing and could have the same name for consistency.

  • The switch statement for the dropdown would make the set position action very slightly slower per call, but the fact set position is so common made me do it that way, because it becomes a waste if you start having thousands of set positions per frame (which is pretty expected in larger projects). Either option had it's caveats but i figured multiple actions was better than a drop down.

    that Q3D Master action is just accidentally named different (it's been there a lot longer than the other plugs), thanks for the heads up <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile">

    I'm not really sure what you mean. you can't run things "locally" in a browser on a desktop because of browser settings unrelated to Q3D: https://github.com/mrdoob/three.js/wiki ... gs-locally

    The cordova/crosswalk issue is similar, but i don't know the settings to change because I haven't used XDK very much. I'm going to investigate when I've got more time. I'm not very familiar with a lot of wrappers so it's difficult for me to find whats going wrong. Right now my hypothesis is that Q3D is not using the right URL for loading files and i'll need to investigate more to verify.

  • Does Q3D support object animations without skin weighting and bones, only using objects hierarchy ?

  • gorgonzola

    You can build/set up object hierarchies in Q3D and animate the transforms with actions. There is no supported boneless file format that can do that though, (although you can convert it to one with bones for Q3D if you can track down importer/exporters). If you really want this type of effect (for something like a robot / car whatever which doesn't have skin weighting), you can use bones to handle the objects/animations (making each "objects" vertices on a single mesh controlled/weighted to only a single bone in the hierarcy will do what you want). This technique can also be mixed with skinning to for example animate a sword being swung by someone. You can also at run-time add objects to the hierarchy of a bone, to put a different gun model in someones hand, a helmet on their head, etc. Alternatively you can assemble/animate entirely with actions if your work needs to be proceduraly animated. If you need fast performance you can even do some things entirely with morph targets when performance needs to be really good (for example in an rts, were having lots of units is more important than super high quality animation, you can make morph targets for a tank+turret as a single model and run/mix 4 multiple targets at any one time entirely on the gpu). Theres a multitude of options depending on your use case.

    I'm not really sure if im being clear about the "bones for discrete objects" so what I meant for example:

    make a model of a car with wheels.

    Make a "bone" at the desired local origin of each wheel, and make these children of a bone for the body. make the wheel vertices linked only to their bone, the body's vertices linked only to its bone , animate the bones then export. The bones will be the "object" in the hierarchy. Bones don't really limit you to organic forms, they're just a way of recognizing the animation information for scale/translation/rotation in the hierarchy.

    The other way is to use seperate Q3DModels like you would sprites, and do everything from within construct (this is how the tank in the Tiny Tank demo is animated).

    What workflow are you thinking of that necessitates this?

  • http://learningthreejs.com/blog/2011/10 ... -geometry/

    does this above works same if we add object as child ? will this save some performance if it is positioned as child "for example "3d healthbar" instead of using using set positions every tick ?

  • I've got some problems when installing..

    This shows up when trying to run any of the examples in C2

    http://i.imgur.com/y0Rb33Q.png

    But I've put all the plugins in the right folder

    http://i.imgur.com/v80vXW5.png

    http://i.imgur.com/W8SuSJ7.png

    edit: forgot to mention that I just bought it and the version is 2.4

    edit 2: oh wow, nevermind, I was putting it in the wrong folder.

  • learningthreejs.com/blog/2011/10/05/performance-merging-geometry

    does this above works same if we add object as child ? will this save some performance if it is positioned as child "for example "3d healthbar" instead of using using set positions every tick ?

    No its not the same, children actually have worse performance than seperate objects in some cases. That article is referring to the practice of lets say making blades of grass all part of the same model instead of seperate objects to make the cpu do less work in calculating only a single transform vs 1000s. This is good practice to delegate work to the gpu.

  • The switch statement for the dropdown would make the set position action very slightly slower per call, but the fact set position is so common made me do it that way, because it becomes a waste if you start having thousands of set positions per frame (which is pretty expected in larger projects).

    I'm not much into C2 plugin development, but can't you avoid the switch by calling different functions and get less overhead?

    Like:

    On setPosition action
    -callFunction( "setPosition" & dropdownIndex )
    
    On Function "setPosition0"
    -do transform in world space...
    
    On Function "setPosition1"
    -do transform in local space...
    
    On Function "setPosition2"
    -do transform in parent space...
    [/code:3puo84z7]
  • > learningthreejs.com/blog/2011/10/05/performance-merging-geometry

    >

    > does this above works same if we add object as child ? will this save some performance if it is positioned as child "for example "3d healthbar" instead of using using set positions every tick ?

    >

    No its not the same, children actually have worse performance than seperate objects in some cases. That article is referring to the practice of lets say making blades of grass all part of the same model instead of seperate objects to make the cpu do less work in calculating only a single transform vs 1000s. This is good practice to delegate work to the gpu.

    thx,,,, for your answer,,

    what should i do if I would like to have for example 300-500 trees ,50 rocks, plants...etc..

    is there any trick to avoid performance kill ? If I create simple 1000 cubes on map "simple geometry" it will increase cpu /drawcalls usage by 35 percent. I have quadcore i7 with 12gb ram , gtx570 .. "lights,, shadows disabled,,, basic shader used."

    thats why i am asking if there is possible to do something like that ----> http://learningthreejs.com/blog/2011/10 ... -geometry/ ,, ,, i dont need to move or interact with theese objects.........just save performance................. or three.js is limmited to count of objects . or... maybe i am doing something wrong,,,, or maybe debugger is showing wrong

    <img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes">

    also ,, I would need some .qfx example to get into it.

  • Ralph

    You dont need to do anything with shaders for this to work. Also you fuse the geometry in your modeling software. Itd be pretty slow to do it at runtime for a large number of objects. I could try to implement something for static objects but the issue is then that materials and things would cease to be modifiable.

    Its still extra overhead, and the string manipulation would be even slower than an if. Whats the issue with separate actions? Its essentially the same.

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