GithubHelp home page GithubHelp logo

doxel-viewer's Introduction

doxel-viewer

Pointcloud viewer for https://github.com/doxel/doxel-angular

Actually a wrapper for Potree to display openMVG pointclouds featuring:

  • thumbnails bar with original images
  • smooth camera transitions between estimated camera locations (while scrolling the thumbs bar or in play mode)
  • relative camera positioning (click on the current thumbnail to switch between relative and original camera position)
  • play mode, to move the camera along all the estimated camera locations (or relatively: you can move the camera during or before the animation)
  • camera frustum display
  • undistorted image overlay
  • show location on map from exif GPS info

Standalone installation (for testing and demonstration purposes)

git clone --recursive https://github.com/doxel/doxel-viewer.git
cd doxel-viewer
npm install
bower install
gulp

doxel-viewer's People

Contributors

bugdanov avatar luxigo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

doxel-viewer's Issues

rotation center should stay at original camera position

If you select a pose and use the mousewheel to go backward then rotate, the rotation center is still the original camera position. However if you switch to the next pose and rotate, the rotation center is now the webgl camera position.

Define new camera paths

It would be nice to have to allow the user to define camera paths or to define automatically camera paths.

For example between the nearest poses instead of sequential poses, or rotating around the "center"(s) of the cloud (where the density is higher)

The potree viewer we use is using three.js and three.js controls, and if we where moving the scene camera, it would jump back where it was set by the three.js controls when using the associated input device.

Thats why new camera position/rotation must be reflected in three.js controls internal variables (we had to study the three.js controls code for this - we do not support every three.js controls yet)

You can look at how it's done today for doxel-viewer, where we interpolate the camera position/rotation between poses while scrolling the images list or when selecting a given thumbnail, or when using the play button.

From here and below

* @method viewer.showPose

In the viewer there is always a pose selected (thumbnail). It is the current integer pose. We interpolate the camera pose between the integer poses, call it the interpolated pose.

The user is always able to move or rotate the camera using the three.js controls while we move the camera.

To allow this we compute the relative translation/rotation between the current pose position/rotation and the current camera position/rotation, then we apply this relative translation/rotation when moving the camera on the path (which in our case is the path between poses - for the play and scroll modes)

However it would also be possible (but less nice) to simply disable the three.js controls while moving the camera

Fixed pose-relative camera position / rotation while scrolling or clicking thumbnails

Ideally the rotation/translation relative to the currently selected pose/thumbnail should be conserved while moving the camera using the scrollbar or clicking on another thumbnail

Clicking a second time on the thumbnail could cancel the relative rotation/translation

Actually, using the scrollbar after moving away from the camera pose associated to the selected thumbnail, make the camera jump to that position.

replace demo data by user's own data

Hi, first of all, thank you for this great tool! I successfully got the demo running. I wonder if you have any document showing how to make it run with user's own data. I have the point cloud and the camera pos in .nvm file generated by VisualSFM. Then I have used Potree Converter and Potree to display the point cloud from web browser. How did you convert those data to display in doxel viewer?

Here are the data I have:

  1. .ply file for the point cloud (generated by Potree Converter)
  2. all image sequences
  3. camera pos ( [x y z] for position and [w q p r] for Quaternion) for each image

I suppose you use example/viewer/frustums.ply for recording all camera pos. Did you use any tool to generate this file?

Really appreciate for any help!

Uncaught ReferenceError: RecordRTC is not defined

When testing the record button on the master branch with "gulp" (and connect) pressing on the rec button I have:

Uncaught ReferenceError: RecordRTC is not defined
at Potree.Viewer.viewer.rec (potree.html:135)
at HTMLAnchorElement. (viewer.html?src=example:74)

But it works on the doxel branch through https://doxel.org/doxel/viewer (the button is hidden, reload the page with localStorage.rec=1)

Loging in with facebook doesn't work

Tryin to log in with Facebook auth gives the following error message:

App Not Setup: This app is still in development mode, and you don't have access to it. Switch to a registered test user or ask an app admin for permissions.

As seen in the attached image:

screen shot 2018-08-09 at 13 40 12

Better record mode

Recording the WebGL canvas using RecordRTC and compressing to webm on the fly leads to skipped frames and jerky videos.

A smoother approach is to save the canvas.toDataUrl() blobs at three.js rendering time (for later compression) before requesting the next frame.

It could be done server side using electron, to generate preview video or pictures to be displayed on social medias when posting the cloud's url

Camera frustum and image ontop of the pointcloud.

We need:

  • one button to show the camera frustum/s (the button have 3 positions: no frustrums, one camera frustrum, all visible cameras frustums. )
  • and one button to show the image on top of the pointcloud

Depth of field effect

it would be nice to have some GLSL shader implementing a "depth of field" effect, to blur or hide or color the points that are closer or farther than a plane or volume perpendicular to the camera axis (or a spheric wall around the camera position)

loadImage is not defined in doxel-viewer.js

I followed the installation instruction. But the the viewer page (http://localhost/doxel-viewer/viewer.html) only shows the camera and the play button. Images and point clouds are all missing. Here is the error message from the console:

Uncaught ReferenceError: loadImage is not defined at doxel-viewer.js:40
Uncaught TypeError: Cannot set property 'segmentURL' of undefined at config.js:1
GET http://localhost/images/ajax-loader.gif net::ERR_CONNECTION_REFUSED

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.