The main content of inverse procedural modeling(IPM)
(1) Infer the split grammar of the building, seek the parameterized grammar rules and/or parameter values that yield the provided model.
(2) Convert a 3D architectural building into a procedural representation
1. Segmented and labeled components
The input to our approach is a 3D polygonal mesh that can be either manually or automatically segmented. Then, our method performs the component labeling.
1.1 Segmentation
The segmentation is performed by using an architectural segmentation algorithm that was proposed by ref [1].待补充
1.2 Component labeling
if labels are given by the segmentation approach, then
-compute the bounding box of each component and do a check of triangle counts and bounding box dimensions to ensure the labels are accurate
if no labels are assigned, then
- compare the convex hull of the components in addition to the previous properties to label similar components.
2. Split grammar definition
The core operation of the grammar is a volumetric split operation.
2.1 Split Tree
A split operation is described by a point dividing an enclosing box into octants and a selection of one of the octants for subsequent use.
A split operation is written as:
where pi is the node to split by a pivot point (vx, vy, vz), and octant q ∈ [1, 8] is extracted. The octant q defines the subvolume corresponding to node pj and it can be logically assigned to either a terminal or a nonterminal of the G.
2.2 Repetition Handling
后面再看。
2.3 Grammar
where G is the grammar, V is the set of non-terminals (i.e., root nodes of subtrees each representing a rule), Σ is the set of terminals (i.e., leaves of T), R is the collection of rules (i.e., split operations), and ω is a starting axiom (i.e., the root node p0).
3. Grammar extraction
3.1 Tree construction
Goal: organize the labeled input components into a top-down constructed split tree T.
Process:
- First, all components are placed in a list sorted by decreasing volume of their bounding boxes.
- Then, the root node p0 is created using the entire building bounding box
- Afterwards, the next largest component ci from the list is inserted into T. The insertion performs a top-down search to find the parent node Ppci with the tightest fitting bounding box to ci.
- This step repeats until all components are inserted.
3.2 Rule labeling
Goal: identify repeating and non-repeating subtrees – i.e., rules.
Method:
This approach is inspired by the tree matching algorithms of Apostolico and Galil [3] and consists of two steps:
- a top-down phase to ensure that similar subtrees are used for the same rule.
The top-down phase performs a level order comparison of same-label nodes. The comparison includes the node properties as well as the topology of the subtrees.
As for intermediate nodes that were created by the split operator to partition a parent box into a child box - we encode those branches as a "don't care path".
During this comparison, roots of subtrees with similar nodes are marked as repeating occurrences of the same label. If a subtree differs from its group, it is simply given a new
label.
- a bottom-up phase to extend subtrees of the same rule to include their parent nodes.
The bottom-up phase carries the labeling up the tree by synchronously comparing parents of same-label root nodes.
3.3 Pattern Discovery
Goal: identify the pattern of repetition of the grammar rules.
Method:
To explicitly discover patterns, we use a transformation space analysis similar to Stava et al[4].
- First, compute the pairwise distances along each of the x, y, and z axis between all subtree root nodes with same rule label.
- Then, search for the smallest distance that almost exactly divides all other distances along each axis.
Multiple occurrences of a rule are joined under one node.The smallest distances, the number of occurrences, and the global orientation are converted into the k-parameter pattern use of the subdivide operation (Eqn (3), Figure 4b). For other repetitive use of rules, the common ancestor is output as a rule (Eqn (2), Figure 4c)). Non-repeating and low-repetition subtrees are not considered a pattern and are output as separate rules (Figure 4a).
Eqn (3) is an application pattern of rule R1 to node pi subdivided into sx × sy × sz nodes. The optional vector d = [dx, dy, dz] further defines the pattern:
- for k = 1, it is the axis of repetition;
- for k = 2, it is the normal to the plane of repetition,
- and for k = 3, it is a triplet of Euler angles with respect to each axis.
As an example, the pairwise distances from the upper left window for Figure 4b would be (5,0), (10,0), (0,3), (5,3), (10,3), for upper middle window (5,0), (5,3), (0,3), (5,3), for upper right window: (10,3), (5,3), (0,3), for lower left window: (5,0), (10,0), and for lower middle window: (5,0). If we take the modulo of longer distances (10 modulo 5), the pattern distance is revealed as (5,3) and the frequency of repetition is 3x2x1 along each of the x,y,z axis. The result is the rule “R1(subdivide(pi ,3,2,1))”.
3.4 Grammar Exportation
This method is a declare-before-use rule ordering so that contained rules are listed before the containing rules.
Therefore, the output contains:
- rule definitions
- the non-repeating part of the grammar
Further, leaf nodes Σ contain actual geometry.
References:
[1] Demir I, Aliaga D G, Benes B. Coupled segmentation and similarity detection for architectural models[J]. ACM Transactions on Graphics (TOG), 2015, 34(4): 1-11.
[2] Demir I, Aliaga D G, Benes B. Proceduralization for editing 3d architectural models[C]//2016 Fourth International Conference on 3D Vision (3DV). IEEE, 2016: 194-202.
[3] A. Apostolico and Z. Galil, editors. Pattern Matching Algorithms. Oxford University Press, Oxford, UK, 199
[4] O. Stava, B. Benes, R. Mech, D. G. Aliaga, and P. Kristof. Inverse procedural modeling by automatic generation of L-systems. Comp. Graph. Forum, 29(2):665–674, 2010. 5