Vertex Painting a Drain Pipe - This tutorial will show you how to use 3ds max’s built in vertex painting feature to control procedural materials in SimbiontMAX.  You will need basic operating skills for 3ds max 3 or 4 and SimbiontMAX.

1. Drainage pipe.

For this tutorial, we are going to create a very simple scene with a metal pipe sticking out of a block of concrete. The surfaces are going to be textured using two basic materials that come with SimbiontMAX 2.0.  The textures will be controlled by tying the material’s tweaks to max’s built in object modifier VertexPaint. Although VertexPaint provides only very rough surface painting, it is an excellent tool for controlling SimbiontMAX’s tweak parameters.

2. Modeling primitives.

First, let's create the primitive objects we will use to model a drainage pipe and a concrete block.  Since we are going to use the VertexPaint modifier on these objects , we are going use a higher polygon count than you would normally need (we need more vertices to paint).

let's start with the drainage pipe.  Create a Tube primitive in the Front facing viewport. Set the dimensions to:

  1. Radius 1:  60.0
  2. Radius 2:  70.0
  3. Height:  150.0
  4. Height Segments: 30
  5. Cap Segments:  3
  6. Sides: 50

Next, create the concrete block using the ChamferBox primitive.  Since we are just making a block, we could have just used the Box primitive but the slight edge smoothing of the ChamferBox improves realism.  Create the ChamferBox in the Front viewport with the settings:

  1. Length:  200.0
  2. Width:   200.0
  3. Height:  40.0
  4. Fillet:  2.0
  5. Length Segs: 40
  6. Width Segs:  40
  7. Height Segs: 8
  8. Fillet Segs:   2

The final object will be a Cylinder that we will use to punch a hole in the concrete block giving a place for the drainage pipe to run. Create the Cylinder in the Front viewport with the following settings:

  1. Radius:  73.0
  2. Height: 50.0
  3. Height Segments: 5
  4. Cap Segments:  1
  5. Sides 50

Translate these three objects to the origin using the Transform Type-In tool (F12).  The result should look something like the screenshot.

3. Creating a hole.

Now, let's cut out a hole out of the concrete and place the drainage pipe.

First translate the Cylinder primitive back a little so that it straddles the ChamferBox.  Select the ChamferBox and choose the Compound Objects modeling primitive Boolean. Now choose the cylinder as boolean’s Operand B.  Make sure the Operation is Subtraction (A-B) .  The Cylinder should disappear cutting a nice hole out of the concrete block.

Now, move the drainage pipe back through the hole you just made. I translated it 17 units in the Y direction.  I also tilted my pipe down a couple degrees since its supposed to drain water.

4. Apply the 3D materials.

The modeling is now done so let's start texturing the surfaces with SimbiontMAX. We are going to use two materials that come with SimbiontMAX 2.

Go to 3ds max’s Material Editor and create a SimbiontMAX material. Load “metalScratchSteel.dsts” that is include in SimbiontMAX’s Materials folder.  Now go to the Coordinates rollout and set X, Y, and Zs Tiling scale to 2.0. This will make the scratches and rust a little smaller. Create another SimbiontMAX material and load the “buildConcrete.dsts”.

Now apply the scratched steel material to the pipe and the concrete to the block.  Although the textures look ok, they don’t fit the material.  We will fix that next.

5. Rust painting.

Now for the cool part. We are going to use VertexPaint to control where the rust appears on the drainage pipe.

First select the Pipe object and apply the VertexPaint modifier to it. Next, open the Material Editor and open the Tweaks panel of the Scratched Rusty Steel material.  Find the Rustiness tweak and assign the Vertex Color Map to it.

Now go back to the VertexPaint modifier. Anywhere you paint a dark color on the surface, you get rust.  Black means maximum rust and white means minimum rust. Using the paint tool, paint around the edge of the pipe were it meets the concrete, on the sides, and on the bottom of the inside.  You will have to use your own artistic judgment as to how you want the rust to be distributed. Below is what I did.
And here is what it looks like rendered. You can see that where the vertices are painted darker, you get more rust.

6.  Concrete pitting.

Now we are going to use vertex painting to control the erosion of the concrete block.

Select the concrete block and apply a VertexPaint modifier to it like you did in step 5. Next, open the Material Editor and open the Tweaks rollout of the Concrete material. Here we are going to assign the Vertex Color Map to the Pitting tweak.

We have somewhat of a problem though.  The default color of the VertexPaint modifier is white which would set Concrete’s pitting to maximum all over the surface. We want most of the surface unpitted so we can paint in the pitted areas.  To do this, we could paint the entire block black but its easier to use an Output map to invert the Vertex Color map in the Material Editor.

Select an Output map for Concrete’s Pitting tweak. Select Invert in the Output map’s Output rollout and assign the Vertex Color map to “Map”.  Note that the Output map is also a good place for making global adjustments to the painting you have done in VertexPaint.

No go ahead and paint on the concrete block were you want pitting. Again, you will have to use your artistic sense as to where you want pitting.  I chose to pit the concrete around the edges as you can see in the image below.
Here you can see how that pitting came out.

7.  The results.

Now, go ahead and light the mini-scene and get a final render. I rendered two versions with different main light locations to highlight parts of the surface.  That is it for this tutorial. VertexPainting SimbiontMAX 2 tweaks can result in some truly great looking output and is a technique you will definitely want to take advantage of.

Copyright © 2006 Darkling Simulations, LLC. All rights reserved.         Any questions? Mail me!