Releases: c42f/displaz
0.4.0
There have been a lot of changes since 0.3.1, with most of them focussing on
making displaz "more hackable": We've added features to make it even easier to
control the 3D window from an external program, and to get displaz interface
events back into the external program.
There's also been a bunch of graphical improvements to allow displaying more
types of 3D data alongside point clouds. Here's a big list of features
Hook key events via the command line API
- The
-hook
option allows events to be piped through to a listening
process via the IPC interface, which can then respond with an alteration to
the 3D scene, allowing simple interactive applications to be built by
combining the language of your choice with the displaz 3D window.
Modify point clouds efficiently without reloading them
- The attributes of points in a point cloud can now be mutated in place by
loading a specially constructed ply file using the-modify
option
More command line API additions
-annotation
to add text annotations to the 3D window-querycursor
command for position of 3D cursor-label
option to label datasets with a name-unload
to remove a data set-quit
option to exit displaz-viewposition
to set the 3D cursor centre-viewrotation
sets the viewing angles using a full rotation matrix for
scripting simplicity.
API language binding examples
- Simplistic C bindings
- Split out julia bindings into Displaz.jl
- Minor improvements to most bindings
3D window - graphical features
- Support for simple texture mapping of 3D ply meshes
- Triangulation of arbitrary polygons
- 3D axis direction legend
- Various shader tweaks
- Improved clipping plane heuristic, to avoid some of the typical clipping
issues. Not perfect, but a lot better for viewing dense data close up. - OpenGL draw order improvements
Other Features
- New icon
- Shift+left click centres the view - for with mice without a usable centre
button. - Centre cursor is much faster for large point clouds
- Error message reporting for ply reader
- Rework point selection algorithm for robustness
- Move all shader handling to a shader menu for clarity.
- Qt5 is the default version of Qt. Qt4 (possibly) still supported on linux,
but this will be removed in the next version. - Syntax highlighting in shader editor
Breaking changes
- Opening new datasets does not close existing ones. To do this, use the
-clear
flag explicitly - Datasets are deduplicated based on label / filename. You now need to use
-add
to override this if you want to load two different datasets of the
same name. - Some changes to the shaders may take a little getting used to
Bug fixes
- Much more robust interprocess communication, to allow scripts to drive
displaz with as many requests as they like. Including robustly starting
exactly one instance of displaz. - Ply reader fixes to avoid crashes with broken ply
- Workarounds for rendering artifacts on Intel GPUs
- Only recenter view when loading (not removing) geometry
Windows-specific bug fixes
- Open las files with arbitrary unicode names on windows.
- Better behaviour starting displaz on the windows command line - "dual mode"
interface with command line and GUI inspired by the devenv.{com,exe}
approach. - Disable gl_FragDepth on windows intel drivers. It's just buggy.
- Various interprocess communication bug fixes
Internal changes
- Use catch framework for tests
- Use Travis and Appveyor for automated builds on Linux, OSX and Windows.
- Source code rearrangement
- Port to OpenGL 3.3
- Update to rply-1.1.4
- Update to GLEW-2.0.0
Release 0.3.2
Relative to release 0.3.1, this release contains major rendering fixes for Intel drivers on windows.
The windows driver for Intel HD graphics hardware appears to have some bugs resulting in severe rendering artifacts. This release contains small workarounds for the currently known problems:
- Tweak to ensure depth testing is turned on so that distant objects appear behind foreground objects
- Blacklist gl_FragDepth/gl_FragCoord shader features on windows+intel to avoid various odd rendering artifacts (dark points disappear; light points are squares rather than circles)
Release 0.3.1
Hotfix for last minute bug introduced in 0.3.0 las classificaton reader.
Release 0.3.0
New features
- Data set interface
- Display loaded datasets in a list
- Control visibility of each dataset individually
- Load files in the background for improved GUI responsiveness
- Point selection mode based on return index
- Generalized point attributes
- Point attributes with arbitrary names may be loaded from file, and will
be sent to any loaded shader which supports them. - Attributes may be 8,16,32 bit (un)signed integers, or 32 or 64 bit
floating point numbers. Vector, arrays and color semantics are
supported. - Integer shader attributes for non-scaled values
- Point attributes with arbitrary names may be loaded from file, and will
- Experimental language bindings
- Allows data to be sent to the displaz process from various languages via
files and the displaz remote socket interface. - matlab, python, julia, C and C++11.
- Allows data to be sent to the displaz process from various languages via
- Ply support
- Support point clouds in ply format
- Support meshes with "triangle" element
- Support displaz native ply point cloud format
- General polygons (rendered as outlines)
- Socket interface improvements
- Control the dataset list externally using -add and -clear command line options
- Camera pitch,roll,yaw and view distance may be automated from the command line
- Experimental hierarchical point cloud generator ("dvox") and displaz viewer
support for very large files.
Tweaks
- Improved user guide and general documentation
- Screenshot utility
- Menu item to add files without closing current ones
- Progress bar with text file reader
- Use las "extended number of points" entry for large files
- Remove FILE_LIST shader metadata hack (deprecated in favour of data sets UI)
Bugfixes
- Avoid crashing with drag & drop of non-files
- Correctly read truncated las files
- Load line and mesh colours correctly
- Set sensible default camera distance for meshes
- Avoid crashing with files containing zero points
- Avoid crashing when shader fails to compile
- Don't crash when loading a large file allocates too much memory.
Internal changes
- Build cleanups
- Separate third party build system
- Embedded GLEW
- Make LAS input an optional dependency
- Detect git version changes
- Upgrade to LIBlas 150406
- Update PDAL support for changing API
- Refactor geometry classes
- Refactor file loader
- Las colors are loaded as uint16 to save memory
- Avoid deprecated glsl constructs
- Frustum culling for faster rendering
Release 0.2
New features:
- Incremental rendering for large point clouds, including dynamic
estimation of allowable interactive point count. - Save and load shaders: Menu items for the GUI, and a command line
option to set the shader on startup. Also install shaders rather than
embedding them to improve hackability. - Single instance support: new files now open in an existing displaz
instance, unless -noserver is specified on the command line - Drag and drop to open files
- Html documentation in GUI
- Binary installer for windows
Tweaks:
- New point colouring mode based on file number in default shader
- Proper console help text and console debug output on windows
- Log Euclidian distance between consecutive selected points
- Support reading colour from .ply files
- Cylindrical projection shader
- Increase near clip plane to reduce z-fighting
- Carefully acknowledge with third party licenses in binary distribution
- Version numbering based on git-describe
Bug fixes:
- Fix for older ATI drivers which require #version to come before #define
- Fix display of zero point size on non-nvidia hardware
- Fix uninitialized shader variables when loading from text file
- Fix crash when opening text files containing zero points
Internal changes:
- Octree data structure for better rendering and search
- Make building the dependencies easier
- Rearrange source tree
v0.1.1
v0.1
First release. Major features:
- Display point clouds using user-editable shaders
- GUI elements for controlling shader uniforms
- Point cloud simplification for frame rate control
- Simple rendering of meshes and lines (non-flexible, non-editable shaders)
- For points, input of .las, .laz, and basic .txt import
- For meshes and lines, input of .ply files