200 likes | 310 Vues
Explore the innovative use of procedural representation for generating 3D models with minimal bandwidth usage. Learn about the GML language, stack-based programming, Euler operators, B-Reps, and GPU implementations. Discover the power of converting basic shapes into complex models through operator chaining. Witness the potential of GML for efficiently delivering 3D content over the internet, illustrated with successful projects like ActiveGML and PROBADO. Embrace the future of 3D modeling with lean and effective procedural techniques.
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