Page 1 of 1

Qoob modeler with DLL for ZGE integration

Posted: Thu Oct 21, 2010 12:42 pm
by VilleK
Auld of demogroup Titan has released a modeling tool called Qoob.

Quote from the Qoob page:

"Qoob is a project designed to create very small models. Essentially, qoob stores modeling commands rather than the vertices and polygons of the model. This means that qoob models can have many thousands of polygons, but store in as little as 10 bytes!"

It is not open source but I contacted the author who was nice to send me the source which allowed me to build a little DLL that can be loaded from ZGE.

Attached is a zip-file with the DLL and a sample ZGE project that load and display Qoob-models. The modeler itself is very small so maybe we can add it to the ZGE download for a future release. Please try it out and let me know what you think!

Posted: Thu Oct 21, 2010 6:29 pm
by Kjell
qoob stores modeling commands rather than the vertices and polygons of the model
All of the major 3D modeling apps ( Softimage / 3ds Max / Maya etc. ) do this by default .. but in most cases a collapsed mesh is much smaller then the command-list.

I personally think the current procedural mesh features are fine. We just need some more Components ( Bend / Push / Subdivide etc. ) :)


Posted: Thu Oct 21, 2010 6:30 pm
by y offs et
Reminds me of modeling in XOPS , where a cube was the only object - only smoothing wasn't available and vertex manipulation was.

It's a nice K.I.S.S. concept. He has ambitious plans for version 2.0 . Plan to stay tuned.


Posted: Fri Oct 22, 2010 3:04 pm
by jph_wacheski
I like it! I do agree with Kjell that adding a few more mesh Components to zge's mesh manipulation would be very good,. this however, is a nice extended feature esp. if the modeler continues to develop,. currently it is a great way to add complex abstract high-poly smooth organic meshes without bloating a distribution.


Posted: Sun Oct 24, 2010 12:03 pm
by VilleK
He already made an upgrade so I've updated the dll in the first post to make it work with the latest version.

I like that he keeps it really small. Note that the dll-zip is only 46kb including qoob.dll binary, zge-generated example binary, zge-example source and two qoob-models :)

Sure we should improve the ZGE-modeling commands, but this is an interesting path to follow too I think.


Posted: Mon Oct 25, 2010 3:09 pm
by jph_wacheski
Yeah it is quite usefull,. fun to make meshes within the limitations,. attached is a little demo where I was just messing with some new stuff,. switchin blend modes,. etc.

This could be even more usefull if the meshes could be brought into ZGE as meshes,. or is this just not possible. I like to see model previews as I construct transform loops in the editor and this does not happen with the dll setup like this. I am sure I will use it as is, as it lets me generate crazy meshes with little overhead,. nice. need to figure a way to have a progress bar while they generate,. . this takes a good second to meshify.

I recall Kj had a method to embed files in the zge .exe, anyone have that link? or a zge method/component to more simple do this in the editor would make this even more elegant. you know writes them to a temp dir and deletes them when done.

Posted: Mon Oct 25, 2010 5:07 pm
by Kjell

@jph -

Speaking of which, would be pretty handy if there was some way to update a executable itself ( updating a exe from itself doesn't work, Windows locks the file ).


Re: Qoob.

Posted: Mon Oct 25, 2010 5:26 pm
by auld
Hi all,

I'm the author of qoob and real happy to have Ville create the DLL and release with zge. Thanks. I'm also happy to receive suggestions on this forum through PMs or at the website on the contact form.

Qoob is aimed at tiny models, so much so I can fit 20-30 models in 8k exe when I use a compressor. That ought to explain some of the limitations you will face. The modeller is primitive but enough for fun stuff.

@JPH : amazing that you have created something already! It was great to run something that I hadn't created. Well done.

@kjell: Though commerial modellers may save command lists, the command list qoob saves is a) tiny, b) designed for compression. Most models are around 100-200 bytes. I'm certain no mesh collapsing compression could beat it.

oh and jph, I agree about the progress thing. I'll add it to the list of TODOs- 1 second :-)? Your PC is faster than mine.


Posted: Mon Oct 25, 2010 5:48 pm
by Kjell
Hi auld,
I'm certain no mesh collapsing compression could beat it.
It really depends on the type of mesh & workflow. Normally when I'm creating characters / environments, I have to collapse the stack every now and then because the file simply gets too large for my machine to handle ( easily reaching into the hundreds of commands for a single mesh ).

And you wouldn't use a general-purpose file format in which a "commercial" modeler stores scenes as engine format of course. You would write a exporter to ( something like ) the Qoob format :wink:

Welcome to the club ~


Re: Qoob.

Posted: Mon Oct 25, 2010 9:12 pm
by auld
Unfortunately, what you suggest is not possible. I wish it was truly as I wouldnt have to write a modeller and artists could use their favourite tools. The key is not the format nor the concept of storing modelling commands nor the modeller - the key is the lib. Export cannot work. To explain, qoob lib is a very specific set of modelling commands - not the same as say Wavefront or 3ds - I mean not even close. The DLL of course replays modelling commands to recreate the original object so the exact set of modelling commands is key.

200 modelling commands in qoob is about 250 bytes after compression, depends on exactly what order of commands etc as you probably realise so an exact number is possible to give but so far I haven't seen a model bigger than 220 bytes after compression and most are around 100 bytes.

The downside is a single qoob model + qoob lib is 2.1k+ 200 bytes. That would make a single low poly model mesh smaller (even with load and subdivide applied afterwards). The upside is that 10 models is 2.1k + 10*200 bytes = 4k. The overhead of the lib is reduced the more models you use.

Hopefully its clear now.

Posted: Mon Oct 25, 2010 10:29 pm
by Kjell
Hi auld,

Well, qoob commands that aren't build-in regular modeling applications would have to be added / scripted obviously ( for proper representation ) .. but apart from that I don't see the problem.

Anyway, doesn't matter. Getting up to speed with the Qoop modeler only takes a minute or two :)


Re: Qoob

Posted: Tue Oct 26, 2010 11:12 am
by auld
The underlying problems are quite subtle. Eg range and step in input values cannot be enforced in the commercial modeller so what you see isnt what you get. Only support of quads in genus-0 mesh - no triangles and no subdiving/cutting of quads. Many functions in modeller have no equivalent in qoob library so how do you restrict the user easily in the commercial modeller? The list is long of such "small" problems. . In the end I decided - damn will have to write a modeller.

I am hoping demosceners will put up with a relatively crappy modeller to get very small exe size - well I know they will. Also I hope I've managed to explain why its not possible to write an exporter to qoob format to zge users satisfaction - enough for them to put up with qoob modeller too in order to gain the benefits of tiny models.

Good luck trying qoob.

Posted: Fri Oct 29, 2010 2:26 pm
by VilleK
auld: Welcome! You should give ZGE a quick try too when you have time, Kjell made some good video tutorials to get you started :)

jph: I like the fractal broccoli :). You sure know how to make good use of new tech-toys. Btw qoob-models should work in ZgeViz too if you put the qoob-dll in the same path as ZgeViz-dll. I agree it would be more general if we could get the mesh data into normal Zge-meshes and that may work in a later version. Currently the hurdles are that Qoob-models generates quads while zge use triangles, and also that qoob-library is closed source which stops us from making a MeshQoob-component.

Re: Qoob.

Posted: Mon Nov 01, 2010 4:15 am
by auld

It wouldnt take long to write a mesh exporter for someone who knows the ZGE mesh format. The qoob mesh format is open (in the .h) so a program would go:

load qoob object format <- provided code in README
unpack to qoob mesh <- provided code in README
export mesh <-your stuff goes here

I promise to try ZGE when I have chance - away for 2 weeks now so when I get back.