all  /  test_assets  / AlphaBlendSortTest  / geometries  / Geometry_8 .usd

Alpha Blend Sort Test

Description

Opacity in UsdPreviewSurface has a number of pitfalls (schema versioning, application of light even when fully transparent, opacityThreshold, etc.).

This asset tests for and showcases some of the various issues that can happen with that. It may not be possible to render this asset as intended with UsdPreviewSurface (clarification needed) since that always applies lighting even to fully transparent parts of surfaces (e.g. light response on fully transparent glass).

screenshot Reference Image (rendered from the glTF version)

Problem: Visible boundaries

If you look closely there are white-ish boundaries visible around the textures.

usdview
usdview 22.05

Problem: Incorrectly interpreted as masked instead of blended

The model is translucent (opacity is set but not opacityThreshold), yet some apps interpret it as cutoff material.

Omniverse Draft Mode
Omniverse 2021.3.10, Draft Mode

The image may look correct when rendered with a raytracer.

Omniverse Draft Mode
Omniverse 2021.3.10, Photo Mode

Problem: Incorrect blending of transparent surfaces

The coplanar shadow planes should not write to depth since they are transparent, and should darken each other.

AR QuickLook AR View
AR QuickLook AR View

Problem: ?

Not sure what’s going on here, looks like all surfaces are interpreted as opaque yet rendered partially transparent.

AR QuickLook Object View
AR QuickLook Object View

License Information

CC0
To the extent possible under law, Felix Herbst / prefrontal cortex has waived all copyright and related or neighboring rights to this asset.


Edit this page

Geometry_8.usd

#usda 1.0
(
    customLayerData = {
        string creator = "Three.js USDZExporter"
    }
    metersPerUnit = 1
    upAxis = "Y"
    defaultPrim = "Geometry"
)

def "Geometry"
{
  
    def Mesh "Geometry"
    {
        int[] faceVertexCounts = [3, 3]
        int[] faceVertexIndices = [1, 3, 0, 2, 0, 3]
        normal3f[] normals = [(0.000000, 0.000000, -1.000000), (0.000000, 0.000000, -1.000000), (0.0... (truncated)]
            interpolation = "vertex"
        )
        point3f[] points = [(0.5000000, -0.5000000, -3.061617e-17), (-0.5000000, -0.5000000, -3.0616... (truncated)]
        float2[] primvars:st = [(0.000000, 0), (1.000000, 0), (0.000000, 1), (1.000000, 1)] (
            interpolation = "vertex"
        )
        uniform token subdivisionScheme = "none"
    }

}