Releases: threedworld-mit/tdw
Releases · threedworld-mit/tdw
v1.12.18
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
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
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
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
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
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
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
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
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
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:
- 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.)
- 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. |
-
jpg encoding is inherently slower than png encoding, Speed improvements are more apparent at larger image sizes. ↩
-
These are the passes captured by default by most agents. ↩
-
_depth
and _depth_simple
passes haven't changed because they return raw RGB data, not an encoded image. ↩