A Web-based IDE for Generative...

Post on 04-Jan-2020

3 views 0 download

Transcript of A Web-based IDE for Generative...

A Web-based IDE for

Generative Design

Pedro Alfaiatepedro.alfaiate@tecnico.ulisboa.pt

1

Generative Design

2

Exemplos de GD em arquitetura.3

IDEs for Generative Design

4

5

6

7

IDE in the Web

8

IDE como aplicação

web

9

10

11

12

13

14

15

Problem

16

Requirements

No installation or updates

Help the programming process

Traceability

Immediate feedback

Intuitive parameter adjustment

Integrate into the architect’s workflow

Luna Moth

17

18

Luna Moth - Demo

19

Workflow Integration

20

21

22

Performance Evaluation

23

Performance Evaluation

24

Examples that can be generated by programs

Compared with other IDEs

Grasshopper, Rosetta, OpenJSCAD

25

Future work

Better integration

faster

more design tools

Better development experience

illustrated programming

timetable traceability

code completion

error reporting

Collaboration26

Contributions

27

Luna Moth: A Web-based Programming Environment for Generative Design

35th eCAADe conference: Sharing of Computable Knowledge (accepted)

Luna Moth: Supporting Creativity in the Cloud

37th ACADIA conference: Disciplines & Disruption (submitted)

Thank you

28

29

Implementation

30

Rendering

31

Rendering

32

Convert Render

Results Three.js Scene Image

function sphereCube(w, sphR) {

let sph = sphere.byRadius(sphR);

return [

translate(sph).byXYZ(0, 0, 0),

translate(sph).byXYZ(w, 0, 0),

translate(sph).byXYZ(w, w, 0),

translate(sph).byXYZ(0, w, 0),

];

}

let g = sphereCube(10, 1);

g;

Run

Traceability

33

Camera

Ray

Rendered

Object

Result

ValueAST Node Highlight

Text

CoordsAST Node

Expression

Results

Rendered

ObjectsHighlight

Running for Traceability

34

Running for Traceability

35

function sphereCube(w, sphR) {

let sph = sphere.byRadius(sphR);

return [

translate(sph).byXYZ(0, 0, 0),

translate(sph).byXYZ(w, 0, 0),

translate(sph).byXYZ(w, w, 0),

translate(sph).byXYZ(0, w, 0),

];

}

let g = sphereCube(10, 1);

g;

Parser Transform

Generate Run

function sphereCube(w, sphR) {

let sph = sphere.byRadius(sphR);

return [

translate(sph).byXYZ(0, 0, 0),

translate(sph).byXYZ(w, 0, 0),

translate(sph).byXYZ(w, w, 0),

translate(sph).byXYZ(0, w, 0),

];

}

let g = sphereCube(10, 1);

g;

Program ASTTransformed

AST

Instrumented Program

ResultsExpr -> Results

Literal Adjustment

36

0.19 -> 0 19 -> 019 -> +6 025 -> 0.25

str -> str -> int -> int -> str

Workflow Integration

run without traceability -> call operations on Rosetta Remote Service (as in RPC)

37

RunGenerate

in Tool

Start

Service