Hello Blender Wizards!
I am seeking your help in trying to solve a GIS problem using Blender. Any help, pointers or general discussion related to this will be highly appreciated.
I am a Blender n00b but I am aware that Blender has a GIS plugin that helps in creating cityscapes by capturing terrain, buildings etc. from GIS maps. Suppose a city with 3D buildings, parks, lakes has been created. Now, I need to find all dwelling units from which a particular park/lake is visible.
GIS has something called a viewshed analysis which can be used to find area which will be visible from any given point. But that is the limitation, it just gives the view from a point, not a whole area.
My idea is to create stack dwelling units (apartments in high rises) as white objects having unique Object IDs in Blender and parks/lakes as colored light sources. Upon rendering, it is easy to see what dwelling units are lit up in which color. That is all good for visual analysis.
My question is, is there any way in Blender to get Object IDs of Objects that have non-white colors on their face? Or do I have to take the help of a Gaming Engine for this?
Looking forward to the responses. Cheers!
-- some donut guy
This is janky but will do the best I can. Maybe someone way smarter than me can find a more efficient way to do it.
I’m doing this demo on some park with Butt in Germany (OSM)
Blend file
Layout window
Node setup
Limitation
Line of sight is made from the ‘origin’ of (building) geometry (one-to-many).
I have tried the same method but in reverse and combine lines of sight (many-to-many) and iterate through them but can not get any result, ‘position node’ output is changed based on whatever you are using with it and two sets of point cloud hurts my head.
However, with this node setup if you model each room as separated object, it will still work but at room level instead of building level. Wowowee itsa very nice. Just no way to quickly get an ID that I know of.
Process
3.1 Buildings to analyze can be put in any collection or not at all.
3.2 If any potentially obstructing object is also an analyzing target from (3.1), it should be duplicate-link with Alt+D then ESC and put in the obstruction collection.
5.1 Browse for a node named ‘visibility’ I already set up.
5.2 Select target.
5.3 Set ray length (meter) long enough to reach your target.
5.4 Select any other buildings you want analyzed, with copy source in yellow, paste target in orange hilight. Ctrl+L to copy geo-node modifier to all of them.
EDIT: I forget to expose obstruction selector, you can select it inside geometry node window. I also got an idea for V2 which may solve issue of getting IDs list. Will try again tomorrow.
HAPPY ACCIDENT: you can also stack the modifier and select another target, spreadsheet will show another line of visibility attribute for each additional target in the stack.
Be careful though, too much and blender might crash.
I don’t recommend watching/doing the whole donut series, but you still need some familiarity to get around and understand more complex part of blender that other tutorials may teach you :|
Maybe you can cobble together something even better from these tutorial channels. Erindale, Chris P
Thank you very much. This gives me ample pointers to go out and learn.