Mike_A
March 3, 2025 16:55:05
Can anyone educate me as to why I'm getting this 'facetted' shading effect? It's the absolute minimum scene - just a standard poly sphere with normals and UV's in Karma - with a basic anisotropic material as shown in the screenshot. Scene attached if you want to take a look - stick any HDRI in the domelight.

Image Not Found
Ai-Fusion
March 10, 2025 04:39:14
Hi
Add a PolyFrame before the output in obj.
Change the style to TextureUv
copy the "tangentu"
go into the shader
create an "USD primvar reader"
Change from float to float3
paste the "tangentu" into var name.
connect this into the mtlxstandard_surface's tangent (its in the geometry under the normal)
Mike_A
March 10, 2025 15:42:23
Ai-Fusion,
Thanks for the response. I'm slightly embarrassed TBH as I've been intending to 'self-respond' to my post for about a week, as I found the solution after some more investigation and trial and error - pretty much exactly as you suggest. I think I used a 'geompropvalue' rather than 'primvar reader' - but essentially the same. I wasn't sure that my solution was the 'technically correct' - but it worked, so it's good to have your confirmation of the same. Many thanks!
ajz3d
March 10, 2025 16:52:40
You can also further improve the result by slightly blurring the tangents.
Mike_A
(...) I think I used a 'geompropvalue' rather than 'primvar reader' - but essentially the same.
IIRC, tangents loaded with
geompropvalue
will work only on Karma CPU. Last time I checked, this was the case.
Mike_A
March 10, 2025 17:39:03
Interesting - I think the geompropvalue worked for me with XPU - but I'd need to check.
tamte
March 10, 2025 20:54:33
Id expect the generated auto Tangent as well as MtlX Tangent to be able to create useful tangents or at least to have an option to do smooth tangents perpendicular to smooth N rather than just to geometric N
It works well on Subd Surface but then there seem to be issues on seams
So I'd consider it a bug unless there is another reason for it to look like that
Passing additional primvar that is literally just doing what default tangent or MtlX Tangent should be doing seems like a workaround rather than intended workflow
Mike_A
March 11, 2025 05:02:51
Thanks Tomas. l'll drop a report and this sample file to support and report back.
Mike_A
March 11, 2025 19:47:55
I raised this with support - asking if it was a bug, or expected behaviour. Here's the reply:
From our developers:
Yes, it is expected behaviour. The default tangent vectors are defined as change in position with respect to change in UV, but if the geometry itself has facetting due to lower poly nature (you can check geometry normals (Ng) AOV to check), then the tangent vector will be discontinuous as well and thus the highlights will also be discontinuous. By using Polyframe SOP and averaging the tangents across shared vertices (or using point attributes), it's no longer "tangents" in the geometric sense, but allows you to have smooth/continuous tangent vectors.
This seems rather bizarre to me - although typically Houdini. While I can understand the 'technical accuracy' of this approach, I really can't understand it from a user experience perspective. The whole approach to polygon modelling / rendering is one of (relatively) 'low polygon' meshes + normal smoothing, so it seems bizarre to me that this result is based on geometric rather than smoothed normals...
Maybe there are users who actually want this 'facetted shading' effect (????), or maybe there are users who just enjoy the extra work the current setup involves...
tamte
March 11, 2025 20:01:56
That seems like a pedantic response
Pure eometric normals are mostly useless for shading that's why renderers support smooth normals either automatic or custom
In the same sense they should be able to compute smooth tangents, and I bet most renderers do
But regardless, with Poly frame tangents I still see issues on seams when Subd is on
CountBonkulus
Sept. 19, 2025 15:53:30
Thanks for this solution, it seems to help with setting up shaders with high anisotropic values for shiny effects.
This is one of those things where it works just fine in Blender, but the moment you port it over to Houdini via a USD or FBX file, you get that facetted problem. That this is something to be mindful of at all is very frustrating.
Mike_A
Sept. 23, 2025 09:17:24
I would suggest you send an 'RFE' - a 'request for enhancement' - via this form to mark this as an area for improvement:
https://www.sidefx.com/bugs/submit/ [
www.sidefx.com]