Skip to content

Unspecified default unit for length parameters such as subsurface_radius and transmission_depth #308

Description

@sherholz

In its current form, the spec is unclear about the default unit of the length parameter for subsurface_radius and transmission_depth.
To fully achieve look consistency across renderers and DCC applications, it is required that some metadata exists, in combination with the asset, defining the units of these two parameters. In cases where no metadata is present, it is unclear how a renderer or DCC application interprets these two parameters, which can lead to significant changes in appearance.

Looking at the current text, I found these text passages mentioning the units of these parameters:

In section 2.5: Metadata

The floating-point conversion factor from the parameters given in world space length units to meters.

Comment: This implies at first that the default unit is meters.

In section 3.7.3: Subsurface base

Being a length, subsurface_radius can be any value greater than or equal to zero. 
For convenience, we make the soft range [0,1], thus covering common cases such as skin, where the MFP is lower than the scene length units.

And in section 3.7.4: Translucent base

For convenience, we make the soft range [0,1], thus covering common cases.

Comment: This soft range notion is confusing. Do parameters always need to be remapped/rescaled when someone changes the unit of the scene? Is this just a hint for the UI? What about assets that are brought into a scene using different units?

In Section 5. Parameter reference

Unit: where relevant, otherwise assumed to be dimensionless. Note that lengths (other than thin_film_thickness) can be assumed to be in the world space units of the scene.

Comment: This part of the spec makes these units (if not defined via asset metadata) ambiguous and makes the appearance of an imported material depending on the default unit of the DCC application or the renderer. Meaning, similar assets that have the same material applied to them in two different DCC applications will look different based on the application's default scene unit.

To resolve this ambiguity, we discussed introducing a default unit (e.g., centimeters) for these two parameters in cases where no unit is defined by the material/asset transfer framework (e.g., MaterialX). This way, there is a clearly defined behavior for cases where a material description does not include a unit, and all renderers and DCC applications need to convert these parameters from the default to their internal scene units.

After reading through the spec, I also stumbled over the soft range formulation, which I think could be confusing and might require some additional changes.

ToDos:

  • Clarify the meaning and behavior of the soft range notion, or even remove it completely.
  • We need to change the text and add hints about the default unit in all tables.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions