Awesome
ThreeDWorld (TDW)
ThreeDWorld (TDW) is a platform for interactive multi-modal physical simulation. With TDW, users can simulate high-fidelity sensory data and physical interactions between mobile agents and objects in a wide variety of rich 3D environments.
TDW was developed primarily by Jeremy Schwartz and Esther Alter. It is now maintained by Esther Alter.
TDW is now in long-term support (LTS). TDW will receive only minor updates and bug fixes.
General guide to TDW
Setup
1.1 Installation (Read this first!)
1.2 How to run TDW on a Linux server
- Overview
- Launch a TDW build on a remote server from a personal computer
- Remote rendering with xpra
- X11 forwarding
Core Concepts
- The controller
- Auto-launching the TDW build
- Commands
- Design philosophy of TDW
- Scenes
- Avatars and cameras
- Add-ons and the
ThirdPersonCamera
- Objects
- Output data
- Images
- Outdoor scenes
Troubleshooting
Tutorials
1. Scene Setup
1.1 Scene Setup (High-Level APIs)
- Overview
- Procedural generation (the
ProcGenKitchen
add-on) - Regions, interior regions, and rooms
- Procedural object arrangements
- Scripted object placement (floorplan layouts)
- Reset a scene
High-level APs: Floorplan and ProcGenKitchen
1.2 Scene Setup (Low-Level APIs)
- Overview
- Units and data formats
Bounds
output data- Visual materials, textures, and colors
- ProcGenRoom
2. 3D Models
2.1 Other model libraries
2.2 Custom models
2.3 Composite (articulated) objects
- Overview
- Composite objects in TDW
- Create a composite object from a prefab
- Create a composite object from a .urdf file
3. Read/Write to Disk
- Overview
- The
Logger
andLogPlayback
add-ons - The
JsonWriter
add-on - The
OutputDataWriter
add-on - Create a custom data writer
- Import .sdf and .lisdf files
- Images (Cross-referenced with "Core Concepts")
- Audio (Cross-referenced with "Audio")
- Video (Cross-referenced with "Video Recording")
4. Semantic States
- Overview
- Line of sight (
Raycast
output data) - Proximity to region (
Overlap
output data) - Proximity to other objects (the
TriggerCollisionManager
add-on) - Containment (the
ContainerManager
add-on) - Open and closed states
- Grasped objects
5. Visual Perception
- Overview
- Instance ID segmentation colors (
_id
pass) - Semantic category segmentation colors (
_category
pass) - Depth maps (
_depth
and_depth_simple
passes) - Motion perception (
_flow
pass) - Other image passes (
_mask
,_normals
, and_albedo
passes) Occlusion
output data
6. Camera Controls
7. Photorealism
- Overview
- Lighting (HDRI skyboxes)
- Post-processing
- Interior lighting (the
InteriorSceneLighting
add-on) - Depth of field
- V-Ray Rendering
High-level API: tdw_image_dataset
8. Physics
8.1 Physics (PhysX)
- PhysX
- Object physics parameters
Rigidbodies
output dataCollision
output data- Apply forces to objects
- Skip physics frames
- Disable physics
High-level API: tdw_physics
8.2 Physics (Obi)
- Obi
- Fluids
- Wind
- Cloth
ObiParticles
output data- Colliders and collision materials
- Solvers
- Obi and robots
- Obi and Flex
8.3 Physics (Flex)
- Flex
- Solid and soft actors
- Cloth actors
- Fluid and source actors
- Move, rotate, and scale Flex objects
FlexParticles
output data- Apply forces to Flex objects
- Reset a Flex scene
- Other Flex commands
High-level API: tdw_physics
9. Audio
9.1 Clatter (Physically-derived audio)
- Overview
- Object audio data
- Recording Clatter audio with the
PhysicsAudioRecorder
add-on - Clatter and Resonance Audio
- Reset Clatter
- Manually generate audio
- Troubleshooting Clatter
- How to contribute to Clatter
9.2 PyImpact (obsolete predecessor to Clatter)
10. Video Recording
11. Agents
11.1 Robots
- Overview
- The
Robot
add-on - Robot arm add-ons
- Robot collision detection
- Select a robot
- Add your own robots to TDW
- Robotics API (low-level)
- Add a camera to a robot
11.2 Magnebots
11.3 Replicants
- Overview
- Actions
- Output data
- Collision detection
- Movement
- Animations
- Arm articulation, pt. 1: Basics
- Arm articulation, pt. 2: Grasp and drop objects
- Arm articulation, pt. 3: Advanced topics
- Arm articulation, pt. 4: Stacking objects
- Head rotation
- Navigation
- Custom actions
- Multiple Replicants
- Reset
11.4 Wheelchair Replicants
- Overview
- Actions
- Output data
- Collision detection
- Movement
- Arm articulation, pt. 1: Basics
- Arm articulation, pt. 2: Grasp and drop objects
- Arm articulation, pt. 3: Advanced topics
- Head rotation
- Navigation
- Custom actions
- Multiple Agents
- Reset
11.5 Drones
11.6 Vehicles
11.7 Virtual Reality (VR)
11.8 Keyboard and Mouse
11.9 Embodied avatars
12. Multi-agent simulations
13. Navigation
14. User Interface (UI)
15. Non-physics objects
15.1 Non-physics humanoids
15.2 Misc. non-physics objects
- Overview
- Position markers
- Line renderers
- Textured quads
- Compass rose
- Visual Effects
- The
FloorplanFlood
add-on - Empty objects
16. Misc. other topics
API Documentation
Command API
tdw
module API
tdw
- AudioConstants
- AudioUtils
- CardinalDirection
- Controller
- IntPair
- OrdinalDirection
- QuaternionUtils
- RemoteBuildLauncher
- TDWUtils
- TypeAliases
tdw.add_ons
- AddOn
- AudioInitializer
- AudioInitializerBase
- Autohand
- AvatarBody
- Benchmark
- CinematicCamera
- Clatter
- CollisionManager
- CompositeObjectManager
- ContainerManager
- Drone
- EmbodiedAvatar
- EmptyObjectManager
- FirstPersonAvatar
- Floorplan
- FloorplanFlood
- FoveLeapMotion
- ImageCapture
- InteriorSceneLighting
- JsonWriter
- Keyboard
- LeapMotion
- LisdfReader
- Logger
- LogPlayback
- ModelVerifier
- Mouse
- NavMesh
- Obi
- ObjectManager
- OccupancyMap
- OculusLeapMotion
- OculusTouch
- OutputDataWriter
- PhysicsAudioRecorder
- ProcGenKitchen
- PyImpact
- Replicant
- ReplicantBase
- ResonanceAudioInitializer
- Robot
- RobotArm
- RobotBase
- StepPhysics
- ThirdPersonCamera
- ThirdPersonCameraBase
- TriggerCollisionManager
- UI
- Vehicle
- VR
- VrayExporter
- WheelchairReplicant
- Writer
tdw.add_ons.ui_widgets
tdw.agent_data
tdw.asset_bundle_creator
- AnimationCreator
- AssetBundleCreator
- CompositeObjectCreator
- HumanoidCreator
- HumanoidCreatorBase
- ModelCreator
- RobotCreator
tdw.backend
tdw.collision_data
tdw.container_data
tdw.drone
tdw.flex_data
tdw.lerp
tdw.librarian
- DroneLibrarian
- HdriSkyboxLibrarian
- HumanoidAnimationLibrarian
- HumanoidLibrarian
- MaterialLibrarian
- ModelLibrarian
- RobotLibrarian
- SceneLibrarian
- VehicleLibrarian
- VisualEffectLibrarian
tdw.lisdf_data
tdw.model_tests
tdw.obi_data
tdw.obi_data.cloth
tdw.obi_data.collision_materials
tdw.obi_data.fluids
- CubeEmitter
- DiskEmitter
- EdgeEmitter
- EmitterSamplingMethod
- EmitterShape
- Fluid
- FluidBase
- GranularFluid
- SphereEmitter
tdw.object_data
tdw.object_data.composite_object
tdw.object_data.composite_object.sub_object
- HingeDynamic
- HingeStatic
- HingeStaticBase
- LightDynamic
- LightStatic
- MotorStatic
- NonMachineStatic
- PrismaticJointStatic
- SpringStatic
- SubObjectDynamic
- SubObjectStatic
tdw.physics_audio
- AudioMaterial
- Base64Sound
- ClatterObject
- CollisionAudioEvent
- CollisionAudioInfo
- CollisionAudioType
- ImpactMaterial
- Modes
- ObjectAudioStatic
- ScrapeMaterial
- ScrapeModel
- ScrapeSubObject
tdw.proc_gen.arrangements
- Arrangement
- ArrangementAlongWall
- ArrangementWithRootObject
- Basket
- CupAndCoaster
- Dishwasher
- KitchenCabinet
- KitchenCounter
- KitchenCounterTop
- KitchenTable
- Microwave
- Painting
- Plate
- Radiator
- Refrigerator
- Shelf
- SideTable
- Sink
- StackOfPlates
- Stool
- Stove
- Suitcase
- TableAndChairs
- TableSetting
- Void
- WallCabinet
tdw.proc_gen.arrangements.cabinetry
tdw.release
tdw.replicant
- ActionStatus
- Arm
- CollisionDetection
- ImageFrequency
- ReplicantBodyPart
- ReplicantDynamic
- ReplicantStatic
tdw.replicant.actions
- Action
- Animate
- ArmMotion
- DoNothing
- Drop
- Grasp
- HeadMotion
- IkMotion
- LookAt
- MoveBy
- MoveTo
- ReachFor
- ReachForWithPlan
- ResetArm
- ResetHead
- RotateHead
- TurnBy
- TurnTo
tdw.replicant.ik_plans
tdw.robot_data
tdw.scene_data
tdw.vehicle
tdw.vray_data
tdw.vr_data
tdw.vr_data.fove
- CalibrationMethod
- CalibrationSphere
- CalibrationState
- Eye
- EyeByEyeCalibration
- EyeState
- EyeTorsionCalibration
tdw.wheelchair_replicant
tdw.wheelchair_replicant.actions