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!
Geometry node with raycast
EDIT: Removed rough description
After some fiddling… I have ran into a problem of how to raycast from many-to-many points.
Currently stuck to either boolean visible or not visible. In real life you would want a some form of how much you see it (float value).
Will get there eventually, this is a nice exercise.
EDIT again: Update with new top level comment
Thank you for the reply. I look forward to your model and in the meanwhile I’ll try to understand what you said with the help of keywords you mentioned.
Yep… this is tough. After reading through another of your comment, I’m not sure if geometry node alone can handle this.
The answer/solution will depends on how accurate or detailed you want for the result.
If you count any single point on a building that can see any amount of a park as a ‘pass’, that will be easy. But when you start to dice them down to each floor or room unit, then it will be a bit harder. If you also want to check how much of the park you can see from certain room too, it will be even harder. If you want to list all that, I think you will have to write python code. The complexity will scale with amount of rooms, buildings, parks.
If the amount of objects that you considered ‘lit up’ is possible to select and move into another collection by hand in reasonable time, then maybe geo node is enough. From your result, how many are those?
Spreadsheet window (geometry node workspace) can list vertices/edges/faces and other things with custom attribute they have (in this case, see a park or not see a park). It can also list name of object in a collection but I’m not sure if it can also display extra data alongside it though, it’s not the right tool for the job.