Git Product home page Git Product logo

azul's Introduction

Icon azul

azul is a 3D city model viewer It is intended for viewing 3D city models in CityGML 1.0 and 2.0, CityJSON 1.0, 1.1 and 2.0, IndoorGML, OBJ, OFF and POLY. It supports loading multiple files, selecting objects by clicking them or selecting them in the sidebar, toggling the visibility of individual items, and browsing their attributes. It is research software, but it is pretty stable and most datasets already work without problems. It is available under the GPLv3 licence.

The current version of azul is for macOS 13 and higher and supports both Apple Silicon and Intel Macs.

Controls

  • Pan: scroll

  • Rotate: drag on (left) click, rotate on trackpad

  • Zoom: pinch on trackpad, drag on right click

  • Select: click on object (in view or sidebar)

  • Centre view: double click (in view or sidebar object), h or cmd+shift+h (to dataset centre)

  • New file (clear view): n or cmd+n

  • Open file (import): o or cmd+o

  • Load view (camera) parameters: l or cmd+l

  • Save view (camera) parameters: s or cmd+s

  • Copy selected object ids: c or cmd+c

  • Find objects: f or cmd+f

  • Show bounding box: b or cmd+shift+b

  • Show edges: e or cmd+shift+e

  • Show sidebar: cmd+ctrl+s

  • Go full screen: cmd+ctrl+f

  • Close window (quits): cmd+w

  • Quit: cmd+q

Download

You can download the latest stable release of azul in the releases page or from the App Store. If you want more information on how to compile it from source, see below.

Random3DCity

LOD2 example

Railway

New York City

Leiden

Zurich

Technical details

azul is written in a mix of C++17, Swift 5, Objective-C 2 and Objective-C++. The core is written in C++ for future portability, but it uses Apple's Metal for visualisation and SIMD for fast vector/matrix computations. It uses pugixml to parse XML, simdjson to parse JSON, and the CGAL Triangulation package to triangulate concave polygons for display.

Not implemented / ideas for the future

  • Removing (unloading) files
  • Icons for missing types
  • Better handling of big coordinates
  • Improved search with live viewing of matching objects
  • Reordering hierarchies in sidebar
  • Way to navigate xlinks / implicit parent-child relationships
  • Use status bar to indicate actions, success/failure
  • Customising colours, more complex materials
  • Materials and textures (loaded from files)
  • Shifting the rotation point out of the data plane
  • Using a rotation point at a visible object in the centre (good for zooming in and rotating)
  • Showing the data plane and rotation point
  • Animations when re-centering
  • Keyboard navigation
  • Multi-threaded file loading and ray shooting
  • QuickLook plug-in
  • Icon previews
  • iOS support

Compilation

We have included an Xcode 15 project to easily compile azul. It should be possible to compile azul on older macOS versions (from 10.14 onwards), but old versions of Xcode (older than 10) cannot compile Swift 5.

azul depends on the following libraries: Boost, CGAL, GMP, MPFR, pugixml and simdjson. Most of these can be easily obtained using Homebrew, but we provide fat libraries (arm64 + x86_64) of them all for convenience.

Licence

azul is available under the GPLv3 licence.

azul's People

Contributors

kenohori avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azul's Issues

Add support for CRS

It would be useful to add support for CRS when reading a CityJSON (or CityGML) file.

This is really important in cases where horizontal and vertical coordinates are using different units, for instance EPSG:4979 where X and Y are in degrees and Z is in meters (also related to issue #4).

epsg:4979 not rendering properly

when my citygml is using epsg:4979 as its CRS i see all my buildings rendering extremely tall, which makes me think Azul isn't understanding the CRS and is treating my height values (in meters) as if they were degrees?

i've tried altering the citygml to either convert the height values in meters to degrees, or do a full coordinate transformation to another CRS and everything works fine, but I want my citygml in epsg:4979

copy geometry id

Hi,

I was using azul, and I wanted to copy a building id to my text editor, in order to do some operations with cjio. However, clicking the right button over the building of interest doesn't show any option. Could this be somehow added?

Thank you!

No attributes shown

Hi,

I am using Azul for displaying my generated CityJSON files.

Unfortunately Azul does not show me any attributes of any given CityObject at all, neither from my own datasets nor from the example datasets provided in the CityJSON documentation.

My version of MacOS is 10.13.6 and the latest version of Azul in the AppStore (already reinstalled it, without fixing the issue)

Kind regards

Export Image

Given that so many of us utilise it to visualise and often screenshot the app to share images with others it might be nice to have an export button. Especially not to have a loss of image quality ๐Ÿ–Œ

Option to close file

Hi,

When I open a .json file, I need to close the app to open a new one. I was wondering if it would be possible to close the files, without the need to close the app?

Thank you!

does Azul support rendering CityJSON v0.6?

I have some data that I'm currently writing into citygml and cityjson. Azul renders my gml just fine, but when I write the same data out into cityjson v0.6 the geometries are way off.

Notes on the Azul 0.8.1 release says it supports CityJSON v0.5 so I'm unsure if there are enough deltas between cityjson 0.5 and 0.6 to cause the issues I'm seeing or not. I'm creating both files using citygml4j.

Here's a view in Azul of the citygml:
screen shot 2019-01-02 at 5 07 11 pm

Here's the strange rendering of the cityjson v0.6:
screen shot 2019-01-02 at 5 09 02 pm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.