Qoob modeler with DLL for ZGE integration

Use of external libraries (DLLs) from ZGE.

Moderator: Moderators

User avatar
VilleK
Site Admin
Posts: 1866
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Qoob modeler with DLL for ZGE integration

Postby VilleK » Thu Oct 21, 2010 12:42 pm

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!
Attachments
qoobdll.zip
qoob dll and sample zge-project
(45.47 KiB) Downloaded 1025 times
qoobzge.jpg
the sample zge-project
qoobzge.jpg (30.45 KiB) Viewed 14686 times
qoob2.jpg
qoob modeler
qoob2.jpg (54.41 KiB) Viewed 14686 times
qoob1.jpg
qoob modeler
qoob1.jpg (55.11 KiB) Viewed 14686 times
Last edited by VilleK on Sun Oct 24, 2010 11:58 am, edited 1 time in total.

User avatar
Kjell
Posts: 1608
Joined: Sat Feb 23, 2008 11:15 pm

Postby Kjell » Thu Oct 21, 2010 6:29 pm

:?:
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. ) :)

K
Last edited by Kjell on Thu Oct 21, 2010 6:35 pm, edited 1 time in total.

User avatar
y offs et
Posts: 418
Joined: Wed Apr 22, 2009 4:26 pm
Location: BC, Canada

Postby y offs et » Thu Oct 21, 2010 6:30 pm

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.
"great expectations"

User avatar
jph_wacheski
Posts: 1005
Joined: Sat Feb 16, 2008 8:10 pm
Location: Canada
Contact:

cool!

Postby jph_wacheski » Fri Oct 22, 2010 3:04 pm

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.

Sweet!
iterationGAMES.com

User avatar
VilleK
Site Admin
Posts: 1866
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Postby VilleK » Sun Oct 24, 2010 12:03 pm

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.

User avatar
jph_wacheski
Posts: 1005
Joined: Sat Feb 16, 2008 8:10 pm
Location: Canada
Contact:

fun

Postby jph_wacheski » Mon Oct 25, 2010 3:09 pm

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.
Attachments
QoobZge_jph1.zip
little crapy demo,. .
(48.07 KiB) Downloaded 891 times
iterationGAMES.com

User avatar
Kjell
Posts: 1608
Joined: Sat Feb 23, 2008 11:15 pm

Postby Kjell » Mon Oct 25, 2010 5:07 pm

:)

@jph - http://emix8.org/forum/viewtopic.php?p=3421

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 ).

K

auld
Posts: 4
Joined: Mon Oct 25, 2010 5:09 pm

Re: Qoob.

Postby auld » Mon Oct 25, 2010 5:26 pm

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.


Auld
Last edited by auld on Mon Oct 25, 2010 9:18 pm, edited 1 time in total.

User avatar
Kjell
Posts: 1608
Joined: Sat Feb 23, 2008 11:15 pm

Postby Kjell » Mon Oct 25, 2010 5:48 pm

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 ~

K

auld
Posts: 4
Joined: Mon Oct 25, 2010 5:09 pm

Re: Qoob.

Postby auld » Mon Oct 25, 2010 9:12 pm

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.

User avatar
Kjell
Posts: 1608
Joined: Sat Feb 23, 2008 11:15 pm

Postby Kjell » Mon Oct 25, 2010 10:29 pm

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 :)

K

auld
Posts: 4
Joined: Mon Oct 25, 2010 5:09 pm

Re: Qoob

Postby auld » Tue Oct 26, 2010 11:12 am

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.

User avatar
VilleK
Site Admin
Posts: 1866
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Postby VilleK » Fri Oct 29, 2010 2:26 pm

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.

auld
Posts: 4
Joined: Mon Oct 25, 2010 5:09 pm

Re: Qoob.

Postby auld » Mon Nov 01, 2010 4:15 am

@ville

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.

Auld


Return to “Extensions”

Who is online

Users browsing this forum: No registered users and 1 guest