this post was submitted on 07 Oct 2023
19 points (100.0% liked)

Blender

2724 readers
4 users here now

A community for users of the awesome, open source, free, animation, modeling, procedural generating, sculpting, texturing, compositing, and rendering software; Blender.

Rules:

  1. Be nice
  2. Constructive Criticism only
  3. If a render is photo realistic, please provide a wireframe or clay render

founded 1 year ago
MODERATORS
 

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!

you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 1 points 1 year ago (1 children)

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.

[โ€“] [email protected] 1 points 1 year ago

Thank you for taking the time to try it out. For now just finding of any part of the building can see any part of the park should suffice.

As I mentioned in one of my other replies, I'm mainly a GIS person and a Blender n00b even though I've been calling myself that for a couple years now.

I saw some videos on geometry nodes and raycast nodes and my faith in Blender as a solution to the problem has become stronger. I'd never really seen the spreadsheets in Blender and mention of attributes makes me wonder if it is the same concept as in GIS where each feature (like object in Blender) has some properties associated with it. I have some exposure to Python, though not as part of Blender.

I think that a good academic paper and a tool could be developed out of it and it has underscored my conviction that the divide between gaming related tools and GIS is at the cusp of merging.

Maybe this will serve as my motivation to learn Blender though I want to skip the unnecessary parts for now and just want to learn stuff that will help me learn and tackle this problem. Maybe you could give me a broad roadmap of what to learn.

Also, please share a minimum working example of the thing that you tried if possible. If you are able to experiment further, I'll be delighted to learn.

Thanks again.