Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao...

44
Programa¸c˜ ao Moderna para Design Generativo Mestrado em Engenharia Inform´ atica e de Computadores Jos´ e Lopes Instituto Superior T´ ecnico 5 de Junho de 2012 Programa¸c˜ ao Moderna para Design Generativo 1/36

Transcript of Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao...

Page 1: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Programacao Moderna para Design GenerativoMestrado em Engenharia Informatica e de Computadores

Jose Lopes

Instituto Superior Tecnico

5 de Junho de 2012

Programacao Moderna para Design Generativo 1/36

Page 2: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Design Generativo

Programacao Moderna para Design Generativo 2/36

Page 3: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Estudo dos sistemas actuais

I Linguagens de Programacao Textuais

I Linguagens de Programacao Visuais

I Aplicacoes de CAD

Programacao Moderna para Design Generativo 3/36

Page 4: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Estudo dos sistemas actuais

I Funcionalidades

I Construcoes linguısticas

I Conceitos geometricos

Programacao Moderna para Design Generativo 4/36

Page 5: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Estudo dos sistemas actuais (Exemplo)

Fig: Programa em Grasshopper

Programacao Moderna para Design Generativo 5/36

Page 6: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Estudo dos sistemas actuais (Exemplo)

Fig: Programa em Grasshopper (excerto)

Programacao Moderna para Design Generativo 6/36

Page 7: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Estudo dos sistemas actuais (Exemplo)

Fig: Programa em Grasshopper (excerto)

Programacao Moderna para Design Generativo 7/36

Page 8: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Estudo dos sistemas actuais (Exemplo)

Fig: Programa em Grasshopper (completo)

Programacao Moderna para Design Generativo 8/36

Page 9: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Princıpios de Design Generativo

I Portabilidade

I Elementos parametricos

I Operacoes funcionais

I ...

I Ambiente de programacao moderno: Rosetta

Programacao Moderna para Design Generativo 9/36

Page 10: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Portabilidade

I Programas nao sao portaveis

I Vendor lock-in

Programacao Moderna para Design Generativo 10/36

Page 11: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Portabilidade em Rosetta

Programacao Moderna para Design Generativo 11/36

Page 12: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Portabilidade em Rosetta

Programacao Moderna para Design Generativo 12/36

Page 13: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Portabilidade em Rosetta

Programacao Moderna para Design Generativo 13/36

Page 14: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Portabilidade em Rosetta

Programacao Moderna para Design Generativo 14/36

Page 15: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Portabilidade em Rosetta

Programacao Moderna para Design Generativo 15/36

Page 16: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Elementos parametricos

spiral(t) =

ρ = αt

φ = βt

z = t

Fig: Torre de espirais conicas

Programacao Moderna para Design Generativo 16/36

Page 17: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Elementos parametricos

spiral(t) =

ρ = αt

φ = βt

z = t

function spiral(t) {

return cyl(a * t, b * t, t);

}

Fig: Torre de espirais conicas

Programacao Moderna para Design Generativo 16/36

Page 18: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Elementos parametricos

Fig: Amostragem de uma espiral conica

Programacao Moderna para Design Generativo 17/36

Page 19: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Elementos parametricos

function spiral(t) {

return cyl(a * t, b * t, t);

}

; amostragem

function spiralPoints(n) {

var points = [];

for (var i = 0; i < n; ++i) {

points[i] = spiral(i / n);

}

return points;

}

sweep(spline(spiralPoints(n)), circle(1));

Programacao Moderna para Design Generativo 18/36

Page 20: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Elementos parametricos em Rosetta

function spiral(t) {

return cyl(a * t, b * t, t);

}

sweep(functionCurve(spiral), circle(1));

Programacao Moderna para Design Generativo 18/36

Page 21: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico

Diferenca simetrica (∆)

∆(R0,R1) = (R0

⋃R1) − (R0

⋂R1)

Programacao Moderna para Design Generativo 19/36

Page 22: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico

∆(R0,R1) = (R0

⋃R1) − (R0

⋂R1)

function delta(r0, r1) {

return subtract(

union(r0, r1),

intersect(r0, r1));

}

Programacao Moderna para Design Generativo 20/36

Page 23: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico

∆(R0,R1) = (R0

⋃R1) − (R0

⋂R1)

function delta(r0, r1) {

var r0Copy = copy(r0);

var r1Copy = copy(r1);

return subtract(

union(r0, r1),

intersect(r0Copy, r1Copy));

}

Programacao Moderna para Design Generativo 20/36

Page 24: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico

∆(R0,R1) = (R0

⋃R1) − (R0

⋂R1)

function delta(r0, r1) {

var r0Copy = copy(r0);

var r1Copy = copy(r1);

if (isCurve(r0) && isCurve(r1)) {

return subtractCurves(

unionCurves(r0, r1),

intersectCurves(r0Copy, r1Copy));

} else if (isSurface(r0) && isSurface(r1)) {

...

} else if ...

Programacao Moderna para Design Generativo 20/36

Page 25: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico

∆(R0,R1) = (R0

⋃R1) − (R0

⋂R1)≡ (R0 − R1)

⋃(R1 − R0)

function delta(r0, r1) {

var r0Copy = copy(r0);

var r1Copy = copy(r1);

if (isCurve(r0) && isCurve(r1)) {

return subtractCurves(

unionCurves(r0, r1),

intersectCurves(r0Copy, r1Copy));

} else if (isSurface(r0) && isSurface(r1)) {

...

} else if ...

Programacao Moderna para Design Generativo 20/36

Page 26: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico

∆(R0,R1) = (R0

⋃R1) − (R0

⋂R1) ≡ (R0 − R1)

⋃(R1 − R0)

function delta(r0, r1) {

var r0Copy = copy(r0);

var r1Copy = copy(r1);

if (isEmptyIntersection(r0, r1)) {

return union(

subtract(r0, r1),

subtract(r1Copy, r0Copy));

} else if (isCurve(r0) && isCurve(r1)) {

return subtractCurves(

unionCurves(r0, r1),

intersectCurves(r0Copy, r1Copy));

} else if (isSurface(r0) && isSurface(r1)) {

...

} else if ...Programacao Moderna para Design Generativo 20/36

Page 27: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rigor matematico e geometrico em Rosetta

I Operacoes funcionais

I Operacoes implementam regras de equivalencia

I Operacoes independentes da dimensao

Programacao Moderna para Design Generativo 21/36

Page 28: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Formas geometricas degeneradas

Programacao Moderna para Design Generativo 22/36

Page 29: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rastreabilidade

I Relacao entre o programa e modelo

I Compreensao, manutencao e depuracao

Programacao Moderna para Design Generativo 23/36

Page 30: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rastreabilidade em Rosetta

Fig: Rastreabilidade: do programa para o modelo

Programacao Moderna para Design Generativo 24/36

Page 31: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Rastreabilidade em Rosetta

Fig: Rastreabilidade: do modelo para o programa

Programacao Moderna para Design Generativo 25/36

Page 32: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Feedback imediato

I Ajustar entradas interactivamente

I Aplicacoes de CAD desenhadas para interaccao

Programacao Moderna para Design Generativo 26/36

Page 33: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Feedback imediato em Rosetta

Exemplo/Aplicacao AutoCAD Rhinoceros OpenGL

Cones ortogonais 1022 191 1Trelica Mobius 28837 9235 4446Scriptecture 21920 5088 210

Tabela: Tempo (em milissegundos) para actualizar o modelo

Programacao Moderna para Design Generativo 27/36

Page 34: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Feedback imediato em Rosetta

Programacao Moderna para Design Generativo 28/36

Page 35: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Avaliacao

I Escrita de programas

I Extensao do ambiente de programacao

I Analise e conversao de programas

Programacao Moderna para Design Generativo 29/36

Page 36: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Novo backend: TikZ

Programacao Moderna para Design Generativo 30/36

Page 37: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Novo frontend: RosettaFlow

Programacao Moderna para Design Generativo 31/36

Page 38: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Novo frontend: RosettaFlow

Programacao Moderna para Design Generativo 31/36

Page 39: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Novo frontend: RosettaFlow

Programacao Moderna para Design Generativo 31/36

Page 40: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Conversao e analise de programas

Programacao Moderna para Design Generativo 32/36

Page 41: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Conclusoes

Design Generativo precisa:

I Portabilidade

I Rigor geometrico e matematico

I Forte correlacao entre programas e modelos

I Multiplos paradigmas/tecnicas de programacao

I Sistema moderno e pedagogico

Programacao Moderna para Design Generativo 33/36

Page 42: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Conclusoes

I Elaboramos os princıpios de Design Generativo

I Rosetta implementa estes princıpios

I Rosetta actualmente em avaliacao por designers

Programacao Moderna para Design Generativo 34/36

Page 43: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Contribuicoes

I Programming Languages For Generative Design: AComparative Studyrevista International Journal of Architectural Computing

I Portable Generative Design for CAD Applicationsconferencia ACADIA 11: Integration through Computation

I Essential Language Features for Generative Designconferencia III Simposio de Informatica (INForum 2011)

I Collaborative Digital Design (aceite)conferencia eCAADe 2012: Digital Physicality, Physical Digitality

I Rethinking CAD Support for Generative Design (submetido)conferencia ACADIA 12: Synthetic Digital Ecologies

Programacao Moderna para Design Generativo 35/36

Page 44: Programa˘c~ao Moderna para Design Generativo · Feedback imediato em Rosetta Exemplo/Aplica˘c~ao AutoCAD Rhinoceros OpenGL Cones ortogonais 1022 191 1 Treli˘ca M obius 28837 9235

Programacao Moderna para Design GenerativoJose Lopes

Questoes?

Programacao Moderna para Design Generativo 36/36