The aim of this project, is to explore a procedural generation method based on rules, in order to generate three-dimensional models of buildings, automatically just from reading a set of rules defined by the user.
3. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Definici´o
Definici´o
S´on algorismes que es basen en:
Generaci´o de contingut automatitzada.
Abstracci´o de caracter´ıstiques del que es vol generar.
Algorismes configurables(par`ametres).
Roger Hernando Creaci´o procedural d’edificis
4. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Avantatges
Avantatges
Gran flexibilitat.
Proces de creaci´o de contingut m´es `agil.
Ajut als dissenyadors.
Reducci´o dels costos de desenvolupament.
Reducci´o dels costos mediambientals
Roger Hernando Creaci´o procedural d’edificis
5. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Grans entorns
Creaci´o de grans entorns
Gran quantitat de models.
Cohesi´o entre models.
Generaci´o d’entorns urbans:
Edificis
Carrers
Roger Hernando Creaci´o procedural d’edificis
6. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Definici´o objectiu
Objectiu
Sistema procedural de generaci´o d’edificis basat en l’us de
gram`atiques.
Parser.
Generador
Visualitzador.
Roger Hernando Creaci´o procedural d’edificis
8. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
El Llenguatge(1)
Especifica gram`atiques CGA(Wonka & M¨uller)
Considera formes com a variables.
Regles de producci´o de diferents tipus.
Prioritats entre regles.
Regles amb probabilitat.
Roger Hernando Creaci´o procedural d’edificis
9. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
El Llenguatge(2)
/*Definici´o de variables*/
VARS:
type 1
//Definici´o de prioritat
PRIORITY 1:
1 lot --> Subdiv(Z, z_dim*rand(0.3, 0.5), 1r) {fac| side}
2 side
--> Subdiv(X, x_dim*rand(0.2, 0.6), 1r){side|}:0.5
--> Subdiv(X, 1r, x_dim*rand(0.2, 0.6)){|side}:0.5
3 side
--> S(x_dim, y_dim, z_dim*rand(0.4, 1)) fac : 0.5
--> S(x_dim, y_dim*rand(0.2, 0.9), z_dim*rand(0.4, 1))
fac : 0.3
--> : 0.2
4 fac : (type == 1) --> I("cube")
5 fac : (type == 2) --> I("cylinder")
Roger Hernando Creaci´o procedural d’edificis
10. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
Regles
idregla Spredecessor : Caplic → Ssuccesor : p
Classificaci´o segons Ssuccesor .
Regles de substituci´o.
Regles de separaci´o
Regles de repetici´o.
Regles de separaci´o de components.
Roger Hernando Creaci´o procedural d’edificis
11. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
Regles de substituci´o
1 A --> [T(0,0,6)S(8,10,18)I("cube")] B
2 B --> T(6,0,0)S(7,13,18)I("cube") C
3 C --> T(0,0,16)S(8,15,8)I("cylinder")
Roger Hernando Creaci´o procedural d’edificis
12. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
Regles de separaci´o
1 A --> Subdiv(X, x_dim*rand(0.2, 0.6), 1r, 2r){B||C}
2 B --> I("cube")
3 C --> I("pyramid.ply")
Roger Hernando Creaci´o procedural d’edificis
13. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
Regles de repetici´o
1 A --> Repeat(XYZ, 3, 3, 3){B}
2 B --> I("monkey.ply")
Roger Hernando Creaci´o procedural d’edificis
14. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Llenguatge
Regles de separaci´o de components
1 A --> Comp(edges){B}
2 B : (x_dim > 0)--> S(x_dim, 1, 1) I("cube")
3 B : (y_dim > 0)--> S(1, y_dim, 1) I("cube")
4 B : (z_dim > 0)--> S(1, 1, z_dim) I("cube")
Roger Hernando Creaci´o procedural d’edificis
15. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Sistemes implementats
Parser i Generador
Visualitzador
Roger Hernando Creaci´o procedural d’edificis
16. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Parser i Generador
Sistema ParseGen
Implementat com una aplicaci´o Java independent.
$ ./bin/ParseGen -help
usage: ParseGen [options] file
-ast <file> write the AST
-dotpdf dump the AST in dot and pdf format
-gen <x_dim y_dim z_dim> generate and define initial size
-help print this message
-model <file> write generated model to a file
Roger Hernando Creaci´o procedural d’edificis
17. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Parser
Parser
PROGRAM
GLOB_VARS LIST_PREFERENCES
LIST_RULES
1 2 3
A EXPR SUCCESSOR_LIST
SUCCESSOR
SCOPE_RULE PROB
SCOPE_RULE B
TRANSLATE SCALE MESH
0 0 6 8 10 18 "cube"
B EXPR SUCCESSOR_LIST
SUCCESSOR
SCOPE_RULE PROB
TRANSLATE SCALE MESH C
6 0 0 7 13 18 "cube"
C EXPR SUCCESSOR_LIST
SUCCESSOR
SCOPE_RULE PROB
TRANSLATE SCALE MESH
0 0 16 8 15 8 "cylinder"
Roger Hernando Creaci´o procedural d’edificis
18. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Generador
Generador
A → conjunt de s´ımbols actius.
1 Selecci´o de la regla m´es priorit`aria.
2 Aplicaci´o de la regla.
3 Si queden s´ımbols no-terminals
repetir el pas 1.
Roger Hernando Creaci´o procedural d’edificis