VoxelShop (Voxel-Editor)

flux

New Member
#1
Hello artsy people!

Over the last years I have written a voxel editor called VoxelShop in my free time. Features are still being added, but there is already a lot you can do!

(click the image for more info)

Looking forward to seeing your creations and your feedback! I'm very confident this is something you'll love!

Thank you!
flux

Edit: For updates you can follow me on twitter @whiteflux.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
#2
Hello flux and welcome :)

While I'm at work I can't see a lot of images and some sites, but I found enough on the web to find that editor pretty impressive looking! Very cool to also see an associated 3D printed model. I know COLLADA has come up in the past but I'd need to search around in the forum to find out why. I'll have to come back to this after I get home :D
 

flux

New Member
#3
Thank you! Looking forward to your feedback!

COLLADA is pretty much the file format for 3D models. Most 3D programs support importing it.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
#4
So after getting home .. I find that I already saw that picture when I dug up the website that wasn't actually blocked at work ;)

I remember COLLADA now coming up in the Skeletal Animations thread, that was replaced by a Skeletal Mesh thread. IQM format also came up and we had two (or more?) different contributors willing to add support for that to Terasology, but no code materialized :(

Still, we've talked about more/different format support in the past and I'm sure it'll happen eventually.

Speaking of crazy things that should happen one day - we've also talked about actually creating creatures and such in-game, but embedding Blender in-game ... yeah. But if there was only some light-weight version of Blender, in Java, that supported compatible formats, including skeletal animation, with the bonus of easy 3D printing ... oh if only! :ninja:

So curiously, how interested might you be in working more closely with a project like ours? :D
 

flux

New Member
#5
Always interested to participate in a cool project =) What do you mean by more closely exactly though?

Pmed you my skype name, so we can discuss (I'm semi-away until next week though).
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
#6
I've done a bit of work with collada in the past. My understanding is game engines don't generally support it directly for a variety of reasons, but it is often used as part of asset pipelines for moving assets between tools while working on them. Although it looks like this is changing now, so perhaps collada support is something worth reviewing.
 

flux

New Member
#7
I'm actually not sure why COLLADA is not used by more engines. Maybe because the xml format makes the files bigger and a binary format might be faster to load.
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
#8
Tools also can put extra, unnecessary information into the Collada files that is relevant to their logic but doesn't need to carry across in game. This also bloats the files.
I believe most of the time when an engine "supports" Collada, that just means it imports it and then transforms it into the engine representation.
 

flux

New Member
#9
Well, at some level transformation happens with all formats when they are imported into an engine. I should correct my previous post: "... why COLLADA is not supported as an import format by more engines". And I think I gave the answer there already. Big titles sometimes need to import many, many files and loading time is a concern there. An xml format is certainly slower to load than an optimized binary format. I don't see a reason for you not to support it. One could always use a script later on to convert to an "engine like" format if necessary.

Will be talking on skype to Cervator soon. Really curious!
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
#10
I think our current model file format is all text anyway, so not like we're getting any optimization value out of something binary. Although we might if the files are more lean with less extra fluff :)

We currently do some magic to get files out of Blender along with some Terasology specific stuff, so yeah maybe a similar phase for a different format anyway.

flux have you got any experience with the IQM format? That was being worked on before and sounds to be binary. I wonder how they'd compare
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
#11
Well, at some level transformation happens with all formats when they are imported into an engine. I should correct my previous post: "... why COLLADA is not supported as an import format by more engines". And I think I gave the answer there already. Big titles sometimes need to import many, many files and loading time is a concern there. An xml format is certainly slower to load than an optimized binary format. I don't see a reason for you not to support it. One could always use a script later on to convert to an "engine like" format if necessary.

Will be talking on skype to Cervator soon. Really curious!
flux To be clear, I'm not saying we shouldn't support it. Just stating my experience/understanding. I see no reason not to support it, other than having to find some time/hands to do so. VoxelShop is a Java app, right? Did you use any particular library to support Collada that you would recommend?

Cervator IQM has both a text and a binary format.
 

Mike Kienenberger

Active Member
Contributor
Architecture
GUI
#12
Wow! I am not much of an artist, but VoxelShop is really easy to use! flux, definitely give us an idea of how we can import the file formats, because I'd love to be able to create Terasology objects using this tool! I did some quick searching but wasn't able to find anything that could convert between collada and md5 directly. My only hiccup in creating a "dog" (moose?, well, some kind of animal-eque thing) was I couldn't figure out how to deselect without saving, quitting, reloading. (escape/deselect button didn't do anything for me)

UPDATE: I looked into both the md5 model and our Terasology model for skeletal mesh (very similar to md5, unsurprisingly). It doesn't seem like it's trivial to convert from a DAE to an MD5 format. I'm not completely sure how you calculate the bone/joint weights. I did convert the DAE to an OBJ/MTL format, and then load it in, obviously losing the animation. That works although I just used a placeholder material file. The load fails for a standard VoxelShop model because we are unfortunately requiring texture coordinates for everything, even if the material doesn't provide any textures. The error-checking code can either be commented out (path of least resistance) or you can select all of the voxels in VoxelShop and apply a texture to them.

In the end, I think maybe it's more like a giant cow than a dog.....

Terasology-140215153803-1152x700.png


Another VoxelShop feature request -- ability to make a fine-grained model out of a coarse-grained one. Basically make every voxel into a 2x2x2 set of voxels. So you get the rough shape right, double the size, then do more detailed work. Other magnifications, like 3x3x3, might also be nice, but might be out of place with the simple interface you currently have. But all in all, I just created a cool 3d model that I probably never would have attempted in something like Blender.
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
#13
The load fails for a standard VoxelShop model because we are unfortunately requiring texture coordinates for everything, even if the material doesn't provide any textures.
Yeah, I don't see much use for an obj mesh without texture coords (especially because obj doesn't support colored vertices). Which might be another reason to support Collada for non-animated meshes in the first instance.
 

flux

New Member
#15
Cervator No, I did not work with IQM before. Would be a bit of work, but it's not super complicated to support a new format. If we find a script that automatically converts from COLLADA that would be best though.

Immortius No, I wrote the exporter from scratch. No external libraries.

mike Thank you! Always great to see someone so exited about my program!

Selection "bug": Sounds like you might misunderstanding what selecting is? You need to use the selection tool to select something. With right click drag, esc or deselect all you should be able to deselect. Could you post a screenshot of your problem (with active selection that you can't deselect)? Which OS/JRE are you using?

I need to make more progress on the animation part of the VoxelShop, but I have some other important stuff that I need to do first. Once I get to it, I will look into exporting md5 directly.

I'm also planning to allow export of an optimized COLLADA file that combines surfaces and uses textures instead of colors. That will solve the texture coordinate problem. I'm already using this internally for rendering, just didn't get to changing the exporter yet.

The voxel doubling is a great idea. I think it came up before, but got buried again. Will look into it - should be easy to add.

Haha, the dog looks awesome, but it does need some color =)
 

Mike Kienenberger

Active Member
Contributor
Architecture
GUI
#16
I normally use linux, but I think I was using Windows when I was making the dog.

I'm pretty sure I understand what selecting is.... I mark a bunch of voxels as selected, then perform operations on them (for the dog, I only constructed one side, moved it to a layer, copied it and made the other half of the dog, merged the layers back together). The problem was I couldn't deselect everything (reset my selection to nothing) using the tool bar button. That's what I'm guessing the button was supposed to do.
 

flux

New Member
#17
Ah, that sounds like a bug. Please let me know if you run into it again (and provide instructions how to trigger it if you can). Thanks!
 

Mike Kienenberger

Active Member
Contributor
Architecture
GUI
#18
I wrote the exporter from scratch. No external libraries.
Do you also have a DAE importer? If so, maybe you could donate the code for that to us? That would be a good starting point for us to add in support for it, and we'd be guaranteed to be compatible with your app :)

And, yes, I remain very excited about your editor. I'm probably going to have my kids build some models using it.
 

flux

New Member
#19
No, unfortunately I don't have a DAE importer since it doesn't make a lot of sense for my program. The program is voxel based and importing 3D models would require voxelization of the object. There are other programs that can do voxelization very nicely already, so this is not a priority at all. But writing/finding an importer for COLLADA should not be so difficult. The format is really well documented.

Great, let me know which featured they found intuitive! I found that watching people use my program is the best way to reconsider features =)

----

What do you guys think about importing a voxel format into your game instead of using dae or md5? I could give you code that converts from voxel to 3D mesh on the fly. I'm a bit unsure how one would best support animation in that case, but that's something we could figure out. Upside is that if you wanted to support voxel editing in-game, you'd be much closer already!

Talked to Cervator on skype and I think the first thing I'll add is an exporter for the *.shape format. Seems easy enough and should really help the artists.

The format is documented here btw:
https://github.com/MovingBlocks/Terasology/wiki/Shape-Architecture
https://github.com/MovingBlocks/Terasology/wiki/Block-architecture

----

Might not seem like it, but this problem is very important for the exporter. If you can please up-vote!

http://math.stackexchange.com/questions/678770/triangle-packing-problem
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
#20
Tried to vote for scary math, was told I needed 15 reputation to do so - sad! :(

And yes a block shape exporter would be spiffy, and avoid initial animation complexity. Our blocks tend to behave and stay still after all :)