Feature-size Parameter

What is your use case for your 3D content? That's the most important question when considering the feature-size parameter when umbrafying a 3D model.

It's important to understand that Umbra is designed to enable the real-time rendering of your original 3D input at its input resolution at the highest level of detail generated by Umbra. This means that the umbrafied output can only be as detailed as your original content. Thus, for optimal data sizes and system performance it makes sense to find the "right" feature-size parameter.

On a more technical note, the feature-size parameter sets the size of an individual voxel (and texel) that Umbra uses for the reconstruction of your 3D input. This effectively defines - in meters* - the smallest detail that will be resolved, and hence retained in the umbrafied result. How it works in detail here.

** The parameter –units-to-meters can be used to convert your input model's scale into metric for Umbra. For example, use a value of 0.3048 if your input 3D data is in feet.*

A rule of thumb

A good starting point is to think about a reference object relevant to your use case. Say you're conducting a survey to monitor deforestation and your input content is aerial photos. Perhaps an individual tree is a good object for scale but you don't need to be able to tell each individual tree from each other.

A good rule of thumb is to estimate that object's size and divide it by a factor of 2. An example feature-size here could be 0.25 (25 cm). Obviously, if your input is a set of photos from a fairly small area that includes important small detail, perhaps something like 0.05 (5cm) is a more suitable feature-size.

Image

This data set is umbrafied at a feature-size of 0.05 (5cm).

Iterative workflow for large 3D content

Very often it makes sense to start with a smaller segment of your 3D model, especially in the case of large 3D input. That's why it's handy if your input is chunked into smaller tiles from which you can pick a subset to iterate with.

Usually, it's safe to start with a parameter, say a feature-size 0.25 for most content. If you know you have a large 3D scan as input, then it might be advisable to start even with 0.5.

Then work your way down by halving the feature-size parameter until you're having a hard time seeing a difference with the finest level of detail generated by Umbra and your original input 3D.

It's not always about geometric detail

After a certain point, tightening the feature-size parameter might not always be the solution to get the outcome you're looking for. Especially with 3D scans, there's often more detail to be found in the input textures rather than the geometry.

See the below example below where the 3D model on the right side has been computed with an unnecessary small feature-size parameter, leading to an overly dense mesh without significant gains in the output quality.

Image

The parameter –texel-ratio can be used to effectively increase the texture resolution. In some cases where you know that there is more detail to be extracted from the original input textures, you can try to use –texel-ratio 0.5. We rarely recommend going lower than this as then data sizes might start to increase exponentially, potentially slowing down the 3D streaming performance.

Can you spot the difference in the examples below and would it matter for your use case?

ImageImage

Hope these tidbits help you be more successful with your umbrafications!