Problem Specification
In X-Plane 9, you can create a draped polygon by specifying a polygonal outline in a DSF and a .pol text file with the properties for the polygon. The .pol file references a texture, and optionally applies a physical surface to the polygon. If a physical surface is applied, it acts “over” the base terrain. In this way, the image of a concrete pad (on top of base mesh grass) can act like concrete, with correct physics wherever the plane drives.
There is one limitation with this system: if the author places a large orthophoto (showing heterogeneous terrain) into the scenery, the orthophoto (whether via a .pol or .ter file) can have only one physical property. Thus an airport orthophoto must be “all grass” or “all concrete”.
There is a work-around for this problem, but it is very expensive: an author can place multiple polygons using the same orthophoto texture and shape each polygon to the distinct regions. So the author would put one polygon in place for the whole orthophoto, then a second polygon for only the concrete. Two .pol files reference separate surfaces but one texture.
While X-Plane will efficiently load the texture only once, the resulting polygon mesh is particularly inefficient, because:
- X-Plane will dutifully clip the top polygon visually, even though there is no need to do so and
- The concrete areas must be drawn twice (once for the bottom and once for the top). To avoid over-draw, the bottom polygon must be clipped as well, which makes even more triangles.
The Proposed Fix
The proposed fix is a new .pol attribute, something like “NO_DRAW”. When present, the polygon would only apply physical properties to the mesh, but not apply any paint. Under this scenario the author would:
- Set the physical property of the orthophoto to the “lowest priority” surface, typically grass or dirt.
- Use no-draw, concrete-surface polygons to “annotate” the hard physical areas on top of the orthophoto.
X-Plane would perform no clipping on the bottom orthophoto, for maximum mesh efficiency, and would have no overdraw since the texture is only drawn once.