Point Cloud Plugin

Excellent ! Embedded! Yes am on 4.25. Thanks.

Since upgrading to 4.25 I’ve had issues with points clipping through other points and looking glitchy, especially in motion. My settings appear to be the same as before, and I’ve tried from an empty project too with no luck. Is this a known bug?

Hi,

Thanks for the report!

It could be related to an issue we’ve fixed post 4.25 release. Once we get the current branch stabilized I will make an experimental build and send you the link for testing - hopefully, later this week. How does that sound? :slight_smile:

Hi,
I have worked with your plugin before in 4.24. Now I use 4.25. I try to get a consistent look of a point cloud in VR with different parameters in the settings.

Looks good in Editor:

In VR:

My Settings:

Looks like not all nodes are rendering the same way. Any suggestions how to handle this?

Great, thanks!

Hi @dead_rabits

There were several changes made to the LOD system in 4.25 version. They will be especially noticeable if you used multiple cloud assets within the level. The old system would allocate a separate point budget per-component, while the new one uses a single, global budget. This allows us to provide a fixed(-ish) level of performance irrespective of the number of assets used.

The LOD system is controlled by the below cvars:


r.LidarPointBudget

Determines the maximum number of visible points on the screen. Higher values will produce better image quality but will require faster hardware.


r.LidarScreenCenterImportance

Determines the preference towards selecting nodes closer to the screen center. Useful for VR, where edge vision is blurred anyway. 0 to disable.


r.LidarBaseLODImportance

Determines the importance of selecting at least the base LOD of far assets. Increase it, if you’re experiencing actor ‘popping’. 0 to use a purely screensize-driven algorithm.

Regarding the differences between VR and Editor
I believe this is caused by the difference between the FOVs of the VR and your monitor. This will cause the LOD system to select the points differently. If you tweak the cvars listed above, you should be able to get it to display in good quality regardless of the screen used :slight_smile:

If you still experience issues, let me know.

Hi, great plugin.
I have one question.

If I wanted to stream the camera data to point cloud component in realtime, would that be possible or is the step of asset creation a requirement?
A case example would be for a moving camera to track a room and it’s objects, even when the objects move around.

Thanks.

Hi and thanks!

You can create and modify the assets at runtime - including setting / inserting points per-frame. However, in those scenarios, the LOD system will usually bottleneck your update performance.
We are working on providing some optimizations for more dynamic handling of the data. In the meantime, there is a workaround, which seemed to have worked for other users.

  • In the Project Settings, set MaxBucketSize to 1 billion
  • Create a new cloud and initialize its bounds to a very large value - 1,000,000 in each direction should do it

Those two steps will effectively disable the LOD system, improving the update performance.
Note, however, that once the number of points contained by the asset starts to go past what your GPU can comfortably handle, you will run into runtime performance issues.

Thanks for the reply !

Hi all. Hi @, great news that point clouds will be improved in Unreal going forward. Like @JJTook I am attempting to render a Cinematic flythrough of a point cloud. I’ve worked with pointcloud for 14 years and create flythroughs like this - Vogel R3D point cloud fly-through - YouTube - (btw I’ve left Plowman Craven now).

Currently I am using 4.2.5, and using the Beta plugin. Point cloud is .LAS and I also have . PTS files. I am trying to get as many points in as possible, this is not for realtime or VR.

I have noticed the following which means that if trying to flythrough the point cloud with a camera it loses fidelity…

You must have the entire point cloud fully visible in your Viewport view (either Top, Left, Right, Perspective etc) in order to have all the points visible in your Cinecamera. If the point cloud is out of your Viewport, I believe the LOD kicks in and the point cloud disappears from the Camera view, losing points and becomes patchy. You can test this by setting up a camera looking at the point cloud, and then in your viewport, move the point cloud in and out of view…you will see in the camera that it disappears and reappears.

Generally I am working with huge point cloud data sets, and want to try and get as much in to render without it disappearing. Are there specific settings I can use?

Hi @ !

Thanks! It worked and it works with overlap too! However, collisions are “only” superficial, so it won’t overlap with objects “inside” the shapes. Do you think if there would be a possibility of adding some kind of “volumetric” colliders?

Another suggestions I would try to do is that I think it would be very interesting to maintain a constant density of points on the screen, deleting or hidding the excess, and generating new points between every two points (and assingning it a color between the colors of both points), when the density is still below the value specified. :rolleyes:

Thanks and regards!

In that case, I suggest you use GetPointsInBox / GetPointsInSphere function and check if they return > 0 points.
There are versions, which you can call directly on the point cloud asset or the point cloud component - the component’s version also accounts for its transform.

I forgot to add simplified versions - HasPointsInBox / HasPointsInSphere - for 4.25 release :o

Thanks for the suggestion. I started looking into that a while ago, however, it’s not as easy as it sounds :wink:
Maybe at some point, though.

Hi, when I export a fly-through video there are very few points visible compared to the editor (30 million points), and also the point size seems to have increased a lot. Any ideas what I’m doing wrong?

Also, has the point budget been removed in the latest built-in version? How can I change the LODs so the furthest points are always visible?


Hi.

It looks like the LOD manager is only given a reduced point budget to render within. It may not be disabling the main camera when you do a recording.
The larger size of the points is to offset the smaller amount of points available - to better fill the gaps.

As a test, could you try to position/orient the camera in the main viewport somewhere, where there is no point cloud visible, then start the video render again?

Thanks for the report

It’s been re-designed. Instead of allocating a separate budget per-component, there is a global budget assigned for all visible instances now. This allows for a much more stable render time.

The LOD system is controlled by the below cvars:


r.LidarPointBudget

Determines the maximum number of visible points on the screen. Higher values will produce better image quality but will require faster hardware.


r.LidarScreenCenterImportance

Determines the preference towards selecting nodes closer to the screen center. Useful for VR, where edge vision is blurred anyway. 0 to disable.


r.LidarBaseLODImportance

Determines the importance of selecting at least the base LOD of far assets. Increase it, if you’re experiencing actor ‘popping’. 0 to use a purely screensize-driven algorithm.

Hey, I just repositioned the camera away from the point cloud in the main viewport, and now there are hardly any points at all in the render!

@ I recorded a quick screengrab showing how moving the camera in the main viewport affects the amount of points visible in the fly-through camera -

Thanks, that was super helpful!

It seems I got it the way around - it’s the Cine camera not being provided any budget, therefore, as it goes further away from the main one, it drops the quality. Added to the list :slight_smile:

Not sure about any quick workarounds, however. One thing that I can think of would be to position the main camera so that it’s looking down on the whole site (to avoid culling), drop the point cloud actor’s MinScreenSpace to 0 (under Performance), and up the point budget to something very high - like 10M+.

Where do I find these cvars to edit? Sorry, I’m very new to Unreal!

That’s fine - we all learn :slight_smile:

Cvar = Console Variable

The easiest way to use the cvars would probably be by pressing the ` (tilde) key when the focus is in the viewport - this should open a small text prompt at the bottom. Just start typing the cvar there, you should be able to use auto-completion by pressing TAB.

For example


r.LidarPointBudget 3000000

Would set the budget to 3M