summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-tdw.spec1848
-rw-r--r--sources1
3 files changed, 1850 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..c1cfd9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/tdw-1.11.16.0.tar.gz
diff --git a/python-tdw.spec b/python-tdw.spec
new file mode 100644
index 0000000..6edca7b
--- /dev/null
+++ b/python-tdw.spec
@@ -0,0 +1,1848 @@
+%global _empty_manifest_terminate_build 0
+Name: python-tdw
+Version: 1.11.16.0
+Release: 1
+Summary: 3D simulation environment
+License: BSD
+URL: https://github.com/threedworld-mit/tdw
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/e5/81/c7da404437d0abb189deb281a3ef7a165629bf47fcc1b6074d3a34bb1426/tdw-1.11.16.0.tar.gz
+BuildArch: noarch
+
+
+%description
+# 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.
+
+<img src="https://raw.githubusercontent.com/threedworld-mit/tdw/master/splash.jpg">
+
+- [Code of Conduct](https://github.com/threedworld-mit/tdw/blob/master/code_of_conduct.md)
+- [Changelog](https://github.com/threedworld-mit/tdw/blob/master/Documentation/Changelog.md)
+- [License](https://github.com/threedworld-mit/tdw/blob/master/LICENSE.txt)
+- [Website](https://threedworld.org/)
+- [Example controllers](https://github.com/threedworld-mit/tdw/tree/master/Python/example_controllers)
+
+# General guide to TDW
+
+## Setup
+
+### 1.1 Installation (Read this first!)
+
+1. [Install TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/setup/install.md)
+3. [Upgrade TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/setup/upgrade.md)
+
+### 1.2 How to run TDW on a Linux server
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/overview.md)
+2. [Launch a TDW build on a remote server from a personal computer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/launch_build.md)
+3. [Remote rendering with xpra](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/xpra.md)
+4. [X11 forwarding](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/x11_forwarding.md)
+
+## Core Concepts
+
+1. [The controller](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/controller.md)
+2. [Auto-launching the TDW build](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/launch_build.md)
+3. [Commands](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/commands.md)
+4. [Design philosophy of TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/design_philosophy.md)
+5. [Scenes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/scenes.md)
+6. [Avatars and cameras](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/avatars.md)
+7. [Add-ons and the `ThirdPersonCamera`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/add_ons.md)
+8. [Objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/objects.md)
+9. [Output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/output_data.md)
+10. [Images](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/images.md)
+
+## Troubleshooting
+
+1. [How to report an issue](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/issues.md)
+2. [Common errors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/common_errors.md)
+3. [Performance optimizations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/performance_optimizations.md)
+4. [Good coding practices](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/good_coding_practices.md)
+
+# Tutorials
+
+## 1. Scene Setup
+
+**[Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup/overview.md)**
+
+### 1.1 Scene Setup (High-Level APIs)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/overview.md)
+2. [Procedural generation (the `ProcGenKitchen` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/proc_gen_kitchen.md)
+2. [Regions, interior regions, and rooms](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/rooms.md)
+3. [Procedural object arrangements](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/arrangements.md)
+4. [Scripted object placement (floorplan layouts)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/floorplans.md)
+5. [Reset a scene](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/reset_scene.md)
+
+High-level APs: [Floorplan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan.md) and [ProcGenKitchen](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/proc_gen_kitchen.md)
+
+### 1.2 Scene Setup (Low-Level APIs)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/overview.md)
+2. [Units and data formats](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/units.md)
+3. [`Bounds` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/bounds.md)
+4. [Visual materials, textures, and colors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/materials_textures_colors.md)
+5. [ProcGenRoom](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/proc_gen_room.md)
+
+## 2. 3D Models
+
+### 2.1 Other model libraries
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/overview.md)
+2. [Free models](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/free_models.md)
+3. [Non-free models](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/non_free_models.md)
+
+### 2.2 Custom models
+
+1. [Add your own models to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/custom_models/custom_models.md)
+2. [Add ShapeNet models to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/custom_models/shapenet.md)
+
+### 2.3 Composite (articulated) objects
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/overview.md)
+2. [Composite objects in TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/composite_objects.md)
+3. [Create a composite object from a prefab](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/create_from_prefab.md)
+4. [Create a composite object from a .urdf file](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/create_from_urdf.md)
+
+## 3. Read/Write to Disk
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/overview.md)
+2. [The `Logger` and `LogPlayback` add-ons](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/logger.md)
+3. [The `JsonWriter` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/json.md)
+4. [The `OutputDataWriter` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/output_data_writer.md)
+5. [Create a custom data writer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/custom_writers.md)
+6. [Import .sdf and .lisdf files](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/lisdf.md)
+7. [Images](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/images.md) (Cross-referenced with "Core Concepts")
+8. [Audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/overview.md) (Cross-referenced with "Audio")
+9. [Video](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/overview.md) (Cross-referenced with "Video Recording")
+
+## 4. Semantic States
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/overview.md)
+2. [Line of sight (`Raycast` output data)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/raycast.md)
+3. [Proximity to region (`Overlap` output data)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/overlap.md)
+3. [Proximity to other objects (the `TriggerCollisionManager` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/trigger_collisions.md)
+3. [Containment (the `ContainerManager` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/containment.md)
+4. [Open and closed states](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/openness.md)
+4. [Grasped objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/grasped.md)
+
+## 5. Visual Perception
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/overview.md)
+2. [Instance ID segmentation colors (`_id` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/id.md)
+3. [Semantic category segmentation colors (`_category` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/category.md)
+4. [Depth maps (`_depth` and `_depth_simple` passes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/depth.md)
+5. [Motion perception (`_flow` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/flow.md)
+6. [Other image passes (`_mask`, `_normals`, and `_albedo` passes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/other_passes.md)
+7. [`Occlusion` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/occlusion.md)
+
+## 6. Camera Controls
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/overview.md)
+2. [Move a camera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/position.md)
+3. [Rotate a camera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/rotation.md)
+4. [Follow an object](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/follow.md)
+4. [The `CinematicCamera` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/cinematic_camera.md)
+
+## 7. Photorealism
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/overview.md)
+2. [Lighting (HDRI skyboxes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/lighting.md)
+3. [Post-processing](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/post_processing.md)
+3. [Interior lighting (the `InteriorSceneLighting` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/interior_lighting.md)
+4. [Depth of field](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/depth_of_field.md)
+
+High-level API: [tdw_image_dataset](https://github.com/alters-mit/tdw_image_dataset)
+
+## 8. Physics
+
+**[Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/overview.md)**
+
+### 8.1 Physics (PhysX)
+
+1. [PhysX](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/physx.md)
+2. [Object physics parameters](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/physics_objects.md)
+3. [`Rigidbodies` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/rigidbodies.md)
+4. [`Collision` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/collisions.md)
+5. [Apply forces to objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/forces.md)
+6. [Skip physics frames](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/step_physics.md)
+7. [Disable physics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/disable_physics.md)
+
+High-level API: [tdw_physics](https://github.com/alters-mit/tdw_physics)
+
+### 8.2 Physics (Obi)
+
+1. [Obi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi.md)
+2. [Fluids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/fluids.md)
+2. [Cloth](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/cloth.md)
+3. [`ObiParticles` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi_particles.md)
+4. [Colliders and collision materials](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/colliders_and_collision_materials.md)
+5. [Solvers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/solvers.md)
+6. [Obi and robots](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/robots.md)
+6. [Obi and Flex](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi_and_flex.md)
+
+### 8.3 Physics (Flex)
+
+1. [Flex](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/flex.md)
+2. [Solid and soft actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/solid_and_soft.md)
+3. [Cloth actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/cloth.md)
+4. [Fluid and source actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/fluid_and_source.md)
+5. [Move, rotate, and scale Flex objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/transform.md)
+6. [`FlexParticles` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/output_data.md)
+7. [Apply forces to Flex objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/forces.md)
+8. [Reset a Flex scene](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/reset_scene.md)
+8. [Other Flex commands](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/other_commands.md)
+
+High-level API: [tdw_physics](https://github.com/alters-mit/tdw_physics)
+
+## 9. Audio
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/overview.md)
+2. [Initialize audio and play .wav files](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/initialize_audio.md)
+3. [Resonance Audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/resonance_audio.md)
+4. [`PyImpact` (dynamic impact sounds)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/py_impact.md)
+6. [Recording audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/record_audio.md)
+6. [`PyImpact` (advanced API)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/py_impact_advanced.md)
+7. [Audio perception](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/audio_perception.md)
+
+## 10. Video Recording
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/overview.md)
+2. [Image-only video](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/images.md)
+3. [Video with audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/audio.md)
+ 1. [Video with audio (Linux)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_linux.md)
+ 2. [Video with audio (OS X)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_osx.md)
+ 3. [Video with audio (Windows)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_windows.md)
+
+
+## 11. Agents
+
+[**Overview**](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/agents/overview.md)
+
+### 11.1 Robots
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/overview.md)
+2. [The `Robot` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/robot_add_on.md)
+3. [Robot arm add-ons](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/robot_arm.md)
+4. [Robot collision detection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/collision_detection.md)
+5. [Select a robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/select_robot.md)
+6. [Add your own robots to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/custom_robots.md)
+7. [Robotics API (low-level)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/custom_robots.md)
+8. [Add a camera to a robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/add_camera.md)
+
+### 11.2 Magnebots
+
+1. [Magnebot API (external repo)](https://github.com/alters-mit/magnebot)
+
+### 11.3 Replicants
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/overview.md)
+2. [Actions](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/actions.md)
+3. [Output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/output_data.md)
+4. [Collision detection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/collision_detection.md)
+5. [Movement](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/movement.md)
+6. [Animations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/animations.md)
+7. [Arm articulation, pt. 1: Basics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_1.md)
+8. [Arm articulation, pt. 2: Grasp and drop objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_2.md)
+9. [Arm articulation, pt. 3: Advanced topics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_3.md)
+10. [Arm articulation, pt. 4: Stacking objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_4.md)
+11. [Head rotation](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/head_rotation.md)
+12. [Navigation](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/navigation.md)
+13. [Custom actions](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/custom_actions.md)
+14. [Multiple Replicants](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/multiple_replicants.md)
+15. [Reset](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/reset.md)
+
+### 11.4 Virtual Reality (VR)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/vr/overview.md)
+2. [Oculus Touch rigs](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/vr/oculus_touch.md)
+
+### 11.5 Keyboard and Mouse
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/overview.md)
+2. [Mouse input](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/mouse.md)
+3. [The `FirstPersonAvatar`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/first_person_avatar.md)
+4. [Keyboard input](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/keyboard.md)
+
+### 11.6 Embodied avatars
+
+1. [The `EmbodiedAvatar`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/embodied_avatars/embodied_avatar.md)
+
+## 12. Multi-agent simulations
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/multi_agent/overview.md)
+2. [Custom agent classes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/multi_agent/custom_agent_classes.md)
+
+## 13. Navigation
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/overview.md)
+2. [NavMesh pathfinding](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/nav_mesh.md)
+3. [Occupancy maps](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/occupancy_maps.md)
+
+## 14. Non-physics objects
+
+### 14.1 Non-physics humanoids
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/overview.md)
+2. [SMPL humanoids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/smpl.md)
+3. [Create custom non-physics humanoids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/custom_humanoids.md)
+4. [Create custom humanoid animations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/custom_animations.md)
+
+### 14.2 Misc. non-physics objects
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/overview.md)
+2. [Position markers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/position_markers.md)
+3. [Line renderers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/line_renderers.md)
+4. [Textured quads](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/textured_quads.md)
+5. [User Interface (the `UI` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/ui.md)
+6. [Compass rose](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/compass_rose.md)
+7. [Visual Effects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/visual_effects.md)
+8. [The `FloorplanFlood` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/floorplan_flood.md)
+9. [Empty objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/empty_objects.md)
+
+## 15. Misc. other topics
+
+1. [C# source code](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/c_sharp_sources.md)
+2. [Freezing your code](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/freeze.md)
+2. [Download asset bundles](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/download_asset_bundles.md)
+
+# API Documentation
+
+## Command API
+
+- [Command API](https://github.com/threedworld-mit/tdw/blob/master/Documentation/api/command_api.md)
+- [Output Data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/api/output_data.md)
+
+## `tdw` module API
+
+**tdw**
+
+- [AudioConstants](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/audio_constants.md)
+- [AudioUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/audio_utils.md)
+- [CardinalDirection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/cardinal_direction.md)
+- [Controller](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/controller.md)
+- [IntPair](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/int_pair.md)
+- [OrdinalDirection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/ordinal_direction.md)
+- [QuaternionUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/quaternion_utils.md)
+- [RemoteBuildLauncher](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/remote_build_launcher.md)
+- [TDWUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/tdw_utils.md)
+
+**tdw.add_ons**
+
+- [AddOn](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/add_on.md)
+- [AudioInitializer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/audio_initializer.md)
+- [AudioInitializerBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/audio_initializer_base.md)
+- [AvatarBody](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/avatar_body.md)
+- [Benchmark](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/benchmark.md)
+- [CinematicCamera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/cinematic_camera.md)
+- [CollisionManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/collision_manager.md)
+- [CompositeObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/composite_object_manager.md)
+- [ContainerManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/container_manager.md)
+- [EmbodiedAvatar](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/embodied_avatar.md)
+- [EmptyObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/empty_object_manager.md)
+- [FirstPersonAvatar](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/first_person_avatar.md)
+- [Floorplan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan.md)
+- [FloorplanFlood](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan_flood.md)
+- [ImageCapture](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/image_capture.md)
+- [InteriorSceneLighting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/interior_scene_lighting.md)
+- [JsonWriter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/json_writer.md)
+- [Keyboard](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/keyboard.md)
+- [LisdfReader](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/lisdf_reader.md)
+- [Logger](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/logger.md)
+- [LogPlayback](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/log_playback.md)
+- [ModelVerifier](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/model_verifier.md)
+- [Mouse](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/mouse.md)
+- [NavMesh](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/nav_mesh.md)
+- [Obi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/obi.md)
+- [ObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/object_manager.md)
+- [OccupancyMap](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/occupancy_map.md)
+- [OculusTouch](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/oculus_touch.md)
+- [OutputDataWriter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/output_data_writer.md)
+- [PhysicsAudioRecorder](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/physics_audio_recorder.md)
+- [ProcGenKitchen](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/proc_gen_kitchen.md)
+- [PyImpact](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/py_impact.md)
+- [Replicant](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/replicant.md)
+- [ResonanceAudioInitializer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/resonance_audio_initializer.md)
+- [Robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot.md)
+- [RobotArm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot_arm.md)
+- [RobotBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot_base.md)
+- [StepPhysics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/step_physics.md)
+- [ThirdPersonCamera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/third_person_camera.md)
+- [ThirdPersonCameraBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/third_person_camera_base.md)
+- [TriggerCollisionManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/trigger_collision_manager.md)
+- [UI](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/ui.md)
+- [VR](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/vr.md)
+- [Writer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/writer.md)
+
+**tdw.asset_bundle_creator**
+
+- [AnimationCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/animation_creator.md)
+- [AssetBundleCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/asset_bundle_creator.md)
+- [CompositeObjectCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/composite_object_creator.md)
+- [HumanoidCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/humanoid_creator.md)
+- [HumanoidCreatorBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/humanoid_creator_base.md)
+- [ModelCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/model_creator.md)
+- [RobotCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/robot_creator.md)
+
+**tdw.collision_data**
+
+- [CollisionBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_base.md)
+- [CollisionObjEnv](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_obj_env.md)
+- [CollisionObjObj](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_obj_obj.md)
+- [TriggerColliderShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/trigger_collider_shape.md)
+- [TriggerCollisionEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/trigger_collision_event.md)
+
+**tdw.container_data**
+
+- [BoxContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/box_container.md)
+- [ContainerShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/container_shape.md)
+- [ContainerTag](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/container_tag.md)
+- [ContainmentEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/containment_event.md)
+- [CylinderContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/cylinder_container.md)
+- [SphereContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/sphere_container.md)
+
+**tdw.flex_data**
+
+- [FluidType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/flex_data/fluid_type.md)
+
+**tdw.librarian**
+
+- [HdriSkyboxLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/hdri_skybox_librarian.md)
+- [HumanoidAnimationLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/humanoid_animation_librarian.md)
+- [HumanoidLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/humanoid_librarian.md)
+- [MaterialLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/material_librarian.md)
+- [ModelLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/model_librarian.md)
+- [RobotLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/robot_librarian.md)
+- [SceneLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/scene_librarian.md)
+- [VisualEffectLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/visual_effect_librarian.md)
+
+**tdw.lisdf_data**
+
+- [LisdfRobotMetadata](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/lisdf_data/lisdf_robot_metadata.md)
+
+**tdw.model_tests**
+
+- [MissingMaterials](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/missing_materials.md)
+- [ModelReport](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/model_report.md)
+- [ModelTest](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/model_test.md)
+- [PhysicsQuality](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/physics_quality.md)
+- [RotateObjectTest](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/rotate_object_test.md)
+
+**tdw.obi_data**
+
+- [ForceMode](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/force_mode.md)
+- [ObiActor](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/obi_actor.md)
+
+**tdw.obi_data.cloth**
+
+- [ClothMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/cloth_material.md)
+- [SheetType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/sheet_type.md)
+- [TetherParticleGroup](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/tether_particle_group.md)
+- [TetherType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/tether_type.md)
+- [VolumeType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/volume_type.md)
+
+**tdw.obi_data.collision_materials**
+
+- [CollisionMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/collision_materials/collision_material.md)
+- [MaterialCombineMode](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/collision_materials/material_combine_mode.md)
+
+**tdw.obi_data.fluids**
+
+- [CubeEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/cube_emitter.md)
+- [DiskEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/disk_emitter.md)
+- [EdgeEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/edge_emitter.md)
+- [EmitterSamplingMethod](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/emitter_sampling_method.md)
+- [EmitterShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/emitter_shape.md)
+- [Fluid](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/fluid.md)
+- [FluidBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/fluid_base.md)
+- [GranularFluid](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/granular_fluid.md)
+- [SphereEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/sphere_emitter.md)
+
+**tdw.object_data**
+
+- [Bound](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/bound.md)
+- [ObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/object_static.md)
+- [Rigidbody](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/rigidbody.md)
+- [Transform](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/transform.md)
+
+**tdw.object_data.composite_object**
+
+- [CompositeObjectDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/composite_object_dynamic.md)
+- [CompositeObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/composite_object_static.md)
+
+**tdw.object_data.composite_object.sub_object**
+
+- [HingeDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_dynamic.md)
+- [HingeStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_static.md)
+- [HingeStaticBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_static_base.md)
+- [LightDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/light_dynamic.md)
+- [LightStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/light_static.md)
+- [MotorStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/motor_static.md)
+- [NonMachineStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/non_machine_static.md)
+- [PrismaticJointStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/prismatic_joint_static.md)
+- [SpringStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/spring_static.md)
+- [SubObjectDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/sub_object_dynamic.md)
+- [SubObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/sub_object_static.md)
+
+**tdw.physics_audio**
+
+- [AudioMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/audio_material.md)
+- [Base64Sound](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/base64_sound.md)
+- [CollisionAudioEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_event.md)
+- [CollisionAudioInfo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_info.md)
+- [CollisionAudioType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_type.md)
+- [Modes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/modes.md)
+- [ObjectAudioStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/object_audio_static.md)
+- [ScrapeMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_material.md)
+- [ScrapeModel](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_model.md)
+- [ScrapeSubObject](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_sub_object.md)
+
+**tdw.proc_gen.arrangements**
+
+- [Arrangement](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement.md)
+- [ArrangementAlongWall](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement_along_wall.md)
+- [ArrangementWithRootObject](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement_with_root_object.md)
+- [Basket](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/basket.md)
+- [CupAndCoaster](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cup_and_coaster.md)
+- [Dishwasher](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/dishwasher.md)
+- [KitchenCabinet](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_cabinet.md)
+- [KitchenCounter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_counter.md)
+- [KitchenCounterTop](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_counter_top.md)
+- [KitchenTable](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_table.md)
+- [Microwave](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/microwave.md)
+- [Painting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/painting.md)
+- [Plate](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/plate.md)
+- [Radiator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/radiator.md)
+- [Refrigerator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/refrigerator.md)
+- [Shelf](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/shelf.md)
+- [SideTable](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/side_table.md)
+- [Sink](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/sink.md)
+- [StackOfPlates](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stack_of_plates.md)
+- [Stool](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stool.md)
+- [Stove](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stove.md)
+- [Suitcase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/suitcase.md)
+- [TableAndChairs](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/table_and_chairs.md)
+- [TableSetting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/table_setting.md)
+- [Void](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/void.md)
+- [WallCabinet](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/wall_cabinet.md)
+
+**tdw.proc_gen.arrangements.cabinetry**
+
+- [Cabinetry](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cabinetry/cabinetry.md)
+- [CabinetryType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cabinetry/cabinetry_type.md)
+
+**tdw.release**
+
+- [Build](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/release/build.md)
+- [PyPi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/release/pypi.md)
+
+**tdw.replicant**
+
+- [ActionStatus](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/action_status.md)
+- [Arm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/arm.md)
+- [CollisionDetection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/collision_detection.md)
+- [ImageFrequency](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/image_frequency.md)
+- [ReplicantBodyPart](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_body_part.md)
+- [ReplicantDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_dynamic.md)
+- [ReplicantStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_static.md)
+
+**tdw.replicant.actions**
+
+- [Action](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/action.md)
+- [Animate](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/animate.md)
+- [ArmMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/arm_motion.md)
+- [DoNothing](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/do_nothing.md)
+- [Drop](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/drop.md)
+- [Grasp](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/grasp.md)
+- [HeadMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/head_motion.md)
+- [IkMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/ik_motion.md)
+- [LookAt](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/look_at.md)
+- [MoveBy](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/move_by.md)
+- [MoveTo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/move_to.md)
+- [ReachFor](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reach_for.md)
+- [ReachForWithPlan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reach_for_with_plan.md)
+- [ResetArm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reset_arm.md)
+- [ResetHead](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reset_head.md)
+- [RotateHead](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/rotate_head.md)
+- [TurnBy](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/turn_by.md)
+- [TurnTo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/turn_to.md)
+
+**tdw.replicant.ik_plans**
+
+- [IkPlan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/ik_plan.md)
+- [IkPlanType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/ik_plan_type.md)
+- [VerticalHorizontal](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/vertical_horizontal.md)
+
+**tdw.robot_data**
+
+- [Drive](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/drive.md)
+- [JointDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_dynamic.md)
+- [JointStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_static.md)
+- [JointType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_type.md)
+- [NonMoving](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/non_moving.md)
+- [RobotDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/robot_dynamic.md)
+- [RobotStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/robot_static.md)
+
+**tdw.scene_data**
+
+- [InteriorRegion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/interior_region.md)
+- [RegionBounds](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/region_bounds.md)
+- [Room](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/room.md)
+- [SceneBounds](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/scene_bounds.md)
+
+**tdw.vr_data**
+
+- [OculusTouchButton](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/vr_data/oculus_touch_button.md)
+- [RigType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/vr_data/rig_type.md)
+
+# Performance benchmarks
+1. [Performance benchmarks](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/benchmark.md)
+2. [Image capture](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/image_capture.md)
+3. [Object data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/object_data.md)
+4. [Command deserialization](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/command_deserialization.md)
+
+
+
+
+
+%package -n python3-tdw
+Summary: 3D simulation environment
+Provides: python-tdw
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-tdw
+# 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.
+
+<img src="https://raw.githubusercontent.com/threedworld-mit/tdw/master/splash.jpg">
+
+- [Code of Conduct](https://github.com/threedworld-mit/tdw/blob/master/code_of_conduct.md)
+- [Changelog](https://github.com/threedworld-mit/tdw/blob/master/Documentation/Changelog.md)
+- [License](https://github.com/threedworld-mit/tdw/blob/master/LICENSE.txt)
+- [Website](https://threedworld.org/)
+- [Example controllers](https://github.com/threedworld-mit/tdw/tree/master/Python/example_controllers)
+
+# General guide to TDW
+
+## Setup
+
+### 1.1 Installation (Read this first!)
+
+1. [Install TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/setup/install.md)
+3. [Upgrade TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/setup/upgrade.md)
+
+### 1.2 How to run TDW on a Linux server
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/overview.md)
+2. [Launch a TDW build on a remote server from a personal computer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/launch_build.md)
+3. [Remote rendering with xpra](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/xpra.md)
+4. [X11 forwarding](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/x11_forwarding.md)
+
+## Core Concepts
+
+1. [The controller](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/controller.md)
+2. [Auto-launching the TDW build](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/launch_build.md)
+3. [Commands](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/commands.md)
+4. [Design philosophy of TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/design_philosophy.md)
+5. [Scenes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/scenes.md)
+6. [Avatars and cameras](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/avatars.md)
+7. [Add-ons and the `ThirdPersonCamera`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/add_ons.md)
+8. [Objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/objects.md)
+9. [Output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/output_data.md)
+10. [Images](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/images.md)
+
+## Troubleshooting
+
+1. [How to report an issue](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/issues.md)
+2. [Common errors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/common_errors.md)
+3. [Performance optimizations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/performance_optimizations.md)
+4. [Good coding practices](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/good_coding_practices.md)
+
+# Tutorials
+
+## 1. Scene Setup
+
+**[Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup/overview.md)**
+
+### 1.1 Scene Setup (High-Level APIs)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/overview.md)
+2. [Procedural generation (the `ProcGenKitchen` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/proc_gen_kitchen.md)
+2. [Regions, interior regions, and rooms](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/rooms.md)
+3. [Procedural object arrangements](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/arrangements.md)
+4. [Scripted object placement (floorplan layouts)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/floorplans.md)
+5. [Reset a scene](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/reset_scene.md)
+
+High-level APs: [Floorplan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan.md) and [ProcGenKitchen](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/proc_gen_kitchen.md)
+
+### 1.2 Scene Setup (Low-Level APIs)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/overview.md)
+2. [Units and data formats](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/units.md)
+3. [`Bounds` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/bounds.md)
+4. [Visual materials, textures, and colors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/materials_textures_colors.md)
+5. [ProcGenRoom](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/proc_gen_room.md)
+
+## 2. 3D Models
+
+### 2.1 Other model libraries
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/overview.md)
+2. [Free models](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/free_models.md)
+3. [Non-free models](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/non_free_models.md)
+
+### 2.2 Custom models
+
+1. [Add your own models to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/custom_models/custom_models.md)
+2. [Add ShapeNet models to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/custom_models/shapenet.md)
+
+### 2.3 Composite (articulated) objects
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/overview.md)
+2. [Composite objects in TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/composite_objects.md)
+3. [Create a composite object from a prefab](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/create_from_prefab.md)
+4. [Create a composite object from a .urdf file](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/create_from_urdf.md)
+
+## 3. Read/Write to Disk
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/overview.md)
+2. [The `Logger` and `LogPlayback` add-ons](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/logger.md)
+3. [The `JsonWriter` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/json.md)
+4. [The `OutputDataWriter` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/output_data_writer.md)
+5. [Create a custom data writer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/custom_writers.md)
+6. [Import .sdf and .lisdf files](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/lisdf.md)
+7. [Images](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/images.md) (Cross-referenced with "Core Concepts")
+8. [Audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/overview.md) (Cross-referenced with "Audio")
+9. [Video](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/overview.md) (Cross-referenced with "Video Recording")
+
+## 4. Semantic States
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/overview.md)
+2. [Line of sight (`Raycast` output data)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/raycast.md)
+3. [Proximity to region (`Overlap` output data)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/overlap.md)
+3. [Proximity to other objects (the `TriggerCollisionManager` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/trigger_collisions.md)
+3. [Containment (the `ContainerManager` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/containment.md)
+4. [Open and closed states](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/openness.md)
+4. [Grasped objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/grasped.md)
+
+## 5. Visual Perception
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/overview.md)
+2. [Instance ID segmentation colors (`_id` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/id.md)
+3. [Semantic category segmentation colors (`_category` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/category.md)
+4. [Depth maps (`_depth` and `_depth_simple` passes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/depth.md)
+5. [Motion perception (`_flow` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/flow.md)
+6. [Other image passes (`_mask`, `_normals`, and `_albedo` passes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/other_passes.md)
+7. [`Occlusion` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/occlusion.md)
+
+## 6. Camera Controls
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/overview.md)
+2. [Move a camera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/position.md)
+3. [Rotate a camera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/rotation.md)
+4. [Follow an object](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/follow.md)
+4. [The `CinematicCamera` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/cinematic_camera.md)
+
+## 7. Photorealism
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/overview.md)
+2. [Lighting (HDRI skyboxes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/lighting.md)
+3. [Post-processing](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/post_processing.md)
+3. [Interior lighting (the `InteriorSceneLighting` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/interior_lighting.md)
+4. [Depth of field](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/depth_of_field.md)
+
+High-level API: [tdw_image_dataset](https://github.com/alters-mit/tdw_image_dataset)
+
+## 8. Physics
+
+**[Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/overview.md)**
+
+### 8.1 Physics (PhysX)
+
+1. [PhysX](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/physx.md)
+2. [Object physics parameters](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/physics_objects.md)
+3. [`Rigidbodies` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/rigidbodies.md)
+4. [`Collision` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/collisions.md)
+5. [Apply forces to objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/forces.md)
+6. [Skip physics frames](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/step_physics.md)
+7. [Disable physics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/disable_physics.md)
+
+High-level API: [tdw_physics](https://github.com/alters-mit/tdw_physics)
+
+### 8.2 Physics (Obi)
+
+1. [Obi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi.md)
+2. [Fluids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/fluids.md)
+2. [Cloth](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/cloth.md)
+3. [`ObiParticles` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi_particles.md)
+4. [Colliders and collision materials](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/colliders_and_collision_materials.md)
+5. [Solvers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/solvers.md)
+6. [Obi and robots](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/robots.md)
+6. [Obi and Flex](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi_and_flex.md)
+
+### 8.3 Physics (Flex)
+
+1. [Flex](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/flex.md)
+2. [Solid and soft actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/solid_and_soft.md)
+3. [Cloth actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/cloth.md)
+4. [Fluid and source actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/fluid_and_source.md)
+5. [Move, rotate, and scale Flex objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/transform.md)
+6. [`FlexParticles` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/output_data.md)
+7. [Apply forces to Flex objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/forces.md)
+8. [Reset a Flex scene](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/reset_scene.md)
+8. [Other Flex commands](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/other_commands.md)
+
+High-level API: [tdw_physics](https://github.com/alters-mit/tdw_physics)
+
+## 9. Audio
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/overview.md)
+2. [Initialize audio and play .wav files](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/initialize_audio.md)
+3. [Resonance Audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/resonance_audio.md)
+4. [`PyImpact` (dynamic impact sounds)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/py_impact.md)
+6. [Recording audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/record_audio.md)
+6. [`PyImpact` (advanced API)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/py_impact_advanced.md)
+7. [Audio perception](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/audio_perception.md)
+
+## 10. Video Recording
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/overview.md)
+2. [Image-only video](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/images.md)
+3. [Video with audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/audio.md)
+ 1. [Video with audio (Linux)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_linux.md)
+ 2. [Video with audio (OS X)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_osx.md)
+ 3. [Video with audio (Windows)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_windows.md)
+
+
+## 11. Agents
+
+[**Overview**](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/agents/overview.md)
+
+### 11.1 Robots
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/overview.md)
+2. [The `Robot` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/robot_add_on.md)
+3. [Robot arm add-ons](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/robot_arm.md)
+4. [Robot collision detection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/collision_detection.md)
+5. [Select a robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/select_robot.md)
+6. [Add your own robots to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/custom_robots.md)
+7. [Robotics API (low-level)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/custom_robots.md)
+8. [Add a camera to a robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/add_camera.md)
+
+### 11.2 Magnebots
+
+1. [Magnebot API (external repo)](https://github.com/alters-mit/magnebot)
+
+### 11.3 Replicants
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/overview.md)
+2. [Actions](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/actions.md)
+3. [Output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/output_data.md)
+4. [Collision detection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/collision_detection.md)
+5. [Movement](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/movement.md)
+6. [Animations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/animations.md)
+7. [Arm articulation, pt. 1: Basics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_1.md)
+8. [Arm articulation, pt. 2: Grasp and drop objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_2.md)
+9. [Arm articulation, pt. 3: Advanced topics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_3.md)
+10. [Arm articulation, pt. 4: Stacking objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_4.md)
+11. [Head rotation](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/head_rotation.md)
+12. [Navigation](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/navigation.md)
+13. [Custom actions](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/custom_actions.md)
+14. [Multiple Replicants](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/multiple_replicants.md)
+15. [Reset](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/reset.md)
+
+### 11.4 Virtual Reality (VR)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/vr/overview.md)
+2. [Oculus Touch rigs](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/vr/oculus_touch.md)
+
+### 11.5 Keyboard and Mouse
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/overview.md)
+2. [Mouse input](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/mouse.md)
+3. [The `FirstPersonAvatar`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/first_person_avatar.md)
+4. [Keyboard input](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/keyboard.md)
+
+### 11.6 Embodied avatars
+
+1. [The `EmbodiedAvatar`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/embodied_avatars/embodied_avatar.md)
+
+## 12. Multi-agent simulations
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/multi_agent/overview.md)
+2. [Custom agent classes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/multi_agent/custom_agent_classes.md)
+
+## 13. Navigation
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/overview.md)
+2. [NavMesh pathfinding](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/nav_mesh.md)
+3. [Occupancy maps](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/occupancy_maps.md)
+
+## 14. Non-physics objects
+
+### 14.1 Non-physics humanoids
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/overview.md)
+2. [SMPL humanoids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/smpl.md)
+3. [Create custom non-physics humanoids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/custom_humanoids.md)
+4. [Create custom humanoid animations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/custom_animations.md)
+
+### 14.2 Misc. non-physics objects
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/overview.md)
+2. [Position markers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/position_markers.md)
+3. [Line renderers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/line_renderers.md)
+4. [Textured quads](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/textured_quads.md)
+5. [User Interface (the `UI` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/ui.md)
+6. [Compass rose](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/compass_rose.md)
+7. [Visual Effects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/visual_effects.md)
+8. [The `FloorplanFlood` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/floorplan_flood.md)
+9. [Empty objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/empty_objects.md)
+
+## 15. Misc. other topics
+
+1. [C# source code](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/c_sharp_sources.md)
+2. [Freezing your code](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/freeze.md)
+2. [Download asset bundles](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/download_asset_bundles.md)
+
+# API Documentation
+
+## Command API
+
+- [Command API](https://github.com/threedworld-mit/tdw/blob/master/Documentation/api/command_api.md)
+- [Output Data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/api/output_data.md)
+
+## `tdw` module API
+
+**tdw**
+
+- [AudioConstants](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/audio_constants.md)
+- [AudioUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/audio_utils.md)
+- [CardinalDirection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/cardinal_direction.md)
+- [Controller](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/controller.md)
+- [IntPair](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/int_pair.md)
+- [OrdinalDirection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/ordinal_direction.md)
+- [QuaternionUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/quaternion_utils.md)
+- [RemoteBuildLauncher](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/remote_build_launcher.md)
+- [TDWUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/tdw_utils.md)
+
+**tdw.add_ons**
+
+- [AddOn](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/add_on.md)
+- [AudioInitializer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/audio_initializer.md)
+- [AudioInitializerBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/audio_initializer_base.md)
+- [AvatarBody](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/avatar_body.md)
+- [Benchmark](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/benchmark.md)
+- [CinematicCamera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/cinematic_camera.md)
+- [CollisionManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/collision_manager.md)
+- [CompositeObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/composite_object_manager.md)
+- [ContainerManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/container_manager.md)
+- [EmbodiedAvatar](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/embodied_avatar.md)
+- [EmptyObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/empty_object_manager.md)
+- [FirstPersonAvatar](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/first_person_avatar.md)
+- [Floorplan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan.md)
+- [FloorplanFlood](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan_flood.md)
+- [ImageCapture](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/image_capture.md)
+- [InteriorSceneLighting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/interior_scene_lighting.md)
+- [JsonWriter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/json_writer.md)
+- [Keyboard](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/keyboard.md)
+- [LisdfReader](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/lisdf_reader.md)
+- [Logger](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/logger.md)
+- [LogPlayback](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/log_playback.md)
+- [ModelVerifier](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/model_verifier.md)
+- [Mouse](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/mouse.md)
+- [NavMesh](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/nav_mesh.md)
+- [Obi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/obi.md)
+- [ObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/object_manager.md)
+- [OccupancyMap](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/occupancy_map.md)
+- [OculusTouch](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/oculus_touch.md)
+- [OutputDataWriter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/output_data_writer.md)
+- [PhysicsAudioRecorder](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/physics_audio_recorder.md)
+- [ProcGenKitchen](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/proc_gen_kitchen.md)
+- [PyImpact](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/py_impact.md)
+- [Replicant](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/replicant.md)
+- [ResonanceAudioInitializer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/resonance_audio_initializer.md)
+- [Robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot.md)
+- [RobotArm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot_arm.md)
+- [RobotBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot_base.md)
+- [StepPhysics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/step_physics.md)
+- [ThirdPersonCamera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/third_person_camera.md)
+- [ThirdPersonCameraBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/third_person_camera_base.md)
+- [TriggerCollisionManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/trigger_collision_manager.md)
+- [UI](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/ui.md)
+- [VR](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/vr.md)
+- [Writer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/writer.md)
+
+**tdw.asset_bundle_creator**
+
+- [AnimationCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/animation_creator.md)
+- [AssetBundleCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/asset_bundle_creator.md)
+- [CompositeObjectCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/composite_object_creator.md)
+- [HumanoidCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/humanoid_creator.md)
+- [HumanoidCreatorBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/humanoid_creator_base.md)
+- [ModelCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/model_creator.md)
+- [RobotCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/robot_creator.md)
+
+**tdw.collision_data**
+
+- [CollisionBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_base.md)
+- [CollisionObjEnv](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_obj_env.md)
+- [CollisionObjObj](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_obj_obj.md)
+- [TriggerColliderShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/trigger_collider_shape.md)
+- [TriggerCollisionEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/trigger_collision_event.md)
+
+**tdw.container_data**
+
+- [BoxContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/box_container.md)
+- [ContainerShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/container_shape.md)
+- [ContainerTag](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/container_tag.md)
+- [ContainmentEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/containment_event.md)
+- [CylinderContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/cylinder_container.md)
+- [SphereContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/sphere_container.md)
+
+**tdw.flex_data**
+
+- [FluidType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/flex_data/fluid_type.md)
+
+**tdw.librarian**
+
+- [HdriSkyboxLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/hdri_skybox_librarian.md)
+- [HumanoidAnimationLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/humanoid_animation_librarian.md)
+- [HumanoidLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/humanoid_librarian.md)
+- [MaterialLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/material_librarian.md)
+- [ModelLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/model_librarian.md)
+- [RobotLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/robot_librarian.md)
+- [SceneLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/scene_librarian.md)
+- [VisualEffectLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/visual_effect_librarian.md)
+
+**tdw.lisdf_data**
+
+- [LisdfRobotMetadata](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/lisdf_data/lisdf_robot_metadata.md)
+
+**tdw.model_tests**
+
+- [MissingMaterials](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/missing_materials.md)
+- [ModelReport](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/model_report.md)
+- [ModelTest](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/model_test.md)
+- [PhysicsQuality](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/physics_quality.md)
+- [RotateObjectTest](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/rotate_object_test.md)
+
+**tdw.obi_data**
+
+- [ForceMode](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/force_mode.md)
+- [ObiActor](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/obi_actor.md)
+
+**tdw.obi_data.cloth**
+
+- [ClothMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/cloth_material.md)
+- [SheetType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/sheet_type.md)
+- [TetherParticleGroup](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/tether_particle_group.md)
+- [TetherType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/tether_type.md)
+- [VolumeType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/volume_type.md)
+
+**tdw.obi_data.collision_materials**
+
+- [CollisionMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/collision_materials/collision_material.md)
+- [MaterialCombineMode](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/collision_materials/material_combine_mode.md)
+
+**tdw.obi_data.fluids**
+
+- [CubeEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/cube_emitter.md)
+- [DiskEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/disk_emitter.md)
+- [EdgeEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/edge_emitter.md)
+- [EmitterSamplingMethod](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/emitter_sampling_method.md)
+- [EmitterShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/emitter_shape.md)
+- [Fluid](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/fluid.md)
+- [FluidBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/fluid_base.md)
+- [GranularFluid](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/granular_fluid.md)
+- [SphereEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/sphere_emitter.md)
+
+**tdw.object_data**
+
+- [Bound](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/bound.md)
+- [ObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/object_static.md)
+- [Rigidbody](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/rigidbody.md)
+- [Transform](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/transform.md)
+
+**tdw.object_data.composite_object**
+
+- [CompositeObjectDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/composite_object_dynamic.md)
+- [CompositeObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/composite_object_static.md)
+
+**tdw.object_data.composite_object.sub_object**
+
+- [HingeDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_dynamic.md)
+- [HingeStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_static.md)
+- [HingeStaticBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_static_base.md)
+- [LightDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/light_dynamic.md)
+- [LightStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/light_static.md)
+- [MotorStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/motor_static.md)
+- [NonMachineStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/non_machine_static.md)
+- [PrismaticJointStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/prismatic_joint_static.md)
+- [SpringStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/spring_static.md)
+- [SubObjectDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/sub_object_dynamic.md)
+- [SubObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/sub_object_static.md)
+
+**tdw.physics_audio**
+
+- [AudioMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/audio_material.md)
+- [Base64Sound](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/base64_sound.md)
+- [CollisionAudioEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_event.md)
+- [CollisionAudioInfo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_info.md)
+- [CollisionAudioType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_type.md)
+- [Modes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/modes.md)
+- [ObjectAudioStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/object_audio_static.md)
+- [ScrapeMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_material.md)
+- [ScrapeModel](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_model.md)
+- [ScrapeSubObject](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_sub_object.md)
+
+**tdw.proc_gen.arrangements**
+
+- [Arrangement](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement.md)
+- [ArrangementAlongWall](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement_along_wall.md)
+- [ArrangementWithRootObject](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement_with_root_object.md)
+- [Basket](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/basket.md)
+- [CupAndCoaster](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cup_and_coaster.md)
+- [Dishwasher](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/dishwasher.md)
+- [KitchenCabinet](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_cabinet.md)
+- [KitchenCounter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_counter.md)
+- [KitchenCounterTop](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_counter_top.md)
+- [KitchenTable](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_table.md)
+- [Microwave](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/microwave.md)
+- [Painting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/painting.md)
+- [Plate](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/plate.md)
+- [Radiator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/radiator.md)
+- [Refrigerator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/refrigerator.md)
+- [Shelf](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/shelf.md)
+- [SideTable](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/side_table.md)
+- [Sink](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/sink.md)
+- [StackOfPlates](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stack_of_plates.md)
+- [Stool](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stool.md)
+- [Stove](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stove.md)
+- [Suitcase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/suitcase.md)
+- [TableAndChairs](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/table_and_chairs.md)
+- [TableSetting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/table_setting.md)
+- [Void](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/void.md)
+- [WallCabinet](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/wall_cabinet.md)
+
+**tdw.proc_gen.arrangements.cabinetry**
+
+- [Cabinetry](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cabinetry/cabinetry.md)
+- [CabinetryType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cabinetry/cabinetry_type.md)
+
+**tdw.release**
+
+- [Build](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/release/build.md)
+- [PyPi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/release/pypi.md)
+
+**tdw.replicant**
+
+- [ActionStatus](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/action_status.md)
+- [Arm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/arm.md)
+- [CollisionDetection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/collision_detection.md)
+- [ImageFrequency](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/image_frequency.md)
+- [ReplicantBodyPart](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_body_part.md)
+- [ReplicantDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_dynamic.md)
+- [ReplicantStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_static.md)
+
+**tdw.replicant.actions**
+
+- [Action](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/action.md)
+- [Animate](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/animate.md)
+- [ArmMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/arm_motion.md)
+- [DoNothing](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/do_nothing.md)
+- [Drop](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/drop.md)
+- [Grasp](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/grasp.md)
+- [HeadMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/head_motion.md)
+- [IkMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/ik_motion.md)
+- [LookAt](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/look_at.md)
+- [MoveBy](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/move_by.md)
+- [MoveTo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/move_to.md)
+- [ReachFor](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reach_for.md)
+- [ReachForWithPlan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reach_for_with_plan.md)
+- [ResetArm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reset_arm.md)
+- [ResetHead](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reset_head.md)
+- [RotateHead](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/rotate_head.md)
+- [TurnBy](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/turn_by.md)
+- [TurnTo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/turn_to.md)
+
+**tdw.replicant.ik_plans**
+
+- [IkPlan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/ik_plan.md)
+- [IkPlanType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/ik_plan_type.md)
+- [VerticalHorizontal](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/vertical_horizontal.md)
+
+**tdw.robot_data**
+
+- [Drive](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/drive.md)
+- [JointDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_dynamic.md)
+- [JointStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_static.md)
+- [JointType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_type.md)
+- [NonMoving](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/non_moving.md)
+- [RobotDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/robot_dynamic.md)
+- [RobotStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/robot_static.md)
+
+**tdw.scene_data**
+
+- [InteriorRegion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/interior_region.md)
+- [RegionBounds](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/region_bounds.md)
+- [Room](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/room.md)
+- [SceneBounds](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/scene_bounds.md)
+
+**tdw.vr_data**
+
+- [OculusTouchButton](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/vr_data/oculus_touch_button.md)
+- [RigType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/vr_data/rig_type.md)
+
+# Performance benchmarks
+1. [Performance benchmarks](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/benchmark.md)
+2. [Image capture](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/image_capture.md)
+3. [Object data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/object_data.md)
+4. [Command deserialization](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/command_deserialization.md)
+
+
+
+
+
+%package help
+Summary: Development documents and examples for tdw
+Provides: python3-tdw-doc
+%description help
+# 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.
+
+<img src="https://raw.githubusercontent.com/threedworld-mit/tdw/master/splash.jpg">
+
+- [Code of Conduct](https://github.com/threedworld-mit/tdw/blob/master/code_of_conduct.md)
+- [Changelog](https://github.com/threedworld-mit/tdw/blob/master/Documentation/Changelog.md)
+- [License](https://github.com/threedworld-mit/tdw/blob/master/LICENSE.txt)
+- [Website](https://threedworld.org/)
+- [Example controllers](https://github.com/threedworld-mit/tdw/tree/master/Python/example_controllers)
+
+# General guide to TDW
+
+## Setup
+
+### 1.1 Installation (Read this first!)
+
+1. [Install TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/setup/install.md)
+3. [Upgrade TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/setup/upgrade.md)
+
+### 1.2 How to run TDW on a Linux server
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/overview.md)
+2. [Launch a TDW build on a remote server from a personal computer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/launch_build.md)
+3. [Remote rendering with xpra](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/xpra.md)
+4. [X11 forwarding](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/remote/x11_forwarding.md)
+
+## Core Concepts
+
+1. [The controller](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/controller.md)
+2. [Auto-launching the TDW build](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/launch_build.md)
+3. [Commands](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/commands.md)
+4. [Design philosophy of TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/design_philosophy.md)
+5. [Scenes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/scenes.md)
+6. [Avatars and cameras](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/avatars.md)
+7. [Add-ons and the `ThirdPersonCamera`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/add_ons.md)
+8. [Objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/objects.md)
+9. [Output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/output_data.md)
+10. [Images](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/images.md)
+
+## Troubleshooting
+
+1. [How to report an issue](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/issues.md)
+2. [Common errors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/common_errors.md)
+3. [Performance optimizations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/performance_optimizations.md)
+4. [Good coding practices](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/troubleshooting/good_coding_practices.md)
+
+# Tutorials
+
+## 1. Scene Setup
+
+**[Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup/overview.md)**
+
+### 1.1 Scene Setup (High-Level APIs)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/overview.md)
+2. [Procedural generation (the `ProcGenKitchen` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/proc_gen_kitchen.md)
+2. [Regions, interior regions, and rooms](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/rooms.md)
+3. [Procedural object arrangements](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/arrangements.md)
+4. [Scripted object placement (floorplan layouts)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/floorplans.md)
+5. [Reset a scene](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_high_level/reset_scene.md)
+
+High-level APs: [Floorplan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan.md) and [ProcGenKitchen](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/proc_gen_kitchen.md)
+
+### 1.2 Scene Setup (Low-Level APIs)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/overview.md)
+2. [Units and data formats](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/units.md)
+3. [`Bounds` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/bounds.md)
+4. [Visual materials, textures, and colors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/materials_textures_colors.md)
+5. [ProcGenRoom](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/scene_setup_low_level/proc_gen_room.md)
+
+## 2. 3D Models
+
+### 2.1 Other model libraries
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/overview.md)
+2. [Free models](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/free_models.md)
+3. [Non-free models](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/3d_models/non_free_models.md)
+
+### 2.2 Custom models
+
+1. [Add your own models to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/custom_models/custom_models.md)
+2. [Add ShapeNet models to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/custom_models/shapenet.md)
+
+### 2.3 Composite (articulated) objects
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/overview.md)
+2. [Composite objects in TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/composite_objects.md)
+3. [Create a composite object from a prefab](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/create_from_prefab.md)
+4. [Create a composite object from a .urdf file](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/composite_objects/create_from_urdf.md)
+
+## 3. Read/Write to Disk
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/overview.md)
+2. [The `Logger` and `LogPlayback` add-ons](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/logger.md)
+3. [The `JsonWriter` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/json.md)
+4. [The `OutputDataWriter` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/output_data_writer.md)
+5. [Create a custom data writer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/custom_writers.md)
+6. [Import .sdf and .lisdf files](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/read_write/lisdf.md)
+7. [Images](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/core_concepts/images.md) (Cross-referenced with "Core Concepts")
+8. [Audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/overview.md) (Cross-referenced with "Audio")
+9. [Video](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/overview.md) (Cross-referenced with "Video Recording")
+
+## 4. Semantic States
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/overview.md)
+2. [Line of sight (`Raycast` output data)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/raycast.md)
+3. [Proximity to region (`Overlap` output data)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/overlap.md)
+3. [Proximity to other objects (the `TriggerCollisionManager` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/trigger_collisions.md)
+3. [Containment (the `ContainerManager` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/containment.md)
+4. [Open and closed states](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/openness.md)
+4. [Grasped objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/semantic_states/grasped.md)
+
+## 5. Visual Perception
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/overview.md)
+2. [Instance ID segmentation colors (`_id` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/id.md)
+3. [Semantic category segmentation colors (`_category` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/category.md)
+4. [Depth maps (`_depth` and `_depth_simple` passes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/depth.md)
+5. [Motion perception (`_flow` pass)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/flow.md)
+6. [Other image passes (`_mask`, `_normals`, and `_albedo` passes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/other_passes.md)
+7. [`Occlusion` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/visual_perception/occlusion.md)
+
+## 6. Camera Controls
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/overview.md)
+2. [Move a camera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/position.md)
+3. [Rotate a camera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/rotation.md)
+4. [Follow an object](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/follow.md)
+4. [The `CinematicCamera` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/camera/cinematic_camera.md)
+
+## 7. Photorealism
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/overview.md)
+2. [Lighting (HDRI skyboxes)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/lighting.md)
+3. [Post-processing](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/post_processing.md)
+3. [Interior lighting (the `InteriorSceneLighting` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/interior_lighting.md)
+4. [Depth of field](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/photorealism/depth_of_field.md)
+
+High-level API: [tdw_image_dataset](https://github.com/alters-mit/tdw_image_dataset)
+
+## 8. Physics
+
+**[Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/overview.md)**
+
+### 8.1 Physics (PhysX)
+
+1. [PhysX](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/physx.md)
+2. [Object physics parameters](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/physics_objects.md)
+3. [`Rigidbodies` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/rigidbodies.md)
+4. [`Collision` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/collisions.md)
+5. [Apply forces to objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/forces.md)
+6. [Skip physics frames](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/step_physics.md)
+7. [Disable physics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/physx/disable_physics.md)
+
+High-level API: [tdw_physics](https://github.com/alters-mit/tdw_physics)
+
+### 8.2 Physics (Obi)
+
+1. [Obi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi.md)
+2. [Fluids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/fluids.md)
+2. [Cloth](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/cloth.md)
+3. [`ObiParticles` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi_particles.md)
+4. [Colliders and collision materials](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/colliders_and_collision_materials.md)
+5. [Solvers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/solvers.md)
+6. [Obi and robots](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/robots.md)
+6. [Obi and Flex](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/obi/obi_and_flex.md)
+
+### 8.3 Physics (Flex)
+
+1. [Flex](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/flex.md)
+2. [Solid and soft actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/solid_and_soft.md)
+3. [Cloth actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/cloth.md)
+4. [Fluid and source actors](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/fluid_and_source.md)
+5. [Move, rotate, and scale Flex objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/transform.md)
+6. [`FlexParticles` output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/output_data.md)
+7. [Apply forces to Flex objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/forces.md)
+8. [Reset a Flex scene](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/reset_scene.md)
+8. [Other Flex commands](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/flex/other_commands.md)
+
+High-level API: [tdw_physics](https://github.com/alters-mit/tdw_physics)
+
+## 9. Audio
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/overview.md)
+2. [Initialize audio and play .wav files](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/initialize_audio.md)
+3. [Resonance Audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/resonance_audio.md)
+4. [`PyImpact` (dynamic impact sounds)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/py_impact.md)
+6. [Recording audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/record_audio.md)
+6. [`PyImpact` (advanced API)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/py_impact_advanced.md)
+7. [Audio perception](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/audio/audio_perception.md)
+
+## 10. Video Recording
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/overview.md)
+2. [Image-only video](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/images.md)
+3. [Video with audio](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/audio.md)
+ 1. [Video with audio (Linux)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_linux.md)
+ 2. [Video with audio (OS X)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_osx.md)
+ 3. [Video with audio (Windows)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/video/screen_record_windows.md)
+
+
+## 11. Agents
+
+[**Overview**](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/agents/overview.md)
+
+### 11.1 Robots
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/overview.md)
+2. [The `Robot` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/robot_add_on.md)
+3. [Robot arm add-ons](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/robot_arm.md)
+4. [Robot collision detection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/collision_detection.md)
+5. [Select a robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/select_robot.md)
+6. [Add your own robots to TDW](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/custom_robots.md)
+7. [Robotics API (low-level)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/custom_robots.md)
+8. [Add a camera to a robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/robots/add_camera.md)
+
+### 11.2 Magnebots
+
+1. [Magnebot API (external repo)](https://github.com/alters-mit/magnebot)
+
+### 11.3 Replicants
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/overview.md)
+2. [Actions](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/actions.md)
+3. [Output data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/output_data.md)
+4. [Collision detection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/collision_detection.md)
+5. [Movement](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/movement.md)
+6. [Animations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/animations.md)
+7. [Arm articulation, pt. 1: Basics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_1.md)
+8. [Arm articulation, pt. 2: Grasp and drop objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_2.md)
+9. [Arm articulation, pt. 3: Advanced topics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_3.md)
+10. [Arm articulation, pt. 4: Stacking objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/arm_articulation_4.md)
+11. [Head rotation](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/head_rotation.md)
+12. [Navigation](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/navigation.md)
+13. [Custom actions](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/custom_actions.md)
+14. [Multiple Replicants](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/multiple_replicants.md)
+15. [Reset](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/replicants/reset.md)
+
+### 11.4 Virtual Reality (VR)
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/vr/overview.md)
+2. [Oculus Touch rigs](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/vr/oculus_touch.md)
+
+### 11.5 Keyboard and Mouse
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/overview.md)
+2. [Mouse input](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/mouse.md)
+3. [The `FirstPersonAvatar`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/first_person_avatar.md)
+4. [Keyboard input](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/keyboard_and_mouse/keyboard.md)
+
+### 11.6 Embodied avatars
+
+1. [The `EmbodiedAvatar`](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/embodied_avatars/embodied_avatar.md)
+
+## 12. Multi-agent simulations
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/multi_agent/overview.md)
+2. [Custom agent classes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/multi_agent/custom_agent_classes.md)
+
+## 13. Navigation
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/overview.md)
+2. [NavMesh pathfinding](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/nav_mesh.md)
+3. [Occupancy maps](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/navigation/occupancy_maps.md)
+
+## 14. Non-physics objects
+
+### 14.1 Non-physics humanoids
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/overview.md)
+2. [SMPL humanoids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/smpl.md)
+3. [Create custom non-physics humanoids](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/custom_humanoids.md)
+4. [Create custom humanoid animations](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics_humanoids/custom_animations.md)
+
+### 14.2 Misc. non-physics objects
+
+1. [Overview](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/overview.md)
+2. [Position markers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/position_markers.md)
+3. [Line renderers](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/line_renderers.md)
+4. [Textured quads](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/textured_quads.md)
+5. [User Interface (the `UI` add-on)](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/ui.md)
+6. [Compass rose](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/compass_rose.md)
+7. [Visual Effects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/visual_effects.md)
+8. [The `FloorplanFlood` add-on](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/floorplan_flood.md)
+9. [Empty objects](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/non_physics/empty_objects.md)
+
+## 15. Misc. other topics
+
+1. [C# source code](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/c_sharp_sources.md)
+2. [Freezing your code](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/freeze.md)
+2. [Download asset bundles](https://github.com/threedworld-mit/tdw/blob/master/Documentation/lessons/misc/download_asset_bundles.md)
+
+# API Documentation
+
+## Command API
+
+- [Command API](https://github.com/threedworld-mit/tdw/blob/master/Documentation/api/command_api.md)
+- [Output Data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/api/output_data.md)
+
+## `tdw` module API
+
+**tdw**
+
+- [AudioConstants](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/audio_constants.md)
+- [AudioUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/audio_utils.md)
+- [CardinalDirection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/cardinal_direction.md)
+- [Controller](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/controller.md)
+- [IntPair](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/int_pair.md)
+- [OrdinalDirection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/ordinal_direction.md)
+- [QuaternionUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/quaternion_utils.md)
+- [RemoteBuildLauncher](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/remote_build_launcher.md)
+- [TDWUtils](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/tdw_utils.md)
+
+**tdw.add_ons**
+
+- [AddOn](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/add_on.md)
+- [AudioInitializer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/audio_initializer.md)
+- [AudioInitializerBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/audio_initializer_base.md)
+- [AvatarBody](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/avatar_body.md)
+- [Benchmark](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/benchmark.md)
+- [CinematicCamera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/cinematic_camera.md)
+- [CollisionManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/collision_manager.md)
+- [CompositeObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/composite_object_manager.md)
+- [ContainerManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/container_manager.md)
+- [EmbodiedAvatar](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/embodied_avatar.md)
+- [EmptyObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/empty_object_manager.md)
+- [FirstPersonAvatar](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/first_person_avatar.md)
+- [Floorplan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan.md)
+- [FloorplanFlood](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/floorplan_flood.md)
+- [ImageCapture](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/image_capture.md)
+- [InteriorSceneLighting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/interior_scene_lighting.md)
+- [JsonWriter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/json_writer.md)
+- [Keyboard](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/keyboard.md)
+- [LisdfReader](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/lisdf_reader.md)
+- [Logger](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/logger.md)
+- [LogPlayback](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/log_playback.md)
+- [ModelVerifier](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/model_verifier.md)
+- [Mouse](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/mouse.md)
+- [NavMesh](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/nav_mesh.md)
+- [Obi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/obi.md)
+- [ObjectManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/object_manager.md)
+- [OccupancyMap](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/occupancy_map.md)
+- [OculusTouch](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/oculus_touch.md)
+- [OutputDataWriter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/output_data_writer.md)
+- [PhysicsAudioRecorder](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/physics_audio_recorder.md)
+- [ProcGenKitchen](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/proc_gen_kitchen.md)
+- [PyImpact](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/py_impact.md)
+- [Replicant](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/replicant.md)
+- [ResonanceAudioInitializer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/resonance_audio_initializer.md)
+- [Robot](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot.md)
+- [RobotArm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot_arm.md)
+- [RobotBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/robot_base.md)
+- [StepPhysics](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/step_physics.md)
+- [ThirdPersonCamera](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/third_person_camera.md)
+- [ThirdPersonCameraBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/third_person_camera_base.md)
+- [TriggerCollisionManager](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/trigger_collision_manager.md)
+- [UI](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/ui.md)
+- [VR](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/vr.md)
+- [Writer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/add_ons/writer.md)
+
+**tdw.asset_bundle_creator**
+
+- [AnimationCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/animation_creator.md)
+- [AssetBundleCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/asset_bundle_creator.md)
+- [CompositeObjectCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/composite_object_creator.md)
+- [HumanoidCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/humanoid_creator.md)
+- [HumanoidCreatorBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/humanoid_creator_base.md)
+- [ModelCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/model_creator.md)
+- [RobotCreator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/asset_bundle_creator/robot_creator.md)
+
+**tdw.collision_data**
+
+- [CollisionBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_base.md)
+- [CollisionObjEnv](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_obj_env.md)
+- [CollisionObjObj](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/collision_obj_obj.md)
+- [TriggerColliderShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/trigger_collider_shape.md)
+- [TriggerCollisionEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/collision_data/trigger_collision_event.md)
+
+**tdw.container_data**
+
+- [BoxContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/box_container.md)
+- [ContainerShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/container_shape.md)
+- [ContainerTag](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/container_tag.md)
+- [ContainmentEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/containment_event.md)
+- [CylinderContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/cylinder_container.md)
+- [SphereContainer](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/container_data/sphere_container.md)
+
+**tdw.flex_data**
+
+- [FluidType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/flex_data/fluid_type.md)
+
+**tdw.librarian**
+
+- [HdriSkyboxLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/hdri_skybox_librarian.md)
+- [HumanoidAnimationLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/humanoid_animation_librarian.md)
+- [HumanoidLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/humanoid_librarian.md)
+- [MaterialLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/material_librarian.md)
+- [ModelLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/model_librarian.md)
+- [RobotLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/robot_librarian.md)
+- [SceneLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/scene_librarian.md)
+- [VisualEffectLibrarian](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/librarian/visual_effect_librarian.md)
+
+**tdw.lisdf_data**
+
+- [LisdfRobotMetadata](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/lisdf_data/lisdf_robot_metadata.md)
+
+**tdw.model_tests**
+
+- [MissingMaterials](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/missing_materials.md)
+- [ModelReport](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/model_report.md)
+- [ModelTest](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/model_test.md)
+- [PhysicsQuality](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/physics_quality.md)
+- [RotateObjectTest](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/model_tests/rotate_object_test.md)
+
+**tdw.obi_data**
+
+- [ForceMode](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/force_mode.md)
+- [ObiActor](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/obi_actor.md)
+
+**tdw.obi_data.cloth**
+
+- [ClothMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/cloth_material.md)
+- [SheetType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/sheet_type.md)
+- [TetherParticleGroup](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/tether_particle_group.md)
+- [TetherType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/tether_type.md)
+- [VolumeType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/cloth/volume_type.md)
+
+**tdw.obi_data.collision_materials**
+
+- [CollisionMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/collision_materials/collision_material.md)
+- [MaterialCombineMode](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/collision_materials/material_combine_mode.md)
+
+**tdw.obi_data.fluids**
+
+- [CubeEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/cube_emitter.md)
+- [DiskEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/disk_emitter.md)
+- [EdgeEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/edge_emitter.md)
+- [EmitterSamplingMethod](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/emitter_sampling_method.md)
+- [EmitterShape](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/emitter_shape.md)
+- [Fluid](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/fluid.md)
+- [FluidBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/fluid_base.md)
+- [GranularFluid](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/granular_fluid.md)
+- [SphereEmitter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/obi_data/fluids/sphere_emitter.md)
+
+**tdw.object_data**
+
+- [Bound](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/bound.md)
+- [ObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/object_static.md)
+- [Rigidbody](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/rigidbody.md)
+- [Transform](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/transform.md)
+
+**tdw.object_data.composite_object**
+
+- [CompositeObjectDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/composite_object_dynamic.md)
+- [CompositeObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/composite_object_static.md)
+
+**tdw.object_data.composite_object.sub_object**
+
+- [HingeDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_dynamic.md)
+- [HingeStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_static.md)
+- [HingeStaticBase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/hinge_static_base.md)
+- [LightDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/light_dynamic.md)
+- [LightStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/light_static.md)
+- [MotorStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/motor_static.md)
+- [NonMachineStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/non_machine_static.md)
+- [PrismaticJointStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/prismatic_joint_static.md)
+- [SpringStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/spring_static.md)
+- [SubObjectDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/sub_object_dynamic.md)
+- [SubObjectStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/object_data/composite_object/sub_object/sub_object_static.md)
+
+**tdw.physics_audio**
+
+- [AudioMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/audio_material.md)
+- [Base64Sound](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/base64_sound.md)
+- [CollisionAudioEvent](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_event.md)
+- [CollisionAudioInfo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_info.md)
+- [CollisionAudioType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/collision_audio_type.md)
+- [Modes](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/modes.md)
+- [ObjectAudioStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/object_audio_static.md)
+- [ScrapeMaterial](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_material.md)
+- [ScrapeModel](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_model.md)
+- [ScrapeSubObject](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/physics_audio/scrape_sub_object.md)
+
+**tdw.proc_gen.arrangements**
+
+- [Arrangement](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement.md)
+- [ArrangementAlongWall](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement_along_wall.md)
+- [ArrangementWithRootObject](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/arrangement_with_root_object.md)
+- [Basket](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/basket.md)
+- [CupAndCoaster](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cup_and_coaster.md)
+- [Dishwasher](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/dishwasher.md)
+- [KitchenCabinet](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_cabinet.md)
+- [KitchenCounter](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_counter.md)
+- [KitchenCounterTop](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_counter_top.md)
+- [KitchenTable](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/kitchen_table.md)
+- [Microwave](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/microwave.md)
+- [Painting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/painting.md)
+- [Plate](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/plate.md)
+- [Radiator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/radiator.md)
+- [Refrigerator](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/refrigerator.md)
+- [Shelf](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/shelf.md)
+- [SideTable](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/side_table.md)
+- [Sink](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/sink.md)
+- [StackOfPlates](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stack_of_plates.md)
+- [Stool](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stool.md)
+- [Stove](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/stove.md)
+- [Suitcase](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/suitcase.md)
+- [TableAndChairs](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/table_and_chairs.md)
+- [TableSetting](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/table_setting.md)
+- [Void](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/void.md)
+- [WallCabinet](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/wall_cabinet.md)
+
+**tdw.proc_gen.arrangements.cabinetry**
+
+- [Cabinetry](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cabinetry/cabinetry.md)
+- [CabinetryType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/proc_gen/arrangements/cabinetry/cabinetry_type.md)
+
+**tdw.release**
+
+- [Build](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/release/build.md)
+- [PyPi](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/release/pypi.md)
+
+**tdw.replicant**
+
+- [ActionStatus](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/action_status.md)
+- [Arm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/arm.md)
+- [CollisionDetection](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/collision_detection.md)
+- [ImageFrequency](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/image_frequency.md)
+- [ReplicantBodyPart](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_body_part.md)
+- [ReplicantDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_dynamic.md)
+- [ReplicantStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/replicant_static.md)
+
+**tdw.replicant.actions**
+
+- [Action](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/action.md)
+- [Animate](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/animate.md)
+- [ArmMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/arm_motion.md)
+- [DoNothing](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/do_nothing.md)
+- [Drop](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/drop.md)
+- [Grasp](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/grasp.md)
+- [HeadMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/head_motion.md)
+- [IkMotion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/ik_motion.md)
+- [LookAt](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/look_at.md)
+- [MoveBy](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/move_by.md)
+- [MoveTo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/move_to.md)
+- [ReachFor](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reach_for.md)
+- [ReachForWithPlan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reach_for_with_plan.md)
+- [ResetArm](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reset_arm.md)
+- [ResetHead](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/reset_head.md)
+- [RotateHead](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/rotate_head.md)
+- [TurnBy](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/turn_by.md)
+- [TurnTo](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/actions/turn_to.md)
+
+**tdw.replicant.ik_plans**
+
+- [IkPlan](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/ik_plan.md)
+- [IkPlanType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/ik_plan_type.md)
+- [VerticalHorizontal](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/replicant/ik_plans/vertical_horizontal.md)
+
+**tdw.robot_data**
+
+- [Drive](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/drive.md)
+- [JointDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_dynamic.md)
+- [JointStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_static.md)
+- [JointType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/joint_type.md)
+- [NonMoving](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/non_moving.md)
+- [RobotDynamic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/robot_dynamic.md)
+- [RobotStatic](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/robot_data/robot_static.md)
+
+**tdw.scene_data**
+
+- [InteriorRegion](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/interior_region.md)
+- [RegionBounds](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/region_bounds.md)
+- [Room](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/room.md)
+- [SceneBounds](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/scene_data/scene_bounds.md)
+
+**tdw.vr_data**
+
+- [OculusTouchButton](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/vr_data/oculus_touch_button.md)
+- [RigType](https://github.com/threedworld-mit/tdw/blob/master/Documentation/python/vr_data/rig_type.md)
+
+# Performance benchmarks
+1. [Performance benchmarks](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/benchmark.md)
+2. [Image capture](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/image_capture.md)
+3. [Object data](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/object_data.md)
+4. [Command deserialization](https://github.com/threedworld-mit/tdw/blob/master/Documentation/benchmark/command_deserialization.md)
+
+
+
+
+
+%prep
+%autosetup -n tdw-1.11.16.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-tdw -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.11.16.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..6bb90b4
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+42f126e98afa4dc36f6a061cd654dc57 tdw-1.11.16.0.tar.gz