Baby steps with BRIX
EDIT on Oct. 8, 2017: Sadly BRIX is no longer. This post remains for the record, but the software no longer exists.
When texturing large expanses of wall or floor with a tile, brick or parquet image, vizualisation artists face a familiar dilemma: how to avoid visible tiling without losing too much resolution? In other words, large maps that show no tiling are either incredibly big RAM-wise, or they are not detailed enough to be seen up close. Maps that cover a smaller area may have the necessary amount of detail but show visible tiling when seen from a distance.
Materialwerk, a company that also happens to be my neighbour has just released BRIX, a new tool for 3dsMax that could just be the solution, at least when working with tiled materials (planks, bricks, tiles, mosaics, stone cladding, etc.)
To me, BRIX was one of these rare no-brainer purchases. However, as this is quite a new tool, I thought I would post a small explanation of how I used it to create the following image.
First two remarks: This is the result of blind experimenting. I may have overlooked or misunderstood some of the settings, so feel free to correct me. Secondly, BRIX comes with 1.4Gb of ready-made high-quality materials, which should fulfill most needs without the need to dig into material creation. For me, however, it was imperative to use BRIX to create new materials with my own maps (I mostly use my own photos but in this case, I used a map from CGTextures to get started).
BRIX is essentially a 3dsMax texture plugin. After installation and registration, two new maps are available, the BRIX texture and the BRIX Slave texture. The BRIX texture includes the Brick Designer Tool, which allows you to load individual tile images (which you would have prepared in advance in a 2D editor) into separate diffuse, alpha, bump, reflection and displacement slots (you don’t have to fill all the slots if you don’t need them). The following captures show the settings for my red brick texture and the Brick Designer UI. For this material, I used 30 different images of bricks, though very good results can be obtained with far fewer images. Be warned that preparing the individual maps, especially if you want to use all the slots, can be time consuming. The best workflow, it seems to me, is to first create the bump, displacement, specular, etc. versions of the big map you are using as a starting point, arrange them into one document with layers, and only then to start cutting the map into individual brick images.
A very nice feature of the BRIX map is that it allows you to create random variation for nearly all slots. You can randomly tweak the hue of the diffuse map (allowing you for instance to create a varied brick wall with just one map), vary the position of the bricks, and even the tilt and displacement values of individual bricks.
BRIX offers various bond patterns (a few more would be nice) and the option to randomise them using a jitter function. The “Common” section allows you to change the aspect ratio of the tiles (you will want very elongated tiles, for instance, when working on a parquet floor), and how many rows you want to have (few rows for large slabs, lots of rows for tiny mosaic tiles).
Once your BRIX map is ready, you can use it pretty much like any other map in Max. One novelty is that the map is coded in such a way that Max will understand which information to use depending on which slot you’re plugging it into. If you use it in the bump channel, for instance, Max will automatically draw the info it needs from the bump channel of the the BRIX map. For the reflection and glossy reflection channel, however, you should input it first into a BRIX Slave texture, whose role it is to extract these channels from the master map. The Slave map does not seem to correctly pass on bump or displacement information, but since you can use the master map in these channels, it does not really matter. Here is a shot of the Slave map and the settings for my Brick material (in Vray).
One nice thing is that the composite BRIX map offers you feedback in both the Max viewport and UV editor, which allows you to refine the placement of the bricks, though I found that the viewport occasionally differs from the final render, which can be annoying (though it may be my own mistake). Here is how it looks in the viewport:
Now that’s pretty much all there is to it. The end result is a map that can cover huge areas without visibly tiling and can still be seen in all its detailed glory up close (and that without overburdening your RAM). Of course, the final result will depend on the quality of your maps. Materials with either no or a rather homogeneous mortar work best. There is also an option I haven’t tested to create a procedural mortar. The few gripes I have concern the Brick Designer, which could be faster. There should be an option for instance, to load all images in one slot at once (If there is one, I haven’t found it), or to copy one image from one slot to another (from bump to displacement for instance) rather than reloading it several times. The good news is that you only have to create a BRIX map once as the settings can be saved in an .xml file for fast re-use.
All in all, I would warmly recommend BRIX to any perfectionist architectural vizualiser. Here are a few more examples done with other CGTextures images. The green mosaic material only uses 13 different tiles.