Houdini Omni Surface - Normal Map interpretation


I don’t know if this is a bug, but I noticed if I export an .usd file from Houdini that contains one MDL Omnisurface with a normal map added, no matter which color space I define to the normal, is not correctly interpreted in Create.

Also, I noticed in order to re-interpret correctly the normal, I need to change the “Tangent Bitangent Mapping” parameter from “red_green” to “blue_green” and “red_green” again, that’s why I thought that probably there is something happening:

You can find the files that I used here:

jar_omnisurface_normap_map.rar (8.2 MB)

Let me know what you think about it.


Hello @cdordelly! I’ve shared your post with the dev team for further assistance.

1 Like

Hello @cdordelly !
Sorry for the late response and thank you for submitting this issue!
I have found the issues and there are a couple places we need to address.

First, there is a bug in the mdlomnisurface translator in Houdini. While exporting MDL surfaces shaders, we interpret the shader parameters to USD attributes. If you note that geometry_tangent_bitangent_mapping parameter in Houdini is a dropdown menu and the values map to red_greeen = 0, blue_green = 1. However, the USD attribute inputs:geometry_tangent_bitangent_mapping expects int value 1 (red_green) or 9 (blue_green).

This is the incorrect USD attribute exported from Houdini -

int inputs:geometry_tangent_bitangent_mapping = 0 (
                customData = {
                    int default = 1
                displayGroup = "Geometry"
                displayName = "Tangent Bitangent Mapping"
                hidden = false
                renderType = "::OmniSurface::OmniImage::tangent_bitangent_mapping"
                sdrMetadata = {
                    string __SDR__enum_value = "red_green"
                    string options = "red_green:1|blue_green:9"

The second issue is, instead of showing Invalid Value for that attribute, the Create UI shows the value as the default, which is red_green (1), even if the real value is not red_green (1). That’s why it only works when you switch the attribute to to blue_green (set to 9), and switch back to red_green (set back to 1)

I will talk to our team to address the issues. In the meantime, you can still use the switching trick or click the little blue dot next to the attribute UI to set the value to default as a workaround. Also any attribute with a blue dot means the value is not at default.
Screenshot 2022-11-23 224546

Thank you again for finding and submitting this bug. The video you provided also helped a lot for me to reproduce the issue.


1 Like

Great, glad to see that you found what is causing this and thanks for the Blue Dot click tip.

I hope that you can fix it on the future release, I also want to find the time to make another post regarding some things that I found on the Omni Validator HDA in Houdini too, let’s see if I can find the time next week.

Thanks and cheers!

1 Like