Surface Heatmap Based on location of Objects

I could still use some help on this… Maybe I’m not entirely understanding how the color range works… I’ve extracted the minimum values from the distance from point to geometry in an effort to assign it a color range based on how close each individual UV point is relative to the closest furniture object, but it still is only drawing the heatmap based on a single object. What am I missing here? Any help would be greatly appreciated.

heatmap test file.rvt (488 KB)
Heatmap_best guess.dyn (40.1 KB)

Out of interest what’s the figure circled when you only select 1 chair?

image

I’ve done something similar using a combination of Dynamo & QGIS
Mainly because the cluster heatmap graphics and colour ramps are built into QGIS- so it is very quick/easy

for some reason, the Autodesk screencast link might just give you a spinning wheel. The URL is https://autode.sk/2X6HN8A

1 Like

This number drops to 100, or more specifically the (# of points on the UV grid) * (# of furniture elements). I was hoping pulling the minimum of the list would give each UV point 1 value that could then be applied to a range and then have colors applied.

This looks interesting and potentially doable. I do not have any QGIS knowledge, would I be able to show this heatmap overlaid on a floor plan or would that have to be imaged and then composted?

Would be easier to tell what’s going on if you could show node previews after Geometry.DistanceTo. You should be pretty close though.

Here is all the node previews! Good to hear I’m getting close! Definition also attached.

Heatmap_best guess.dyn (40.1 KB)

Your list structure is still a little messy at Surface.PointAtParameter. I think the surface you’re using is a list so you have an extra level which may or may not be causing some problems. You also have to keep in mind that cross-product is going to give you a list of sublists, which is going to give you another level when checking DistanceTo.

Geometry.DistanceTo is giving you the wrong list structure for your surface UVs. Use list levels instead. You’re also using the values from all your locations rather than the minimums when you map your values and get the colors.


It’s not perfect yet, but it’s a lot closer.

And just FYI, I usually find it easier to use the points themselves rather than trying to map to a surface because you can just flatten the list of points and ignore any list structure or order.

2 Likes

Yes! This looks great… but for some reason I’m only getting the range in 1 direction… Trying to figure out what I’m doing wrong.

Make sure you check the box to keep the list structure as well.

1 Like

Yes, I think it is doable.
It’s a similar issue to generating it in Dynamo- the choice is basically vector information (such as coloured geometry) or raster (an image). It could be a numberic representation like this:

Working great! Thanks! I probably need to optimize and tweak but this a great foundation. Thanks so much!

3 Likes

Out of interest, how would you get this to work on two surfaces or on an ‘L’ shaped surface.
I had a play with it last night but with two surfaces it gave them both the same amount of dots so the smaller one was at a much higher resolution.
With the L shape it filled in the gap to make a rectangle.

My method: Place a single isocurve on the U and V parameter.
Get the length of the V curve, and offset the U curve by a range of 0 .. lengthOfVCurve .. #lengthOfVCurve/resolutionSpacing;
Intersect the curves with the surface, this will trim out any part of them which doesn’t hit on the surface.
Use a points at parameter method to space the points along the line leveraging the resolution spacing again.

Maybe this is interesting? It’s the best method I’ve found for heat maps in Revit…

Cheers,

Mark

I’ve used a bounding box before and a surface representing the entire scope of geometries. That way they’re all on a singular grid with equal spacing.

you guys are fantastic. i have taken your map and modifed it to try to simulate WIFI/WLAN coverage in my building.

Its getting close, but i am still missing the ability to show the “BEST” coverage where each Access Point is located as you can see in my image.

I have used the Layers as you mentioned, but still not working correctly. Any ideas how i can fix it ?

Ideally, i’d like to use absorption parameters in each wall Type to simulate the REAL coverage between rooms and vertical floors etc based on the distance away from each access point… but now i’m dreaming :wink:

Thanks a lot !!

WIFI-Heatmap.dyn (43.3 KB)

You’ll have to be more specific. Everything should be visible that you need. Make sure your list levels and structure are correct.