Skip to content

Releases: threedworld-mit/tdw

v1.12.18

29 Nov 18:13
923c0c1
Compare
Choose a tag to compare

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

Command API

New Commands

Command Description
set_object_visibility Toggle whether an object is visible. An invisible object will still have physics colliders and respond to physics events.

v1.12.17

20 Nov 20:39
b3db464
Compare
Choose a tag to compare

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

Command API

New Commands

Command Description
send_albedo_colors Send the main albedo color of each object in the scene.

Output Data

New Output Data

Output Data Description
AlbedoColors The albedo colors of each object in the scene.

v1.12.16

08 Nov 15:22
039b44c
Compare
Choose a tag to compare

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

Command API

Modified Commands

Command Modification
add_ui_canvas If a canvas with id already exists, this command fails silently instead of logging an error.

tdw module

  • Added: AddOn.get_early_initialization_commands(). These commands are inserted before all others. Most add-ons shouldn't override this function; it's only useful for cases where the add-on must execute first, e.g. a loading screen.
  • Added new "UI Widgets", subclasses of UI, to tdw.add_ons.ui_widgets: LoadingScreen, ProgressBar, and TimerBar.
  • Moved UI.add_loading_screen() to the new LoadingScreen UI widget add-on.
  • Fixed: The argument parser in Controller allows ambiguous abbreviations.

Documentation

New Documentation

Document Description
lessons/ui/overview.md Overview of TDW's UI.
lessons/ui/widgets.md UI widget documentation.
python/add_ons/ui_widgets/loading_screen.md API documentation for LoadingScreen.
python/add_ons/ui_widgets/progress_bar.md API documentation for ProgressBar.
python/add_ons/ui_widgets/timer_bar.md API documentation for TimerBar.

Modified Documentation

Document Modification
lessons/non_physics/ui.md Moved to lessons/ui/ui.md

v1.12.15

24 Oct 19:00
8400293
Compare
Choose a tag to compare

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

Command API

New Commands

Command Description
play_audio_from_streaming_assets Load an audio clip from the StreamingAssets directory and play it.

Modified Commands

Command Modification
play_audio_data Added optional parameters spatialize and loop.
play_point_source_data Added optional parameter loop.

tdw module

  • Added optional parameter loop to AudioInitializer.play() and ResonanceAudioInitializer.play()
  • The position parameter of AudioInitializer.play() and ResonanceAudioInitializer.play() can now be None, which will make the audio non-spatialized. This is useful for UI or environment sounds.
  • Added: AudioInitializer.play_from_streaming_assets(path, position). Load a .wav file from the StreamingAssets/ directory in the build and prepare to send a command to the build to play the audio.

Documentation

Modified Documentation

Document Modification
lessons/audio/initialize_audio.md Added a section for how to create non-spatialized audio. Added a section for how to load from StreamingAssets/

v1.12.14

13 Oct 17:03
93b0b34
Compare
Choose a tag to compare

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

tdw module

  • Fixed: The controller is often incorrect when it checks for updates.
  • Fixed: The reported build version number is incorrect, resulting in the controller downloading a new build every time it runs.
  • (Backend) removed __version__ in setup.py (it now uses the value in tdw.version)
  • (Backend) Removed tdw.release.pypi and tdw.release.build
  • (Backend) Added tdw.release.update which contains most of the code formerly in PyPi and Build, as well as code in Controller used to check for updates.
  • (Backend) moved Build.BUILD_PATH and Build.BUILD_ROOT_DIR to tdw.paths

v1.12.13

12 Oct 20:43
a5c4b46
Compare
Choose a tag to compare

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

Build

  • Fixed: The skybox appears pink in tdw_room_4x5 and box_room_4x5

Docker

  • The TDW Docker container now uses xvfb. This means that you can use the Docker container without needing to sudo access, Xorg, xorg.conf, etc. However, the Docker container can't use a GPU.

Documentation

New Documentation

Document Description
lessons/setup/docker.md How and why to run TDW in a Docker container.

Modified Documentation

Document Modification
lessons/setup/server.md Clarified why you should/shouldn't use Docker.

v1.12.12

06 Oct 15:00
af291f9
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.

Build

  • Fixed: The build hangs indefinitely if a controller does the following: Load streamed scene A (via add_scene), load streamed scene B, load streamed scene A.

v1.12.11

02 Oct 19:41
1094bfc
Compare
Choose a tag to compare

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

Command API

New Commands

Command Description
destroy_all_ui_canvases Destroy all UI canvases in the scene.

Build

  • Fixed: Unhandled NullReferenceException if destroy_ui_element is sent followed by destroy_canvas or destroy_all_ui_canvases.
  • Slight image encoding speed improvement.
  • Fixed: On some computers, images are encoded upside-down. This was supposed to be fixed in the previous version but wasn't entirely. If your computer is still saving images upside-down, either add --flip_images to the controller path (e.g. python3 my_controller.py --flip_images); this will only work if launch_build=True. If you're on a server and need to set launch_build=False, add -flip_images to the build path (e.g. ./TDW.x86_64 -flip_images).

tdw module

  • Added two optional flags to all controllers. They only work if launch_build=True:
    • --force_glcore42 Launch the build using OpenGL 4.2, which can fix some segfaults. If launch_build=False, you instead launch your build with a similar flag: ./TDW.x86_64 -force-glcore42.
    • --flip_images to flip images if they're being saved upside-down. If launch_build=False, you instead launch your build with a similar flag: ./TDW.x86_64 -flip_images.

Docker

  • Fixed: Can't build an image from the Dockerfile.
  • Removed various unused and obsolete scripts and Dockerfiles.
  • Added: build.sh, install.sh, run.sh, and stop.sh

Documentation

New Documentation

Document Description
lessons/setup/pc.md How to install TDW on a personal computer.
lessons/setup/server.md How to install TDW on a server.
lessons/setup/pc_server.md How to install TDW on a personal computer + a server.

Modified Documentation

Document Modification
lessons/troubleshooting/common_errors.md Improved the formatting of the document. Added a section for what to do if images are upside-down.
lessons/setup/install.md Moved install instructions to separate documents.

v1.12.10

08 Sep 23:10
d09feb4
Compare
Choose a tag to compare

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

Build

  • Fixed: On some computers, images are encoded upside-down.

Docker

  • Updated Docker container to Ubuntu 22.04. Added instructions to pip install tdw.

v1.12.9

31 Aug 16:47
9df96fb
Compare
Choose a tag to compare

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

Build

MAJOR speed-up in jpg/png encoding, thereby speeding up nearly every application of TDW, in some cases by over 300%. This is the most significant speed up in TDW since 2019 (prior to the initial public release).

Generally, speed improvements are most significant when encoding multiple passes larger than 256x256 to png; the larger the image, the greater the speed-up.

These benchmarks were generated by running Python/benchmarking/image_capture_all.py with a v1.12.8 build and with a v1.12.9 build:

Benchmark Speed up
_img png 33%
_img jpg (256x256) 1%1
_img jpg (1024x1024) 12%
_img, _id, _depth (all png) 48%2
_img, _id (all png) (1024x1024) 313%
All image passes at the same time (all png) 40%
_depth or _depth_simple 0%3

We achieved this by doing the following:

  1. Replaced Unity's image encoder with Fast Image Encoder, a zero-allocation library that uses a native Rust library to encode images. Image encoding, the slowest operation in TDW, is now 75-98% faster depending on the benchmark being used. (The over performance improvement in TDW is somewhat lower due to additional overhead.)
  2. Each pass per-avatar encodes images in a separate thread rather than sequentially.

Benchmarking

  • Added: benchmarking/image_capture_all.py

Documentation

Modified Documentation

Document Modification
benchmarking/benchmark.md
benchmarking/image_capture.md
benchmarking/object_data.md
Updated all benchmarks.
  1. jpg encoding is inherently slower than png encoding, Speed improvements are more apparent at larger image sizes.

  2. These are the passes captured by default by most agents.

  3. _depth and _depth_simple passes haven't changed because they return raw RGB data, not an encoded image.