Sightlines and View Obstructions

The design of performing arts center’s, sporting venues, and other places of spectacle requires the layout of a large number of seats with the hope that most, if not all spectators will have an unobstructed view of the event.  Equations can be used to calculate a rake that will limit one person’s head of hair from blocking another person’s view, but it is difficult to know how well this value is working for every seat.

We are developing a Grasshopper definition that takes any potential point of view and simulates what areas on the stage would be blocked from view.  A slider controls which seat is analyzed and Rhino’s camera orientation and location are also adjusted to the selected seat.  The definition can also be used to compare the quality of view from all of the seats by coloring the heads according to which ones have the clearest view versus those with the highest number of obstructions.

The goal is to be able to use the definition as a feedback tool for creating parametric iterations of seating layouts within Grasshopper.  It is also capable of analyzing existing seating layouts using the center location of each seat, allowing consultant provided options to be more easily compared.

This definition is still under develop so please send feedback related to how you might imagine something like this working, what you’d like it to be able to do, or what information is important.

The section of the definition that lays out the seating centerlines can be downloaded: [download id=”11″].  (This definition was written in Grasshopper 0.7.0030).  The other parts of the definition are currently not available for download.

Obligatory disclaimer: the author does not guarantee that these parametric models are bug-free or that they will solve all of your problems.  If you find bugs or have suggestions for improvements, please let us know.


  • Charles C Vincent

    This is a very interesting piece of code!
    1. Lisf row and seat number per verification;
    2. Numerical evaluation (something such as emiting particles from observer towards stage and computing how many particles arrive);
    3. Exporting to excel (or any spreadsheet) for reporting.

  • Tim

    GREAT definition – thanks>

    Is there a way of;
    a) putting seats in this?
    b) putting stepped seating rather than sloped?


  • scrawford


    1. Rows and seat numbers will eventually be included. The problem right now is the ordering difference between GH generated seats or seat imported into GH. I think it’ll have to be some kind of point sort operation

    2. Your number two suggestion is actually what this does.

    3. I like the idea of exporting to excel. I already have an excel export component set up so I’ll have to give that a try.

    a) Seating locations can either be generated in GH or a set of points can be imported from an existing seating configuration. There is a theater project that I did an analysis on and I’m hoping to get that example up soon.

    b) Stepped seating vs. sloped only seems like a difference in floor treatment which this definition isn’t even bothering to generate. The necessary information is there so it shouldn’t be hard.

  • Marc Syp

    Good concept, hope you don’t mind if I build my own version. A very interesting addition will be to add a Galapagos solver to rearrange seating positions to minimize obstructions. I’ll post results when I’ve finished.


    • scrawford

      Unfortunately we haven’t been able to work on this recently due to work on other projects, but I’d be interested to see the direction you take it.


  • Saabudin Rathod

    This is brilliant. I was writing pseudocode to develop something similar for the LEED Views credit. The idea was to emit rays from spheres on each grid node and the ones which hit the exterior glazing surfaces change color to indicate View vs. No View. For LEED purposes, these would be summed to obtain percentage of space with Views. What do you think? Is this a good approach? Has someone already put something like this together? Thanks!

  • scrawford


    The approach that you’re thinking about is similar to the process that we have set up. It seems that with your approach of analyzing a grid of points that you’d be able to generate a compelling false color mesh, depicting view quality rather than simply ending up with an overall percentage. Even though LEED might not require that level of analysis I would think that your tool would be more beneficial to designers with that additional functionality.

    Good luck

  • Mark

    wanted to give this script a try, but seems like the link is broken.
    would you be able to relink/ update?

    thank you

    • scrawford

      Hi Mark,

      Thanks for letting us know that link was down. I’ve fixed the link, but am unsure whether or not this tool will still function with the current version of Grasshopper. Good luck.