Task support
Deployment objects, poses, views, occlusion, failure distributions
Simulation & Synthetic Data Generation
Synthetic data provide controlled scene-state sampling and precise, traceable multichannel labels from shared geometry. A reliable pipeline must establish the distribution, assets/physics, sensor behavior, and label correctness separately, beyond generating unlimited images.
01 · Generation Contract
A generator samples scene states from versioned random variables θ, then uses renderers and sensor models for observations and labels. Tasks, assets, cameras, channels, provenance, and validation form one contract.
Deployment objects, poses, views, occlusion, failure distributions
Assets, physics, cameras, lights, trajectories, seeds
RGB, Z, normals, IDs, XYZ from one z-buffer
Exposure, distortion, noise, holes, quantization, timing
Distributions, labels, real holdouts, manifests, shards
| Contract layer | Fields to fix | Verifiable deliverables |
|---|---|---|
| Task distribution | Object instances, scenes, poses, scale, distance, occlusion, truncation, motion, sensor state | Coverage report for synthetic and deployment distribution support |
| Asset contract | Mesh / collision mesh, object frame, units, materials, textures, physics, license, hash | Traceable assets with semantics matching real instances |
| Camera contract | optical frame, K / D, resolution, shutter, exposure, spectral response, timestamp | Every raster and pose traces to the same camera state |
| Scene state | Object/camera/light/background transforms, contacts, velocities, random seeds | Reconstruct any frame from state, beyond its rendered image |
| Clean labels | pose, clean Z / range, normal, ID, full / visible mask, object coordinate, flow | Derived from one z-buffer / scene snapshot |
| Sensor outputs | RGB response, distortion, blur, noise, quantization, invalid / confidence | Versioned observation layers that preserve clean ground truth |
| Provenance | code commit, engine/version, config, asset hash, seed, host, shard, checksum | Reproducible failures and resumable production |
| Validation | Synthetic unit tests, distribution audits, real holdouts, downstream ablations | Establish correct labels and a task-relevant generated distribution |
02 · Digital Assets
The real-data chapter fixed physical/digital semantics; synthesis must also make assets usable for optics, contact, and version governance. High-poly meshes may be poor collision models, and attractive textures may use incorrect color spaces.
| Asset stage | Fixed decisions | Admission checks |
|---|---|---|
| Geometry import | Fix m/mm conversion, frames, up/front, origins, winding, normals, and UVs; separate visual and simplified collision meshes | Cross-check bounds, diameter, mass scale, face orientation, and projected axes between the renderer and BOP / OpenCV |
| Topology and contact | Remove isolated pieces, duplicate faces, self-intersections, and nonmanifold geometry; choose collision representations for thin shells, concavities, and support faces | No penetration or floating after drops; stable poses match real support surfaces rather than coarse convex-hull artifacts |
| Material semantics | Distinguish base color, roughness, metallic, normal, transmission, IOR, and texture color spaces | Mark numerical maps Non-Color; avoid physically impossible material combinations |
| Instance variation | Model manufacturing tolerances, wear, stickers, contamination, and texture symmetry from evidence instead of arbitrary recoloring | Keep training labels, evaluation symmetry, and real identity consistent |
| Physical properties | Record mass, center of mass, inertia, friction, restitution, damping, and joint limits | Drop times, rebound, rest poses, and stack stability match real physical scales |
| Copyright and versions | Retain source, author, license, modification/redistribution permissions, and content hashes | Generate per-asset release manifests; replacements must not silently change old data |
Preserve silhouettes, holes, thin structures, normals, and UVs; LOD changes must preserve object frames and metric scale.
Convex decomposition, SDFs, and triangle meshes alter stable poses. Collision approximations must be auditable assets rather than hidden engine options.
Symmetry, canonical axes, grasp affordances, articulation, and instance identity need explicit metadata beyond mesh filenames.
03 · Pose, View & Scene Sampling
Specify sampling space and measure. Uniform pitch clusters directions near poles; Haar-uniform SO(3) is unbiased over rotations but does not encode gravity, support, camera reachability, or real occlusion.
| Sampler | Sampling target | Limits | Suitable settings |
|---|---|---|---|
| Independent uniform Euler angles | Uniform yaw/pitch/roll separately | Simple, but nonuniform on SO(3), with viewing-direction bias near spherical poles | Use only when the task genuinely follows an angle-box distribution |
| Haar-uniform SO(3) | Shoemake quaternions / normalized Gaussian quaternions | Unbiased over rotations, without gravity, reachability, or stable-support priors | General orientation coverage and ablation baseline |
| View sphere + roll | Equal-area directions + independent in-plane roll + distance | Separately controls out-of-plane and in-plane angles; define zero look-at roll | Template libraries, calibration boards, systematic view-sphere capture |
| Stable-pose prior | Enumerate support faces or cluster physical-drop outcomes | Matches tabletop tasks, but depends on collisions, friction, center of mass, and simulation steps | Tabletop detection and pregrasp perception |
| Physics scene sampling | Joint multi-object distribution, contacts, occlusions, camera visibility constraints | Closest to clutter; costly and vulnerable to penetration, unstable dynamics, and hidden filtering bias | Bins, stacks, robot manipulation |
| Empirical task prior | Hierarchical or conditional distributions fitted to real deployment logs | Most relevant, but logs may contain policy bias, missed detections, and missing long tails | Production and active data generation |
Use equal-area z–azimuth bins for directions, SO(3) distances/grids for rotations, and logarithmic or task-stratified distance/scale bins.
Distance, pixel size, occlusion, blur, and depth validity are often correlated; independent randomization can create impossible combinations.
Oversample rare poses or low visibility if needed, but retain training weights separately from real evaluation frequencies.
Near-duplicate frames sharing scene seeds, asset variants, textures, or trajectories must not cross train/test.
04 · Physics & Layout
Poses, occlusion, and contacts are correlated in bins, stacks, and tabletop scenes. Physics generates this structure only when scale, collisions, mass, solvers, and settling criteria are controlled together.
Drop regions, orientations, velocities, instance combinations
gravity, dt, substeps, contact, solver
‖v‖, ‖ω‖, contact duration, penetration
Visibility, truncation, camera reachability, object count
Gravity, dimensions, mass, collision margins, and solver tolerances must use consistent scales; treating cm meshes as m radically changes dynamics.
Start with broad-phase overlap tests; airborne positions, initial velocities, and orientations should match the feeder mechanism, rather than teleport from unreachable regions.
Fix time steps/substeps, solver iterations, and determinism settings; do not assume bit-exact behavior across GPUs/backends.
Static/dynamic friction, restitution, damping, contact offsets, and collision meshes jointly determine stable poses and occlusion.
Check linear/angular velocity, sustained contact, and maximum penetration instead of a fixed frame count alone; define timeouts and rejection reasons.
Log rejection rates for camera clipping, visibility, truncation, collisions, and grasp reachability so rejection sampling does not silently alter the distribution.
Save camera/object trajectories throughout exposure; rolling shutter, motion blur, and flow require more than midpoint poses.
Alongside seeds, save engine versions, threads/GPUs, asset hashes, and solver configuration; compare replay states within tolerance.
05 · PBR, Lighting & Camera
PBR jointly models geometry, BRDF, illumination, transport, exposure, and color management. Randomize meaningful physical parameters and preserve the boundary between scene-linear and display outputs.
| Variable family | Sampled factors | Required invariants | Typical failure |
|---|---|---|---|
| Geometry | mesh detail, normal / displacement, support, background geometry | object frame, metric size, collision/visual correspondence | Realistic materials cannot fix systematic silhouette/contact errors from mismatched CAD |
| Material / BRDF | base color, roughness, metallic, specular, transmission, IOR, texture | Material ranges and combinations have physical/product evidence | Unbounded colors break identity; mirrors/transparency need optical-path changes beyond color |
| Illumination | HDR environment, area/point light, intensity, CCT, size, shadow | Version scene-linear radiance, units/exposure, and color management | Brightness augmentation alone lacks shadows, interreflection, and saturation mechanisms |
| Camera response | exposure, white balance, tone mapping, vignetting, noise, compression | Separate clean linear renders from display-ready RGB | Training PNGs and real streams use different tone maps/ISPs while validation checks only visual color similarity |
| Temporal | shutter, trajectory, rolling readout, frame interval, light flicker | Pose, flow, blur, and timestamps share an exposure model | Blurred images with instantaneous poses; inconsistent dynamic occlusion and rolling-shutter geometry |
06 · Ground-truth Render Passes
Depth/mask output alone is insufficient. RGB, Z, normals, IDs, coordinates, and flow at one pixel must share scene state and visibility tests, with explicit antialiasing, transparency, motion, and background rules.
| Pass | Precise semantics | Implementation notes |
|---|---|---|
| RGB / radiance | Display RGB or scene-linear HDR; specify color space, view transform, exposure, and alpha | Do not apply color management to normals, IDs, or depth |
| Z-depth / range | Optical-frame Z or ray length, with explicit units, clipping, and background-invalid semantics | Render clean floats, then derive sensor quantization and holes |
| Surface normal | Camera / world / object frames; direction, handedness, normalization | Store normal-map perturbations separately from geometric normals if needed |
| Instance / semantic ID | Stable integer pixel IDs with fixed background/ignore values | Color previews are not labels; antialiasing creates nonexistent mixed IDs |
| Full / visible mask | Separate amodal full silhouettes from z-buffer-visible regions | Define mask semantics for transparency, translucency, and motion blur by task |
| Object coordinate | Object-frame XYZ / NOCS at visible pixels, with fixed units and canonical frames | Use perspective-correct interpolation and bypass display color transforms |
| Optical flow / motion vector | Pixel displacement direction, time interval, occlusion/bounds validity, rolling-shutter conventions | Postprocessed vector blur differs from actual exposure integration |
| Pose / camera | Default ᶜTₒ, per-frame K/D, timestamps, velocities/trajectories; name inverses separately | Both camera and object motion affect relative pose |
Sample visible pixels, transform coordinates with pose/K, and bound reprojection error by the raster convention.
Visible masks equal the instance's z-buffer-winning pixels; render or compute full masks separately.
Rotate object normals with R into camera coordinates and compare normal-C, unit length, and orientation conventions.
Advance surface points from t to t+Δt, project, and compare flow with explicit occlusion/out-of-bounds validity.
07 · Sensor Simulation
Noise varies with distance, incidence, brightness, material, and motion. Holes, flying pixels, multipath, saturation, and rolling shutter have spatial/temporal structure. Estimate mechanisms from raw real streams and implement separate, switchable sensor layers.
| Modality | Formation mechanism to model | Calibration evidence | Common mistakes |
|---|---|---|---|
| RGB / ISP | shot/read noise, exposure, white balance, vignetting, bloom, demosaic, tone map, compression | raw / linear capture, flat-field, dark frames, color chart, MTF / blur target | Homoscedastic Gaussian noise in sRGB ignores saturation, photon statistics, and ISP order |
| Passive stereo | correspondence ambiguity, disparity quantization, left-right occlusion, baseline/calibration error | Real disparity residuals stratified by texture, edges, distance, and exposure | White noise on perfect Z does not reproduce holes and occlusion bands |
| Structured / active stereo | Projector patterns, IR response, ambient light, speckle, stereo occlusion, device interference | IR left/right streams, confidence, invalid patterns, multirange calibration boards | Random Z dropout without simulating the projector |
| ToF | phase noise, amplitude, multipath, mixed pixel, wrap-around, temperature | Amplitude/residuals across materials, incidence angles, distances, and multipath scenes | One σ(z) cannot capture flying edges, reflectance, and multipath bias |
| Rolling shutter | Rowwise exposure times, continuous trajectories, flow, occlusion changes | Known trajectories, flashes/turntables, or high-frame-rate reference cameras | One whole-frame warp with midpoint global-shutter labels |
| Event / LiDAR / tactile | Threshold/refractory events, scan timing/beam patterns, contact deformation/noise | Raw timestamp/packet/contact calibration alongside final rasters | Random filters on static images omit measurement formation |
linear RGB, Z / range, normal, ID, pose, trajectory
distortion, PSF / DoF, vignetting, rolling shutter, blur
stereo / ToF / projector / event / scan / contact process
shot/read, quantization, demosaic, tone map, compression
08 · Interactive Lab
Compare naive Euler, Haar SO(3), view-sphere, and stable-pose priors; change PBR/sensor layers; then inject four sim-to-real gaps to see why label defects must block production first.
Interactive · Sampling, Rendering & Sim-to-real
Sampler semantics
Equal-area coverage
Distribution entropy
Directional bias
Task interpretation
Render regime
Depth validity
Depth residual
Required passes
Current warning
Dominant gap
Recommended action
Risk proxy
Mixture reading
Release gate
09 · Domain Randomization & Sim-to-real
Improve physical consistency where measurable, randomize unknown task-irrelevant nuisances, and use limited real data for calibration/selection. Judge final performance on real tasks untouched by tuning.
Minimum sim-to-real experiment matrix
10 · Toolchains
Blender, BlenderProc, Isaac Sim, Unity, and custom renderers have different strengths. Tool names do not define frames, units, passes, sensors, versions, or validation.
Flexible, but requires explicit coordinates, passes, versions, and large-scale scheduling contracts
Suited to 6D pose / CV synthesis; audit module parameters and asset sources
Suited to closed-loop robotics and digital twins; track versions, USD layers, GPU determinism
Verify physics, cameras, color, and label passes against research contracts
Slow but useful for calibration/oracles; does not inherently provide robot/sensor timing
Low cost; contact shadows, occlusion, color, depth of field, and edges expose domain gaps
11 · Scalable Production
Scale turns rare faults into thousands of bad labels. Reconstruct samples from fixed inputs, publish shards atomically after validation, and preserve sample identities through retries.
Fix schemas, stratified quotas, configuration IDs, and budgets; run all unit/visual checks on small samples first
Seed → scene graph; log proposals and rejection reasons to expose sampling bias
Physical settling / trajectories; save state summaries, contacts, timeouts, penetration, determinism fingerprints
Separate clean and sensor passes using one scene snapshot / exposure trajectory per frame
Check matrices, projections, IDs, masks, depth, finite values, ranges, distributions, licenses, and round trips
Write temporary shards → fully validate → atomically rename; manifests, checksums, counts, idempotent retries
Internal schema → BOP / COCO / WebDataset, with explicit units, frames, depth_scale, channel dtypes
Fixed real holdouts, real-only / synth-only / mixed baselines, multiple seeds, layerwise ablations
Per-sample manifest
sample_id: sha256(config_id | scene_index)
generator: {git_commit, engine, version}
random: {root_seed, sampler_streams}
assets: [{asset_id, geometry_hash, material_hash}]
scene: {transforms, velocities, contacts}
camera: {frame, K, D, shutter, timestamp}
passes: [{name, dtype, frame, unit, checksum}]
sensor_model: {name, version, parameters}
qa: {status, checks, reject_reason} BOP export boundary
internal scene state
├─ metric mesh + object frame
├─ camera optical K / D
├─ ᶜTₒ at reference time
├─ clean + sensor depth
└─ full / visible masks
↓ explicit conversion
BOP scene_camera / scene_gt / scene_gt_info
├─ cam_R_m2c / cam_t_m2c
├─ cam_K / depth_scale
├─ px_count_all / valid / visib
└─ mask / mask_visib 12 · Quality Assurance
Known generating states allow stricter automatic oracles than real annotation. Visual spot checks and real holdouts become interpretable only after mathematical/schema checks pass.
| Failure modes | Symptoms | Detection | Fix |
|---|---|---|---|
| Uniform Euler bias | Too many polar directions and too few near the equator | Equal-area z–azimuth histograms, SO(3) bins, task-conditional coverage | Use Haar quaternions, or explicitly name the task prior |
| Hidden rejection bias | Visibility/collision filtering leaves only easy examples from random samples | Save proposal/acceptance counts and conditional rejection heatmaps | Constrained sampling or importance weighting; include rejection in the distribution model |
| Physics explosion | Penetration, explosive motion, floating, extreme angular velocity, irreproducibility | Penetration/contact/energy/settling-timeout assertions | Fix units, collisions, time steps, solvers, initial overlap |
| Pretty but wrong asset | Photorealistic images with wrong silhouettes, sizes, holes, or frames | Real silhouettes/depth/caliper measurements and frame overlays | Repair asset contracts before material randomization |
| ID / mask antialiasing | Mixed colors or unknown IDs at instance edges | unique ID set, mask counts, z-buffer consistency | Integer passes / Cryptomatte with task-defined discretization |
| Depth semantics mismatch | Mixing Z-depth, ray range, clipping values, or units | Analytical plane/sphere tests and back-projection/reprojection | Semantic field names; separate clean floats and sensor integers |
| Motion-label mismatch | Blurred/rolling-shutter images paired with one instantaneous pose | Check fast edges, flow, and exposure-trajectory reprojection | Save trajectories / row times; define the evaluation reference instant |
| Synthetic leakage | Shared asset/seed/scene variants across train/test, or tuning on real test data | Deduplication and split audits by generator lineage | Split by asset/scene families; reserve real holdouts for the final protocol |
| More data, worse transfer | More synthetic data lowers real performance | Learning curves / stagewise oracles with fixed training budgets and sample weights | Find the dominant gap, narrow unhelpful randomness, then adjust the mixing curriculum |
| Non-reproducible shards | Reruns change content/IDs and break configuration traceability | Manifest, content-hash, sample-ID idempotency checks | Derive sample IDs from fixed inputs; use atomic shards and versioned RNGs |
Release Gate · Before Generating One Million Images