Hello everyone.

The Mixed Reality Forums here are no longer being used or maintained.

There are a few other places we would like to direct you to for support, both from Microsoft and from the community.

The first way we want to connect with you is our mixed reality developer program, which you can sign up for at https://aka.ms/IWantMR.

For technical questions, please use Stack Overflow, and tag your questions using either hololens or windows-mixed-reality.

If you want to join in discussions, please do so in the HoloDevelopers Slack, which you can join by going to https://aka.ms/holodevelopers, or in our Microsoft Tech Communities forums at https://techcommunity.microsoft.com/t5/mixed-reality/ct-p/MicrosoftMixedReality.

And always feel free to hit us up on Twitter @MxdRealityDev.
Options

What is the most effective way to render a point cloud?

MmskrzynMmskrzyn
edited May 2016 in Questions And Answers

I'm trying to render a somewhat large point cloud on the HoloLens (~ five million points) and I'm having trouble with unwanted (but expected) aliasing when zooming in.

I've tried using a geometry shader to produce a billboard for each point - to fill in the space between them - but its incredibly slow compared to just using a vertex shader to color each pixel (x10 slower).

Right now I'm in the process of trying to determine if I can use an image effect shader to draw a circle at each point based off of the depth texture and main texture provided by the camera, and I'm running into layering issues (as well as having a hard time trying to merge the two textures appropriately).

Is there an effective way to represent point cloud data that I may be unaware of?

Answers

  • Options

    5 million points is going to be hard, given the GPU.

    My lazy math calculation (5Mil * 16bits * 3 [position only] /1024/1024) puts the data set at ~230 Megabytes. If you have color, double that. I'm not sure of the VRAM limit, but it's probably not large like your average(?) desktop. Also, pushing that much data across the bus will probably saturate it and drain the battery rather fast.

    If you can't pull it off on a phone, it's going to be similarly difficult on HoloLens. In general I think you're taking reasonable approaches, you just have to set your expectations differently.

    Aliasing is going to be tough, again, it eats your framerate if you try an enable it via SSAA or whatever. You could try analytically, but that may be intractable given your problem (at least way beyond me).

    I'm not sure what you mean by 'draw a circle at each point'?

    I can say the fill rate is very limiting, rendering geometry that covers every pixel of the view is going to kill performance quick.

    Don't let me discourage you though! :smiley: Necissity is the mother of invention.

  • Options
    edited May 2016

    With 5mil points you definitely aren't going to be able to position individual objects/particles at each point. I've tried placing a particle at each point for 120k points and it chugged on a 980 TI video card with a vive.

    Similarly I've placed cubes/quads/spheres at each tracked pixel from the kinectv2 and above 100k+ objects it really starts to chug.

    This is the most performant set of dx11 worldspace pointcloud shaders I've found, 40mil+ points is performant on a desktop PC with it, but you'd still have to figure out how to enlarge the points: https://www.assetstore.unity3d.com/en/#!/content/16019

Sign In or Register to comment.