New Door & Wood Grain Column Textures: Comments & Critique

Not about OpenMW? Just about Morrowind in general? Have some random babble? Kindly direct it here.
User avatar
Frik
Posts: 124
Joined: 20 Dec 2016, 05:22

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Frik »

ezze wrote:Now that the color is balanced, what about adding the normal map again?
A basic normal map was included in the last .zip I posted. You can get more depth by increasing the scale in the GIMP normal map plugin. If you want a lot of depth, try using sobel 3x3, height source: Average RGB and conversion: Max RBG, then vary the scale until you get the depth you're looking for.
User avatar
Pherim
Posts: 140
Joined: 27 Aug 2014, 15:37

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Pherim »

The ingame screenshots appear to be gone, but I downloaded the textures themselves to take a look at them.

First, compression: Your textures use DXT5 compression. This is not necessary. If there is no transparency, always use DXT1. It is a common misconception that DXT5 compression has better quality than DXT1, but in fact the compression is exactly the same and the only difference is the alpha channel, which doubles the file size.

The textures themselves look good, as far as I can tell without the ingame screenshots and the mesh they appear on. The wood_grain normal map doesn't have much depth, as you pointed out yourself, and that's certainly alright if that's what you're aiming for, but I wonder if it really needs to be a 2k texture as well... or maybe it does because of that because otherwise the detail would get lost. Again, hard to tell without seeing it in on the actual model in the game.
Frik wrote:I've read that designers sometimes create height maps for use to directly modify the model itself, which is supposed to the best approach. Hopefully I'll be able to create ones that might be a better alternative to normal maps.
Using height maps to modify the geometry is probably not the best idea for real-time game graphics, as that would tremendously increase the polygon count. For the door itself, you could model some detail from the texture into the mesh (again, don't know what the mesh looks like right now), but for simple surfaces like the wood, a good normal map would be much more useful. After all, the main advantage of normal maps is that they can provide depth to flat surfaces without modifying the geometry (and normal maps have the advantage over height maps that they store information about the slope of each pixel and not the height, which saves one step for calculating the lighting and leads to more predictable results).
What does work, however, and usually gives the best results in my experience, is to make height maps and use them to make the normal maps. A typical normal map generator like the GIMP plugin has no way of knowing what the surface of a diffuse texture is supposed to look like and simply interprets bright pixels as higher and dark pixels as lower. Wit a proper height map, you can tell the plugin what the surface looks like, and it can make a much more accurate normal map.
User avatar
AnyOldName3
Posts: 2668
Joined: 26 Nov 2015, 03:25

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by AnyOldName3 »

Plugins for image editors are usually just a little bit smarter than just interpreting light as high and dark as low - they often also do an edge detection pass (e.g. Sobel) and then count 'edgy' pixels as being more sloped. I do agree that they shouldn't be trusted whenever there's another option available, though.

However, some of what you said about height maps is way off. They don't necessarily have to change anything about the geometry, as there are three main ways of interpreting them:
  • Bump maps - convert the height map to something equivalent to a normal map at runtime in a shader.
  • Displacement maps - actually move geometry, and are usually combined with some kind of tessellation or subdivision. This can either be done at runtime in a shader, at load time, or statically.
  • Parallax mapping - uses equal measures of trigonometry and dark magic to simulate the same effect as displacement mapping per-pixel. There's also Parallax occlusion mapping, which adds yet more magic, but can give better results than displacement mapping. OpenMW supports at least one of these, and Lysol's textures are examples.
User avatar
Frik
Posts: 124
Joined: 20 Dec 2016, 05:22

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Frik »

Sorry for the missing images. I didn't want to use up resources on this server, so I used a 3rd party image host who claimed images would never be deleted (and I fell for it). :roll:

I've been able to get pretty good results using Awesome Bump V5. I had a problem with the UI hanging on startup, but the solution is to remove sky_cube_env.obj, which solves the problem

Awesome Bump Normal Map (Click To Enlarge)
Image
Image
Image

Anyway, thanks for all the tips and good information regarding bump/normal mapping. I'm still a bit unclear on how height maps "_nh" are supposed to be generated and used. For example, the door model (.nif) is a simple rectangular box with flat sides, containing no height information. All details come from a normal mapped 2D texture of a door. I've tried using Insane Bump GIMP plugin to generate a height map from the texture, but it doesn't seem to produce results as good as normal mapping. Perhaps you guys are suggesting that if the model contains height information, a height map could be generated from the model, which could then be used to create the normal map. Am I understanding that correctly?

According to the Wiki, "A normal map with the _nh pattern additionally enables use of the normal map's alpha channel as height information". How does one go about getting the height information into the alpha channel of the normal map, either from a 2D texture source or from the model (.nif) itself?
User avatar
wareya
Posts: 338
Joined: 09 May 2015, 13:07

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by wareya »

Bump maps need true local height information, which is nearly impossible to generate programmatically with any real reliability. Normals are easier because they don't contain any local height information, only relative height information, but then they can't be used for parallax etc.

Basically, if you want true heightmaps, you've gotta draw them or make them from a higher poly model.
User avatar
Pherim
Posts: 140
Joined: 27 Aug 2014, 15:37

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Pherim »

Frik wrote:I've been able to get pretty good results using Awesome Bump V5. I had a problem with the UI hanging on startup, but the solution is to remove sky_cube_env.obj, which solves the problem
AwesomeBump is a pretty powerful program, yes, but I've had problems with generated normal maps being a few pixels off in the past. I reported the issue, but they haven't resolved it, yet, at least for me. From what I can see in the screenshot, it doesn't seem to happen to you.
Anyway, thanks for all the tips and good information regarding bump/normal mapping. I'm still a bit unclear on how height maps "_nh" are supposed to be generated and used. For example, the door model (.nif) is a simple rectangular box with flat sides, containing no height information. All details come from a normal mapped 2D texture of a door. I've tried using Insane Bump GIMP plugin to generate a height map from the texture, but it doesn't seem to produce results as good as normal mapping. Perhaps you guys are suggesting that if the model contains height information, a height map could be generated from the model, which could then be used to create the normal map. Am I understanding that correctly?
Like wareya said, you cannot usually generate a correct height map from a diffuse texture, because there is no way the generator will know what is supposed to be what height. You either have to use a high-poly model or draw it yourself.

Here is a good article about that: http://www.katsbits.com/tutorials/textu ... images.php

I often combine a hand-drawn height map with a grey-scale, low-contrast version of the diffuse texture to preserve some of the finer details of the surface, in this case, wood. Then I use this combined image to generate a normal map from it.
According to the Wiki, "A normal map with the _nh pattern additionally enables use of the normal map's alpha channel as height information". How does one go about getting the height information into the alpha channel of the normal map, either from a 2D texture source or from the model (.nif) itself?
You'd basically take the grey-scale height map I mentioned above and copy it into the alpha channel of the normal map.In Gimp this can be done by using a layer mask.
User avatar
Frik
Posts: 124
Joined: 20 Dec 2016, 05:22

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Frik »

Thanks to both of you for the explanation. It was very helpful.

I was able to get the some height data into the alpha channel of a normal map, but It didn't work the way I thought it should work in OpenMW. The results I got when loading the map tagged as "_nh" looked strange and were unusable. I need to do more experimenting and make sure I'm getting height data into the alpha channel while not affecting the data already contained in the RGB channels.

Next I will try decomposing the channels, copying data into the alpha channel, compose the channels, then decompose again to ensure RGB channels are not changing.
User avatar
Pherim
Posts: 140
Joined: 27 Aug 2014, 15:37

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Pherim »

Frik wrote:Thanks to both of you for the explanation. It was very helpful.

I was able to get the some height data into the alpha channel of a normal map, but It didn't work the way I thought it should work in OpenMW. The results I got when loading the map tagged as "_nh" looked strange and were unusable. I need to do more experimenting and make sure I'm getting height data into the alpha channel while not affecting the data already contained in the RGB channels.
As I said, use layer masks in Gimp to get the height data in the alpha channel. You don't have to touch the RGB channels at all.
What exactly are you trying to achieve? This kind of parallax mapping is good for making a surface look bumpy, but the illusion vanishes as soon as the surface is viewed from a flat angle. It also doesn't work very good with sharp edges and the amount of height it appears to have is limited. For a stone wall or something like that it can work pretty good, but a door like this is probably better modeled in 3D.

By the way, I have noticed that heightmaps only appear to work after an exterior cell has been visited at least once since the start of the game, even if it was in a different savegame. If I start the game and load a savegame inside an interior cell, only normal mapping works, but no parallax. I have tested this with two different textures now. Can anyone confirm this?
User avatar
Frik
Posts: 124
Joined: 20 Dec 2016, 05:22

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Frik »

Thanks and yes, I did use layer masks to add information into the alpha channel, as you suggested. Another approach is to simply decompose & recompose, which is very easy too.

However, I expected to be able to add data into the empty alpha channel of a normal map, then simply remove the alpha channel and be left with the same RBG normal map I started with. That doesn't seem to be the case, tho. I feel like I need to do more experimenting to understand what is happening in this case.

My assumption was that I could include additional height data into the alpha channel of a normal map tagged as "_nh", and OpenMW would process the RGB channels of the map as it does a normal map "_n", while also using any data it finds in the alpha channel for additional height information. I wanted to see how this worked, but I didn't get the results I expected. Is this how it is intended to work?

As far as what I'm trying to achieve, I'm just trying to learn how all this works and what my options are. I figure I can't really achieve much of anything, in terms of getting good results, until I get through some of the learning curve. 8-)
User avatar
Pherim
Posts: 140
Joined: 27 Aug 2014, 15:37

Re: New Door & Wood Grain Column Textures: Comments & Critiq

Post by Pherim »

Frik wrote:However, I expected to be able to add data into the empty alpha channel of a normal map, then simply remove the alpha channel and be left with the same RBG normal map I started with. That doesn't seem to be the case, tho. I feel like I need to do more experimenting to understand what is happening in this case.
Simply removing the alpha channel actually doesn't work (at least in Gimp). You have to remove the layer mask, or if you already applied it, create a new one and select "Transfer layer's alpha channel". Then you can either paint it white again or simply delete it to get the original RGB normal map.
My assumption was that I could include additional height data into the alpha channel of a normal map tagged as "_nh", and OpenMW would process the RGB channels of the map as it does a normal map "_n", while also using any data it finds in the alpha channel for additional height information. I wanted to see how this worked, but I didn't get the results I expected. Is this how it is intended to work?
Yes, that is exactly how it is supposed to work. If it doesn't for you, maybe you did something wrong. If you like, upload your texture with the height map so I can have a look at it.
As far as what I'm trying to achieve, I'm just trying to learn how all this works and what my options are. I figure I can't really achieve much of anything, in terms of getting good results, until I get through some of the learning curve. 8-)
Alright then, keep doing that! ;)
Post Reply