Closed zzyunzhi closed 2 months ago
Hello!
placement_mask constructs a noisy density mask to determine where an asset should be placed on the terrain.
The parameters are as follows:
scale
- how large or small should the details of the noise mask be? e.g this value determines approximately how large are the patches of pine needles or pebbles on the ground, or how large are clearings in a forest. See blender's noise texture node scale input for more details https://docs.blender.org/manual/en/latest/render/shader_nodes/textures/noise.html.
select_thresh
- unitless constant determining how full / empty the noise mask is in general. IE, the mask is computed via noise(x,y,z) > select_thresh
, so increasing this will cause the mask to be sparser.
normal_thresh
, normal_thresh_high
and normal_dir
:
tag
tag='landscape,-liquid_covered,-cave,-beach'
(the value is specified via compose_scene.land_domain_tags in base.gin). This has the effect of preventing trees from being placed in riverbeds or caves or on beaches.TagSegmentation
channel, and allow you to determine subparts of objects. IE you can determine which pixels of terrain are rocky, which pixels are beach, or which parts of a bush are petals, even though these geometric details have all been merged into the same "object", so would appear identical ObjectSegmentation id. tags
are just our mechanism for disambiguating subparts (i.e. binary masks over faces) of objects, and could be used for any application which requires this. altitude_range
- limits an asset to only certain ranges of altitude / Z coordinates. Not widely used - the only current example is to only place crabs at low elevations (ie, near water)
Sorry there aren't better docs for all these, I intend to write some over the summer.
Hi, thanks for the great work. Could you provide some explanations for the function arguments here https://github.com/princeton-vl/infinigen/blob/5132903cd68704367d1c44c841e5163158e0f33d/infinigen/core/placement/density.py#L26, especially
select_thresh
,normal_thresh
, andaltitude_range
? In addition, istag
used anywhere outside this function, and if so, what's the purpose? Thanks a lot!