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!

  • g6d3np81@kbin.social
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    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

    • DontNoodlesOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      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.

      • g6d3np81@kbin.social
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        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.

        • DontNoodlesOP
          link
          fedilink
          arrow-up
          1
          ·
          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.