tangent space normal

   9685   5   1
User Avatar
Member
313 posts
Joined: July 2005
Offline
I am an animation student that learning Houdini by myself. In 3ds max 7, users can render zbrush's normal map. How can I render normal map(tangent space) in Houdini?
User Avatar
Member
12429 posts
Joined: July 2005
Offline
Once again you can find plenty of this info on the Wiki.

http://www.odforce.net/wiki/index.php/NormalMapping [odforce.net]
Jason Iversen, Technology Supervisor & FX Pipeline/R+D Lead @ Weta FX
also, http://www.odforce.net [www.odforce.net]
User Avatar
Member
313 posts
Joined: July 2005
Offline
jason_iversen
Thank you for reminding me the odforce! I am very very sorry about this! I will look at it first before I 'll send the question here! Sorry again!
User Avatar
Member
252 posts
Joined: July 2005
Offline
I only see information on how to do Object Space normal maps, unless I missed something.

He was asking about Tangent Space Normal Maps, which are quite different.

Maya supports using these in it's GL shaded “High Quality Rendering” view and it is quite impressive- real time high quality bumps or lo-res geometry that appears really high-res (except on the profile). Maya also generates these Normal Maps (both Object Space and Tangent Space) using it's “Transfer Surface Information” capability.

To render with a Tangent Space Normal Map in Houdini from another program, you will have to create your own VOP to deal with it. Object Space is easy- you just pipe the color from the texture to the Normal of your Lighting VOP, but Tangent Space will require more work. It will be a little tricky unless you are fairly experienced, but my understanding of Tangent space is that the Tangent vector (Red Channel of the map) is defined as the vector going in the U direction that is Tangent to your surface and the Binormal (Green channel of the map) is the cross product of the Normal (Blue channel of the map) and the Tangent vector. But this could be wrong, or the Binormal may be defined differently (perhaps the V direction Tangent), but you will have to do your own research on this. To add insult to injury, different programs seem to handle Tangent Space differently. I can tell you that ZBrush doesn't seem to create Normal Maps that work well in Maya.

To create Tangent Space Normal Maps, I can suggest using a free tool like NVidia's Melody or ATI's Normal Mapper to generate the Normal maps from input Lo-Res and Hi-Res and don't bother jumping through the hoops you would have to do with Houdini. These tools also both generate Ambient Occlusion information into the Alpha channel if you desire it, and they both Dilate the maps out so you don't get the seams you get in Houdini's unwrapping when rendering with them.

Also, get the NVidia plugins for Photoshop (if you have Photoshop) and you will be able to convert from DirectX .dds format to tiff, tga, etc. as well as paint a Black and White Height (Bump) map and generate a Tangent Space normal map from this inside of Photoshop. (I can't remember if the NVidia and ATI tools only create .dds format or allow you to do .tif or .tga, so this may be a necessity.)


-Craig
User Avatar
Member
252 posts
Joined: July 2005
Offline
I only see information on how to do Object Space normal maps, unless I missed something.

He was asking about Tangent Space Normal Maps, which are quite different.

Maya supports using these in it's GL shaded “High Quality Rendering” view and it is quite impressive- real time high quality bumps or lo-res geometry that appears really high-res (except on the profile). Maya also generates these Normal Maps (both Object Space and Tangent Space) using it's “Transfer Surface Information” capability.

To render with a Tangent Space Normal Map in Houdini from another program, you will have to create your own VOP to deal with it. Object Space is easy- you just pipe the color from the texture to the Normal of your Lighting VOP, but Tangent Space will require more work. It will be a little tricky unless you are fairly experienced, but my understanding of Tangent space is that the Tangent vector (Red Channel of the map) is defined as the vector going in the U direction that is Tangent to your surface and the Binormal (Green channel of the map) is the cross product of the Normal (Blue channel of the map) and the Tangent vector. But this could be wrong, or the Binormal may be defined differently (perhaps the V direction Tangent), but you will have to do your own research on this. To add insult to injury, different programs seem to handle Tangent Space differently. I can tell you that ZBrush doesn't seem to create Normal Maps that work well in Maya.

To create Tangent Space Normal Maps, I can suggest using a free tool like NVidia's Melody or ATI's Normal Mapper to generate the Normal maps from input Lo-Res and Hi-Res and don't bother jumping through the hoops you would have to do with Houdini. These tools also both generate Ambient Occlusion information into the Alpha channel if you desire it, and they both Dilate the maps out so you don't get the seams you get in Houdini's unwrapping when rendering with them.

Also, get the NVidia plugins for Photoshop (if you have Photoshop) and you will be able to convert from DirectX .dds format to tiff, tga, etc. as well as paint a Black and White Height (Bump) map and generate a Tangent Space normal map from this inside of Photoshop. (I can't remember if the NVidia and ATI tools only create .dds format or allow you to do .tif or .tga, so this may be a necessity.)


-Craig
User Avatar
Member
941 posts
Joined: July 2005
Offline
craiglhoffman
Tangent space is that the Tangent vector (Red Channel of the map) is defined as the vector going in the U direction that is Tangent to your surface and the Binormal (Green channel of the map) is the cross product of the Normal (Blue channel of the map) and the Tangent vector. But this could be wrong, or the Binormal may be defined differently (perhaps the V direction Tangent), but you will have to do your own research on this.

Hey Craig,

Unless I misunderstand then, wouldn't this be accomplished with:


Cf = set(normalize(dPds),normalize(N),normalize(dPdt));


Ci = color(normalize(dPdu),normalize(N),normalize(dPdv));


That's what I think of when someone says “tangent space” (local frame with N and the two parametric derivatives/differentials – though I guess that, depending on the underlying geometry (poly triangles?), dPds and dPdt would not necessarily be guaranteed to be always orthogonal). But maybe you're talking about something different.

Cheers!
Mario Marengo
Senior Developer at Folks VFX [folksvfx.com] in Toronto, Canada.
  • Quick Links