OpenFab A Programmable Pipline for Multi-Material Fabrication Kiril Vidimce Presented By: Mira Shalah Szu-Po Wang Jonathan Ragan-Kelley Wojciech Matusik.

Slides:



Advertisements
Similar presentations
Images Images are a key component of any multimedia presentation.
Advertisements

1.Quality-“a characteristic or attribute of something.” As an attribute of an item, quality refers to measurable characteristics— things we are able to.
The “building blocks” of a composition.
Games, Movies and Virtual Worlds – An Introduction to Computer Graphics Ayellet Tal Department of Electrical Engineering Technion.
1 Enviromatics Spatial database systems Spatial database systems Вонр. проф. д-р Александар Маркоски Технички факултет – Битола 2008 год.
11 A Multi-Source Geodesic Distance Field approach for Procedural Texturing of Complex Meshes A Multi-Source Geodesic Distance Field approach for Procedural.
3D Skeletons Using Graphics Hardware Jonathan Bilodeau Chris Niski.
Extensible Processors. 2 ASIP Gain performance by:  Specialized hardware for the whole application (ASIC). −  Almost no flexibility. −High cost.  Use.
11 1 Hierarchical Coarse-grained Stream Compilation for Software Defined Radio Yuan Lin, Manjunath Kudlur, Scott Mahlke, Trevor Mudge Advanced Computer.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. slide 1 CS 125 Introduction to Computers and Object- Oriented Programming.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Introduction to Computer Graphics Ed Angel Professor of Computer Science, Electrical and.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Models and Architectures Ed Angel Professor of Computer Science, Electrical and Computer.
Shading Languages By Markus Kummerer. Markus Kummerer 2 / 19 State of the Art Shading.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
GPU Graphics Processing Unit. Graphics Pipeline Scene Transformations Lighting & Shading ViewingTransformations Rasterization GPUs evolved as hardware.
Architectural Design.
Introduction --Classification Shape ContourRegion Structural Syntactic Graph Tree Model-driven Data-driven Perimeter Compactness Eccentricity.
SYSTEM ANALYSIS AND DESIGN
Shading (introduction to rendering). Rendering  We know how to specify the geometry but how is the color calculated.
CS 480/680 Computer Graphics Course Overview Dr. Frederick C Harris, Jr. Fall 2012.
Draft Additive Manufacturing File Format Chair, ASTM F42/Design Task Group on File Formats July 8, 2010 With Jonathan Hiller Disclaimer:
An Integration Framework for Sensor Networks and Data Stream Management Systems.
On-line Space Sculpturing for 3D Shape Manipulation
Interactive Rendering of Meso-structure Surface Details using Semi-transparent 3D Textures Vision, Modeling, Visualization Erlangen, Germany November 16-18,
09/09/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Event management Lag Group assignment has happened, like it or not.
Geometric Modeling using Polygonal Meshes Lecture 1: Introduction Hamid Laga Office: South.
Cg Programming Mapping Computational Concepts to GPUs.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
CSC 461: Lecture 3 1 CSC461 Lecture 3: Models and Architectures  Objectives –Learn the basic design of a graphics system –Introduce pipeline architecture.
1 Introduction to Computer Graphics SEN Introduction to OpenGL Graphics Applications.
1 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 CS4610/7610: Introduction to Computer Graphics.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
A language to describe software texture in abstract design models and implementation.
Cohesion and Coupling CS 4311
Pattern-Based Texturing Revisited / GRAVIR-IMAG-INRIA Grenoble, FRANCE Fabrice Neyret Marie-Paule Cani.
1Computer Graphics Lecture 4 - Models and Architectures John Shearer Culture Lab – space 2
M150: Data, Computing and information Outline 1.Unit two. 2.What’s next. 3.Some questions. 4.Your questions. 1.
What is Object-Oriented?  Organization of software as a collection of discreet objects that incorporate both data structure and behavior.
Modeling and Analysis of Printer Data Paths using Synchronous Data Flow Graphs in Octopus Ashwini Moily Under the supervision of Dr. Lou Somers, Prof.
A Few Things about Graphics Jian Huang Computer Science University of Tennessee.
COMPUTER GRAPHICS CS 482 – FALL 2015 SEPTEMBER 29, 2015 RENDERING RASTERIZATION RAY CASTING PROGRAMMABLE SHADERS.
Chapter 3: The Requirements Workflow [Arlow and Neustadt, 2005] CS 426 Senior Projects in Computer Science University of Nevada, Reno Department of Computer.
Elements of Design Value and Color.
GLSL I.  Fixed vs. Programmable  HW fixed function pipeline ▪ Faster ▪ Limited  New programmable hardware ▪ Many effects become possible. ▪ Global.
Advanced 2D Design Concepts V The basic fill options include uniform or solid, fountain or gradient, and pattern. The uniform fill is produced.
Chapter 1 Graphics Systems and Models Models and Architectures.
BITMAPPED IMAGES & VECTOR DRAWN GRAPHICS
Computer Graphics.
Introduction to Computer Graphics
Graphics Processing Unit
The Graphics Rendering Pipeline
Interactive Computer Graphics
Models and Architectures
CS & CS Capstone Project & Software Development Project
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Chapter 3: The Requirements Workflow
FRED A software tool for modern optical engineering
Models and Architectures
Models and Architectures
Introduction to Computer Graphics with WebGL
Image Based Modeling and Rendering (PI: Malik)
Sculpting 3D Models Dorsey & McMillan
Introduction to Computer Graphics
Introduction to Computer Graphics
Models and Architectures
Y2Seq2Seq: Cross-Modal Representation Learning for 3D Shape and Text by Joint Reconstruction and Prediction of View and Word Sequences 1, Zhizhong.
Models and Architectures
Computer Graphics Introduction to Shaders
Presentation transcript:

OpenFab A Programmable Pipline for Multi-Material Fabrication Kiril Vidimce Presented By: Mira Shalah Szu-Po Wang Jonathan Ragan-Kelley Wojciech Matusik Computational Fabrication Group M I T 1

State of The Art of Multi-Material Fabrication 2

Multi-Material 3D Printers Object 260 Connex1Object 350 Connex3Object

Large Build Volume 4

Multi-Material 3D Printers 5

Large Material Library 6

7

High-Resolution: 600 DPI 8

Current Industry Use 9

One Material Per Part 10

Why One Material Per Part? Traditional constraints of manufacturing. Poor specification methods. Lack of scalable software architectures. Expensive hardware and materials Limited material library No material design tools 11

Related Work Multiple materials are supported by statistically assigning a single material to each mesh Various companies have created proprietary formats to support their specific equipment Current open-source effort (e.g. RepRap, target FDM printing processes. The recent AMF standard allows description of object composition and color. Colors and materials can be specified with little proceduralism, using simple expressions from voxel coordinates to material choices. These have limited power and no architecture has been proposed to efficiently implement it. 12

Functionally Graded Material (FGM) Functionally graded materials are heterogeneous materials whose material composition varies over the volume of a given object. Prior work describes the difficulty of modelling FGM objects, and proposes a variety of volumetric representations based of tetrahedra and voxels [Jackson 2000]. MIT’s three-dimensional printing group describes a system that defines the material composition by a composition function [Liu et al. 2004; Zhou et al. 2004]. 13

Improve Specification Methods Functional Specification Spec2Fab Direct Specification OpenFab 14

Software Architecture Challenges Large high-resolution prints comprise trillions of voxels. Giga voxels/inch 3, Tera voxels/foot 3 Continuous gradation between materials Reusable material definitions Resolution and printer independence 15

OpenFab First Programmable and Scalable Fabrication Pipeline 16

OpenFab Inspired by rendering pipelines Fixed stages and programmable stages Procedural surface and material definitions Resolution independence Streaming architecture Decouples material definition from geometry 17

Outline OpenFab programming model OpenFL and fablets Architecture Results 18

The OpenFab programming Model 19

The OpenFab Programming Model input tessellate surface stage voxelize volume stage dither output textures materials 20

Input input tessellate surface stage voxelize volume stage dither output textures materials 21

Fixed-Function Stages input tessellate surface stage voxelize volume stage dither output textures materials 22

Programmable Stages input tessellate surface stage voxelize volume stage dither output textures materials 23

External Resources input tessellate surface stage voxelize volume stage dither output textures materials 24

Output input tessellate surface stage voxelize volume stage dither output textures materials 25

input tessellate surface stage voxelize volume stage dither output Fab world, a scene graph-like description: Shapes (boundary representation) Shape priorities Fablets Resources Textures Materials 26

tessellate surface stage voxelize volume stage dither output input 27

tessellate surface stage voxelize volume stage dither output input 28

surface stage voxelize volume stage dither output input tessellate 29

surface stage voxelize volume stage dither output input tessellate 30

surface stage voxelize volume stage dither output input tessellate 31

surface stage voxelize volume stage dither output input tessellate 1 voxel 50% A 25% B 25% C 32

surface stage voxelize volume stage dither output input tessellate 4 voxels BC A A 33

surface stage voxelize volume stage dither output input tessellate 34

OpenFL and Fablets 35

Programmable Stages input tessellate surface stage voxelize volume stage dither output textures materials fablets 36

OpenFL: Domain Specific Language C/C++-like programming language Built-in vector, matrix, texture, material types Modest OO features Pointwise (kernel) programming model Includes a standard library of math functions Global queries Flexible toolset that supports many common material specification tasks. 37

OpenFL: Domain Specific Language When defining materials volumetrically, it is useful to be able to determine the distance of a given voxel to the nearest point on the surface. For example, when printing a textured object, we cannot simply assign colors to the outer layer of the surface. In order to achieve a particular color, reflectance, and scattering behavior, the printer needs to deposit a certain amount of layered material to achieve the desired appearance properties. 38

fablet MyFablet Material red, blue, { return double3(0,0,0); // no displacement } double3 voxelCenter) { MaterialComposition mc; const double layerThickness = 1; double dist = distance(); if (dist <= layerThickness) { mc.Set(red, 1); } else if (dist <= layerThickness * 2) { mc.Set(blue, 1); } else { mc.Set(Yellow,1); } return mc; } Volume Fablets: Global Quesries 39

40 front face back face result The Magic Postcard

fablet MagicPostcard { float2 border; float textureDepth, maxThickness; ImageTexture2D fg, bg; Material white, black; } const int CARD_FRONT = 0, CARD_BACK = 1; { SurfaceAttributes attr; float2 uv, int face; out float2 uvOut, out int faceOut; }) { // pass through attributes uvOut = uv; faceOut = face; if (face == CARD_BACK) { // back face float L = bg.Sample1(uv[0], uv[1], 0); float thickness; if (uv[0] 1 – border[0] || uv[1] 1 – border[1]) { thickness = maxThickness; } else { // material approximation: transmission // has quadratic falloff with thickness thickness = sqrt(1 – L) * maxThickness; } 41

return attr.n * thickness; } else { // no displacement on the front and sides return 0; } { VolumeAttributes float2 int face }) { MaterialComposition mc; if (face == CARD_FRONT && // front face abs(distance(attr.voxelCenter)) <= textureDepth) { // surface texture float L = fg.Sample1(uv[0], uv[1], 0); mc.Set(white, L); mc.Set(black, 1 – L); } else { // background/border mc.Set(white, 1); } return mc; } 42

Why DSL? Full control over programming model Analysis opportunities Optimizations Retargetting Sand-boxing 43

The OpenFab Architecture 44

Scalable Architecture Fast start-up Streaming Fixed memory 45

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 46

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 47

done quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab Build coarse octree On query, build second-level octree Evaluate surface stage of fablet Cache result in the LRU cache 48

done quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab Depth Buffer Object Volume Support 49

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 50

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 51

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 52

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 53

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 54

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 55

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 56

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 57

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 58

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 59

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 60

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 61

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 62

infer bounds coarse acceleration structures Precalculate support structures foreach slab find objects in slab quit priority sort foreach object tesselate object surface fablet stage voxelize object volume fablet stage dither output done 63

Results 64

3D Prints 65

Material Decoupling 66

Material Decoupling 67

Material Decoupling 68

Procedural Surfaces 69

Procedural Volumes 70

Shape Priorities 71

Performance 12 inches6 inches3 inches Models 9.32 secs / 6.63 secs / 249 mins (14.2B voxels) 4.44 secs / 1.75 secs / 33 mins (1.8B voxels) 3.18 secs / 0.48 secs / 5 mins (0.22B voxels) butterfly 7.80 secs / 6.99 secs / 417 mins (7.5B voxels) 2.70 secs / 1.89 secs / 56 mins (0.94B voxels) 1.26 secs / 0.46 secs / 7 mins (0.12B voxels) rhino (center) secs / secs / 187 mins (9.6B voxels) 2.99 secs / 1.25 secs / 25 mins (1.2B voxels) 2.44 secs / 0.70 secs / 4 mins (0.15B voxels) marble table 72 (time to first slice delivery / computation time per slice / total time) Total number of synthesized voxels

Conclusion First programmable pipeline for fabrication New programming model Domain specific language Scalable architecture 73

External Resources: links to the images used in the presentation 74 Slide 1: Slide 2: Object ion/Objet260%20Connex/objet260_connex_closed.ashx Object series/~/media/Image%20Gallery/objet350_connex_3d_printer.png Object ion/Objet1000/objet1000_closed_v03_low.ashx Slide 5:

Cont. 75 Slides 6,7: Slide 8: part-ever/ part-ever/ Slides 12: Slides 10, 26-33: openfab.mit.edu/pdf/OpenFabSIGGRAPH2013Slides.pdf Slides 34, 40-42, 49, 66-71: