Sep
1
2012

XYZ Point Cloud Data Viewer (DX11)

Latest version is here >> Check new page here: http://unitycoder.com/blog/2014/03/19/asset-store-point-cloud-viewer-unity/

Quick test for reading XYZ point cloud data and displaying it using DX11 features.

Current info:
– 1 million points works fine (60fps with no update loop, 20fps with pos.x+1 for each point in a full for loop)
– >2 million points hangs the whole computer, need to power off.. (it seems to draw it first but then hangs after few secs..)
– Dragon scan data from: http://graphics.stanford.edu/data/3Dscanrep/ (only 1m points shown in the screenshot above..)
– ToDo: Would it help to split the rendering to multiple scripts? Since >2 million in 1 script hangs it..(?)
– Actually you only get 1 drawcall, I had some guitext enabled on that screenshot..

Update#1:
– New record: 3.6million points(mouseorbit makes no difference, +60fps) *Image#3

Update#2:
– 20 million points!! (~55fps)
– New record: 40 million points!! (~34fps) *screenshot coming later..
– 45 or 50 million points, doesnt crash, but only shows few points?? (~1-3fps)
– Now can use laser scanner point intensity or RGB colors for the points (but it takes more memory, 40million points says out of memory, 20mil works..)
– Using geforce gtx580 3gb

Webplayer:
file size too big..(if include the points)

Image#2: With 50% transparency & 8x antialias, and MouseOrbit (+60fps to orbit around the point cloud)

Image#3: Showing all of the 3.6million points

Image#4 (29.01.2014): 2.2million points with vsync and without:

point_cloud_before_1  point_cloud_after_1

Image#5: PLY (Ascii) importer works
sample data “Vellum manuscript” from  http://graphics.stanford.edu/data/3Dscanrep/ , converted to PLY ascii with http://meshlab.sourceforge.net/  (2.155.617 points)

unity_point_cloud_ply_file_import_1


35 Comments + Add Comment

  • Awesome! If you feel like sharing any of that code I’d love to play with it.

  • I like this!
    How do you draw a point that doesn’t change size with distance from camera?

    • Hmm..interesting point, No idea actually..it just works.. : )

  • Cool, now that Unity3d 4 i released, can you build a webplayer? Also it wold be fun to play with the source to have a load some other pointclouds as well. Regards

    • Oh yes.. I’ll post some 4.0 webplayer soon, just cannot add real xyz files with it (even the 500k points file is 16mb), maybe just some random or procedural points..

  • looking forward to be able to download and play with it…just discovered all the precious sources you make available..regards

  • Using a different system (not dx11): 162.5million points is ~5fps in editor..
    **Note: this one is wrong information, they were instantiated copies, so thats why it worked so fast..

  • any chances for a version based on OpenGL ?
    great stuff…

  • what about the possibility of loading also color or intensity? what do i have to change? which is the txt file format? RGB is 0-255 o 0-1?
    thanks

    • Current supported text line format is: X Y Z
      and in the color test version supports: X Y Z R G B
      (if you have purchased the current version email me to get the RGB test version.
      From that its easy to adjust the color or intensity value importing.
      Shader uses 0-1 color values, so need to convert the 0-255 to 0-1)

      • thank you.
        I bought it in july, and I would like to try also the color

      • Thank you Mgear. I would like to have the test versione for RGB.
        I am new of this blog. How can i send you my mail?

  • Friend, where I find “Test version available”? I need this solution in my work, but I need to teste first…

    • Hi, no test version available..
      Most likely it wont work straight from the packet without you doing modifications to the sources.

      (for example, if you have over 3-5 million points, you will need to split the point cloud data first, then modify the loader to read the splitted files 1 by 1..)

      • I work in a steel industry and we are a study to turn ore’s piles into 3D models. There is the possibility of collecting points clouds with 2D radars. The dificult is to buy your product without testing before…

        • What will you do with the point clouds?
          Just want to view them, or have some other functions for why it needs to be in unity..?

          (because there are many other point cloud viewers available.. this is just a small test script)

          • this is the point: now we are study the possibilities. Because this we need a test. Onde possibility is use Unity like a intaface.

        • If you will have total 30-40 million or more points, unity is not suitable.. (or ~20 million with rgb colors max.). Loading/parsing time is also slow from text file, around few seconds per 1 million points.

          Also with other tools it will be more easier to measure, add 3D models, enable stereo 3d etc.

          We tried using unity with point clouds, but eventually used the bentley viewer, it can load pretty much unlimited points, 100m points loads almost instantly, etc etc..

  • geometry shaders are fun!!! http://www.youtube.com/watch?v=X-4K0tzk7dg :DDD

  • Hi what line of code to add for .ply or .stl import?

    • There is no importer for those formats (yet at least), should convert them to XYZ or XYZRGB.

      Or to make custom importer, just feed the points to those point into those arrays where it currently reads them in..

      In the next version I have support for these ascii formats: XYZ, XYZRGB, ASC, CGO, CATIA ASC

      • .PLY (ascii) is also supported in next version

  • Hey, is it possible to change the point size in your plugin? When are you planning to make the plugin available again? I’m currently using unity’s particle system to render point clouds, but it’s just too slow for my purposes.

    • point size only seems to work without DX11,
      sample shader for non-dx11 point clouds is included in the package (its using unity meshes).
      (just finalizing the documentation and asset store images..trying to submit it there within 1-2 weeks)

      • Any chance I can get it earlier through the payment system you used to have on the website? The solution I’m using is fine for small point clouds (< 100k points), but it's just too slow for the point clouds I'm trying now. I'm using this for a research project with a deadline in 3 weeks, so I would like to ask if it was possible to get access to your plugin before then, as soon as possible.

        Thanks 🙂

        • added the old version purchase link back, that works fine for that amount, but requires DX11.

          • Thanks! I’ll make sure I update it once it’s released in the asset store.

  • Hey, is there a source version or a demo available? I have not been able to find anything in your site.

    Do you have a Unity Store handle?

    Thanks,
    r

    • No demo at the moment, i’ll put some webplayer demo online for the asset store at least.
      the previous dx11 source download is removed since the new version is coming shortly.

      my assetstore (i’ll post here more info when its submitted and if/when accepted)
      https://www.assetstore.unity3d.com/#/search/mgear

  • Submitted to assetstore, this new new post will be used for the viewer in future:
    http://unitycoder.com/blog/2014/03/19/asset-store-point-cloud-viewer-unity/

  • How can I transfer my license from one machine to another? I purchased the viewer for a machine that could not dosplay the data (DX9). I just got a new machine and want to transfer the seat to a machine that can use it.

    Thank you.

    • That is the asset store default license note, there is no “machine lock” or anything, so just move it there 🙂

  • Hi, I am having some trouble with Point Cloud 2 Mesh conversion.

    I can get a .las file converted, but I need to use the meshpointsize texture, but changing the point size doesn’t seem to do much? I assume I need to disable DX11 or something?

    Also, not all of my point cloud data is being imported. It seems to be cropped in the Y axis, chopping off the top of my point cloud?

    • Yes, if you use the regural PointCloudColorsMeshPointSize.shader, it doesnt work in DX11 more (you could check if thats the issue by switching to DX9 mode temporarily).

      As for missing points, I haven’t seen that before.. are there any errors in console?
      Does it print the correct point amount in console?

      But try first using the latest DX11 quad or tri shaders, because the older versions had bug that points didnt display, if the transform was moved or rotated.

      see the Materials/Shaders/Extras folder and follow that link, and save them from there.

Leave a comment

@unitycoder_com

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.