All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Realsense capturer can now record during live capture, using
system.record_to_directory
config setting. (#119) - Debian packages for Ubuntu 24.04 (#143), for the time being without Kinect and Realsense support.
- Android-arm64 build added (#91), untested for now.
- New tool
cwipc_timing
helps with determining whether cameras are correctly synchronized. (#144)
- Minor documentation fixes
- More resilience against incomplete installations (#108)
- Don't use numpy 2.0 until issues with open3d are fixed (#109)
- Fixed colors for
cwipc_view --rgb
with RealSense camera (#115) - Fixed
cwipc_register
for multiple RealSense cameras (#106) - Fixed
cwipc_synthetic
reader to not wait on available(False) (#117) - Realsense
cameraconfig.json
file rationalized. Major code cleanup. (#137, #125, #118) - Calibration of Realsense D455 cameras fixed. (#127)
- Use cmake presets for building (#120)
- Use
pyproject.toml
for Python package generation (#79) - Implemented recording while capturing for both Realsense and Kinect (#139)
- Glfw is now used via normal dependencies, no longer slurped (#123)
cwipc_forward
can now serve streams to multiple connections at the same time (#151)- Major improvements to realsense_playback (#158)
- Fixed Mac brew builds (#105)
- Updated vcpkg dependencies
- Registration procedure documented (#103)
- Do not attempt fine calibration with a single camera (#104)
- New Python methods (on cwipc objects)
as_numpy_array()
,as_numpy_matrix()
,as_o3d_pointcloud()
and corresponding constructorsfrom_numpy_array()
,from_numpy_matrix()
andfrom_o3d_pointcloud()
to allow easier analysis with numpy or open3d. - New Python methods on
cwipc_auxiliary_data
objectsget_image()
andget_all_images()
allow you to get the RGB and Depth images as numpy arrays. - New API call
cwipc_tiledsource_auxiliary_operation
to have a capturer do a special operation, such as mapping 2D points to 3D points. - There is a new utility
cwipc_register
to do registration of multiple cameras (replacing the oldcwipc_calibrate
). - There is a new capturer
realsense_playback
which reads.bag
recordings captured earlier. It behaves much more like a camera than the olderrealsense_offline
. - Cameraconfig files are now JSON by default (but XML is still supported for backward compatibility).
- The default camera type is now determined from
cameraconfig.json
, so you normally don't have to specify--kinect
or similar tocwipc_view
and other utilities - There is a new API call
cwipc_capturer
that will return the correct capturer for what is specified incameraconfig.json
. You can also give it aconfigFilename
parameter of"auto"
and it will determine what type of camera is attached to your system. - cwipc has been ported to Android, specifically for use on the Oculus Quest.
- Python modules now have type annotations, which should make it much easier to use cwipc in your programs (auto-complete, documentation, etc). The cwipc package is usable from Jupyter.
- Python example programs have been added.
cwipc_check
program helps with checking that everything is installed (especially on Windows). Windows Start Menu has entries to do this check, and also to try and fix issues.
- Build process on Windows now uses vcpkg for most dependencies, streamlining both CI/CD builds and local builds.
- Build process and CMakefiles have been streamlined, specifically the way the Python support is installed.
- command line arguments to
cwipc_view
and other utilities have changed a lot. Use--help
to see the differences. - Windows installer should now be more robust.
cwipc_calibrate
is deprecated, replaced bycwipc_register
.cwipc_unity
is no longer a submodule of cwipc but its own toplevel repository.
- cwipc_unity submodule added. Can be added to Unity projects either via inclusion by path from a checkout or by adding the cwipc_unity repo URL.
- Optional parallel encoding of subsequent point clouds. Does not decrease latency but can increase throughput.
- Ubuntu 22.04 is now the Linux release for which we provide packages.
- Python 3.10 is now preferred, 3.9 still supported.
- Dependencies updated to current versions.
- Various issues with Windows installer fixed.
- Tweaks to allow easier building with brew on macos.
Gitlab CI/CD no longer supported.
- Installers for Windows (NSIS exe) and Ubuntu (debian package) are available in the release assets.
- Installer for Mac is available through Homebrew, see the readme file.
- The encoder can be run in parallel on mutliple threads, by setting
cwipc_encoder_params.n_parallel
to a value greater than1
.
CWIPC_ENCODER_PARAM_VERSION
has been increased, but the old version number is still accepted.
- All tools accept a
--version
argument to only print the version.cwipc_get_version()
added to API,CWIPC_API_VERSION
updated. - Github is now the primary hosting platform and Gitlab is considered a mirror. Binary and full-source releases are available on github via https://github.com/cwi-dis/cwipc/releases.
- Instructions for installing from binary or source releases updated.
- (kinect) cameraconfig is now independent of whether we use map_color_to_depth or not
- (kinect) implemented function
generate_point_cloud_v2()
which uses a lookup table to compute the pointcloud. - (kinect) opencv is now used for filtering the depth map: Thresholds + erosion. much faster.
- (macos) MacOS 10.15 is now the target platform: 10.14 is no longer easily supported in brew.
- Build process, CMakefiles and versioning have been streamlined.
Backwards compatible, so only CWI_API_VERSION
has been increased.
- cwipc_crop added
This release is not backwards compatible with older releases, therefore CWIPC_API_VERSION
and CWIPC_API_VERSION_OLD
have been updated.
- Compatible with Python 3.9 (mainly DLL search path fixes for Windows)
- Added
--custom_filter
to most tools to allow applying a filter to each pointcloud - Added skeleton data renderer to
cwipc_view
cwipc_enc_perftest
(source only) helps debugging codec performance issues- Kinect skeleton parameters can be specified in
cameraconfig.xml
- natural pointcloud orientation has changed: positive z-axis now points forward from subject point of view. This is in line with standard practice (camera looks in negative z direction). Incompatible change.
tileinfo
structure changed. Incompatible change.- K4ABT 1.1.0 supported
- Got rid of
abort()
calls in capturers - Code resutructuring in
cwipc_codec
- Various other bug fixes
- Added compressed pointcloud support to
cwipc_grab
and--playback
. - Added methods
cwipc_colormap
,cwipc_tilemap
andcwipc_join
.
- Minor bug fixes.
- Compressed pointclouds could lose their pointsize, causing them to be rendered with tiny size. Fixed.
- Changes for debugging cwipc itself, see readme.md for details.
- Compatible with PCL 1.12
.pdb
files included on Windows, so stack traces and debugging are better.- implemented disabled config variable for most capturers.
cwipc_encodergroup
optimised and parallelised: can now handle 16-stream tiled multi-quality encoded pointcloud streams at 15fps (given decent hardware).
- Parallelized encodergroup if more than 1 output required.
- fixed rebuild issue.
- Realsense and offline grabbers now also support disabled parameter in cameraconfig.
- Allow disabling kinect camers with
enabled="0"
incameraconfig.json
. - Added outlier filter.
- Fixed skeleton API.
First unified release of cwipc_util, cwipc_realsense2, cwipc_codec and cwipc_kinect.
Dual-homed at https://gitlab.com/VRTogether_EU/cwipc/cwipc and https://github.com/cwi-dis/cwipc.
MIT license added.
- New utility
cwipc_forward
to forward pointcloud streams over net (direct sockets or DASH using bin2dash) cwipc_view
and friend can receive pointcloud streams over the net (direct sockets or DASH using signals-unity-bridge)
- Fixes and additions to utilities, including support for Kinect skeleton and RGBD data.
- Unified build procedure using
cmake
.