Hacker News new | past | comments | ask | show | jobs | submit login
MagicaVoxel: A free voxel art editor and path tracing renderer (ephtracy.github.io)
293 points by Tideflat on Dec 20, 2018 | hide | past | favorite | 64 comments

I highly recommend people check this out if you're interested in voxel graphics, or a simple way to make 3D graphics if you're artistically challenged like me. We used it to make a whole game and it was great: https://www.larvalabs.com/project/roadtrip

Here are some other awesome things made with it: https://twitter.com/HuntingFluff/status/1046417418459975681 https://twitter.com/Sir_carma/status/1051867299303440384

And in general I recommend following Sir Carma for inspiration: https://twitter.com/Sir_carma

I followed some links in your links and ended up here: https://www.patreon.com/ondrejsvadlena

It's a crowdfunded game. Here's a walkthrough [0]. It's absolutely amazing. Watching it, I was on the edge of my seat for 20 minutes. The walkthrough's gameplay is a nightime rally chase in the country. The driver is good, by the way. To those who won't watch it through and through, at the very end, he goes to the hydroplant and turns on the roadside lights. The visuals are like nothing I've seen.

I'm not an easily excitable person, and I don't usually throw hyporboles around, but, in my eyes, this is something very unique.

[0] https://youtu.be/Gb4qVZW69lM

Nice looking game! The models look awesome!

Did you do any post-processing on the models from MagicaVoxel before using the models in your game? E.g. does MagicaVoxel export a single optimised mesh, or does it export a load of cube meshes?

Looks like it does export a single "optimised" mesh (at least when exporting to OBJ) - i.e. it not just a load of individual cube meshes, but each separate coloured face is optimised into 3 or 4 triangles. A face with different colours is treated as a separate set of triangles though, so something like a chess board pattern would be a lot of triangles, but a white cube would be hardly any.

I had some trouble importing directly into Unity 2019, this is what I did for anyone else wondering:

- Export as OBJ in MagicaPixel

- Import Obj & Png into Unity via drag-n-drop

- In the prefab that is generated, on the model tab change the imported model's scale factor to 0.1 and hit apply.

- In the prefab that is generated, on the material tab click extract materials and save in same folder.

- Drag the Png texture you imported into the Albedo of the extracted texture.

You now have the textured MagicaVoxel model in Unity for whatever you want to do with it. Yay.

This process sounds a lot better than what we did a couple years ago when we were working on that game. Our process involved Voxel Shop https://blackflux.com/node/11 and a few steps. I can dig up the notes if it's interesting, but it looks like your process is better anyway.

I've also heard that this asset might be useful, but I haven't tried it yet: https://assetstore.unity.com/packages/tools/modeling/magicav...

Thanks for the info. Going to try importing into Godot later today.

You might enjoy Voxatron, a voxel based game engine. You can program it in LUA and it exports to various platforms


Your google play link is broken https://www.larvalabs.com/roadtrip/

Thanks for the heads up, I didn't realize the game had been removed from sale. Working on getting it restored now :/

looks like a crossover of Frogger and Outrun! Looks fun!

Dead Android link? Aww. :( I think you missed out on 1/2 the possible publicity of having the top comment on a front page HN post!

MagicaVoxel is great! Even though the program is not open source, the file format is documented by the creator [0]. For a small game I'm working on I read in the vox files and reconstruct the meshes in-game. I can then create procedurally destructed variations by tweaking the vox data and re-generating the meshes in-game [1]

[0] https://github.com/ephtracy/voxel-model/blob/master/MagicaVo...

[1] https://twitter.com/MaxBize/status/1048717357319745538

This is what every software should do. I don't care if software isn't free or open source, but file formats should be documented so that they can be read later or processed by other tools.

I'd go a little further than "documented". MS Office's .docx and .pptx files are "documented" but creating a compatible reader is a major undertaking. I wish people would hold off until there's an existing open source project that can at least decode the files enough to accurately convert the files to another format. Avoid lock-in before has a chance to take root.

This is one of the reasons why I went with Arq for backups - it's a thing I tend to forget about, so if five years down the line the software turns out to no longer exist for whatever reason, I can be confident there's an open source unpacker somewhere.

Few Questions:

* Who's https://twitter.com/ephtracy? Why did you create this? How are you using it this days? Are you making any games with this?

* How do you produce images like this? [1] Is the Ray Tracer to do that built in or do you have to import the models in a second software?

* What kind of support is there for the vox file format? (where/how to render outside the app).

1: http://ephtracy.github.io/image/snap2016-07-02-17-16-08.png

2: https://github.com/ephtracy/voxel-model

> Who's https://twitter.com/ephtracy?

Unknown, they appear to like their privacy.

> Why did you create this? How are you using it this days? > Are you making any games with this?

"the project is also used as my personal research platform, so it contains codes for unpublished features and from other private projects." [0]

> Is the Ray Tracer to do that built in or do you have to import the models in a second software?

It has a built in renderer, or you can export to other tools (e.g. Unity3D) if you want more control of rendering or to be able to rotate/deform the models. I see Export options for: obj, ply, mc, xraw, slab, qb, vox, iso and 2d.

[0] https://github.com/ephtracy/ephtracy.github.io/issues/108#is...

Closed source + anonymous source = recipe for malware. I recommend running this in a sandbox of some kind.

@ephtracy has been developing it for over 5 years. I understand why you might be concerned but that's a lot of time to invest creating a niche piece of software in order to launch a malware attack. If it was new today I might share your concern.

The programmer is Sean T. Barrett:

* https://github.com/ephtracy/stb * https://nothings.org/

The Buildbox UI is very similar to Magicavoxel

That's just some code that @ephtracy is using.

"ephtracy/stb forked from nothings/stb"

Sean T. Barrett is @nothings on twitter per the twitter link on https://nothings.org/

Please, creators, if you're reading this: Stop labeling things 8-bit that are in no way 8-bit except there are some big squares/cubes involved.

"8-bit" is clearly and widely understood as meaning "intentionally pixelated for artistic effect with a limited color palette, with an overall aesthetic comparable to classic 8-bit game consoles", whether in 2D or 3D.

Obviously it's not meant to be taken literally.

You might as well complain that "modernism" isn't modern anymore or that "gothic" novels aren't from the same time period of gothic architecture... or that roman typefaces come from places other than Rome, or that italic typefaces aren't all from Italy.

> You might as well complain that "modernism" isn't modern anymore or that "gothic" novels aren't from the same time period of gothic architecture... or that roman typefaces come from places other than Rome, or that italic typefaces aren't all from Italy.

I learned not to in front of people, but honestly, this is a problem - a problem of people introducing bad names, and then no one correcting them even decades later.

It’s not actually a problem. It’s fine. We all understand each other.

It's more and more cases of terms where the meaning in use is different from the literal one. I.e. more exceptions to remember. More unnecessary cognitive load.

The majority of phrases and words in any language have a modern meaning that does not resemble their literal origins. That’s how language works.

You find it cognitively burdensome to remember that italic fonts aren’t necessarily made in Italy?

> Obviously it's not meant to be taken literally.

In that sense, we could also say that Minecraft has voxel graphics, since a lot of people seem to think so. It looks blocky, so it must be voxels.

I wonder which "voxel"-engine Minecraft runs on ;p

Well, the Minecraft world is represented as voxels, so it's not that far off to say it 'has voxel graphics'.

In this context, "8-bit" is a well understood name of an art style. In this context, it's well understood that this has nothing to do with the bus width of processor architecture or misc color/data bit widths.

Think of it as a label like "modern art", which is art from 1860s to the 1970s.

You are correct in general, but in this specific case the program is labelled "8-bit" because there is a palette limit of 256 different colors per model. Note: not output pixel colours, but rather colors that each voxel can be.

Sure, but they're already saying "Voxel", which seems to be a better, more specific term here.

Technically accurate and precise specificity is rarely a goal when marketing a product. Their target audience will be using "8-bit" in their search terms.

The tag line is on the site says:

> A free lightweight 8-bit voxel art editor and interactive path tracing renderer.

Is the sentence in some way more clear with the modifier '8-bit'? What's being clarified?

That the voxels are each a solid color and are expected to be displayed at between 1x1 and 4x4 screen pixels per voxel. Definitely not minecraft-style, for example.

That people are looking for “8-bit.” For instance, someone might google “8 bit editor.”

Someone might also google "audio editor", so why not also call it an audio editor to be on the safe side?

8-bit style voxel art can easily be made with this. In fact, that's the intended use case.

This would be a very poor tool for creating audio, and anyone looking for an audio tool would notice this immediately.

"8-bit voxel" is completely understood to the target audience. Anything involving audio would not.

The real reason it's called 8-bit is because each model has a limit of 256 colours, NOT because of "8-bit" retro aesthetics. See: https://twitter.com/ephtracy/status/575207275985530880?s=20

8-bit has evolved to mean something else to the masses. Deal with it.

Absolutely brilliant piece of software, I'm a huge fan. It's extremely easy to get started with, and a very pleasant way to spend your time, whether you're a professional artist or not. Imagine building stuff in minecraft but 10x more convenient. And the developer keeps making it better and better.

A few things I've made with it:




Follow the developer for a lot of awesome and inspiring examples:


Also I've made a little collection of my favorite artworks:


Here's a time lapse of William Santacruz using MagicaVoxel to make some Mario fanart [1]. I recommend playing at 2x speed.

Gives you a good idea of what the app can do as well as how voxel modelling is different from traditional polygonal modeling like in Blender.

[1] https://www.youtube.com/watch?v=bPtw7L-lV7Y


I understand the reasons, but it's always disappointing to see a project on GitHub that doesn't actually plan on releasing source code.

Strongly disagree.

GitHub is among other things a platform for sharing.

Sharing should not be obligatory.

When someone shares something, if you like it, be grateful, and if you don't, just move along.

If you want to know how it's done just go and read some open source voxel library - there are ton's of them. If you are interested on the path rendering part there's lots of awesome didactic resources for that as well.

If you don't trust the author and are afraid that the code does something nasty - just don't use it.

If the author feels he is not contributing - or not willing to contribute - to the state of the art in voxel techniques or path rendering (both of which are totally fine stances) then there really is no value in showing the source.

If someone creates a free tool for making art, their contribution should be cherished, and their tool used for art, and appreciated for it's artistic merits. Don't give shit for the author for releasing the free tool on his own conditions. If you don't like those, move along. Or, if you are inspired, go make your own and open source it!

By the way, that discussion is just horrible. The author lays open the reasons why he does not want to release it and the other party just disagrees. "We could help you with the patches... I would like to read the code that I run".. Oh really? I wonder if he really has read through the entire codebase of the operating system and all of the drivers and all of the programs he runs.

"Helping out with the patches" without adult supervision can lead to this:


I totally understand why the author would not like to nanny the internet's eager contributors. An open source project needs a huge cultural effort to collect and coordinate technically savvy key contributors before it can work. That won't happen automatically. Not everybody yearns to be a benevolent dictator for life of this or that.

It'snot obligatory but it's still disappointing.

Why is it disappointing? Sorry, I really don't understand and would like to.

"disappointing: failing to fulfill someone's hopes or expectations."

I think you're viewing it from the "expectations" side, while binarycrusader, pawelmurias, and I are viewing it from the "hope" side.

If this were open source under a license that makes sense to us, I think all three of us were thinking we'd like to use the code to do other things. That's just a hope.

If it's on github you kind of expect it to be an open source.

Finding that it's not open source when you expect it to be (almost everything on github is open source). If you find something is worse then you expect it to be you get disappointed.

Would it be better if you could read the sources? How do you know you could understand it? How do you know you could get it even to compile?

Sure, the binary is public, but that does not imply that the author has the codebase in any shape that would be legible or maintainable by anyone but him.

Sometimes projects grow so complex that only the original author can understand it. And there are lot of examples of projects that grew too complex even for their maintainers to understand.

What I'm getting at is this: making a code public does not make it usable, and cleaning up a research/hobby codebase so it's legible can be quite an effort, and not always possible.

Hence I find it odd to yearn for something you have no idea if it's worth yearning for. Unless one is an afficionado of masochism there are usually much more rewarding things to do than deobfuscate code someone else wrote.

Most open source codebasesfor things that don't suck aren't trash (and if they are that would be a disappointment). Also I'm disappointment freeware things still exist.

For Linux users: the 64bit Windows version runs fine in Wine.

There's a cool little project called "particubes" that is a sort of "magicavoxel lite" on iOS. It's pretty fun to sketch 3D scenes on the go on an iphone. Authors are pretty responsive too.

I love this program, I find it so relaxing to simply listen to some music or a podcast and create some unusual works or art with it. I would love for the creator to make an iPad version one day though, I think using the stylus to work with this tool would be fantastic.

Last time I checked its canvas size was quite small. One could not construct minecraft like landscapes in it.

You can adjust the canvas size. There's a place where you can enter the voxel x voxel dimensions you want to work in.

Edit: in a recent update it added support for 1024 x 1024 scenes.

For those like me that couldn't work out how to create bigger scenes, the world editor is available by pressing TAB or clicking the TAB icon above the top-right corner of the main view.

The speed and quality of the rendering is insane. I would love to know how it is done.

Looks cool! Is there a way to make the UI / fonts bigger on 4k monitors?

Just use CTRL+PLUS or CTRL+MINUS to scale the UI

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact