PDA

View Full Version : UT3 Normal issues



p2xelgen
10-05-2007, 03:27 PM
OK
Normals = hign detail.

image:
http://i110.photobucket.com/albums/n86/Pixelgen/000_image.jpg

I'm not sure if any of you can help me but whenever I knock up a simple normal map with angles I get jagged edges, is there anyway I can get smooth edges on angles. At mo I'm trying to create a few model-to-texture for use in a UT3 map...

-=¤willhaven¤=-
10-05-2007, 03:46 PM
That's probably a resolution issue. You probably either need a higher res normal map, or you need to make those angled bevels take up more surface area so they'll be made of more pixels and will end up looking smoother.

That's my guess anyway. :)

p2xelgen
10-05-2007, 06:36 PM
Thanks
The resolution is 512/512 whats the idea for UT3 ???

DGUnreal
10-06-2007, 04:01 AM
Try creating the NormalMap as a 1024x1024 heightmap instead, keeping the transitions smooth, and run that through the ATI or NVidia software.
That's what I do for a lot of my wall/floor textures and it works great.

p2xelgen
10-06-2007, 05:10 AM
Try creating the NormalMap as a 1024x1024 heightmap instead, keeping the transitions smooth, and run that through the ATI or NVidia software.
That's what I do for a lot of my wall/floor textures and it works great.

OK.
I've just rendered a hightmap but it turned out completly black, am I meant to add lights ? Also what do you mean by keeping the transitions smooth :)

Thanks DG

BigJim
10-06-2007, 08:44 AM
I would assume he means use a little bit of antialiasing on the sharp edges & corners, like a 0.3pixel gaussian blur (or something similar).

Just a guess though. :)

DGUnreal
10-06-2007, 01:10 PM
OK.
I've just rendered a hightmap but it turned out completly black, am I meant to add lights ? Also what do you mean by keeping the transitions smooth :)

Thanks DG

You don't mention whether you are doing this with mesh models or simply by creating a heightmap/displacement map.

Don't confuse my use of the word "heightmap" with a terrain heightmap.
Although they are similar and both provide height data, the heightmap in this case is used to provide the different normal vector information in a NormalMap. You could also call this a Displacement Map. I have seen both terms used by people, and also the term Bump Map.

For many NormalMap textures that you will be using in-game, you can simply create a heightmap in PhotoShop/PhotoPaint/etc. as a grayscale image, where black is the "low altitude" and white is the "high altitude" or raised details. So for example, a bolt-head would be a gradient circle that transitions from grey edged to white in the center. A multi-level wall panel would simply be strips of various grays, darker for further inset, lighter for further outset.

This grayscale image can then be ran through ATI's TGAtoDOT3 (my preference) or NVidia's nvDXT tools (plugin or command-line version).
An example command-line would be: nvdxt.exe -file myheightmap.bmp -dxt1c -n4 -rgb which would result in a DXT1 NormalMap output. Note that the nvDXT tool requires fiddling with the Z Scale conversion value so that you get the best NormalMap range that you are wanting. CrazyBump (http://www.crazybump.com) should also work good for doing this stuff.
Note that UE3 UnrealEd is looking for non-dds files to import such as bmp or tga, so when creating a NormalMap with the nvDXT command-line tools you usually want to create a non-compressed non-mipped DXT (nvdxt.exe -file *.bmp -nomipmap -u888 -n4 -rgb) and then convert that to a .bmp file to import into UnrealEd. This step should be unnecessary for the plugin.

I recommend keeping most diffuse textures at the lowest resolution that you can afford to get away with, since combined with NormalMaps etc., the asset count and memory requirements are increased over previous generation engines.
However, the NormalMap itself can be larger than the diffuse texture if you require a bit better resolution on the detail, but you want to watch out for wasting resources attempting to get "sub-pixel" quality which is a misnomer.
What is usually best is to create smaller tilable "detail" normal maps for improving the near-distance viewing of textures in-game instead of attempting to use a larger NormalMap to do that.

On angular altitude differences on NormalMaps, you wouldn't want to create an inset or outset that has a sharp edge transition, in other words, when you are creating a heightmap or creating a "Detail Model" mesh, you wouldn't have an area on it where you had for example the gray value of 127 right next to the grey value of 255 at a sharp angle such as 45 degrees, as those types of sharp pixel edges on angles become noticeable blocks on the NormalMap, as you are seeing on your image.

You could run a De-Jaggy filter or a Gaussian Blur over the entire image before converting to a NormalMap, but that may disturb the sharpness of other areas of your NormalMap, depending on the exact design. So you usually want to target specific types of layouts such as angled transitions in height. In most cases you will find that you will require at least a 2 to 3 pixel anti-aliased edge on angled height transitions, possibly more.
While this results in the faked detail being less sharp of an angle, ie. the simulated transition angle between the two levels won't be 90 degrees any more, it reduces the blockiness.

Personally, I create heightmaps as layered objects that have anti-aliased edges. This also allows you to create a library of objects that you can re-use, such as various indent and outdent panel shapes, bolts, piping detail, etc.

See Ben Cloward's (http://www.bencloward.com/tutorials_normal_maps1.shtml) online tutorial for one of the better ones I have found so far.