Setting#
If the key-value pair in the description file is neither a Mutable nor a Harmonizer, it’s a setting. You can define a description with only settings.
Required Keys#
There are several required keys for settings:
Required Key |
Type |
Description |
---|---|---|
output_path |
string
|
The output folders in which folders corresponding to
each output switch are created
|
num_frames |
int
|
Number of frames to output
|
screen_width |
int
|
Screen width of output images
|
screen_height |
int
|
Screen height of output images
|
seed |
int
|
Global randomization seed
|
version |
string
|
Version number of omni.replicator.object
|
output_switches
The setting output_path controls what is output to disk per frame. It has these switches:
Switch |
Data |
---|---|
images |
The RGB image of the frame
|
labels |
2d tight bounding box and the occlusion rate information for each visible tracked object. Each line corresponds to an object, and it has Kitti format
usd_base_name 0 occlusion 0 x_min y_min x_max y_max 0 0 0 0 0 0 0 |
3d_labels |
3D bounding box information stored as Objectron format
|
descriptions |
A description file logging the current state of the scene - Using this file as input description, the same graphics content is output
|
segmentation |
The segmentation mask of tracked mutables
|
depth |
The depth map of the scene, showing the distance to image plane
|
normal |
The normal map of the frame
|
Setting a switch to True or not setting the switch creates the corresponding folder under output_path
and writes corresponding data into it.
usd_base_name
is the mutable name or the USD file base name of USD file when a geometry mesh
is loaded, which means it’s not allowed to load different USD files with the same base name. Using ${resource_root_1}/apple.usd
and ${resource_root_1}/inner/apple.usd
in the same simulation causes unexpected behavior.
For example, an output switch could be:
output_switches:
images: True
labels: True
descriptions: True
3d_labels: True
segmentation: True
depth: False
Optional Keys#
There are also optional keys, where if not set, have default values:
Optional Keys with Default Value |
Type |
Default value |
Description |
---|---|---|---|
parent_config |
string
|
None
|
Specifies the description file that this description file inherits from, in the same parent folder. Values re-defined in the current description file override values defined in parent configs.
|
path_tracing |
bool
|
False
|
Render mode selection
|
inter_frame_time |
numeric
|
0
|
The simulation time between 2 frames
|
output_name |
string
|
$[seed]_$[camera] |
The output name of a frame that can be customized. Seed, camera, and frame macros are available.
|
skip_frames_with_no_visible_tracked_mutables |
bool
|
False
|
If set to true, and if there are no visible tracked mutables in the scene, the frame is skipped
|
gravity |
numeric
|
0
|
Resolves gravity during physics resolution stage
|
friction |
numeric
|
1
|
Friction among objects during physics resolution stage. Lower values indicate that the object is more slippery.
|
linear_damping |
numeric
|
0
|
Linear damping of objects during physics resolution stage.
|
angular_damping |
numeric
|
0
|
Angular damping of objects during physics resolution stage.
|
occlusion_threshold |
numeric
|
1
|
If the occlusion of an object is bigger than this threshold, the object will be skipped in the labels.
|
Suggestions and More Information
path_tracing
Turing it on uses the path tracer, which makes simulation slower but image quality higher. Turning it off uses real-time RTX.
inter_frame_time
For complex scenes, leave more time for physics resolution and rendering.
output_name
Three macros are available:
$[seed] evaluates to the seed of the current frame
$[camera] evaluates to the camera name
$[frame] evaluates to the frame index. Refer to seed for details.
$[seed]
Each frame is randomized with its own seed, which equals the global seed plus the frame index. For example, if global seed is 2, and 3 images are output, the frame indices for these 3 images are 0, 1, 2; and the seeds are 2, 3, 4, respectively.
Physics simulation explained
When objects are randomized in the scene for each frame, they may start at an overlapping position. Resolution of physics de-penetrates these objects. The de-penetration accelerates the objects, such that they may start off with a high speed. Increase linear/angular damping to keep object movement contained.
However, if the dampings are set too high, objects get lazy and they don’t move much. This can be bad in a gravity enabled setting, where we want objects to be in close contact with a surface. Because different objects have different sizes and shapes, it’s good to tune these physics properties to reach a good appearance.
Similarly, too high of a value for friction makes objects cluster if they are in close contact; while too low of a value for friction makes them slippery and glide off surfaces.
Note
If there is no object in the scene when you are expecting some objects, one reason might be that they flew away from the view frustum. Check your physics settings.