Brushwave is an image plugin for the 3D rendering and animation package Lightwave 3D. It allows to render all kinds of polygonal models in a painterly style.
I started the project as a proof of concept for a German media company. It is fully usable and stable, while some features are missing. Unfortunately, I have no time to continue development on this plugin, as I am busy with other projects, and I did not get a lot of feedback on the current version.
However, I would still be glad if someone could send me graphics that were rendered with the help of Brushwave!
Any feedback? ⇒ Visit the Discussion-Page!
You can download Brushwave from its project site on code.google.com.
The following files are available:
Unfortunately, I haven't got very many images yet. I did work with several complex models and scenes during my tests, but it's not possible to publish those images due to copyright issues. If you have created any nice images or movies with the plugin, I would be pleased to publish them on this page!
For those images I have, just click on them to view the full resolution:
A few years ago, I created a realtime painterly renderer in OpenGL. It worked quite well, but the image quality was not overwhelming due to some of the compromises I had to take to allow real time rendering. This plugin is taking the reverse approach – I want to achieve the maximum image quality, while mainly ignoring performance issues.
The effect is achieved the following way:
Here is a rough overview of the process:
Great care is taken to provide a maximum of frame to frame coherence:
Brushwave is used in Lightwave's Layout Mode. When you install the plugin (Utilities → Add Plugins), you will find that Brushwave consists of 2 plugins. One of them controls the settings of the rendering process, the other does the rendering.
To render an object with Brushwave, you have to take 2 steps:
Select the object you want to edit, then open the properties dialog. In the “Geometry”-Tab, add the custom object “Brushwave Object”. Double-click it to manipulate its settings:
An overview of the meaning of the settings can be found here.
If you rendered the scene now, nothing would happen. You first need to activate the Brushwave image filter. This can be done under “Windows → Image Processing → Add image filter”. Choose the filter “Brushwave”. The filter does not have many settings yet:
If you render the scene now, the model will be rendered in a painterly style. If you save the scene, Lightwave will remember the settings for the next time.
When you render still images, everything should work fine out of the box – there is not much to take care of. When creating animations, however, there are some things you have to take into consideration. Most of them are a direct result of Brushwave's architecture.
The color of each brush stroke is taken from a reference picture (the image rendered in a conventional style by Lightwave). This is the only source where Brushwave can find the color of a brush stroke!
There are, however, situations when Brushwave knows that there should be a brush stroke, but is has no way of finding its color. In this case, the stroke cannot be rendered! In animations, this usually means: the area will flicker more or less heavily. The following situations can lead to this effect:
Until I find a solution for these problems (read: get rid of the color lookup in the reference image), you can use the following workarounds:
Brushwave needs polygons that are big enough to produce at least 1-2 pixels in the output of the conventional rendering. When polygons get smaller than that, the surface will start to flicker. This means that you sometimes will have to reduce the complexity of your models if you want them to be rendered in a painterly style. Since any small details are lost anyway as soon as you draw the model with brushes, this should not be a problem in most cases.