Automatic Instancing of Hierarchically Organized Objects

Similar documents
CHAPTER 1 Graphics Systems and Models 3

Interactive Computer Graphics A TOP-DOWN APPROACH WITH SHADER-BASED OPENGL

Animation & Rendering

CS 563 Advanced Topics in Computer Graphics QSplat. by Matt Maziarz

Complexity Reduction of Catmull-Clark/Loop Subdivision Surfaces

GLOBAL EDITION. Interactive Computer Graphics. A Top-Down Approach with WebGL SEVENTH EDITION. Edward Angel Dave Shreiner

Spatial Data Structures

Accelerated Ambient Occlusion Using Spatial Subdivision Structures

REYES REYES REYES. Goals of REYES. REYES Design Principles

Near-Optimum Adaptive Tessellation of General Catmull-Clark Subdivision Surfaces

Spatial Data Structures

A STABLE MODELING OF LARGE PLANT ECOSYSTEMS

3-Dimensional Object Modeling with Mesh Simplification Based Resolution Adjustment

Shading Languages. Seminar Computer Graphics. Markus Kummerer

Fast Texture Based Form Factor Calculations for Radiosity using Graphics Hardware

CSE 167: Introduction to Computer Graphics Lecture 11: Scene Graph 2. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013

Level Set Extraction from Gridded 2D and 3D Data

Accelerating Ray-Tracing

Geometric Modeling. Bing-Yu Chen National Taiwan University The University of Tokyo

Efficient Rendering of Glossy Reflection Using Graphics Hardware

Efficient Lipschitz function evaluation for CSG implicit surfaces

Lecture 17: Solid Modeling.... a cubit on the one side, and a cubit on the other side Exodus 26:13

Shape modeling Modeling technique Shape representation! 3D Graphics Modeling Techniques

MODELING AND HIERARCHY

CS452/552; EE465/505. Clipping & Scan Conversion

Modeling 3D Objects: Part 2

L1 - Introduction. Contents. Introduction of CAD/CAM system Components of CAD/CAM systems Basic concepts of graphics programming

1. Introduction. 2. Parametrization of General CCSSs. 3. One-Piece through Interpolation. 4. One-Piece through Boolean Operations

Lecture 25 of 41. Spatial Sorting: Binary Space Partitioning Quadtrees & Octrees

Triangle Strip Multiresolution Modelling Using Sorted Edges

Intersection Acceleration

View-dependent Polygonal Simplification

CS 352: Computer Graphics. Hierarchical Graphics, Modeling, And Animation

CSE 167: Introduction to Computer Graphics Lecture #10: View Frustum Culling

Art Based Rendering of Fur by Instancing Geometry

Adaptive Point Cloud Rendering

Acquisition and Visualization of Colored 3D Objects

Advanced Computer Graphics

A Generalized Scene Graph

Interactive Radiosity Using Mipmapped Texture Hardware

Computer Graphics. Prof. Feng Liu. Fall /21/2016

Hierarchical surface fragments *

Spatial Data Structures for Computer Graphics

Dynamics in Maya. Gary Monheit Alias Wavefront PHYSICALLY BASED MODELING SH1 SIGGRAPH 97 COURSE NOTES

Stackless BVH Collision Detection for Physical Simulation

Scene Management. Video Game Technologies 11498: MSc in Computer Science and Engineering 11156: MSc in Game Design and Development

From curves to surfaces. Parametric surfaces and solid modeling. Extrusions. Surfaces of revolution. So far have discussed spline curves in 2D

CREATION OF THE TREE MODEL ADAPTING TO ENVIRONMENT

Spatial Data Structures

Constructive Solid Geometry and Procedural Modeling. Stelian Coros

Comparison of hierarchies for occlusion culling based on occlusion queries

Computer Graphics Fundamentals. Jon Macey

Rendering and Radiosity. Introduction to Design Media Lecture 4 John Lee

Spatial Data Structures

Ray Tracing III. Wen-Chieh (Steve) Lin National Chiao-Tung University

Physically-Based Modeling and Animation. University of Missouri at Columbia

Intro to Ray-Tracing & Ray-Surface Acceleration

Abstract. Introduction. Kevin Todisco

CSE 167: Introduction to Computer Graphics Lecture #11: Visibility Culling

Spatial Data Structures

CS 465 Program 4: Modeller

03 Vector Graphics. Multimedia Systems. 2D and 3D Graphics, Transformations

9. Three Dimensional Object Representations

Graphics and Interaction Rendering pipeline & object modelling

COMP3421. Global Lighting Part 2: Radiosity

A Real-time Rendering Method Based on Precomputed Hierarchical Levels of Detail in Huge Dataset

Adaptive Tessellation for Trimmed NURBS Surface

Shading Languages. Ari Silvennoinen Apri 12, 2004

NPR. CS 334 Non-Photorealistic Rendering. Daniel G. Aliaga

Culling. Computer Graphics CSE 167 Lecture 12

National Chiao Tung Univ, Taiwan By: I-Chen Lin, Assistant Professor

RACBVHs: Random Accessible Compressed Bounding Volume Hierarchies

Shape Representation Basic problem We make pictures of things How do we describe those things? Many of those things are shapes Other things include

Accelerating Ray Tracing

Computer Graphics CS 543 Lecture 13a Curves, Tesselation/Geometry Shaders & Level of Detail

Hierarchical Models Josef Pelikán & Alexander Wilkie CGG MFF UK Praha

CLOTH - MODELING, DEFORMATION, AND SIMULATION

Computing Visibility. Backface Culling for General Visibility. One More Trick with Planes. BSP Trees Ray Casting Depth Buffering Quiz

Ray Tracing Acceleration Data Structures

Effects needed for Realism. Ray Tracing. Ray Tracing: History. Outline. Foundations of Computer Graphics (Spring 2012)

COMP30019 Graphics and Interaction Rendering pipeline & object modelling

Lecture outline. COMP30019 Graphics and Interaction Rendering pipeline & object modelling. Introduction to modelling

Anti-aliased and accelerated ray tracing. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell

Surface and Solid Geometry. 3D Polygons

View-Dependent Multiresolution Model for Foliage

Schedule. MIT Monte-Carlo Ray Tracing. Radiosity. Review of last week? Limitations of radiosity. Radiosity

MIT Monte-Carlo Ray Tracing. MIT EECS 6.837, Cutler and Durand 1

Real-time Rendering of Complex Vector Data on 3d Terrain Models

LODESTAR: An Octree-Based Level Of Detail Generator For VRML

CSE 167: Introduction to Computer Graphics Lecture #8: Scene Graph. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2015

Lecture 1. Computer Graphics and Systems. Tuesday, January 15, 13

An Approach to Content Creation for Trainz

View-dependent Refinement of Multiresolution Meshes Using Programmable Graphics Hardware <CGI special issue>

First Steps in Hardware Two-Level Volume Rendering

Next-Generation Graphics on Larrabee. Tim Foley Intel Corp

Fractals and Solid Modeling

Rendering Subdivision Surfaces Efficiently on the GPU

Radiosity. Johns Hopkins Department of Computer Science Course : Rendering Techniques, Professor: Jonathan Cohen

3D Modeling techniques

Soft Shadow Volumes for Ray Tracing with Frustum Shooting

Transcription:

Automatic Instancing of Hierarchically Organized Objects R Schultz, H Schumann University of Rostock Abstract Instancing is an approved concept to save space for the storage of three dimensional scenes In this paper we propose an algorithm to automatically create instances from objects that are organized in a hierarchical scene graph We present a definition of instancing and derive an algorithm from that We discuss results of tests done with our implementation of the algorithm and give options for further development Keywords: efficient scene storage, instancing, automatic instancing 1 Introduction In order to reduce the memory consumption of complex scenes, which is an important aspect for rendering performance, different techniques may be used These are for example multiresolution techniques (see [6] and [7]), instancing [11], procedural objects (see [12], [1], and [5]), and tool objects [16] However, multiresolution techniques, procedural objects, and tool objects are not scope of this paper Instancing is an approved concept to save space that is not only used in computer graphics For scenes with many similar objects (eg architectural scenes or scenes with vegetation) it is desirable to save just the properties that are different between the similar objects and not to save eg the full geometric representation for each object Instancing realizes this desired behaviour Commercially available modelling and rendering packages (like Maya [19], 3D Studio Max [18], RenderMan [2]) offer this functionality The first use of instancing in computer graphics dates back to Sutherlands Sketchpad system that has been introduced 1963 [10] Sutherland defined the terms Master as an object which holds full geometric information and Instance as a transformed variant of the Master object In [3] and [4] automatic generation of instancing hierarchies for plant models was considered by J Hart and DeFanti They, additionally, extended the instancing paradigm from hierarchical structures to recursive (self similar) ones While Harts approach dealt with exact instancing, Fachbereich Informatik, Universität Rostock, A Einstein Str 21, 18051 Rostock, Germany; e-mail: rschultz@informatikuni-rostockde Deussen et al [11] used a new approach called approximate instancing to render large models of vegetation This approach is based on an observation by Smith [12] that the set of random numbers used in stochastic algorithms to create fractal mountains and particle-system trees can be reduced to a few representative values without affecting the perceived visual complexity of the generated images too much Deussen et al applied clustering algorithms to sets of vectors of real numbers (representing the parameters of procedural plant models) to find representative vectors (masters for instancing) Furthermore, Deussen points out that this approach can be stated in terms of vector quantization as used in colour image quantization algorithms [15] Snyder [13] and Kay [14] used the instancing paradigm to successfully render large models using ray tracing Instancing can also be used to improve radiosity rendering as was shown in [8] and [9] While Ouhyoung [9] shared precomputed geometric information between so called re-usable radiosity objects to speed up the calculation of form factors and visibility, Soler [8] proposed a hierarchical instancing technique that allowed radiosity solutions to be computed for complex objects such as entire trees While Deussen et al used automatic instantiation for special objects [11], the automatic instantiation of arbitrary objects is a currently unsolved problem In this paper we propose an algorithm to automatically create instances for static scenes with objects, that are organized in a scene graph For that, we define instancing and instantiation in the next two sections, then we show a general solution to the problem, present experimental results with our first implementation, and finally give some concluding remarks 2 Instancing In this section we will first discuss instancing in general and then give a formal definition of instancing The concept of instancing has been introduced in eg [16] We would like to point out, that the way we use the term instance conflicts with the terminology of object oriented programming, where an instance is a concrete representation of a class A better but seldom used term for the type of instancing in the computer graphics community would be referencing In the following sections we use the terms Master and Instance as follows: the Master object is an object which

U b R O b holds full information Instance objects just point to a Master object (and are therefore smaller as the Master object), share certain properties of the Master, but also have at least one property which differs from the Master Commonly, this differing property are affine transformations Instance objects can be used to save storage, speed up rendering, or to ease operations on objects that would normally have been done on many objects separately The amount of saved memory can be very high, but obviously, this depends highly on the scene If there are no objects that share certain properties in the scene one can hardly use instancing Properties can, for instance, be geometric information, textures or other material descriptions We will now give a more formal definition of instancing Let be a set of all objects of a scene Objects are eg CSG primitives, objects resulting from CSG operations, freeform curves and surfaces, procedural objects, and parameter objects of procedural objects A property vector! "$#% '&(*)+, is assigned to every $56'7/98:/9); -'0/213/4 object describing the properties $5 of Let the order of the properties for all objects in be uniform Consequently, for all object types the same property vector is in use >=?@BA We DCE < introduce a distance vector for two objects and : F G <' >=>H IJK >LJ # & J 5 NM6O P5 <H QP5 = for else 5 If the property J 5 is identical R < >=SJ 5 for the objects and is zero, otherwise is a value from the interval O LT The R value describes the amount of difference and is computed $5 differently depending on the type of the specific property To compute this value for certain geometric properties is a difficult task and is not solved in general For special cases, eg comparison of two spheres using their radii in normalized R A R coordinates, it is easier to compute a Given a value it makes sense to introduce a threshold vector 2V> V #W&, whose elements describe the tolerable difference of two objects with regard to a certain property This way, not only instancing of identical objects, but also V 5 of similar objects is possible The elements have either the value V X 5 or values from the interval Y O T A negative value for means that the corresponding property is not used for the comparison of two objects We further de- for the instancing of V 5 mand that at least one has to be X two objects, because all instances of a master have at least one property in which they < differ = We call two objects and instantiable if: Z V!5\[ J^5,/_V 5`a8\ 9L) O ] We define a function b for easier handling: <'c >=>H dm e < = else satisfy equation (2) (1) (2) (3) g= g=e'g/h1i/jh >= To handle all instances of a master object we introduce 1A kce the set f The elements of f are found as follows: Z l nm G >=>H 2 ] g=g f To avoid redundancies, we state D DqB 3 Automatic Instancing g=pò f In this section, we present an algorithm for automatic instancing for a hierarchically organized static scene (n- Tree) Automatic instantiation could eg be useful to improve rendering speed while rendering large scenes For example, scene files for film work with about 1GB per frame need to be distributed in rendering farms While introducing the instantiation formally, we abstracted from the fact, that the objects are given in a hierarchical structure (eg a CSG-tree or a scene graph) Our algorithm works on such a hierarchical scene description, that is given as a tree, a so called scene tree We identify the leafs of the scene tree as single objects and the nodes as grouping objects There are grouping objects that just group objects to inherit transformation attributes or objects that carry out CSG operations or other complex geometric operations (eg procedural objects) 31 An Algorithm for Automatic Instancing Our algorithm traverses the scene recursively and searches for every object (starting from the leafs of the scene graph) for instantiable objects If it finds instantiable objects, they will be converted to instances It does not try to instantiate already existing instances Moreover, it does not try to find instantiable objects for a grouping object among the children of this grouping object For a first approach, we demand that the scene does not contain any instances before our algorithm runs Our algorithm works as follows: (4) 1 Let the root object of a scene tree be the current object 2 If the current object has child objects that are not instances, put the current object onto the stack, make the first child that is not instance the current object, and go to 2) 3 Compare the current object with all other objects of the scene tree (except for the child objects of the current object, if there are any) The comparison of two objects itself is carried out by comparing the difference vector of the two objects with the threshold vector (see equation (2)) If the objects are instantiable, transform the second object to an instance of the current object

4 If there is another sister object of the current object, that is not an instance, make this object the current object and go to 2) If not, take an object from the stack, make it the current object and go to 2) If there are no objects on the stack the algorithm terminates 32 Automatic Instancing, Example In this section we will illustrate the work of the algorithm with an example Figure 1 shows a simple example of the Start: Step 1: order the nodes are processed Start: We start with a scene with 10 objects The objects A and D exist two and the object E three times, and A, B, and C are grouping objects Step 1: For the first object to be processed (D ) an instantiable object has been found in the second traversal (Dr ), which is then transformed to an instance Step 2: For the next object Es, the second traversal finds two instantiable objects (Et and Eu ), which are again transformed to instances Step 3: Now we process Av, which is a grouping object In this case Av and Aw are instantiable too, because of the child objects of Aw, which are instances of the child objects of Av The two instances that are child objects of Aw are deleted and Aw is transformed to an instance of A For all other candidate master objects (Bx, Fy, C {z ) no instantiable objects can be found and the algorithm terminates 33 Instantiating Grouping Objects Step 2: Step 3: Figure 1: Automatic Instancing, Example work of the algorithm At the top of figure 1 the initial scene tree of a scene is displayed Identical letters in the nodes denote instantiable (after equation (2)) objects The letter I is used to identify instance objects Asterisks show, which objects are instantiated in the respective steps of the algorithm The numbers beneath the nodes show in which In this section, we show how grouping objects may be instantiated Grouping objects may be put into two categories, those that expect a certain order of their child objects, and those that do not An examples for an object that expects a certain order is a grouping object that carries out a CSG difference An example for an object where the order does not matter is a group object that just inherits transformation attributes Since the shape of a grouping object does not only depend on its (eventually present) parameters but also on its child objects, for the comparison of two grouping objects normally all child objects would have to be compared too However, we found out that this is not necessary if we traverse the scene hierarchy as shown Because the algorithm traverses the scene starting from the leafs (objects without child objects), it is clear that if we process the parent object of some objects its child objects already have been compared by our algorithm Thus, if they are not already instances or there are no instances of them in the other part of the scene, we will not find a matching grouping object anyway This means, for all possible candidates of instances of a grouping object, we need to check for the following: 1 We first have to check, whether all child objects of the current object are instantiated objects or instances If they are not, the current group object is not instantiable The test can be done separately, checking reference counters and types of the child objects A better solution would be, to check a flag that has been set while

trying to instantiate the child objects The flag would be set if an object could not be instantiated 2 After that, we have to check, whether the child objects of the candidate group object are all instances of the child objects of the current object Or, if the child objects of the current group object are instances, we need to check, whether the child objects are instances of the same master objects If they are not, the current group object is not instantiable 3 Furthermore, we have to check the transformation attributes of the child objects of both objects If the attributes do not match, the current group object is not instantiable Note, that for grouping objects, where the exact order of child objects does matter, we have to do tests 1 and 2 in exact order for the child objects of both, current and candidate grouping object Furthermore, if the grouping objects have object type specific properties as eg procedural object parameters, they need to be compared also Note, that created instances may be deleted during the instantiation process of grouping objects 34 Complexity ) @ Our algorithm works on scene trees with objects, levels and instantiable grouping objects The complexity depends on all three values: } *),@W @; 2 It is clear, that for and O the complexity is } *) s However, if there are grouping @p~4 @,~9 objects ( ) or better instantiable grouping objects ( ), many comparisons of objects may be saved This is due to the fact, that the number of objects gets smaller as the algorithm creates instances from grouping objects Furthermore, instantiable objects for grouping objects are never searched for among the child objects of this object For example, while instancing the scene DOAP (see figure 6), which consists of ƒ >! objects, there were just comparisons of objects instead of ƒ > pˆ K Š ƒ > 35 Instantiating Scenes with already existing Instances In section 31 we demanded that no instances exist before our algorithm starts This is because already existing instances influence our algorithm in two ways: 1 Instances of instances might result: This occurs when already existing master objects are candidates for instances and are transformed to instances, but instances of instances might not be allowed by the target system 2 Grouping objects may not be instantiated: If instances and master objects are crosswise referencing (see figure 2) between the child objects of the candidate master and candidate instance grouping object, the grouping objects may not be instantiated A A E I I F Figure 2: Crosswise Instantiating Child Objects A solution to the first problem is to transform the already existing master object to an instance and redirect all existing instances to the new master object However, this redirection might be an expensive operation including a search through the complete scene, depending on the implementation method used for instancing To solve the second problem swapping of master objects to be child objects of the candidate master grouping object (possibly with the aforementioned high costs for redirecting existing instances) is necessary 4 Implementation We implemented the proposed algorithm for our modelling environment The Mops (see [17]), which is a free modeling environment for the RenderMan interface Object: next down Attributes RiAttributes Transform Tags Shaders refine Object Object object type specific data Figure 3: Object data structure of The Mops The Mops stores object properties in a hierarchically organized data structure In the top level of this hierarchy there are pointers to other objects in the scene tree, common attributes (eg type information, reference counter), RenderMan Interface specific attributes, as well as pointers to shaders, tags, and the object type specific properties (see figure 3) This is a lot of information and the reason, why instance objects do not save that much memory in the modeller as we would wish Due to this design of the data structures instance objects are simply not small enough Despite of this, we will show that considerable amounts of

X memory may be saved A different approach, which is utilized by scene graph APIs such as Java3D is to implement more specialized and smaller node types to build the scene graph Instance objects are realized by putting a pointer to another object (the Master) into the object type specific properties Master objects carry a reference counter to prevent their removal while instances exist We implemented two recursive functions to traverse the scene in The Mops The function TraverseTree is the outer traversal, that looks for potential master objects: 1 function TraverseTree(tree root, tree node): integer; 2 var num: integer; 3 begin 4 num := 0; 5 while exists(node) do 6 if exists(nodedown) then 7 TraverseTree(root, nodedown); 8 fi 9 if nodetype!= instance then 10 num := num + CreateInstances(node, 11 root); 12 fi 13 node := nodenext; 14 od; 15 TraverseTree := num; 16 end; The function CreateInstances is the inner traversal, that looks for candidate objects for instances, for an object ref : 1 function CreateInstances(tree ref, tree node): 2 integer; 3 var num: integer; 4 begin 5 num := 0; 6 while exists(node) do 7 if ref!= node then 8 if exists(nodedown) then 9 num := num + 10 CreateInstances(ref, nodedown); 11 fi; 12 if instantiable(ref, node) then 13 TransformToInstance(ref, node); 14 num := num + 1; 15 fi; 16 fi; 17 node := nodenext; 18 od; 19 CreateInstances := num; 20 end; This function uses two auxiliary functions, instantiable and TransformToInstance The function instantiable checks for the two objects ref and node, whether they are instantiable (see equation (2)) For that, it compares the types and the properties stored in the main object data structure (except for the transformation attributes) If they are identical it compares object type specific properties as well To compare the object type specific data structures, we store pointers to functions of proper type in a hash table This concept is used in many other places of The Mops as well New object types may easily profit from automatic instancing if the new object type specific compare functions are stored in this hash table Currently, the functions that compare the various properties do not calculate differences as suggested in equation (1), but return O if the properties to compare are identical or if they are not identical However, the comparison of RiAttributes, shaders and tags may be turned V 5 off globally in our implementation (the respective are set to X, otherwise they are always O ) TransformToInstance simply removes the object type specific data structures, tags, and shaders from the object to be turned into an instance (node) Then the type of the object is changed to instance, the refine pointer is set to point to the master (ref ), and the reference counter of the master is increased 5 Experimental Results Scene Cactus Spirit Swish DOAP Objects 310 277 223 474 Original Size 68475 90519 85970 228441 Inst created 243 208 183 381 Inst left 243 37 47 130 New Size 41976 33347 15855 48985 New Size in % 61 37 18 21 Table 1: Experimental Results from Automatic Instancing, see appendix A for rendered images of the scenes; Inst created is the total number of instance objects created during the instantiation process and Inst left is the number of instances that are finally left over in the scene after our algorithm finished Table 1 shows some experimental results, we achieved with our implementation of automatic instancing for our 5 modeling environment The Mops [17] No property V 5 A had been turned off for comparison in the instantiation (all, except for affine transformations) The memory savings differ considerably between the scenes, but this is nothing unexpected, as instancing is highly dependent on the scene The Cactus scene (figure 4) contains 310 objects, and 243 instances are created from them The final number of instances is not differing from the number of created in-

O stances, which means no grouping objects could be instantiated The prickles of the cactus are modelled using cones that are organized in two hierarchies of grouping objects Unfortunately the transformation attributes of the cones differ in the lowest level of the groups, so that the groups may not be instantiated We temporarily disabled the test of transformation attributes for instances and achieved the following results: 283 instances created, 43 left, new file size 15690 Bytes (23%) Of course, the scene changed a bit as can be seen in figure 4, but not that dramatically as one would expect With the next scene (Spirit, see figure 5) we achieved much better results (a reduction in size to 37%) This is because a lot of detail that has been modelled in this scene is in a radial motor (these details can not be seen clearly in the rendered image from the scene) Highly detailed identical cylinders and exhaust-pipes are present several times and instantiable as the number of instances shows The scene Swish (figure 5) shows three quite similar looking objects Two of them are indeed exactly the same, the third object is a bit different, but some parts of it may also be instantiated This leads to the best result of 18% Again, many grouping objects have been instantiated as may be derived from the difference of the number of created instances (183) and instances left (47) The last scene tested is DOAP (figure 6), which shows a lot of architectural details like columns, highly detailed capstones, and capitals The scene is very well organized in groups and may be instantiated to 21% of its original size In all examples, the algorithm instantiated the scene in far less than a second (eg Œ! for DOAP) on a SGI O2 (R10000, 225MHz) However, table 2 shows some re- (random) NURBS curves 500 1000 2000 Time (s) 16 63 31 Table 2: Results from instancing random NURBS curves sults we achieved, by trying our algorithm on a number of small (4 control points) NURBS curves that were put into a single level and were not instantiable, as their control vectors were filled with random numbers In this configuration (many not instantiable objects in a single level of a scene hierarchy), the algorithm has quadratic complexity, as pointed out in section 34 The results show clearly, that our algorithm is not applicable to large sets of polygons without preprocessing, as the execution times very fast raise to unacceptable levels It is clear, that if grouping objects are in use in a scene considerable memory savings may be achieved We further tested the impact of our instantiated scenes on rendering times in the RenderMan context (using rgl and rendrib from BMRT [20]) but achieved just very small differences in the rendering times This is, because both renderers, rendrib and rgl resolve instances while parsing and therefore do not profit from instances while rendering Moreover, because of the small size of the scenes we used the parsing time of our scenes had no impact on overall rendering time, even for rgl which uses OpenGL for rendering and could profit from small parsing times 6 Conclusions and Future Work In this paper we gave a formal definition of instancing We presented an algorithm for the automatic creation of instances in hierarchically organized scenes Experimental results showed that well organized (through the use of grouping objects) scenes may be automatically instantiated well and fast The number of necessary object comparisons is far below the worst case for the tested scenes Further work has to be done in the following areas: 1 Increasing the efficiency: Decrease the number of comparisons: Because of the order, in which we traverse the scene tree, we can limit the search for candidates for instancing to objects we did not visit in our traversal yet Faster comparisons using MD5 sums: If two objects are identified as candidates for instancing their internal data structures have to be compared This may be very time consuming in the case of complex and big objects, such as NURBS patches The time needed for the comparison could be reduced, if an MD5 checksum could be created over all data from an object A first test would check the MD5 sums, and only if they are identical we would need to check the data structures of the objects 2 Enhance the instantiation: Exclusion of single objects from the instantiation process: This is especially useful in conjunction with approximate instancing, because the user may identify certain objects as important and does not want them to be subject to approximate instancing Finer control of the comparisons in terms of approximate instancing: Currently, the user may just leave out tags, shaders or attributes from the comparisons in our implementation The use of thresholds for certain properties as used in equation (2) could improve that More flexible comparison of certain grouping objects: Our implementation currently does not take advantage of the fact that the order of the child objects for certain grouping objects does not influence the shape of the grouping object

Applicability: An automatic test could check the applicability of our algorithm based on, the existence of grouping objects, the relation between the number of grouping and non grouping objects, or Strahler numbers 3 Application in other fields: We implemented our algorithm just in the context of our own modelling system, however, application in other fields is worthwhile and should be tested Both, VRML and Java3D, support instancing and even instances of grouping objects but not automatic instancing The use of a scene graph instead of a scene tree leads to problems, because applications may interconnect object nodes and change object properties which might rely on a specific structure If these mechanisms are not in use, automatic instantiation for static geometry is applicable and should be tested Acknowledgements The authors would like to thank H Birkholz for the implementation of the instantiation and the reviewers for their constructive suggestions References [1] John M Snyder: Generative Modeling for Computer Graphics and CAD, Academic Press Inc, 1992 [2] Steve Upstill: The RenderMan Companion, Addison Wesley, 1989 [3] John C Hart, The Object Instancing Paradigm for Linear Fractal Modeling, Proceedings of Graphics Interfaces 1992, pp 224-231 [4] John C Hart, T A DeFanti: Efficient antialiased rendering of 3D-linear graftals, Computer Graphics (Proceedings of SIGGRAPH 1991) [5] JWeber, JPenn, Creation and Rendering of realistic Trees, Computer Graphics (Proceedings of SIG- GRAPH 1995) [6] H Hoppe, T DeRose, T Duchamp, J McDonald and W Stuetzle, Mesh Optimization, Computer Graphics (Proceedings of SIGGRAPH 1993) [7] M Eck, T DeRose, T Duchamp, H Hoppe, M Lounsberry and W Stuetzle, Multiresolution Analysis of arbitrary Meshes, Computer Graphics (Proceedings of SIGGRAPH 1995) [8] Cyril Soler, Francois Sillion: Hierarchical Instantiation for Radiosity, Eurographics Workshop on Rendering 2000 [9] M Ouhyoung, Y Chuang, R Liang: Reusable radiosity objects, Computer Graphics Forum 15(3):C347-C356, C483, Septemper 1996 [10] I E Sutherland: Sketchpad: A man-machine graphical communication system, Proceedings of the Spring Joint Computer Conference 1963 [11] O Deussen, P Hanrahan, B Lintermann, R Mech, M Pharr, P Prusinkiewicz: Realistic Modeling and Rendering of Plant Ecosystems, Computer Graphics (Proceedings of SIGGRAPH 1998) [12] A R Smith: Plants, fractals, and formal languages, Computer Graphics (Proceedings of SIGGRAPH 1984) [13] J M Snyder, A H Barr: Ray tracing complex models containing surface tesselations, Computer Graphics (Proceedings of SIGGRAPH 1987) [14] T L Kay, J T Kajiya: Ray tracing complex scenes, Computer Graphics (Proceedings of SIGGRAPH 1986) [15] P Heckbert: Color quantization for frame buffer display, Computer Graphics (Proceedings of SIG- GRAPH 1982) [16] R Schultz, H Schumann: Efficient Scene Descriptions Using Advanced Modelling Techniques in the RenderMan Context, Proceedings of Spring Conference on Computer Graphics 2000 [17] R Schultz, The Mops Home Page: http://wwwinformatikuni-rostock de/ rschultz/mops/ [18] 3D Studio Max R2 Reference Manual, Autodesk, 1998; Discreet: http://wwwdiscreetcom/ [19] Learning Maya, Alias Wavefront, 1998; Alias Wavefront: http://wwwaliaswavefrontcom/ [20] Blue Moon Rendering Tools (BMRT), Exluna: http://wwwexlunacom/

A Images Figure 4: Cactus, Cactus (prickles instantiated with approximative instancing) Figure 5: Swish (left), Spirit (right) Figure 6: Domestication Of A Pyramid (DOAP)