Art Post: Let's do a MagicaVoxel Project!
I've been doing a bit of work on indie stuff, but I wanted to take a break to cover a topic that a couple of people asked me to cover. I do a bit of artwork across multiple mediums, from 2D stuff in Photoshop to MagicaVoxel scenes - today I wanted to cover the start of making of a scene, as I also discover how-to so that we can all learn together. This tutorial is split into multiple parts and for this first one we're going to go from idea/concept into the start of building the scene.
I've done a range of complicated and simple MagicaVoxel scenes in past, I use the software package mainly to express my ideas quickly and to seek to bring to life concepts in my head that may be too complex to cover otherwise. Some of these scenes have been quite vast and expansive, whilst others have focused on a single vehicle or character.
MagicaVoxel is a quite powerful in enabling for scene to be mocked up - but these scenes are best served when an overarching concept is interesting in nature. I don't often sketch or pre-plan my scenes, and very rarely use reference pieces prior, but this time we're going to approach it a little bit different. This is to ensure that we establish a set process in how we want to create something that minimizes time wastage and drills to the core of something that has a visual-narrative element attached to it.
So for this particular project, I want to leverage the strengths of MagicaVoxel and reinforce the visual draw-cards of the what makes these scenes so attractive; something big, moody, but also slightly familiar and dramatic in nature. It helps when you're coming up ideas to watch some videos and look at images, and don't be scared about looking at other people's work as it may include ideas or concepts that might gel with you.
Some of the videos I've been watching are: 'Rise', 'Seam' and 'The OceanMaker' by DUST studios. I have some goals when watching these videos, but I wanted to approach the scene development systematically too in order to justify animating and moving into Unity with MagicaVoxel. If you want to get a bit of an 'intro to MagicaVoxel' exposure before reading on, head over to the official channel to learn the features!
Let's talk basics - what does an engine give us for our MagicaVoxel pipeline that a rendered in the base MagicaVoxel package cannot do?
- Animations: MagicaVoxel can make very rudimentary timeline animations, but in Unity we can do a lot more complex animations; from cloth to water, and utilize prefabs to speed up our workflow.
- Particles and Lights: MagicaVoxel has no directional lighting and the emissive materials are great, but I want to be able to light my scenes and add dynamic elements like rain or fog.
- Asset Management: This is more backend, but I want to have better control over what my assets do in the scene. The new .99 MagicaVoxel tools are great for managing rudimentary libraries of content but really fall short of offering a smooth UX experience.
- Animated Materials: I love the GIF-to-Animated Sprite pipeline in Unity. I've used it extensively for a personal indie project a long time ago and found it to be a really great way to approach populating scenes with little overhead. Especially with static cameras.
Ok at this juncture we have some goals and outcomes that we want to hit - I mocked up an artboard of a project style I have in mind; a lighthouse in the desert on edge of a desolated landscape. Deviating from my usual style, which is to block-out and experiment, I want to actually take you through the steps of preproduction for environment design based on selecting an idea or concept that fits my goals.
My mood-board includes a range of references, voxel-art styles and some ideas that might impact the direction I want to go. It's important to note that I'm mainly interested in having this be a learning project, so I'm not spending too much time on pre-planning. Also, MagicaVoxel is a good resource for quick block in to establish the scene. This doesn't exclude having a general idea for what I want to build, so I'll look to at least sketch up something.
So the general concept is to have a lighthouse on the edge of a ridge, in a bit of a dark/stormy atmosphere, with rain. It's quite ambitious, but it ticks a lot of the boxes for why I want to do something in-engine with Unity and MagicaVoxel. I'm able to take advantage of the spotlights, particle effects and also the PBR material setups. If you're not familiar with PBR, there's some good reading here. Essentially it uses values packaged into textures to determine the reflectivity, metallic or diffuse properties.
With these sketches and references, I've blocked-out a simple scene using multiple objects - separation here is key, it'll give you better control over managing your assets and moving/relocating key items. MagicaVoxel gives you the ability (with TAB button) to switch from World/Edit view, enabling you to add and remove separate objects from a complete scene. The reason why you may want to do this is actually also for the pipeline - you want to separate your props and certain materials away from each other to better control them in-engine. The formula I'm following for this is based on a simple premise:
- Is it a key asset? Such as a character, building or vehicle?
- Is it a translucent material?
- Is it something that may be repeated several times in a scene? A rock? Shrub? Prop?
- Is it something that may require animations? Idling? Movement? Does it require sub-parts?
The block-in also gives us a clear critical overview at an early stage to assess our scene, I'm not an environment artist by proffession so there are plenty of bad decisions in this scene - but I can still use whatever critical skills I have to assess some of the decisions when designing this environment.
The block in gives me some early indicators about composition and line adjustments I need to make in order to have a bit more of an interesting setup - the tower to be extended in order to break away from the background, the foreground to have more rocks/junk and indicators of a path with ramps to indicate both sense of scale and some environmental story telling. This is a part where you can have a bit of well-considered and even self-indulgent fun; I wanted to include a 'sky-pier' to the lighthouse, with protruding wooden scaffolds for docks, whilst also giving the scene the premise of it being some sort of 'edge of the world' docking station. It's important, to me, to establish some embedded narrative within the visuals, as this may guide both further references but also how the scene is further defined.
For the sake of time, I'm settling on this premise: At the edge of the known world, lying before a vast sea of dead memories, lies one of many sky-docks that lead the way for scrappers to return home with their hard-earned plunder of scraps.
This premise immediately gives us some information regarding how I'll tackle some of the visual design elements of the buildings, the vehicle and surroundings - remembering that with voxels, minimalism is key.
So with my chances in mind, I've elected to start adding in some macro-details around the terrain and explore some concepts; what is the base of the tower made from? Are these ruins or a new construction? What type of landscape is it overlooking? These are all instrumental in figuring out where the scene will head, including the terrain colors. I've elected to make the ground 'cracked' and eroded, with the base of the structure worn away. The concrete barriers start to add to the division of the environment, with the incremental decline from top to bottom of the scene's elevations help us frame the tower as the central prominent construct.
The entire workflow at this stage is very easily repeatable and requires no advanced knowledge of the MagicaVoxel pipeline - you need to know how to create/paint boxes, erase voxels and how to create a new object/shapes.
At this point in the process, I've decided to import some existing building assets that I had - the rationale here is that I want to see what a rough block out looks with complex assets, and how best to separate that visual density from the mid-ground key-asset, which is the lighthouse. I've elected to have road-like clearing between the background building and the mid-ground lighthouse, and it seems to be working somewhat well with the draping of the shadow over the building in the background.
This post has been really long so far - so I'm going to split these up into several parts and will update this tutorial to link to the next here.
I'll have the next section coming out in a day or two, covering lighthouse construction.
Thanks for reading!