Skip to content

Releases: threedworld-mit/tdw

v1.11.12

14 Apr 15:02
fd46315
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Build

  • Fixed: NullReferenceException if replicant.reset() is called while the Replicant is holding an object.

v1.11.11

10 Apr 16:02
84b71b1
Compare
Choose a tag to compare

This is an incremental update to v1. If you are already using a v1 release, you can safely upgrade without having to change any of your code.

tdw module

  • Fixed: FloorplanFlood doesn't add the given scene's list flood effect.

Build

  • Fixed: replicant_reach_for_object and replicant_reach_for_position ignore the max_distance parameter.

v1.11.10

03 Apr 16:30
8058d01
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

New Commands

Command Description
add_floorplan_flood_buoyancy Make an object capable of floating in a floorplan-flooded room. This is meant to be used only with the FloorplanFlood add-on.

tdw module

  • Added: FloorplanFlood add-on. Initialize a scene populated by objects in pre-scripted layouts. Then, create a set of flood objects for each floor section in the floorplan.

Visual Effects Library

  • Added flood_effects.json. This library is used by the FloorplanFlood add-on.

Example Controllers

  • Added: non_physics/floorplan_flood_minimal.py

Documentation

New Documentation

Document Description
python/add_ons/floorplan_flood.md API for FloorplanFlood.
lessons/non_physics/floorplan_flood.md Lesson for FloorplanFlood.

v1.11.9

31 Mar 20:23
279b043
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

New Commands

Command Description
send_euler_angles Send the rotations of each object in the scene expressed as Euler angles. This command is a backend tool and not meant for general usage.

Output Data

New Output Data

Output Data Description
EulerAngles The rotations of each object in the scene expressed as Euler angles. This output data is a backend tool and not meant for general usage.

tdw module

  • Replaced all cabinets, dishwasher, and fridges in the Floorplan scenes with composite objects whenever possible.
    • Backend: Updated floorplan_layouts.json to include the composite objects and to store object rotations as Euler angles.

v1.11.8

07 Mar 15:21
3eb4e8d
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Build

  • Fixed: Visual effect audio doesn't work.

Visual Effects Library

  • Added: oil_fire

v1.11.7

02 Mar 19:43
13cdab5
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

New Commands

Command Description
add_visual_effect Add a non-physical visual effect to the scene from an asset bundle.
destroy_visual_effect Destroy a visual effect in the scene.
scale_visual_effect Scale a visual effect by a factor.
parent_visual_effect_to_object Parent a visual effect object to a standard TDW physically-embodied object.
unparent_visual_effect Unparent a visual effect from a parent object.
teleport_visual_effect Teleport a visual effect to a new position.
rotate_visual_effect_by Rotate a visual effect by a given angle around a given axis.
rotate_visual_effect_to Set the rotation of a non-physical visual effect.

tdw module

  • Added: controller.get_add_visual_effect(name, id, position, rotation, library) A wrapper function for the add_visual_effect command.

  • Added: VisualEffectLibrarian and VisualEffectRecord

Visual Effects Library

  • Added: fire, smoke, burned_wood_pile_1, burned_wood_pile_2, burned_wood_pile_3

Example Controllers

  • Added: non_physics/visual_effects.py

Documentation

New Documentation

Document Description
python/librarian/visual_effect_librarian.md API for VisualEffectLibrarian
lessons/non_physics/visual_effects.md Documentation for visual effects.

v1.11.6

23 Feb 22:08
fed62b7
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

New Commands

Command Description
enable_nav_mesh_obstacle Enable or disable an object's NavMeshObstacle.
set_rigidbody_constraints Set the constraints of an object's Rigidbody.
replicant_rotate_head_by Rotate the Replicant's head by an angle in degrees around an axis.

tdw module

  • Added a new Replicant action: rotate_head(angle, axis).
  • Fixed: The Replicant often ends IK actions (reach_for, reset_arm. look_at, and reset_head) too early if the framerate is faster than 60 FPS.
  • Fixed: replicant.move_by() and replicant.move_to() start without an initial object avoidance check.
  • The Replicant's motion along the Y-axis is now frozen.
  • When the Replicant grasps an object, it will temporarily remove its NavMeshObstacle component (if the component exists). When the Replicant drops the object, the NavMeshObstacle component is re-enabled.
  • Added: NavMesh add-on. This add-on automates NavMesh initialization.
  • Fixed: make_nav_mesh_obstacle calculates the carve shape's size using AABB bounds. Now, it uses rotated bounds.
  • Fixed: bake_nav_mesh adds NavMeshObstacles to the shapes defining room bounds in streamed scenes. Now, these shapes are ignored.
  • Fixed: bake_nav_mesh adds a NavMeshObstacle to the roof of a scene. Now, the roof is ignored.

Example Controllers

  • Refactored navigation/nav_mesh.py to use the NavMesh add-on.

Documentation

New Documentation

Document Description
python/replicant/actions/rotate_head.md API for the RotateHead action.
python/add_ons/nav_mesh.md API for the NavMesh add-on.

Modified Documentation

Document Modification
lessons/replicants/head_rotation.md Added a section for the rotate_head(angle, axis) action.
lessons/navigation/nav_mesh.md Rewrote most of the document in order to explain the NavMesh add-on instead of the lower-level commands.

v1.11.5

16 Feb 19:19
29d3846
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

Modified Commands

Command Modification
send_is_on_nav_mesh Added parameter id. The ID of this output data. This is useful if this command is sent more than once.

Output Data

Modified Output Data

Output Data Modification
IsOnMavMesh get_position() returns a numpy array (was a tuple).
Added: get_id() Returns the ID of this output data.

v1.11.4

10 Feb 19:18
75755a0
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

New Commands

Command Description
send_occupancy_map Request an occupancy map, which will divide the environment into a grid with values indicating whether each cell is occupied or free.

Output Data

New Output Data

Output Data Description
OccupancyMap A grid of positions denoting whether a space is occupied, free, or out of bounds.

tdw module

  • Updated the OccupancyMap add-on. Previously, it required two communicate() calls to initialize and used a combination of Raycast and Overlap output data to generate the occupancy map. Now, the add-on uses OccupancyMap output data, which requires only one communicate() call and is overall faster.
    • Changed the values of the occupancy map. Previously, 1 meant "occupied" or "in an isolated island", and -1 meant "out of bounds". Now, 1 means "occupied", 2 means "out of bounds", and 3 means "in an isolated island". As a result of this change, occupancy maps can be expressed as arrays of unsigned bytes, meaning that there is less output data to send and therefore that the output data is faster.
    • Added occupancy_map.positions, a numpy array of worldspace positions per grid position. Removed OccupancyMap.get_occupancy_position().
    • Removed occupancy_map.scene_bounds.
    • Removed cell_size from the constructor and moved it to generate().
    • Added parameters to generate(): raycast_y and once.

Documentation

Modified Documentation

Document Modification
lessons/navigation/occupancy_map.md Updated to explain the new OccupancyMap API.

v1.11.3

24 Jan 14:41
32ba1e4
Compare
Choose a tag to compare

This is an incremental update to v1.11. If you are already using a v1.11 release, you can safely upgrade without having to change any of your code.

Command API

New Commands

Command Description
send_framerate Send the build's framerate information.

Modified Commands

Command Description
replicant_drop_object
replicant_grasp_object
replicant_set_grasped_object_rotation
replicant_reset_arm
replicant_reach_for_object
replicant_reach_for_position
replicant_look_at_object
replicant_look_at_position
replicant_reset_head
Added optional set_status parameter. These commands will sometimes set the action status of the Replicant in the Replicant output data. This is usually desirable. In some cases, namely when you're calling several of these commands in sequence, you might want to set set_status to False.

Output Data

New Output Data

Output Data Description
Framerate Framerate data.

tdw module

  • Fixed: Various strange behaviors in Replicant that vary between machines. This was caused by some commands within previous actions setting the Replicant's status before the current action finished. Now, these commands will never set the Replicant's status; only commands actually driving the current action will set the status (see Command API modifications, above).
  • Fixed: At speeds greater than 60 FPS, the Replicant will appear move its arms and head much slower than its animations. This is due to arm and head motion being driven by a separate system. Now, the duration parameter of these actions is scaled via optional parameters, resulting in much more even motions. The value of these parameters defaults to True; if False, duration won't be scaled.
    • Added optional parameter scale_reset_arms_duration to move_by() and move_to().
    • Added optional parameter scale_duration to reach_for(), reset_arm(), look_at(), and reset_head().

Documentation

Modified Documentation

Document Modification
lessons/replicants/arm_articulation.md Added a section regarding scale_duration. Removed the section regarding movement (see below).
lessons/replicants/head_rotation.md Added a section regarding scale_duration.
lessons/replicants/movement.md Added a section about resetting arms while moving.