Skip to content

Releases: threedworld-mit/tdw

v1.9.10

14 Mar 17:43
f04c17f
Compare
Choose a tag to compare

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

Build

  • Fixed: The OS X build doesn't use OpenGL rendering, causing _depth and _depth_simple passes to render as _img passes. (There were probably other OpenGL-related issues as well).

v1.9.9

09 Mar 19:51
7f1a36a
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.

Command API

Modified Commands

Command Modification
create_flex_container Added optional parameter restitution.

v1.9.8

04 Mar 16:14
9c29255
Compare
Choose a tag to compare

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

Command API

New Commands

Command Description
scale_object_and_mass Scale the object by a factor from its current scale. Scale its mass proportionally. This command assumes that a canonical mass has already been set.

Build

  • Removed warning in scale_object about Flex objects because set_flex_scale isn't a command.

tdw module

  • Controller.get_add_physics_object() will dynamically scale the "canonical" mass of the object if a value for the scale_factor parameter is provided.

v1.9.7

01 Mar 15:56
e471b23
Compare
Choose a tag to compare

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

Command API

Modified Commands

Command Modification
add_trigger_collider Added trigger collider shape "cylinder"

Build

  • Fixed: DllNotFoundException in TDW.app (OS X) due to missing AudioPluginOculusSpatializer.bundle
  • Fixed: Potential memory leak with audio commands

tdw module

  • Fixed: struct.error in CompositeObjectManager when deserializing static spring data.
  • Added TriggerCollisionManager add-on. Manager per-frame trigger collision data.
  • Added the following trigger collider/collision data classes:
    • TriggerColliderShape Enum describing the shape of the collider.
    • TriggerCollisionEvent Wrapper for trigger collision data.
  • Added ContainerManager add-on. Manager per-frame containment data. This is a subclass of TriggerCollisionManager.
  • Added the following container trigger collider/collision data classes:
    • ContainerBoxTriggerCollider Data for a box-shaped container trigger collider.
    • ContainerColliderTag Enum of semantic tags for container trigger colliders.
    • ContainerCylinderTriggerCollider Data for a cylinder-shaped container trigger collider.
    • ContainerNonUniformScaleTriggerCollider Abstract class for container trigger colliders with non-uniform scales.
    • ContainerSphereTriggerCollider Data for a sphere-shaped container trigger collider.
    • ContainerTriggerCollider Abstract base class for container trigger collider data.
    • ContainmentEvent Wrapper for containment trigger collision data.

Model Library

  • Added cached trigger collision data to model records. Not all records have container trigger colliders; see model_record.trigger_colliders.
    • (Backend) Added: tdw.librarian._Encoder JSONEncoder extension that is used within _Librarian classes. For now, this just handles container collider data.
  • Added models models_core.json and models_full.json: cabinet_36_two_door_wood_oak_white_composite, cabinet_36_two_door_wood_beech_honey_composite, cabinet_24_wall_wood_beech_honey_composite, cabinet_24_wall_wood_oak_white_composite, cabinet_36_wall_wood_beech_honey_composite, cabinet_36_wall_wood_oak_white_composite, appliance-ge-profile-microwave3_composite, appliance-ge-profile-microwave_composite, microwave_composite

Example Controllers

  • Moved composite object controllers from physx/ to semantic_states/
  • Moved overlap and raycast controllers from objects_and_scenes/ to semantic_states/
  • Added: semantic_states/containment.py
  • Added: semantic_states/trigger_collisions.py

Documentation

New Documentation

Document Description
lessons/semantic_states/containment.md Documentation for how to use the ContainerManager.
lessons/semantic_state/grasped.md Overview of "grasped" semantic states with various agents.
lessons/semantic_states/overview.md Overview of semantic states.
lessons/semantic_states/trigger_collisions.md Documentation for how to use the TriggerCollisionManager.
python/add_ons/container_manager.md API documentation for ContainerManager.
python/add_ons/trigger_collision_manager.md API documentation for TriggerCollisionManager.
python/collision_data/trigger_collider_shape.md
python/collision_data/trigger_collision_event.md
API documentation for trigger collision data classes.
python/container_data/container_box_trigger_collider.md
python/container_data/container_collider_tag.md
python/container_data/container_cylinder_trigger_collider.md
python/container_data/container_non_uniform_scale_trigger_collider.md
python/container_data/container_sphere_trigger_collider.md
python/container_data/container_trigger_collider.md
python/container_data/containment_event.md
API documentation for containment data classes.

Modified Documentation

Document Modification
lessons/objects_and_scenes/raycast.md Moved to: lessons/semantic_states/raycast.md
lessons/objects_and_scenes/overlap.md Moved to: lessons/semantic_states/overlap.md
lessons/physx/composite_objects.md Moved to: lessons/semantic_states/composite_objects.md

v1.9.6

25 Feb 21:47
7ed2571
Compare
Choose a tag to compare

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

Command API

Modified Commands

Command Modification
send_audio_sources Removed optional parameter ids because it was non-functional.

Output Data

New Output Data

Output Data Description
AudioSourceDone Output data that announces that an audio source is done playing.

tdw module

  • Fixed: Error when initializing PyImpact if there isn't a VR rig in the scene.
  • Fixed: send_audio_sources checks for object IDs instead of audio source IDs and therefore doesn't work.
  • Fixed: PyImpact doesn't play valid impact audio events. Now, it uses AudioSourceDone output data to check the time between impact events.
    • Added optional parameter min_time_between_audio_events to the constructor.
  • Fixed: PyImpact doesn't calculate size values accurately. Added PyImpact.get_size(model).

Documentation

Modified Documentation

Document Modification
lessons/audio/py_impact.md Added a section regarding min_time_between_impact_events
lessons/audio/py_impact_advanced.md Added better guidance for how to set size values.

v1.9.5

16 Feb 17:50
8401e24
Compare
Choose a tag to compare

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

New Features

  • Added support for the Oculus Quest 2 with Touch controllers.

Command API

New Commands

Command Description
send_static_composite_objects Send static data for every composite object in the scene.
send_dynamic_composite_objects Send dynamic data for every composite object in the scene.
rotate_vr_rig Rotate the VR rig by an angle.
set_vr_resolution_scale Controls the actual size of eye textures as a multiplier of the device's default resolution.
send_oculus_touch_buttons Send data for buttons pressed on Oculus Touch controllers.
send_static_oculus_touch Send static data for the Oculus Touch rig.

Modified Commands

Command Modification
create_vr_rig Added parameter rig_type: The type of VR rig to instantiate.
Added parameter sync_timestep_with_vr: Whether to sync Time.fixedDeltaTime with the VR device refresh rate. Doing this improves physics behavior in VR; this parameter should almost always be True.
set_graspable Renamed to set_vr_graspable
Added parameter joint_break_force: The joint break force for this graspable object. Lower values mean it's easier to break the joint.

Deprecated Commands

Command Reason
send_composite_objects Replaced with send_static_composite_objects and send_dynamic_composite_objects

Output Data

New Output Data

Output Data Description
CompositeObjectsStatic Static composite object data.
CompositeObjectsDynamic Dynamic composite object data.
OculusTouchButtons Which Oculus Touch controller buttons have been pressed.
StaticOculusTouch Static data for the Oculus Touch rig.

Modified Output Data

Output Data Modification
VRRig Added: get_held_left() Returns the IDs of the objects held by the left hand.
Added: get_held_right() Returns the IDs of the objects held by the right hand.

Deprecated Output Data

Output Data Reason
CompositeObjects Replaced with CompositeObjectsStatic and CompositeObjectsDynamic

tdw module

  • Added: OculusTouch an add-on for the Oculus Touch VR rig.
    • Added abstract base class VR
  • Added the following VR data classes:
    • OculusTouchButton Enum values for Oculus Touch buttons.
    • RigType Enum values for VR rigs.
  • Added: CompositeObjectManager an add-on for managing composite object data.
  • Added the following composite object data classes:
    • CompositeObjectStatic Static data for a composite object and its sub-objects.
      • LightStatic Static data for a light sub-object of a composite object.
      • MotorStatic Static data for a motor sub-object of a composite object.
      • SpringStatic Static data for a spring sub-object of a composite object.
      • HingeStatic Static data for a hinge sub-object of a composite object.
      • PrismaticJointStatic Static data for a prismatic joint sub-object of a composite object.
      • NonMachineStatic Static data for a non-machine sub-object of a composite object.
    • CompositeObjectDynamic Dynamic data for a composite object and its sub-objects.
      • LightDynamic Dynamic data for a light sub-object of a composite object.
      • HingeDynamic Dynamic data for a hinge, motor, or spring sub-object of a composite object.
  • PyImpact will create impact sounds for VR nodes (e.g. hands).
    • Added: VR_HUMAN_MATERIAL and VR_HUMAN_BOUNCINESS
  • Fixed: InteriorSceneLighting sets the random number generator incorrectly such that all other attempts to create a numpy RandomState fail.
  • Fixed: TDWUtils.set_default_libraries() raises an exception if model_library isn't set and one of the set paths is a string.

Build

  • Dropped support for Flex in VR (this never worked very well).

Example Controllers

  • Edited physx/composite_object.py to use the CompositeObjectManager
  • Removed physx/kinematic_composite_object.py
  • Added physx/composite_object_open.py
  • Added physx/composite_object_torque.py
  • Moved humans/keyboard_controls.py to keyboard/keyboard_controls.py
  • Moved humans/keyboard_minimal.py to keyboard/keyboard_minimal.py
  • Removed humans/vr_minimal.py
  • Removed humans/vr_observed_objects.py
  • Added vr/oculus_touch_button_listener.py
  • Added vr/oculus_touch_composite_object.py
  • Added vr/oculus_touch_image_capture.py
  • Added vr/oculus_touch_minimal.py
  • Added vr/oculus_touch_output_data.py
  • Added vr/oculus_touch_py_impact.py

Documentation

New Documentation

Document Description
python/add_ons/composite_object_manager.md API document for CompositeObjectManager
python/object_data/composite_object/composite_object_static.md
python/object_data/composite_object/composite_object_dynamic.md
python/object_data/composite_object/sub_object/sub_object_static.md
python/object_data/composite_object/sub_object/light_static.md
python/object_data/composite_object/sub_object/hinge_static_base.md
python/object_data/composite_object/sub_object/motor_static.md
python/object_data/composite_object/sub_object/spring_static.md
python/object_data/composite_object/sub_object/hinge_static.md
python/object_data/composite_object/sub_object/prismatic_joint_static.md
python/object_data/composite_object/sub_object/non_machine_static.md
python/object_data/composite_object/sub_object/sub_object_dynamic.md
python/object_data/composite_object/sub_object/light_dynamic.md
python/object_data/composite_object/sub_object/hinge_dynamic.md
API documents for composite object data classes.
lessons/vr/overview.md Overview of VR.
lessons/vr/oculus_touch.md Tutorial on the Oculus Touch rig and OculusTouch add-on.
python/add_ons/oculus_touch.md API document for OculusTouch add-on.
python/add_ons/vr.md API document for VR abstract class.
python/vr_data/oculus_touch_button
python/vr_data/rig_type.md
API documents for VR data classes.

Modified Documentation

Document Modification
lessons/physx/composite_objects.md Rewrote most of the document to explain how to use the CompositeObjectManager.
Added a section explaining how to determine if an object is "open".
Clarified the difference between sub-meshes and sub-objects.
Added more example code.
lessons/agents/overview.md Split "Humans" section into "Keyboard controls" and "VR".
lessons/humans/keyboard.md Moved to: lessons/keyboard/keyboard.md

Removed Documentation

Document Reason
lessons/humans/vr.md Replaced with new VR documentation (see above).

v1.9.4

08 Feb 22:07
64a1a08
Compare
Choose a tag to compare

This is an incremental update to v1.9. If you are already using a v1.9 release, you can safely upgrade without having to change any of your code. For more information, please read the changelog.

v1.9.3

20 Jan 18:31
0d484ac
Compare
Choose a tag to compare

This is an incremental update to v1.9. If you are already using a v1.9 release, you can safely upgrade without having to change any of your code. For more information, please read the changelog.

v1.9.2

07 Jan 17:54
d9f49fa
Compare
Choose a tag to compare

This is an incremental update to v1.9. If you are already using a v1.9 release, you can safely upgrade without having to change any of your code. For more information, please read the changelog.

v1.9.1

17 Dec 19:30
e860fcf
Compare
Choose a tag to compare

This is an incremental update to v1.9. If you are already using a v1.9 release, you can safely upgrade without having to change any of your code. For more information, please read the changelog.