Git Product home page Git Product logo

godot-pointcloud-viewer's Introduction

Godot pointcloud viewer

Logo

This application can render 3D pointclouds with label support, and you can inspect them (fly around) in first person. Currently the release works only on windows machines. You can try compiling the project yourself on your desired OS. Video demo

Features

  • Render 3D labeled or unlabeled pointclouds (I have not properly limit tested it, but it can run a 500k pointcloud with no issues. Reading the file can take some time, depending on the size of the pointcloud file ~500k labeled points ~20 seconds)
  • Explore the pointcloud in first person, change basic control parameters - speed, sensitivity, boost
  • Change the look of the pointcloud - change each label color, their corresponding point sizes. Change the background color
  • Some basic display settings e.g. FOV, fullscreen,
  • Animation - orbit around the pointcloud (can be used to make good video recordings of the pointcloud with minimal effort)

How to use

  1. Download the latest release

  2. Prepare your pointcloud file or try an example one

    2.1. File extension should be .txt or .csv

    2.2. Points should be seperated by a new line

    2.3. Each line should be in the following format: x,y,z,label(optional)

    2.3.1. You can choose what seperator you use, but it has to be one symbol - cannot be comma + space as it's two symbols

    2.3.2. label is optional

    2.3.3. z corresponds to height

  3. Open the application, select your pointcloud file

  4. Basic controls are shown on the screen, settings can be found by pressing the ESC button

If you wish to launch the app from the command prompt, you can do so like this: godot_point_cloud_viewer_v1_0_1_0.exe --path="C:Templates\building_roof.txt" --separator="," --useLabels=true

To use whitespace for a seperator, replace it with %20 and for horizontal indent, replace it with %09

Future work

I don't plan on spending a lot of time on this project, but some features that I still would like to implement:

  • Built in animations (orbit) for easy video recording
  • Proper handling of seperators (currently can be buggy)
  • Writting a custom shader - currently the points are really 2D squares. Also could probably get some more performance out of this
  • Adding some template pointclouds

Some screenshots

Menu screen:

menu

View + settings:

view

godot-pointcloud-viewer's People

Contributors

ksprugevics avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

godot-pointcloud-viewer's Issues

Coordinate separators

Currently it's possible to only have one separator symbol between coordinates. As far as I understand, it is a limitation of file.get_csv_line() but investigation is needed.

Also, currently the separator line input does not support the tab character and the space character is invisible when used. Something should be done to fix it.

Also, should probably add support for .csv file extension

Create custom shader for the pointcloud mesh

Currently for each label a point mesh is created on the fly. We can change the point size or color by using a simple material. The problem is that when we scale up the point size, it becomes more apparent that the points are actually 2D squares, which don't look as nice as circles would (probably).

This could be fixable by implementing a custom shader. Writing a shader could also improve performance.

Points as squares:
image

Simple orbit animation

The idea is to create a mechanic where the camera would rotate around a point, so that one could create video recordings of the pointcloud.
This point could be global (middle of the extent) to capture the whole pointcloud or local (placed by the user).

The user should be able to change the distance from the camera and the point, the rotation and speed of the rotation.

The user flow might look something like this:

  1. User places a local point in 3D space
  2. User selects which point he wants to use for rotation
  3. User changes the distance, camera rotation, rotation speed
  4. User presses some button to start the rotation
  5. User presses some button to stop the rotation

! We want to give the user the ability to hide the UI while the animation plays to give the ability to create clean video recordings

Launch from commandline with arguments

Add the ability to launch a pointcloud view directly from the commandline, without the need to go through the mainmenu UI. This would allow for users to integrate the viewer in their workflow.

The following args must be passed:

  • pointcloud path
  • separator
  • useLabels

Template pointclouds

In the main menu add a list of some simple pointclouds in case a user wants to check out the viewer before actually potentially spending time converting their own pointclouds to be opened.

Also, investigate whether removing the current example pointcloud files under Pointclouds/ directory reduces the build size

Example:
image

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.