Skip to main content
datadoo
Back to careers
Careers

3D / Simulation Engineer

Build digital twins in Omniverse and OpenUSD: scenes, materials, sensors, physics and randomization.

Málaga, Spain · Remote-firstHow to apply

Every dataset starts as a digital twin: a USD scene of the place where a model will operate, seen through the sensors it will use. This role builds those scenes in NVIDIA Omniverse, along with the randomization that turns one scene into a dataset. A scene is done when its renders and labels hold up against real captures from the same kind of camera.

What you'll work on

  • Assemble USD scenes from CAD, scans and asset libraries, with point clouds as layout reference. Fix metersPerUnit, up axis, pivots, normals and hierarchy, and bring CAD tessellation and texture sizes down to what the scene needs, so scenes compose, version and render cleanly.
  • Author physically based materials and check them against reference photos under known lighting. Glass, car paint, metal and wet surfaces are the usual hard cases.
  • Model sensors to match the target hardware: intrinsics, lens distortion (OpenCV pinhole and fisheye models, f-theta), exposure, noise and motion blur for cameras, and depth or LiDAR where a dataset needs them.
  • Set up physics where placement has to be plausible: drop and settle objects into piles and bins without interpenetration, and give the assets a robot handles mass, friction and collision approximations (convex decomposition, SDF) that hold up in contact.
  • Write Replicator randomizers for lighting, weather, camera placement, object placement, materials and procedural damage, inside ranges that stay physically valid.
  • Tag every asset with semantic classes that match the dataset's taxonomy, and configure Replicator writers so each frame exports RGB, depth, normals, 2D and 3D boxes, instance and semantic masks, camera parameters and metadata that agree with the scene. Prepare the depth, segmentation and edge inputs that Cosmos-Transfer is conditioned on.
  • Choose render settings per dataset: RTX Real-Time or path-traced, samples per pixel, and enough subframes after each randomization that temporal accumulation leaves no ghosting in the frame.
  • Record scene versions, render settings and randomization ranges so any dataset can be regenerated from its record.

What you bring

  • Scenes built in OpenUSD, or in a DCC tool with a USD pipeline, and a working grasp of composition: layers, references, payloads and variants.
  • Python scripting inside a 3D application such as Omniverse Kit, Isaac Sim, Blender, Houdini or Maya.
  • Physically based rendering in practice: light units, color spaces, tone mapping, path-traced and real-time modes, and the habit of finding out why a render looks wrong.
  • Matching a virtual camera to a real one, from calibration data or against reference footage.
  • Material work beyond texture painting: MDL or another PBR material model, transparent and reflective surfaces, values measured or matched to reference.
  • Procedural generation and randomization, with the bookkeeping that keeps it reproducible.

Good to have

  • Omniverse Replicator, Isaac Sim or Isaac Lab.
  • SimReady assets: semantics, physics and materials authored on the asset itself.
  • PhysX or another physics engine used for robotics simulation.
  • Houdini or similar procedural tools.
  • LiDAR or radar simulation.
  • Reconstruction of real environments with photogrammetry or Gaussian splatting.

How we work

We're a small team based in Málaga, Spain, and remote-first. Communication is async, with deep focus time baked in, and there are no committees or layers of approval between your work and the product. We build on NVIDIA Omniverse, Replicator and Cosmos-Transfer, and we're members of the NVIDIA Inception Program.

How to apply

Write to us through the contact form with a scene, a render or a tool you built, and a line on how you checked it against real photos or footage. No cover letter.