Friday, March 16, 2012

Interactive Terrain Shaping - Creating a Pivot Plane

Today I wanted to jump back into the working elements of Interactive Terrain Shaping by looking at the Pivot Plane commands; specifically the Create Downward Pivot Plane command.

As far as I can tell, this command is designed to "bend" a bounded plane creating a second slope.

But as we've seen with other commands, this happens in a series of operations and "layers" and I've found it helpful to try to pick these things apart to better understand what's going on.  When you launch the command you are asked for:

  1. A grid to modify (we'll call this Plane A)
  2. A key point on the grid you selected to be modified
  3. A slope direction
  4. A slope value
  5. The boundary of a new plane
Here's what happens:

  • A new bounded flat plane is created (we'll call this Plane B) which passes through the key point at the slope and direction you've specified.
  • Plane B is dynamically tied to Plane A at the key point.  If you raise or lower Plane A, Plane B will move with it.  You cannot raise or lower plane B manually.
  • A new grid is created by adding Plane B to Plane A using the Bottom Envelope command.
  • Also, a new plane is created which is sloped to match Plane B but is bounded within the feature line you selected as prompt #5 above.  As of right now, I don't know what this plane is for or why it is created, but maybe I'll figure that out or have it explained to me another day.  Interestingly, this plane is the "live" plane that you edit if you want to change the slope of Plane B.  If you use the same feature line that bounded to the original plane, then naturally this plane looks exactly like Plane B.

1 comment:

  1. Let me try to explain the idea behind the intermediate planes that you are observing. I have omitted some details in the description of operations in the user guide. The exact sequence of operations for "Downward pivot plane" is as follows:
    1. Create a new bounded plane Plane B that is pivoted to plane A.
    2. Use "Extend Bounds" to extend the plane B by the boundary of plane A. Call this resulting plane Plane BA.
    3. Use "Extend Bounds" to extend the plane A by boundary of Plane B. Call the resulting plane Plane AB.
    4. Use "Bottom Envelope" command to combine plane AB with plane BA. This is the result.

    Steps 2 and 3 are necessary to create planes with the same extents so that they intersect completely in step 4. These steps are not necessary if the two planes have the same boundary, but we perform these operations consistently for all cases.

    The idea is to automatically create correct intersections without having the user worry about exact boundaries and interesection edges. Try this. Create two bounded planes (with different boundaries overlapping partially) flowing in opposite directions away from each other and then combine them using "Bottom Envelop" command. The partial intesections will make the result ugly. Instead, use extend bounds as described in the steps to create two extended grids and then combine them. The result will be much nicer.

    These things will be a lot more clear when we add an interface to show behind-the-scene operations. I should probably post a video to illustrate some of these concepts.