ZBrushCentral

Zbrush normalmaps & LW hardbody objects

I have trying to make Zbrush normalmaps to work with LW9. I’ve studied the great Zbrush<>LW pipeline guide by Steve Warner, and it works great for subdivided, organic objects.
But now I’m trying to make a normalmap for a not subdivided, hardbody object. I took a simple box object from Lightwave and divided it in Zbrush with “Subdivide smooth” off. This way it stays in the sharp box-shape. I put on some random detail and export a tangent normalmap, flipped vertically. When I render the applied normal in LW9, I get pretty weird results. (see picture)
Then I did the same thing again, with “Subdivide smooth” on in Zbrush. Now I have to paint my detail on an object that doesn’t resemble my box. The exported normal looks better, but gives strange artefacts (picture result 2).
[boxproblem.jpg]
Does anyone have good experiences with using Zbrush for non-organic, sharp-edged objects? I want to make a detailed armoured tank as texturing study, with normalmaps on it, but I can’t do it if I have to smooth subdivide it in Zbrush…
any comments would be very welcome!
Plakkie

Hi Plakkie,

For the type of project you’re talking about, I would recommend using a standard Bump map. Bump maps aren’t dependant on the resolution of your mesh. Therefore you don’t have to subdivide the object in ZBrush at all. If you want to texture a box, simply import it and begin texturing.

If you want to get more realistic results, I’d recommend going with a Displacement map over a Normal Map. The Normal Map will work, but the lower the polygon count is on your base object, the less it’s going to look good, which is what you’ve already found with your box test.

I’m currently wrapping up production on Essential LightWave 9. Once I finish this last chapter, I’ll be doing a tutorial on texturing rigid objects in ZBrush. I’ve also got a four-part series on sculpting and texturing in ZBrush that will appear in the next several issues of HDRI-3D. It was designed to read as an addendum to the ZPipeline Guide. There’s some good stuff in there, so it’s worth checking out if you’re interested. :slight_smile:

Cheers!

Steve

Hi Steve! Great news about Essential 9 and that tutorial about rigid body texturing. Will the last one appear on your site? (some change would do it good :D) I’ll be looking forward to it.
I’m not quite sure that I understand what you said about normalmaps.

“the lower the polygon count is on your base object, the less it’s going to look good”

Does this mean I have to (hard) divide my initial LWO a few times before importing it to Zbrush? I kinda’ thought that normalmaps were supposed to work on low-poly objects to get detail nonetheless? :frowning:
I’ve did a test but my normalmap was still giving strange artefects at the sharp edges of the box. I’ll test some more and send some pictures of the results.
I’m also confused if smoothing UV’s has to be on or off during the whole progress.

So far, thanks for answering!
Plakkie

So, I tried again with a more divided box, and described my workflow a bit, hoping to expose my errors.

[multibox.jpg](javascript:zb_insimg(‘49390’,‘multibox.jpg’,1,0))

By the way: I got bad results with a non-tangent normalmap too.

Definitely. I’ve been racking up a list of tutorials I’d like to add to the site once my current projects are wrapped up. It’s just about time to turn that ghost town into a thriving metropolis. :slight_smile:

Sorry about that. I’ll try to explain better. Both Normal maps and Bump maps are surface “cheats” that try to simulate detail on low-poly objects. Bump maps do not require additional geometry in order to work. If you’re doing a texturing study on a rigid object such as a tank, I’d recommend using a Bump map because you can simply import the object into ZBrush and begin texturing. If you want to go with a Normal map, you’ll have to subdivide the object so that you can sculpt the details direclty into the mesh and then generate the Normal map from your high-poly object. However if your object is rigid, it’s likely that you’ll have N-gons in it. These won’t import into ZBrush properly, which means you’ll have to convert them into triangles in LightWave first. The first time you click Divide, ZBrush will convert the triangles to quads. This means the triangular parts of your mesh will have fewer polys than the quads, which means you’ll get uneven mesh resolution and uneven sculpting resolution. So you will likely end up dividing your mesh more than you should have to. Okay. So now you’ve got an object with millions of polys and you sculpt in all the cool details. Why would you resort to using a surface cheat like a Normal map when you could use a Displacement map and get the real thing? So this is why I was recommending using a Bump map or a Displacement map. The Bump map allows you to bypass all the headaches of having to work with a high-poly object. And if you want to work with a high-poly object, just use a Displacement map.

All that said, if you still want to use a Normal map, then there are a few things to consider:

  1. Since Normal maps are surface cheats, they need proper lighting to look good. (I’m not a computer scientist and can’t tell you the technical reasons why this is. I’m just speaking from my own observations and experiences.) In your example above, it appears as if you’re trying to light your object with a single light. Try using a three-point light setup. That ought to improve things right off the bat.

  2. The fewer surface normals you have to work with, the more shading “errors” you’re going to see on your object when the Normal map is applied to it. I believe this is due to the way Normal maps work. Bump maps don’t seem to suffer from this limitation. That doesn’t mean you can’t get nice results from a low-poly object. But you can’t expect to replicate the look of a 1.5 million poly object on a 6-poly box. The more polys your base object has, the more it will look like the high-res counterpart.

  3. You’ll likely need to increase the Amplitude setting in LightWave to get comparable results to what you see in ZBrush.

  4. MipMap is EVIL. Turn it off. If you don’t, your Normal Map will look chunky and distorted.

  5. Get rid of Non-Planar polys. If you’re using a higher poly object such as the one in your example above, export the Object at SDiv=1 after you’ve sculpted. Then bring that object into Modeler. Use the Statistics panel to select the Non-planar polys. Then use the Triple command to convert them to triangles. This will help reduce the rendering errors that come from Non-planar polys.

  6. If you’re using a higher poly mesh like the one in your example above, turn on Surface Smoothing in LightWave. This will typically give you better results.

Now, in your example above, it looks like the Normal map is flipped. Open the Preferences menu in ZBrush and then open the ImportExport submenu. Make sure that none of the NormalMap Flip options are set. Also, if you’re using any plugins to generate your Normal Map such as ZMapper or MD2, try generating it the old-fasioned way as described in the ZPipeline Guide. If you try all of this and your map is still inverted in LightWave, try using the Invert buttons in the Normal node to correct the problem.

Below is an image that shows a box similar to the one you’re working with. I created a straightforward 6-sided box in Modeler. Then I created an Atlas texture map for it and exported the object for use in ZBrush. I imported the object and divided it 10 times to get 1.5 million polys. Then I sculpted a bunch of random details. When I was finished, I dropped my object’s SDiv back to Level 1 and created a Normal map. I applied this to my 6-poly object in Layout using a three-point light setup. You can see the results on the far left of the image. It looks okay and certainly seems to have more than 6-polys, but it doesn’t really look like the source object.

Next I increased my SDiv Level in ZBrush to 5. I deleted the lower levels, generated a new Normal map and exported the Level 5 object. I imported this into Modeler and converted the Non-planar polys to triangles. Then I saved it as an LWO. I brought this into layout and applied the new Normal map to it. You can see the results in the 2nd object from the left. The base object now has 1,994 polys.

I repeated this process of increasing the subdivision level and generating a new Normal map. At 30,419 polys the results are very similar to the 1,500,000 poly object in ZBRush. But the 7,759 poly object and he 1,994 poly object looks good too all things considered.

So all this goes to say that you can get good results with a Normal map. But if you’re going to increase the poly count, you might as well use a Displacement map. LightWave 9 does a really nice job of handling high-poly scenes.

I hope this helps! Let me know if you have any other questions.

Cheers!

Steve

NormalMap Explanation.jpg

Steve, thanks for making such an effort to explain this to me! This is exactly what makes the Zbrush and Lightwave community so great. After such a clear and complete explanation, how can I have anymore questions? :smiley:
I understand now that if I really want all those realistic relief-details on my Tank-object, I should use displacement and bump combined. I don’t care about the polycount, it’s not for a game or animation anyway. Looks like a perfect opportunity to learn about weightmap controlled subpatching in LW9. :cool:
I think the reason why I shy away from bumpmaps in Zbrush is that I’m more comfortable with the sculpting tools than with the color-controled paintbrushes. I’ll just have to try it.
I already noticed that mipmapper was something that escaped from the gates of Hell, but I will experiment with the 3-point light setup, didn’t think of that.

Again, thank you. I now have a more clear idea how I will undertake the texturing and detailing of my tank-project. I’ll encounter more problems along the way no doubt, but if I can’t solve them on my own, I know a little ghost town with the answers. :wink:
Looking forward to the book and tutorials. Know that your writings are a big help for people like me.

Cheers!
Plakkie

Just thought I’d also point out that mip mapping is in two places, in the texture editor and the image editor. One may over ride the other but I’ve not tested it. I normally just turn them both off just to be on the safe side.

I’d also like to ask about the edge artifacts. On the larger image at the bottom, the edge nearest the camera looks rounded when it shouldn’t be and the edges to its right have white lines down them. Was this because you have Pixel blending on and no border/edge spread?