ݺߣ

ݺߣShare a Scribd company logo
Creaci´o procedural d’edificis
Defensa
Roger Hernando
19 de juny de 2013
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
´Index
1 Generaci´o Procedural
Definici´o
Avantatges
Grans entorns
2 Objectiu
Definici´o objectiu
3 Gram`atica
Llenguatge
4 Implementaci´o
Parser i Generador
Parser
Generador
Visualitzador
5 Exemples
Petrona
Temple
Castle
Roger Hernando Creaci´o procedural d’edificis
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
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
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
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
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Definici´o objectiu
Planificaci´o
Roger Hernando Creaci´o procedural d’edificis
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
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
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
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
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
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
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
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Sistemes implementats
Parser i Generador
Visualitzador
Roger Hernando Creaci´o procedural d’edificis
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
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
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
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Visualitzador
Visualitzador
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
PRIORITY 1:
1 A --> Subdiv(Y, 15r, 6r, 4r, 3r, 2r, 1r, 2r)
{floor|floor2|floor3|floor4|floor5|floor6|peak}
2 floor2 --> S(x_dim*0.8, y_dim, z_dim*0.8)T(x_dim*0.1, 0, z_dim*0.1) floor
3 floor3 --> S(x_dim*0.6, y_dim, z_dim*0.6)T(x_dim*0.2, 0, z_dim*0.2) floor
4 floor4 --> S(x_dim*0.4, y_dim, z_dim*0.4)T(x_dim*0.3, 0, z_dim*0.3) floor
5 floor5 --> S(x_dim*0.2, y_dim, z_dim*0.2)T(x_dim*0.4, 0, z_dim*0.4) floor
6 floor6 --> S(x_dim*0.1, y_dim, z_dim*0.1)T(x_dim*0.45, 0, z_dim*0.45) floor
7 peak --> S(x_dim*0.05, y_dim, z_dim*0.05)
T(x_dim*(1-0.05)/2, 0, z_dim*(1-0.05)/2) I("cube")
8 floor --> I("cube") rot_body Comp(sidefaces){face}
9 rot_body --> T(-x_dim/4, 0, z_dim/2) Ry(45) I("cube")
10 face --> Subdiv(Z, 1r, 1r, 1r, 1r, 1r){|cols||cols|}
11 cols --> T(-z_dim/2,0,0) S(z_dim, y_dim, z_dim) I("cylinder")
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
PRIORITY 1:
1 A --> Subdiv(Y, 15r, 6r, 4r, 3r, 2r, 1r, 2r)
{floor|floor2|floor3|floor4|floor5|floor6|peak}
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
2 floor2 --> S(x_dim*0.8, y_dim, z_dim*0.8)T(x_dim*0.1, 0, z_dim*0.1) floor
3 floor3 --> S(x_dim*0.6, y_dim, z_dim*0.6)T(x_dim*0.2, 0, z_dim*0.2) floor
4 floor4 --> S(x_dim*0.4, y_dim, z_dim*0.4)T(x_dim*0.3, 0, z_dim*0.3) floor
5 floor5 --> S(x_dim*0.2, y_dim, z_dim*0.2)T(x_dim*0.4, 0, z_dim*0.4) floor
6 floor6 --> S(x_dim*0.1, y_dim, z_dim*0.1)T(x_dim*0.45, 0, z_dim*0.45) floor
7 peak --> S(x_dim*0.05, y_dim, z_dim*0.05)
T(x_dim*(1-0.05)/2, 0, z_dim*(1-0.05)/2) I("cube")
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
8 floor --> I("cube") rot_body Comp(sidefaces){face}
9 rot_body --> T(-x_dim/4, 0, z_dim/2) Ry(45) I("cube")
10 face --> Subdiv(Z, 1r, 1r, 1r, 1r, 1r){|cols||cols|}
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
11 cols --> T(-z_dim/2,0,0) S(z_dim, y_dim, z_dim) I("cylinder")
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Petrona
Torres Petronas
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Temple
Temple
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Castle
Castle
Roger Hernando Creaci´o procedural d’edificis
Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples
Castle
Fi
Preguntes?
Roger Hernando Creaci´o procedural d’edificis

More Related Content

Generaciò procedural d'edificis

  • 2. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples ´Index 1 Generaci´o Procedural Definici´o Avantatges Grans entorns 2 Objectiu Definici´o objectiu 3 Gram`atica Llenguatge 4 Implementaci´o Parser i Generador Parser Generador Visualitzador 5 Exemples Petrona Temple Castle Roger Hernando Creaci´o procedural d’edificis
  • 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
  • 7. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Definici´o objectiu Planificaci´o 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
  • 19. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Visualitzador Visualitzador Roger Hernando Creaci´o procedural d’edificis
  • 20. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas Roger Hernando Creaci´o procedural d’edificis
  • 21. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas PRIORITY 1: 1 A --> Subdiv(Y, 15r, 6r, 4r, 3r, 2r, 1r, 2r) {floor|floor2|floor3|floor4|floor5|floor6|peak} 2 floor2 --> S(x_dim*0.8, y_dim, z_dim*0.8)T(x_dim*0.1, 0, z_dim*0.1) floor 3 floor3 --> S(x_dim*0.6, y_dim, z_dim*0.6)T(x_dim*0.2, 0, z_dim*0.2) floor 4 floor4 --> S(x_dim*0.4, y_dim, z_dim*0.4)T(x_dim*0.3, 0, z_dim*0.3) floor 5 floor5 --> S(x_dim*0.2, y_dim, z_dim*0.2)T(x_dim*0.4, 0, z_dim*0.4) floor 6 floor6 --> S(x_dim*0.1, y_dim, z_dim*0.1)T(x_dim*0.45, 0, z_dim*0.45) floor 7 peak --> S(x_dim*0.05, y_dim, z_dim*0.05) T(x_dim*(1-0.05)/2, 0, z_dim*(1-0.05)/2) I("cube") 8 floor --> I("cube") rot_body Comp(sidefaces){face} 9 rot_body --> T(-x_dim/4, 0, z_dim/2) Ry(45) I("cube") 10 face --> Subdiv(Z, 1r, 1r, 1r, 1r, 1r){|cols||cols|} 11 cols --> T(-z_dim/2,0,0) S(z_dim, y_dim, z_dim) I("cylinder") Roger Hernando Creaci´o procedural d’edificis
  • 22. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas Roger Hernando Creaci´o procedural d’edificis
  • 23. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas PRIORITY 1: 1 A --> Subdiv(Y, 15r, 6r, 4r, 3r, 2r, 1r, 2r) {floor|floor2|floor3|floor4|floor5|floor6|peak} Roger Hernando Creaci´o procedural d’edificis
  • 24. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas Roger Hernando Creaci´o procedural d’edificis
  • 25. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas 2 floor2 --> S(x_dim*0.8, y_dim, z_dim*0.8)T(x_dim*0.1, 0, z_dim*0.1) floor 3 floor3 --> S(x_dim*0.6, y_dim, z_dim*0.6)T(x_dim*0.2, 0, z_dim*0.2) floor 4 floor4 --> S(x_dim*0.4, y_dim, z_dim*0.4)T(x_dim*0.3, 0, z_dim*0.3) floor 5 floor5 --> S(x_dim*0.2, y_dim, z_dim*0.2)T(x_dim*0.4, 0, z_dim*0.4) floor 6 floor6 --> S(x_dim*0.1, y_dim, z_dim*0.1)T(x_dim*0.45, 0, z_dim*0.45) floor 7 peak --> S(x_dim*0.05, y_dim, z_dim*0.05) T(x_dim*(1-0.05)/2, 0, z_dim*(1-0.05)/2) I("cube") Roger Hernando Creaci´o procedural d’edificis
  • 26. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas Roger Hernando Creaci´o procedural d’edificis
  • 27. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas 8 floor --> I("cube") rot_body Comp(sidefaces){face} 9 rot_body --> T(-x_dim/4, 0, z_dim/2) Ry(45) I("cube") 10 face --> Subdiv(Z, 1r, 1r, 1r, 1r, 1r){|cols||cols|} Roger Hernando Creaci´o procedural d’edificis
  • 28. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas Roger Hernando Creaci´o procedural d’edificis
  • 29. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas 11 cols --> T(-z_dim/2,0,0) S(z_dim, y_dim, z_dim) I("cylinder") Roger Hernando Creaci´o procedural d’edificis
  • 30. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Petrona Torres Petronas Roger Hernando Creaci´o procedural d’edificis
  • 31. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Temple Temple Roger Hernando Creaci´o procedural d’edificis
  • 32. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Castle Castle Roger Hernando Creaci´o procedural d’edificis
  • 33. Generaci´o Procedural Objectiu Gram`atica Implementaci´o Exemples Castle Fi Preguntes? Roger Hernando Creaci´o procedural d’edificis