[Bug] SBSAR Material UV Rotation Couples to Normal Map / Tangent Space — Lighting Rotates With Material, Brightness Varies With Angle (Twinmotion 2026.1)
Summary
When a Substance 3D .sbsar material is applied to a surface in Twinmotion 2026.1 and the Rotation slider in the material’s UV options is adjusted, two related rendering errors occur:
-
Diffuse and specular response rotates with the texture. Highlights and shaded areas that should be anchored to the world-space light position visibly travel around the surface as the UV rotation slider changes. UV rotation should not change where light appears to hit a surface.
-
Surface brightness varies smoothly with rotation. The material is noticeably darker than authored at 0°. As the slider sweeps toward 180°, the surface progressively brightens. At exactly 180°, the rendering looks correct. Continuing past 180° darkens it again, returning to the same incorrect state at 360°/0°.
The combination — lighting “carrying” with the texture, brightness varying with angle, and 180° being the unique angle where the material renders correctly — is the diagnostic signature of the UV rotation being incorrectly coupled to the normal map / tangent-space pipeline rather than being applied only to the texture sampling coordinates.
This issue does not reproduce with Twinmotion’s built-in materials, only with imported .sbsar materials. That isolates the bug to the SBSAR import / Substance material graph path, not the generic UV rotation logic.
Demonstration Video
Full walkthrough showing the slider sweeping through rotation values and the resulting brightness/lighting changes:
Environment
-
Twinmotion version: 2026.1
-
OS: Windows 11, version 25H2
-
GPU: NVIDIA RTX 6000 Ada Generation
-
GPU driver: NVIDIA 582.16 (Game Ready / Studio branch 580, released Jan 8, 2026)
-
CPU: AMD Ryzen Threadripper PRO 5995WX (64 cores, 2.70 GHz base)
-
Material source:
.sbsarfiles downloaded from the Substance 3D Assets library (Adobe Substance 3D) -
Import path: Twinmotion’s built-in SBSAR material import (no third-party plugins)
Steps to Reproduce
-
Open Twinmotion 2026.1 with a scene containing a directional or point light striking a flat surface (a wall, plane, or cube face works).
-
Download a
.sbsarmaterial from the Substance 3D Assets library — any material with a meaningful normal map (brick, plaster, fabric, wood) makes the bug obvious. -
Import the
.sbsarinto Twinmotion as a material. -
Apply the material to the flat surface.
-
Open the material’s UV options and locate the Rotation slider.
-
Slowly drag the Rotation slider from 0° through 360° while observing the surface.
Expected Behavior
-
The texture pattern rotates on the surface.
-
Brightness, shading, and specular highlights remain anchored to the world-space light position. They do not rotate with the texture.
-
Average surface luminance is consistent with the authored material at every rotation angle.
Actual Behavior
-
The texture pattern rotates as expected, but the apparent lit and shaded areas of the surface rotate along with it. The illumination appears welded to the texture rather than to the world.
-
At 0°, the surface is visibly darker than the authored material.
-
As the slider sweeps toward 180°, the surface progressively brightens.
-
At exactly 180°, the brightness and lighting look correct.
-
Past 180°, the surface darkens again, returning to the original incorrect state at 360°/0°.
-
The change is smooth and continuous with the rotation angle — not a discrete flip.
Scope
-
Reproduces: Every
.sbsarmaterial I have tested from the Substance 3D Assets library. -
Does not reproduce: Twinmotion’s native built-in materials. Their UV rotation slider behaves correctly — lighting stays anchored to the light source, and brightness is consistent across all rotation values.
This isolates the issue to the SBSAR / Substance material graph that Twinmotion generates on import, not to the generic UV rotation node used by native Twinmotion materials.
Technical Analysis
Two specific places worth checking:
-
Normal map handedness in the SBSAR import path. Substance 3D Assets and the Substance toolchain default to OpenGL tangent-space convention (+Y up). Unreal Engine and Twinmotion’s renderer expect DirectX convention (+Y down). If the SBSAR import path does not flip the green channel — or does not set the equivalent texture compression / sampling flag for the runtime-generated normal map — then at 0° the lighting will be wrong by the green-channel sign, and 180° will partially mask that error.
-
The UV rotation node in the Substance-generated material graph. Specifically, the relationship between the UV rotation transform and (a) the normal map sample’s XY rotation and (b) the tangent basis used for world-space transform. If the rotation is applied to the UVs and applied again (or with the wrong sign) to the normal XY, the two operations compound rather than cancel, producing exactly this signature. Comparing the generated graph for an SBSAR material against the graph used by built-in Twinmotion materials (which are unaffected) should make the divergence visible.
The handedness mismatch and the rotation-coupling issue are not mutually exclusive — they may both be present and compounding, which would explain why 180° looks acceptable but not perfect, and why everything else is meaningfully worse than just “a flipped green channel.”
Workarounds
I have not attempted any workarounds beyond observing that setting the Rotation slider to exactly 180° produces visually acceptable output. This is not a real workaround — any other rotation, including the default 0°, is wrong, and large architectural surfaces frequently need rotation values other than 0° or 180° for tile or seam alignment.
Impact
This effectively makes the Substance 3D Assets library — a major value-add for Twinmotion users unusable for any project where:
-
Material UV needs to be rotated to align with building geometry, or
-
Lighting realism matters (i.e., essentially every Twinmotion project).
Users are currently forced to either lock SBSAR material rotations to 0° / 180° (and accept that 0° is darker than authored), or abandon SBSAR materials in favor of Twinmotion’s built-in library.