Orientation of Objects

Hi All,

I am currently working on a concept for a facade and just placing basic facade panels on for some detail in the visualisations.

What I am finding is that my standard panel (basic solids)  is not always orientated the way I would like.

I have attached some files to explain.

5_Min_Facade.dgn: uses referenced lines (AECOsim_BaseLines.dgn) to generate simple panels bases on number of bays. This generates Facade_Polygons.dgn. (here we can modify easily in AECOsim changing colours to be able to select different facade panel types)

This is referenced back into 5_Min_Facade.dgn and generates new polygons (based on different colours)

Then I was trying to apply just a typical basic facade panel (Basic_Facade.gnt).

What I am finding is we will need to somewhere define the orientation of the polygons as it is different to the base polygon that I used to generate the Basic_Facade.gnt. The result is that x and y flips on the rectangular extrusion and the depth becomes the width etc.

Maybe I have messed something up or created the gnt incorrectly. (Facade_Panel.dgn file used to create the gnt)

It would be great if I could use the gnt on any polygon independent of its orientation.

Any help would be appreciated

Thanks Wayne

5_Min_Facade.zip

Parents
  • Wayne,

    This is a challenging question. As you discovered, sense of orientation of polygons depends on the view point. The common convention is that when looking at a polygon, down its normal vector (the directional ray orthogonal to the polygon, assuming that it is a planar polygon, or close enough to planar for a meaningful average normal), then its vertices are oriented in a counter clockwise manner. Often, the first vertex is assumed at the bottom left corner. The normal points in the "visible" or outward facing direction of the polygon (following the right hand rule). If the polygon is viewed from its back, the normal points away from the viewer and its vertices are in clockwise orientation.

    One strategy would be to base a generated node type on this assumption, by defining the prototype placement polygon according to these rules. The GNT could then be constructed based on this convention.

    Usually, GC adheres to the rule by collecting polygons (e.g. when using ByPointGrid) in that manner, i.e. collecting point[0][0], point[1][0], point[1][1], point[0][1], etc. If the point grid's [0][0] indexed point is at the bottom left when looking at the point grid from "outside", then everything falls in place.

    The challenge is when the rules generating data are not known, e.g. when the orientation is not known of the polygons that are included in a GC model. Or, alternatively, as you desire, to apply the GNT on any polygon. Then strategies to sort the data based on what we may safely assume about them need to be devised. If the orientation of façade polygons is not known or is known to be of type "any", a point on the inside of the building may provide the missing information. Similarly, if a façade module is sensitive to bottom/top orientation, polygon vertices could be sorted by their Z-value, or an up-vector (Direction node, or baseCS.ZDirection) could be included as input. (This is easier than figuring out whether any one polygon is pointing toward the inside or the outside of a building, if all we know is the polygon.)

    If we know even less, then there is more work required to make sense of it all. Obviously, that then depends very much on the specific project context. If we do not generate that knowledge ourselves, then we need to request it from our collaborators.

    HTH,

         Volker

       

  • P.S.: Here is a short script illustrating how Polygon.ByPointGrid collects the points in a point grid into the polygons' vertex lists.

    labeledPolygonByPointGrid.zip

       

Reply Children
No Data