200 likes | 305 Views
Generative 3D Models A Key to More Information within Less Bandwidth at Higher Quality. René Berndt , Dieter W. Fellner , Sven Havemann Computer Graphics, TU Braunschweig, Germany. Why another 3D format?. Apparent structural similarity
E N D
Generative 3D ModelsA Key to More Information within Less Bandwidth at Higher Quality René Berndt, Dieter W. Fellner, Sven Havemann Computer Graphics, TU Braunschweig, Germany
Why another 3D format? • Apparent structural similarity • Can not be expressed by primitive-based representations • IFS, NURBS, ... • Procedural models deserve aprocedural representation
Procedural Low-Level Format • Procedural model representation must be programming language • Shape modeling becomes programming • Code generation problem: Models only through manual coding? • emacs not ideal for creating 3d objects Idea: have a look at what works well in 2D
The GML Language • Similar to Adobe’s PostScript • Printer executes program, bitmap is side effect • The “invisible” programming language • Postscript Language Reference (“Redbook”): Chapter 3 “Language”, pp. 24-56 • But GML is for 3D, not for 2D • Purpose: “Smallest common denominator” for the description of procedural 3D models – and data • Just as triangles are for the description of surfaces • Outstanding feature: Simplicity facilitates code generation
23 mul 4 add 23 mul 4 add 23 mul 4 add 23 mul 4 add 23 mul4 add 23 mul4add 2 3 2 6 4 6 10 Reminder: Stack-based Language • Literals are pushed on the stack • Operators pop items from the stack, process them, and push the result back on the stack • Principle of HP pocket calculators: No brackets • Arrow notation: 2 3 mul 4 add 10 Stack Program
Underlying Shape Representation • Paradigm shift: From Objects to Operations • Problem:Shape generating functions for meshes? • Problem:Model re-generated at interactive rates • 20 models/sec no preprocessing possible • Problem:Triangle meshes too many degrees of freedom • NURBS also: regular grid limitation
Euler operators • Each Euler operator maintains topologic consistency • Every 2-manifold mesh of any genus can be built • Closed and sufficient set of shape construction operators • Mesh access exclusively through halfedges • Euler operators are invertible: mandatory for undo/redo • 20 models per second
Layered Software Architecture GML Euler operators Explicit data Abstraction BRep meshes Catmull/Clark surfaces GPU
GML 3D Basics • Name simple objects to make them parameters • Create combined objects • Line [ p0 p1 ] • Polygon [ p0 p1 p2 p3 p4 ] • Circle mid rad nrml • Circle segment [ a m b ] nrml /nrml (1,0,0) def Variable name (0,0,1) !nrml Register :name
Circle Segment to Polygon [ (1,0,0) start (0,0,0) mid (1,1,0)] end (0,0,1) normal 20 1 circleseg (1,1,0) (0,0,0) (1,0,0)
Circle Intersection (0,0,0) (0,0,1) 1.0 12 circle (1,0,0) (0,0,1) 1.2 12 circle (just to show crude circles) (0,0,0) 1.0 (1,0,0) 1.2 (0,0,1) intersect_circles
The Pointed Arch (-1,0,0) !ml (1,0,0) !mr 1.5 !rad (0.5,0,0) !pr (-0.5,0,0) !pl :ml :rad :mr :rad (0,0,1) intersect_circles !pt pop pt mr ml pl pr
The Pointed Arch [ :pr :ml :pt ] (0,0,1) 5 1 circleseg [ :pt :mr :pl ] (0,0,1) 5 1 circleseg arrayappend [ (-0.5,-1,0) dup (0.5,-1,0) dup ] arrayappend pt mr ml pl pr • Operator chaining:output input • Stack flexible
Conversion to a mesh 5 poly2doubleface (0,0.4,5) extrude • Mesh modeling toolswork on halfedges • Position in a mesh:(vertex,edge,face) • Mesh halfedgesare built-in GML type
GML over the internet • GML models are typically lean • Cathedral:20 KB zipped • Browser plugins • ActiveX • Mozilla Plugin • JavaScriptinterface is lean • load • call
GML Projects • ActiveGML: Internet delivery of life models • Kölner Dom project • file://lowangen/Web3D/DemoPage/testpage.htm • Inverse Problem: Shape recognition • PROBADO project (DFG Leistungszentrum) • file://lowangen/Web3D/Probado/ProbadoSearch.htm • Other shape representations: world brushes… • EPOCH NoE – cultural heritage • GML + OpenSG
Thank You for Your Attention! Any Questions or Remarks? www.generative-modeling.org