WO2005066901A1 - Isosurface extraction into splat hierarchy - Google Patents

Isosurface extraction into splat hierarchy Download PDF

Info

Publication number
WO2005066901A1
WO2005066901A1 PCT/US2004/043833 US2004043833W WO2005066901A1 WO 2005066901 A1 WO2005066901 A1 WO 2005066901A1 US 2004043833 W US2004043833 W US 2004043833W WO 2005066901 A1 WO2005066901 A1 WO 2005066901A1
Authority
WO
WIPO (PCT)
Prior art keywords
splats
leaf node
leaf
node
splat
Prior art date
Application number
PCT/US2004/043833
Other languages
French (fr)
Inventor
Tushar Udeshi
Eric Parker
Original Assignee
Zyvex Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zyvex Corporation filed Critical Zyvex Corporation
Publication of WO2005066901A1 publication Critical patent/WO2005066901A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Definitions

  • the present disclosure relates generally to solid model data manipulation and visualization and, more specifically, to systems and methods for extracting isosurfaces into a splat hierarchy.
  • Visualization or point rendering
  • visualization includes converting solid or volume data to triangular or other polygonal mesh data.
  • the "marching cubes" algorithm subdivides volume data into a series of small cubes, such that the corner points of the cubes may be examined and an appropriate set of polygons may be generated to replace the cubes based on the examination of the corner points.
  • such a process is time-extensive and consumes a substantial amount of computing resources.
  • a splat is a computer-generated disk having a radius, center and normal unit vector, such that a solid model surfaces may be collectively represented by a large number of splats corresponding to points on or portions of the surfaces.
  • rendering utilizing such splats employs triangular mesh data as an input, requiring solid volume data (e.g., voxel data) or non-triangular mesh data to be converted to triangular mesh data before splat generation. While providing some improvement over the marching cubes algorithm and other previous rendering techniques, the conversion of the mesh data into a splat hierarchy also requires substantial computing resources. Accordingly, what is needed in the art is a system and method that addresses the above- discussed issues.
  • Fig. 1 illustrates a flow chart diagram of one embodiment of a method of visually rendering voxel data according to aspects of the present disclosure.
  • Fig 2 illustrates a flow chart diagram of one embodiment of a method of determining splats corresponding to leaf nodes according to aspects of the present disclosure.
  • Fig. 3 illustrates a schematic view of an exemplary node for demonstrating one embodiment of the method shown in Fig. 2.
  • Fig. 4 illustrates a flow chart diagram of one embodiment of a method of determining splats corresponding to non-leaf nodes according to aspects of the present disclosure.
  • FIGs. 5 and 6 illustrate schematic representations of at least a portion of one embodiment of a method of compressing a splat hierarchy according to aspects of the present disclosure
  • Fig. 7 illustrates a flow chart diagram of one embodiment of a method of rendering at least a portion of a splat hierarchy according to aspects of the present disclosure.
  • Fig 8 illustrates a perspective view of one embodiment of a MEMS device rendering according to aspects of the present disclosure.
  • Fig. 9 illustrates a schematic view of one embodiment of a CAD system according to aspects of the present disclosure.
  • the method 100 includes a step 110 m which hierarchical solid model data to be visualized is provided.
  • steps 110 m which hierarchical solid model data to be visualized is provided.
  • aspects of the present disclosure are also applicable and/or readily adaptable to 2-d ⁇ mens ⁇ onal data
  • aspects disclosed herein may be discussed with respect to 3 -dimensional data, such description does not limit the scope of the present disclosure or individual aspects thereof to 3- dimensional applications.
  • aspects disclosed herein with respect to 2-d ⁇ mens ⁇ onal data does not limit the scope of the present disclosure or individual aspects thereof to 2-d ⁇ mens ⁇ onal applications.
  • the hierarchical solid model data input in step 110 may be in octree format having a root node, 8 nodes m a next lower hierarchy, 64 nodes in a next lower hierarchy, etc
  • the nodes at the lowest hierarchy level may be referred to as leaf nodes, whereas the nodes in all other hierarchy levels may be referred to as non-leaf nodes
  • Each of the non-leaf nodes encompasses one or more leaf nodes.
  • a non-leaf node m the lowest non-leaf node hierarchy level may encompass 8 leaf nodes.
  • the octree format may also be a DAG octree, or a shared octree.
  • the solid model represented by the hierarchical data input in step 110 may include an isosurface.
  • an isosurface is analogous to an isocontour (or contour line) in 2- dimensional data or models.
  • an isosurface may be formed by connecting all points m a scalar field having the same scalar value.
  • the method 100 also includes a step 120 in which leaf node splats each corresponding to one of the leaf nodes are determined.
  • Step 120 may include determining a leaf node splat for each of the leaf nodes in the hierarchical data provided in step 110, or a subset thereof.
  • Each of the leaf node splats is based on scalar values corresponding to at least one of the leaf nodes
  • the leaf node splats may be based on material occupancy data corresponding to one or more leaf nodes, as in an embodiment discussed further below.
  • the method 100 also includes a step 130 in which non-leaf node splats each corresponding to one of the plurality of non-leaf nodes are determined.
  • Step 130 may include determining a non- leaf node splat for each of the non-leaf nodes in the hierarchical data provided in step 110, or a subset thereof.
  • Each of the plurality of non-leaf node splats are based on a plurality of splats each corresponding to a lower hierarchical node.
  • the splats in the lowest hierarchical level of non-leaf node splats are each based on a plurality of leaf-node splats, and the splats in the lowest hierarchical level of non-leaf node splats are also employed to determine the splats at the next higher hierarchical level of non-leaf node splats.
  • a dependence of the non- leaf node splats on lower hierarchy splats will be discussed further below.
  • leaf node splats and non-leaf node splats may collectively form a splat hierarchy, such as a splat octree or other tree structure, which may be in shared or DAG format.
  • the leaf node splats and non-leaf node splats represent the isosurface. That is, at least a subset of the leaf node splats and/or the non-leaf node splats approximate or, in the aggregate, are substantially similar or identical to the isosurface.
  • the "representation" of the isosurface by ones of the leaf node splats and/or the non-leaf node splats is intended to include approximation of the isosurface and also substantially similar or identical representations of the isosurface.
  • the representation of the isosurface by the leaf node splats and/or non-leaf node splats may be skewed, shifted or substantially uniformly displaced from the original location of the isosurface within the hierarchical data provided in step 110.
  • the isosurface may be displaced by a distance equal to a fraction of a dimension of the leaf nodes in the hierarchical data provided in step 110.
  • Each of the leaf node splats and non-leaf node splats determined in steps 120 and 130 may be determined employing recursive processes, such as in top-down techniques. For example, to determine a higher hierarchy non-leaf node splat that does not yet exist, the focus of analysis may initiate at the non-leaf node corresponding to the as-yet non-existent non-leaf node splat, and subsequently traverse the branches of children nodes therein until lower hierarchy splats are located. The lower hierarchy splats located in this manner may be employed to build-up the splat hierarchy to the non-leaf node at which the analysis started. If no splats are located as the branches of children are traversed down to the leaf nodes, leaf node splats may be created before the analysis traverses back up the branches.
  • leaf-node splats may depend on retrieved data from corresponding leaf-nodes. Particular or repeatedly located retrieved data may be stored in a cache with the corresponding splat generated therefrom such that, upon subsequent ret ⁇ eval of the repeated data, splat parameters may be read from the cache instead of being recalculated.
  • subsets of lower level hierarchy splat parameters and the corresponding higher level splat (or parameters thereof) may be cached such that, upon retrieval of repeated lower level splat parameters, the higher level splat being generated may be read from the cache rather than being regenerated.
  • the method 100 may also include a step 140 in which the splat hierarchy generated by steps 120 and 130 is compressed.
  • a step 140 in which the splat hierarchy generated by steps 120 and 130 is compressed.
  • results matching or other methods may be employed to reduce the processing time and/or other requirements of generating, processing, storing and/or rendering the splat hierarchy
  • such compression may include merging similarly oriented splats into one larger splat, possibly at a higher hierarchy level. Methods of compressing splat data will be discussed further below.
  • steps 110-130 and optionally step 140 may form one embodiment of a method 150 of extracting surface data from voxel data that may be employed for use in methods other than the method 100. That is, the method 150 may be employed for purposes other than visualizing or rendering surfaces existing in solid model data.
  • the method 150 comprising steps 110-130 and optionally step 140 and/or other steps may be employed in computerized tomography (CT) scanning to analyze and/or manipulate data collected du ⁇ ng such scanning.
  • CT computerized tomography
  • Methods other than the method 100 may also be employed with the method 150 to visualize or render data according to aspects of the present disclosure.
  • the method 100 also includes a step 160 in which a splat is drawn or otherwise rendered for each splat m at least a portion of the splat hierarchy resulting from steps 120 and 130 discussed above.
  • a splat is drawn or otherwise rendered for each splat m at least a portion of the splat hierarchy resulting from steps 120 and 130 discussed above.
  • An embodiment of such rendering will be discussed further below
  • only the splats visible from a predetermined perspective e.g., satisfying frustum and/or backface culling conditions
  • the method 200 is one embodiment of step 120 of the methods 100, 150 shown in Fig 1.
  • the method 200 includes a step 210 m which scalar data for an anchor leaf node and one or more neighbo ⁇ ng leaf nodes is retrieved.
  • scalar data may be retrieved for 7 neighbonng leaf nodes, such as in embodiments in which the scalar data is ret ⁇ eved from node data in octree format
  • the scalar data may represent a common characteristic of the leaf nodes, although possibly of varying values, such as mate ⁇ al occupancy percentages of the leaf nodes.
  • the scalar data may represent or indicate that the anchor node comp ⁇ ses 80% silicon and that the neighbo ⁇ ng nodes comprise various other or similar percentages of silicon.
  • the method 200 also includes a step 220 in which the retrieved scalar values are assigned to comers of their respective voxels.
  • the value 0.8 may be assigned to the top, right, front comer of the anchor node, and similar values may be assigned to the top, ⁇ ght, front comers of their corresponding voxels.
  • comers other than the top, right, front comers may additionally or alternatively be employed in step 220, as well as other common points within the voxels, such as voxel center points or voxel edge midpoints.
  • the scalar values assigned to each voxel in step 220 may not be identical to the scalar values retrieved in step 210.
  • the assigned scalar values may be the retrieved scalar values after performing rounding, truncating and/or other processes.
  • the assigned scalar values (as well as the retrieved scalar values) may also be quantized to decrease memory storage and processing requirements, such as by representing the assigned scalar values with one byte rather than a floating point number.
  • the assigned values may be temporarily retained for all or a portion of the execution of the methods 100, 150 or 200, or may be more permanently stored for subsequent use.
  • a step 230 intermediate points on the anchor leaf node edges are determined based on the scalar values assigned in step 220.
  • Fig. 3 illustrates a 2-dimensional non-leaf node 300 encompassing four leaf nodes 310, 320, 330, 340.
  • a surface 350 extends through leaf nodes 320, 330 and 340.
  • the scalar value 1.0 may be assigned to the top right comer 315 of the leaf node 310 because a material substantially occupies the leaf node 310.
  • the scalar value 0.8 may be assigned to each of the top right comers 325, 335 of the leaf nodes 320 and 330, respectively, because the leaf nodes 320, 330 are each about 80% occupied by the material, and the scalar value 0.2 may be assigned to the top right comer 345 of the leaf node 340 because the leaf node 340 is about 20% occupied by the material.
  • Intermediate edge points 360 may be determined by finding the location of the intermediate scalar value 0.5 between the scalar values assigned to the comers 325 and 345, and between the scalar values assigned to the comers 335 and 345, possibly by a linear function.
  • Functions other than linear functions may also or alternatively be employed to locate the intermediate edge points 360, including best fit, scalar, quadratic and exponential functions. Moreover, methods other than those described above may be employed to determine the intermediate edge points 360, and may also be employed for additional purposes. In one embodiment, an intermediate scalar value other than 0.5 may be employed, possibly to represent the result of an etching, deposition, skew or shift operation in the resulting leaf node splats.
  • the method 200 also includes a step 240 in which parameters for leaf node splats are determined based on the intermediate edge points determined.
  • the parameters may include a plane, a center, a radius and/or a normal.
  • other splat parameters may additionally or alternatively be determined.
  • the leaf node splat plane (or line, in 2-dimensional applications) may be determined by performing a least square fit of the intermediate edge points, possibly by linear regression.
  • the leaf node splat plane may be offset from the isosurface.
  • the intermediate edge points may each be offset from the isosurface.
  • the extracted surfaces will be substantially similar to the surfaces represented in the solid model data.
  • the leaf node splat normal may be mathematically derived from the function describing the leaf node splat plane.
  • the leaf node splat center may be determined by averaging the locations of the intermediate edge points.
  • the leaf node splat radius may be determined by selecting the smallest radius that completely or substantially divides the leaf node into two portions. Such radius may be measured between the splat center and one of the intermediate edge points. Any or all of the leaf node splat parameters may also be determined recursively, possibly employing results matching, as described above.
  • the method 400 is one embodiment of step 130 of the methods 100, 150 shown in Fig. 1.
  • the method 400 includes a step 410 in which splats and/or splat parameters (e.g., splat centers, normals and radii) are retrieved.
  • Step 410 may include retrieving the splats and/or splat parameters corresponding to each of the nodes in the solid model data being visualized, or a subset thereof.
  • the retrieved splats and/or splat parameters may correspond to leaf nodes and/or non-leaf nodes.
  • the retrieved splats and/or splat parameters are selected from the next lower hierarchy level relative to the hierarchy level of the splats being determined by the method 400.
  • each of the splats and/or splat parameters may be retrieved before execution of other process steps (such that all splats and/or splat parameters are retrieved prior to generating additional splats based thereon), or on an as-needed basis.
  • the step 410 and/or other portions of the method 400 may include recursive processes, such as in embodiments employing DAG or shared octree data or other shared data formats. In such embodiments, only the splats or splat parameters required to create a splat may be retrieved before creating the splat.
  • the method 400 also includes a step 420 in which a non-leaf node splat plane is determined for one or more non-leaf nodes.
  • the non-leaf node splat plane determined in step 420 may be based on or dependent on splat planes retrieved in step 410 (the "children splat planes").
  • each parent splat plane may have a normal that is substantially equal to the average of the normals of the children splat planes.
  • the average may be a weighted average, possibly weighted in proportion to the radii of the children splats.
  • a non-leaf node splat radius is determined for one or more non-leaf nodes.
  • the non-leaf node splat radius determined in step 430 may be based on or dependent on splat radii retrieved in step 410 (the "children splat radii").
  • the radius of the parent splat may be the minimum required to completely or substantially separate the corresponding non-leaf node into two portions. For example, the smallest radius that completely or substantially divides the non-leaf node corresponding to the parent splat into two portions may be employed as the parent splat radius.
  • a non-leaf node splat cone is determined for one or more non-leaf nodes.
  • the non-leaf node splat cone determined in step 440 may be based on or dependent on splat normals or cones retrieved in step 410 (collectively the "children splat normals").
  • the axis of the parent splat cone may be an average (e.g., a children-splat- radius-weighted-average) of the children splat normals, and the cone may be defined by the complete revolution of a unit vector about the axis, the unit vector having an angle relative to the axis that is substantially equal to the greatest angle among the children splat normals relative to the axis. Accordingly, the parent splat cone substantially encompasses each of the children splat normals.
  • the parent splat cone may be stored with the other non-leaf splat parameters. In one embodiment, the cosine or other trigonometric function of the cone angle may be stored rather than or in addition to the cone angle.
  • any of the splat parameters may be quantized prior to storing, and the splat parameters may be stored temporarily or more permanently.
  • Fig. 5 illustrated is a schematic representation of at least a portion of one embodiment of a method of compressing a splat hierarchy according to aspects of the present disclosure.
  • the splat hierarchy may be one such as a splat hierarchy created by recursively performing the methods 200 and 400 described above.
  • Such a compression method may be referred to as a method of "squeezing" the splat hierarchy.
  • FIG. 5 includes Arrangement A depicting a 2-dimensional node 500 encompassing four lower-hierarchy level nodes 510, 520, 530, 540 and three splats 552, 554, 556 collectively extending through the nodes 520, 530 and 540, respectively.
  • Each of the three splats 552, 554, 556 are substantially aligned, or have substantially similar or identical splat planes. Accordingly, the splats 552, 554, 556 may be combined in a single splat extending through the corresponding nodes 520, 530 and 540.
  • the splats 552, 554, 556 may be replaced with a single, higher-hierarchy level splat 560.
  • the replacement splat 560 is substantially aligned or coplanar with the splats 552, 554, 556, has a radius that is larger than the radius of each of the replaced splats 552, 554, 556, and also has a splat cone substantially encompassing the normals of the replaced splats 552, 554, 556 and any of their children.
  • such combination of substantially aligned planes may be performed only if additional conditions are met.
  • One such condition may be that the neighboring splats may differ by at most one hierarchy level.
  • Fig. 6 illustrates schematic representations (Arrangements A and B) of scenarios demonstrating when such a condition may or may not be satisfied according to one embodiment of splat hierarchy compression according to aspects of the present disclosure.
  • a lower hierarchy node 610 includes a splat 615 that is proximate splats 625 of a neighboring, higher hierarchy level node 620, wherein each of the splats 625 correspond to children nodes of node 620.
  • the splat 615 is one hierarchy level lower than the splats 625. Combining the splats 625 into a single splat would result in a larger splat having a hierarchy level that is two hierarchy levels higher than that of the splat 615. Consequently, the combination condition described above is not satisfied, and the splats 625 may not be combined according to the method 500 described above.
  • a lower hierarchy node 630 includes a splat 635 that is proximate splats 645 of a neighboring, higher hierarchy level node 640, wherein each of the splats 645 correspond to children nodes of node 640.
  • the splat 635 has the same hierarchy level as the splats 645. Combining the splats 645 into a single splat would result in a larger splat having a hierarchy level that is only one hierarchy level higher than that of the splat 635. Consequently, the combination condition described above is satisfied, and the splats 645 may be combined according to the method 500 described above.
  • FIG. 7 illustrated is a flow chart diagram of one embodiment of a method 700 of rendering at least a portion of a splat hierarchy according to aspects of the present disclosure.
  • the method 700 may be performed recursively, and may employ results matching, as described above.
  • splats are examined to determine if they are visible. Such determination may consider back-face culling, in which splats on a side of the solid object that is opposite the rendering view point may not be rendered. The visibility determination may also consider visibility or frustum culling, in which only those splats within a predetermined view angle relative to the rendering view point may be rendered. The visibility determination may also consider detail culling. Splats determined to be not visible in step 710, and possibly all lower hierarchy splats on the same hierarchy branch (splat children), are not rendered. In a step 720, the non-rendered splats' siblings are examined to determine if they have ever been traversed.
  • Step 720 may include determining if non-rendered splats' siblings have been traversed during a current iteration or a predetermined number of recent iterations of the method 700 (or a portion or variation thereof). The siblings may then be traversed in a step 725. For example, the method 700 or a portion or variation thereof may be repeated for the siblings. As such, the method 700 may be recursive. If the siblings need not be traversed, as determined in step 720, the non-rendered splats' parents may then traversed in a step 727. For example, the method 700 or a portion or variation thereof may be repeated for the splats' parents (again, possibly in a recursive manner).
  • a step 730 visible splats are examined to determine status as either a leaf node splat or a non-leaf node splat. Visible leaf node splats are rendered in a step 735, possibly with no other considerations before rendering.
  • decisional step 720 the drawn splats' siblings are examined to determine if they have ever been traversed or, alternatively, if they have been traversed du ⁇ ng a current iteration or a predetermined number of recent iterations of the method 700 (or a portion or variation thereof). The siblings may then be traversed in step 725, or the drawn splats' parents may then be traversed in step 727, as discussed above.
  • a decisional step 740 compares the screen sizes of visible, non-leaf node splats to a threshold value. Splats having screen sizes less than the threshold are rendered, such as in step 735.
  • the threshold value may be adjusted (e.g., by a user) to maintain a desired frame rate of the rendering. In one embodiment, the frame rate may be increased during periods in which the rendered image is being manipulated (e.g., rotated, translated, etc.) and decreased dunng time periods in which the rendered image is stationary on the screen. Increasing the frame rate may reduce the resolution of the displayed image, and decreasing the frame rate may increase the resolution of the displayed image.
  • the first child of splats having screen sizes greater than the threshold are traversed in a step
  • step 745 by once again executing the method 700 (or a portion or variation thereof) with the splat child.
  • the siblings of the first child splats are examined in decisional step 720, such that the siblings or the parents of the first child splats may subsequently be traversed in steps 725, 727, as discussed above.
  • Traversing splat parents may be, or may be similar to, executing a "return" statement in C++ programming language. For example, such a return statement may indicate that a function has ended and that the caller of the function should continue to the next step.
  • step 720 is the next step to be performed.
  • the methods of isosurface extraction and/or point rendering described above have many applications. Refer ⁇ ng to Fig. 8, illustrated is a perspective view of a MEMS device 800 as one example of an application of the method 100 shown in Fig. 1 according to aspects of the present disclosure.
  • the MEMS device 800 may include one or more MEMS bidirectional actuators and/or other MEMS devices within the scope of the present disclosure.
  • Processing according to aspects of the present disclosure also has a large field of application in the medical field.
  • magnetic resonance imaging (MRI) or compute ⁇ zed tomography (CT) scan data can be segmented into various entities (e.g., bone, tissue, skin, etc.). These regions can then be processed according to aspects of the present disclosure, such as by the method 100 shown in Fig. 1.
  • CAD computer aided design
  • the system 900 may be designed to create engineered objects (e.g., NEMS, MEMS and/or other microelectronic devices) from, in part, standard cell components.
  • engineered objects e.g., NEMS, MEMS and/or other microelectronic devices
  • the system 900 may be configured to extract isosurfaces from solid model data for subsequent rendering or other visualization, among other actions.
  • the standard cell components may be stored in a library 901 utilizing a mass storage device 906.
  • the cell components may include discrete
  • MEMs elements such as thermal actuators, electrostatic actuators, micro-g ⁇ ppers, micro-latches, micro-tethers, micro-rotators and/or the like.
  • the standard cell components may define the respective spatial composition of the va ⁇ ous discrete elements.
  • a user interface 902 and a rendering program 903 may be implemented as software processes executable on a computer system 905.
  • a user may "pick-and-place" discrete cell components utilizing the user interface 902 and, in response, the rende ⁇ ng program 903 may select the respective cell component from the cell library 901.
  • the rendering program 903 may locate the respective portions of an octree representation 904 of the device being designed.
  • the rende ⁇ ng algorithm 903 may update the portions of the octree representation 904 to reflect the addition of the cell component.
  • the respective elemental level nodes of the octree 904 may be created and/or modified to reflect the material compos ⁇ t ⁇ on(s) of the cell component at the respective locations.
  • a binary or non-binary data structure may be employed to identify possible material compositions such as semiconductor materials, oxides, ceramics, metals and/or the like.
  • rendenng may include performing one or more of the methods described above. It may follow from the preceding discussion that the visualization or other rendering described above, or portions or aspects thereof, may also be implemented as a program product. Such a program product may be employed with or executed by the system 900 shown in Fig. 9.
  • the program product includes a computer-readable storage medium and means recorded on the medium for providing hierarchical node data representing an object having an isosurface, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
  • the program product also includes means recorded on the medium for determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data co ⁇ espondmg to at least one of the plurality of leaf nodes.
  • the program product also includes means recorded on the medium for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each corresponding to a lower hierarchical node.
  • Another embodiment of a program product according to aspects of the present disclosure also includes means recorded on the medium for rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats.
  • the storage medium may be a magnetic or optical recording medium which is readable by a computer, such as by the system 900 shown in Fig. 9.
  • the storage medium may also be a network distribution medium, such as may be employed for downloading the program product over a wired and/or wireless network.
  • the present disclosure provides a method of extracting isosurface data from hierarchical node data, including providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
  • the method also includes determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes.
  • a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also determined, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each co ⁇ espondmg to a lower hierarchical node.
  • the present disclosure also introduces a method of rende ⁇ ng isosurface data.
  • the method includes providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
  • the method also includes determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes.
  • a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also determined, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.
  • a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats may then be rendered.
  • a processing system for extracting isosurface data from hierarchical node data includes means for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
  • the processing system also includes means for determining a plurality of leaf node splats each co ⁇ espondmg to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes.
  • Means for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also included in the processing system, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.
  • a processing system for rende ⁇ ng isosurface data is also introduced in the present disclosure.
  • the processing system includes means for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
  • the processing system also includes means for determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes Means for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also included in the processing system, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.
  • the processing system also includes means for rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats.
  • a program product is also provided m the present disclosure.
  • the program product includes a computer-readable storage medium and means recorded on the medium for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
  • the program product also includes means recorded on the medium for determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data co ⁇ esponding to at least one of the plurality of leaf nodes.
  • Means are also recorded on the medium for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.
  • Another embodiment of the program product also includes means recorded on the medium for rende ⁇ ng a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats.
  • the storage medium may be a magnetic or optical recording medium, and may also be a network distnbution medium.
  • a method of extracting isosurface data from a scalar field includes providing scalar field data and building a splat hierarchy. Building the splat hierarchy includes determining a plurality of leaf node splats each co ⁇ esponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. Building the splat hierarchy also includes determining a plurality of non-leaf node splats each based on a plurality of lower hierarchical splats.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

A method of extracting isosurface data from hierarchical node data, including providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The method also includes determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. A plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also determined, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.

Description

ISOSURFACE EXTRACTION INTO SPLAT HIERARCHY
This invention was made with the United States Government support under 70NANB1H3021 awarded by the National Institute of Standards and Technology (NIST). The United States Government has certain rights in the invention.
BACKGROUND
The present disclosure relates generally to solid model data manipulation and visualization and, more specifically, to systems and methods for extracting isosurfaces into a splat hierarchy. Visualization (or point rendering) of workpieces is a necessary function of computer aided solid modeling. Conventionally, visualization includes converting solid or volume data to triangular or other polygonal mesh data. For example, the "marching cubes" algorithm subdivides volume data into a series of small cubes, such that the corner points of the cubes may be examined and an appropriate set of polygons may be generated to replace the cubes based on the examination of the corner points. However, such a process is time-extensive and consumes a substantial amount of computing resources.
Another rendering process utilizes a splat hierarchy. A splat is a computer-generated disk having a radius, center and normal unit vector, such that a solid model surfaces may be collectively represented by a large number of splats corresponding to points on or portions of the surfaces. Typically, rendering utilizing such splats employs triangular mesh data as an input, requiring solid volume data (e.g., voxel data) or non-triangular mesh data to be converted to triangular mesh data before splat generation. While providing some improvement over the marching cubes algorithm and other previous rendering techniques, the conversion of the mesh data into a splat hierarchy also requires substantial computing resources. Accordingly, what is needed in the art is a system and method that addresses the above- discussed issues.
BRIEF DESCRIPTION OF THE DRAWINGS
Aspects of the present disclosure are best understood from the following detailed description when read with the accompanying figures. It is emphasized that, in accordance with the standard practice in the industry, various features are not drawn to scale. In fact, the dimensions of the various features may be arbitrarily increased or reduced for clarity of discussion. Fig. 1 illustrates a flow chart diagram of one embodiment of a method of visually rendering voxel data according to aspects of the present disclosure.
Fig 2 illustrates a flow chart diagram of one embodiment of a method of determining splats corresponding to leaf nodes according to aspects of the present disclosure. Fig. 3 illustrates a schematic view of an exemplary node for demonstrating one embodiment of the method shown in Fig. 2.
Fig. 4 illustrates a flow chart diagram of one embodiment of a method of determining splats corresponding to non-leaf nodes according to aspects of the present disclosure.
Figs. 5 and 6 illustrate schematic representations of at least a portion of one embodiment of a method of compressing a splat hierarchy according to aspects of the present disclosure
Fig. 7 illustrates a flow chart diagram of one embodiment of a method of rendering at least a portion of a splat hierarchy according to aspects of the present disclosure.
Fig 8 illustrates a perspective view of one embodiment of a MEMS device rendering according to aspects of the present disclosure. Fig. 9 illustrates a schematic view of one embodiment of a CAD system according to aspects of the present disclosure.
DETAILED DESCRIPTION
The following disclosure provides many different embodiments, or examples, for implementing different features of vaπous embodiments. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed.
Referring to Fig. 1, illustrated is a flow chart diagram of one embodiment of a method 100 of visually rendering voxel data according to aspects of the present disclosure. The method 100 includes a step 110 m which hierarchical solid model data to be visualized is provided. However, aspects of the present disclosure are also applicable and/or readily adaptable to 2-dιmensιonal data Thus, although aspects disclosed herein may be discussed with respect to 3 -dimensional data, such description does not limit the scope of the present disclosure or individual aspects thereof to 3- dimensional applications. Similarly, aspects disclosed herein with respect to 2-dιmensιonal data does not limit the scope of the present disclosure or individual aspects thereof to 2-dιmensιonal applications.
The hierarchical solid model data input in step 110 may be in octree format having a root node, 8 nodes m a next lower hierarchy, 64 nodes in a next lower hierarchy, etc The nodes at the lowest hierarchy level may be referred to as leaf nodes, whereas the nodes in all other hierarchy levels may be referred to as non-leaf nodes Each of the non-leaf nodes encompasses one or more leaf nodes. For example, a non-leaf node m the lowest non-leaf node hierarchy level may encompass 8 leaf nodes. The octree format may also be a DAG octree, or a shared octree.
The solid model represented by the hierarchical data input in step 110 may include an isosurface. In one embodiment, an isosurface is analogous to an isocontour (or contour line) in 2- dimensional data or models. For example, an isosurface may be formed by connecting all points m a scalar field having the same scalar value. Aspects of the present disclosure are also applicable and/or readily adaptable to extracting surfaces other than or in addition to isosurfaces.
The method 100 also includes a step 120 in which leaf node splats each corresponding to one of the leaf nodes are determined. Step 120 may include determining a leaf node splat for each of the leaf nodes in the hierarchical data provided in step 110, or a subset thereof. Each of the leaf node splats is based on scalar values corresponding to at least one of the leaf nodes For example, the leaf node splats may be based on material occupancy data corresponding to one or more leaf nodes, as in an embodiment discussed further below. Of course, scalar values representing other characteristics of the leaf nodes may also be employed withm the scope of the present disclosure to generate the leaf node splats The method 100 also includes a step 130 in which non-leaf node splats each corresponding to one of the plurality of non-leaf nodes are determined. Step 130 may include determining a non- leaf node splat for each of the non-leaf nodes in the hierarchical data provided in step 110, or a subset thereof. Each of the plurality of non-leaf node splats are based on a plurality of splats each corresponding to a lower hierarchical node. For example, the splats in the lowest hierarchical level of non-leaf node splats are each based on a plurality of leaf-node splats, and the splats in the lowest hierarchical level of non-leaf node splats are also employed to determine the splats at the next higher hierarchical level of non-leaf node splats. One example of such a dependence of the non- leaf node splats on lower hierarchy splats will be discussed further below. Thus, the leaf node splats and non-leaf node splats may collectively form a splat hierarchy, such as a splat octree or other tree structure, which may be in shared or DAG format.
The leaf node splats and non-leaf node splats, collectively or separately, represent the isosurface. That is, at least a subset of the leaf node splats and/or the non-leaf node splats approximate or, in the aggregate, are substantially similar or identical to the isosurface. Thus, the "representation" of the isosurface by ones of the leaf node splats and/or the non-leaf node splats is intended to include approximation of the isosurface and also substantially similar or identical representations of the isosurface. In one embodiment, the representation of the isosurface by the leaf node splats and/or non-leaf node splats may be skewed, shifted or substantially uniformly displaced from the original location of the isosurface within the hierarchical data provided in step 110. For example, the isosurface may be displaced by a distance equal to a fraction of a dimension of the leaf nodes in the hierarchical data provided in step 110.
Each of the leaf node splats and non-leaf node splats determined in steps 120 and 130 may be determined employing recursive processes, such as in top-down techniques. For example, to determine a higher hierarchy non-leaf node splat that does not yet exist, the focus of analysis may initiate at the non-leaf node corresponding to the as-yet non-existent non-leaf node splat, and subsequently traverse the branches of children nodes therein until lower hierarchy splats are located. The lower hierarchy splats located in this manner may be employed to build-up the splat hierarchy to the non-leaf node at which the analysis started. If no splats are located as the branches of children are traversed down to the leaf nodes, leaf node splats may be created before the analysis traverses back up the branches.
Such recursive analysis may also employ results matching. For example, the generation of leaf-node splats may depend on retrieved data from corresponding leaf-nodes. Particular or repeatedly located retrieved data may be stored in a cache with the corresponding splat generated therefrom such that, upon subsequent retπeval of the repeated data, splat parameters may be read from the cache instead of being recalculated. Similarly, for non-leaf node splat generation, subsets of lower level hierarchy splat parameters and the corresponding higher level splat (or parameters thereof) may be cached such that, upon retrieval of repeated lower level splat parameters, the higher level splat being generated may be read from the cache rather than being regenerated. The method 100 may also include a step 140 in which the splat hierarchy generated by steps 120 and 130 is compressed. For example, results matching or other methods may be employed to reduce the processing time and/or other requirements of generating, processing, storing and/or rendering the splat hierarchy In one embodiment, such compression may include merging similarly oriented splats into one larger splat, possibly at a higher hierarchy level. Methods of compressing splat data will be discussed further below.
In addition to being a portion of the method 100 of visually rendering voxel data, steps 110-130 and optionally step 140 may form one embodiment of a method 150 of extracting surface data from voxel data that may be employed for use in methods other than the method 100. That is, the method 150 may be employed for purposes other than visualizing or rendering surfaces existing in solid model data. For example, the method 150 comprising steps 110-130 and optionally step 140 and/or other steps may be employed in computerized tomography (CT) scanning to analyze and/or manipulate data collected duπng such scanning. Methods other than the method 100 may also be employed with the method 150 to visualize or render data according to aspects of the present disclosure.
The method 100 also includes a step 160 in which a splat is drawn or otherwise rendered for each splat m at least a portion of the splat hierarchy resulting from steps 120 and 130 discussed above. An embodiment of such rendering will be discussed further below In one embodiment, only the splats visible from a predetermined perspective (e.g., satisfying frustum and/or backface culling conditions) may be rendered in step 160.
Referring to Fig. 2, illustrated is a flow chart diagram of one embodiment of a method 200 of determining splats corresponding to leaf nodes according to aspects of the present disclosure That is, the method 200 determines or generates leaf node splats or data representative thereof. The method 200 is one embodiment of step 120 of the methods 100, 150 shown in Fig 1.
The method 200 includes a step 210 m which scalar data for an anchor leaf node and one or more neighboπng leaf nodes is retrieved. In one embodiment, scalar data may be retrieved for 7 neighbonng leaf nodes, such as in embodiments in which the scalar data is retπeved from node data in octree format The scalar data may represent a common characteristic of the leaf nodes, although possibly of varying values, such as mateπal occupancy percentages of the leaf nodes. For example, in a MEMS or NEMS application embodiment, the scalar data may represent or indicate that the anchor node compπses 80% silicon and that the neighboπng nodes comprise various other or similar percentages of silicon.
The method 200 also includes a step 220 in which the retrieved scalar values are assigned to comers of their respective voxels. For example, the value 0.8 may be assigned to the top, right, front comer of the anchor node, and similar values may be assigned to the top, πght, front comers of their corresponding voxels. Of course, comers other than the top, right, front comers may additionally or alternatively be employed in step 220, as well as other common points within the voxels, such as voxel center points or voxel edge midpoints. Moreover, the scalar values assigned to each voxel in step 220 may not be identical to the scalar values retrieved in step 210. For example, the assigned scalar values may be the retrieved scalar values after performing rounding, truncating and/or other processes. The assigned scalar values (as well as the retrieved scalar values) may also be quantized to decrease memory storage and processing requirements, such as by representing the assigned scalar values with one byte rather than a floating point number. The assigned values may be temporarily retained for all or a portion of the execution of the methods 100, 150 or 200, or may be more permanently stored for subsequent use.
In a step 230, intermediate points on the anchor leaf node edges are determined based on the scalar values assigned in step 220. For example, Fig. 3, illustrates a 2-dimensional non-leaf node 300 encompassing four leaf nodes 310, 320, 330, 340. A surface 350 extends through leaf nodes 320, 330 and 340. The scalar value 1.0 may be assigned to the top right comer 315 of the leaf node 310 because a material substantially occupies the leaf node 310. Similarly, the scalar value 0.8 may be assigned to each of the top right comers 325, 335 of the leaf nodes 320 and 330, respectively, because the leaf nodes 320, 330 are each about 80% occupied by the material, and the scalar value 0.2 may be assigned to the top right comer 345 of the leaf node 340 because the leaf node 340 is about 20% occupied by the material. Intermediate edge points 360 may be determined by finding the location of the intermediate scalar value 0.5 between the scalar values assigned to the comers 325 and 345, and between the scalar values assigned to the comers 335 and 345, possibly by a linear function. Functions other than linear functions may also or alternatively be employed to locate the intermediate edge points 360, including best fit, scalar, quadratic and exponential functions. Moreover, methods other than those described above may be employed to determine the intermediate edge points 360, and may also be employed for additional purposes. In one embodiment, an intermediate scalar value other than 0.5 may be employed, possibly to represent the result of an etching, deposition, skew or shift operation in the resulting leaf node splats.
Returning to Fig. 2, the method 200 also includes a step 240 in which parameters for leaf node splats are determined based on the intermediate edge points determined. In one embodiment, the parameters may include a plane, a center, a radius and/or a normal. Of course, other splat parameters may additionally or alternatively be determined.
The leaf node splat plane (or line, in 2-dimensional applications) may be determined by performing a least square fit of the intermediate edge points, possibly by linear regression. The leaf node splat plane may be offset from the isosurface. For example, as shown in Fig. 3, the intermediate edge points may each be offset from the isosurface. However, because each of the leaf node splat planes extracted according to aspects of the present disclosure are offset by substantially the same distance from the surface(s) of interest, the extracted surfaces will be substantially similar to the surfaces represented in the solid model data.
The leaf node splat normal may be mathematically derived from the function describing the leaf node splat plane. The leaf node splat center may be determined by averaging the locations of the intermediate edge points. The leaf node splat radius may be determined by selecting the smallest radius that completely or substantially divides the leaf node into two portions. Such radius may be measured between the splat center and one of the intermediate edge points. Any or all of the leaf node splat parameters may also be determined recursively, possibly employing results matching, as described above.
Referring to Fig. 4, illustrated is a flow chart diagram of one embodiment of a method 400 of determining splats corresponding to non-leaf nodes according to aspects of the present disclosure. That is, the method 400 determines or generates non-leaf node splats or data representative thereof. The method 400 is one embodiment of step 130 of the methods 100, 150 shown in Fig. 1.
The method 400 includes a step 410 in which splats and/or splat parameters (e.g., splat centers, normals and radii) are retrieved. Step 410 may include retrieving the splats and/or splat parameters corresponding to each of the nodes in the solid model data being visualized, or a subset thereof. The retrieved splats and/or splat parameters may correspond to leaf nodes and/or non-leaf nodes. In one embodiment, the retrieved splats and/or splat parameters are selected from the next lower hierarchy level relative to the hierarchy level of the splats being determined by the method 400. Moreover, each of the splats and/or splat parameters may be retrieved before execution of other process steps (such that all splats and/or splat parameters are retrieved prior to generating additional splats based thereon), or on an as-needed basis. For example, the step 410 and/or other portions of the method 400 may include recursive processes, such as in embodiments employing DAG or shared octree data or other shared data formats. In such embodiments, only the splats or splat parameters required to create a splat may be retrieved before creating the splat.
The method 400 also includes a step 420 in which a non-leaf node splat plane is determined for one or more non-leaf nodes. The non-leaf node splat plane determined in step 420 (the "parent splat plane") may be based on or dependent on splat planes retrieved in step 410 (the "children splat planes"). For example, each parent splat plane may have a normal that is substantially equal to the average of the normals of the children splat planes. In one embodiment, the average may be a weighted average, possibly weighted in proportion to the radii of the children splats. In a step 430, a non-leaf node splat radius is determined for one or more non-leaf nodes. The non-leaf node splat radius determined in step 430 (the "parent splat radius") may be based on or dependent on splat radii retrieved in step 410 (the "children splat radii"). In one embodiment, the radius of the parent splat may be the minimum required to completely or substantially separate the corresponding non-leaf node into two portions. For example, the smallest radius that completely or substantially divides the non-leaf node corresponding to the parent splat into two portions may be employed as the parent splat radius.
In a step 440, a non-leaf node splat cone is determined for one or more non-leaf nodes. The non-leaf node splat cone determined in step 440 (the "parent splat cone") may be based on or dependent on splat normals or cones retrieved in step 410 (collectively the "children splat normals"). For example, the axis of the parent splat cone may be an average (e.g., a children-splat- radius-weighted-average) of the children splat normals, and the cone may be defined by the complete revolution of a unit vector about the axis, the unit vector having an angle relative to the axis that is substantially equal to the greatest angle among the children splat normals relative to the axis. Accordingly, the parent splat cone substantially encompasses each of the children splat normals. The parent splat cone may be stored with the other non-leaf splat parameters. In one embodiment, the cosine or other trigonometric function of the cone angle may be stored rather than or in addition to the cone angle. Moreover, any of the splat parameters may be quantized prior to storing, and the splat parameters may be stored temporarily or more permanently. Referring to Fig. 5, illustrated is a schematic representation of at least a portion of one embodiment of a method of compressing a splat hierarchy according to aspects of the present disclosure. The splat hierarchy may be one such as a splat hierarchy created by recursively performing the methods 200 and 400 described above. Such a compression method may be referred to as a method of "squeezing" the splat hierarchy. Fig. 5 includes Arrangement A depicting a 2-dimensional node 500 encompassing four lower-hierarchy level nodes 510, 520, 530, 540 and three splats 552, 554, 556 collectively extending through the nodes 520, 530 and 540, respectively. Each of the three splats 552, 554, 556 are substantially aligned, or have substantially similar or identical splat planes. Accordingly, the splats 552, 554, 556 may be combined in a single splat extending through the corresponding nodes 520, 530 and 540. Thus, in one embodiment, the splats 552, 554, 556 may be replaced with a single, higher-hierarchy level splat 560. Thus, Fig. 5 also includes Arrangement B depicting the 2-dimensional node 500 having the splat 560 extending therethrough, such that the splats 552, 554, 556 of the lower hierarchy nodes 520, 530, 540 need not be subsequently referred to and/or stored in memory. The replacement splat 560 is substantially aligned or coplanar with the splats 552, 554, 556, has a radius that is larger than the radius of each of the replaced splats 552, 554, 556, and also has a splat cone substantially encompassing the normals of the replaced splats 552, 554, 556 and any of their children.
In one embodiment, such combination of substantially aligned planes may be performed only if additional conditions are met. One such condition may be that the neighboring splats may differ by at most one hierarchy level. For example, Fig. 6 illustrates schematic representations (Arrangements A and B) of scenarios demonstrating when such a condition may or may not be satisfied according to one embodiment of splat hierarchy compression according to aspects of the present disclosure.
In Arrangement A, a lower hierarchy node 610 includes a splat 615 that is proximate splats 625 of a neighboring, higher hierarchy level node 620, wherein each of the splats 625 correspond to children nodes of node 620. However, the splat 615 is one hierarchy level lower than the splats 625. Combining the splats 625 into a single splat would result in a larger splat having a hierarchy level that is two hierarchy levels higher than that of the splat 615. Consequently, the combination condition described above is not satisfied, and the splats 625 may not be combined according to the method 500 described above.
In Arrangement B, a lower hierarchy node 630 includes a splat 635 that is proximate splats 645 of a neighboring, higher hierarchy level node 640, wherein each of the splats 645 correspond to children nodes of node 640. However, the splat 635 has the same hierarchy level as the splats 645. Combining the splats 645 into a single splat would result in a larger splat having a hierarchy level that is only one hierarchy level higher than that of the splat 635. Consequently, the combination condition described above is satisfied, and the splats 645 may be combined according to the method 500 described above.
Referring to Fig. 7, illustrated is a flow chart diagram of one embodiment of a method 700 of rendering at least a portion of a splat hierarchy according to aspects of the present disclosure. The method 700 may be performed recursively, and may employ results matching, as described above.
In a decisional step 710, splats are examined to determine if they are visible. Such determination may consider back-face culling, in which splats on a side of the solid object that is opposite the rendering view point may not be rendered. The visibility determination may also consider visibility or frustum culling, in which only those splats within a predetermined view angle relative to the rendering view point may be rendered. The visibility determination may also consider detail culling. Splats determined to be not visible in step 710, and possibly all lower hierarchy splats on the same hierarchy branch (splat children), are not rendered. In a step 720, the non-rendered splats' siblings are examined to determine if they have ever been traversed. Step 720 may include determining if non-rendered splats' siblings have been traversed during a current iteration or a predetermined number of recent iterations of the method 700 (or a portion or variation thereof). The siblings may then be traversed in a step 725. For example, the method 700 or a portion or variation thereof may be repeated for the siblings. As such, the method 700 may be recursive. If the siblings need not be traversed, as determined in step 720, the non-rendered splats' parents may then traversed in a step 727. For example, the method 700 or a portion or variation thereof may be repeated for the splats' parents (again, possibly in a recursive manner). In a step 730, visible splats are examined to determine status as either a leaf node splat or a non-leaf node splat. Visible leaf node splats are rendered in a step 735, possibly with no other considerations before rendering. In decisional step 720, the drawn splats' siblings are examined to determine if they have ever been traversed or, alternatively, if they have been traversed duπng a current iteration or a predetermined number of recent iterations of the method 700 (or a portion or variation thereof). The siblings may then be traversed in step 725, or the drawn splats' parents may then be traversed in step 727, as discussed above.
For splats not found to be leaf node splats in step 730, a decisional step 740 compares the screen sizes of visible, non-leaf node splats to a threshold value. Splats having screen sizes less than the threshold are rendered, such as in step 735. The threshold value may be adjusted (e.g., by a user) to maintain a desired frame rate of the rendering. In one embodiment, the frame rate may be increased during periods in which the rendered image is being manipulated (e.g., rotated, translated, etc.) and decreased dunng time periods in which the rendered image is stationary on the screen. Increasing the frame rate may reduce the resolution of the displayed image, and decreasing the frame rate may increase the resolution of the displayed image. The first child of splats having screen sizes greater than the threshold are traversed in a step
745, by once again executing the method 700 (or a portion or variation thereof) with the splat child. After traversing the first child of splats having screen sizes greater than the threshold in step 745, the siblings of the first child splats are examined in decisional step 720, such that the siblings or the parents of the first child splats may subsequently be traversed in steps 725, 727, as discussed above. Traversing splat parents may be, or may be similar to, executing a "return" statement in C++ programming language. For example, such a return statement may indicate that a function has ended and that the caller of the function should continue to the next step. Thus, in one embodiment, after traversing child splats in step 745, such a return statement would indicate that step 720 is the next step to be performed. The methods of isosurface extraction and/or point rendering described above have many applications. Referπng to Fig. 8, illustrated is a perspective view of a MEMS device 800 as one example of an application of the method 100 shown in Fig. 1 according to aspects of the present disclosure. The MEMS device 800 may include one or more MEMS bidirectional actuators and/or other MEMS devices within the scope of the present disclosure.
Processing according to aspects of the present disclosure also has a large field of application in the medical field. For example, in modeling lπadiation in tumor therapy, magnetic resonance imaging (MRI) or computeπzed tomography (CT) scan data can be segmented into various entities (e.g., bone, tissue, skin, etc.). These regions can then be processed according to aspects of the present disclosure, such as by the method 100 shown in Fig. 1.
Referring to Fig 9, illustrated is a schematic view of one embodiment of a computer aided design (CAD) or other processing system 900 constructed according to aspects of the present disclosure. The system 900 may be designed to create engineered objects (e.g., NEMS, MEMS and/or other microelectronic devices) from, in part, standard cell components. Moreover, the system 900 may be configured to extract isosurfaces from solid model data for subsequent rendering or other visualization, among other actions.
The standard cell components may be stored in a library 901 utilizing a mass storage device 906. For example, in a MEMs device design, the cell components may include discrete
MEMs elements, such as thermal actuators, electrostatic actuators, micro-gπppers, micro-latches, micro-tethers, micro-rotators and/or the like. The standard cell components may define the respective spatial composition of the vaπous discrete elements.
A user interface 902 and a rendering program 903 may be implemented as software processes executable on a computer system 905. In one embodiment, a user may "pick-and-place" discrete cell components utilizing the user interface 902 and, in response, the rendeπng program 903 may select the respective cell component from the cell library 901. When the user "drops" the discrete cell component at a desired location, the rendering program 903 may locate the respective portions of an octree representation 904 of the device being designed. The rendeπng algorithm 903 may update the portions of the octree representation 904 to reflect the addition of the cell component. Specifically, the respective elemental level nodes of the octree 904 may be created and/or modified to reflect the material composιtιon(s) of the cell component at the respective locations. For MEMs devices, a binary or non-binary data structure may be employed to identify possible material compositions such as semiconductor materials, oxides, ceramics, metals and/or the like. Such rendenng may include performing one or more of the methods described above. It may follow from the preceding discussion that the visualization or other rendering described above, or portions or aspects thereof, may also be implemented as a program product. Such a program product may be employed with or executed by the system 900 shown in Fig. 9. In one embodiment, the program product includes a computer-readable storage medium and means recorded on the medium for providing hierarchical node data representing an object having an isosurface, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The program product also includes means recorded on the medium for determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data coπespondmg to at least one of the plurality of leaf nodes. The program product also includes means recorded on the medium for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each corresponding to a lower hierarchical node.
Another embodiment of a program product according to aspects of the present disclosure also includes means recorded on the medium for rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats. The storage medium may be a magnetic or optical recording medium which is readable by a computer, such as by the system 900 shown in Fig. 9. The storage medium may also be a network distribution medium, such as may be employed for downloading the program product over a wired and/or wireless network.
Thus, in general, the present disclosure provides a method of extracting isosurface data from hierarchical node data, including providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The method also includes determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. A plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also determined, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each coπespondmg to a lower hierarchical node. The present disclosure also introduces a method of rendeπng isosurface data. In one embodiment, the method includes providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The method also includes determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. A plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also determined, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node. A plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats may then be rendered.
A processing system for extracting isosurface data from hierarchical node data is also provided in the present disclosure. In one embodiment, the processing system includes means for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes.
The processing system also includes means for determining a plurality of leaf node splats each coπespondmg to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. Means for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also included in the processing system, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.
A processing system for rendeπng isosurface data is also introduced in the present disclosure. In one embodiment, the processing system includes means for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The processing system also includes means for determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes Means for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface is also included in the processing system, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node. The processing system also includes means for rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats. A program product is also provided m the present disclosure. In one embodiment, the program product includes a computer-readable storage medium and means recorded on the medium for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes. The program product also includes means recorded on the medium for determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data coπesponding to at least one of the plurality of leaf nodes. Means are also recorded on the medium for determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, wherein each of the plurality of non-leaf node splats is based on a plurality of splats each corresponding to a lower hierarchical node.
Another embodiment of the program product also includes means recorded on the medium for rendeπng a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats. The storage medium may be a magnetic or optical recording medium, and may also be a network distnbution medium.
A method of extracting isosurface data from a scalar field is also provided in the present disclosure. In one embodiment, the method includes providing scalar field data and building a splat hierarchy. Building the splat hierarchy includes determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, wherein each of the plurality of leaf node splats is based on scalar data corresponding to at least one of the plurality of leaf nodes. Building the splat hierarchy also includes determining a plurality of non-leaf node splats each based on a plurality of lower hierarchical splats.
The foregoing has outlined features of several embodiments so that those skilled in the art may better understand the detailed description that follows. Those skilled m the art should appreciate that they can readily use the present disclosure as a basis for designing or modifying other processes and structures for carrying out the same purposes and/or achieving the same advantages of the embodiments introduced herein. Those skilled in the art should also realize that such equivalent constructions do not depart from the spint and scope of the present disclosure, and that they can make various changes, substitutions and alterations herein without departing from the spirit and scope of the present disclosure.

Claims

WHAT IS CLAIMED IS:
1. A method of extracting isosurface data from hierarchical node data, comprising: providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes; determining a plurality of leaf node splats each corresponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; and determining a plurality of non-leaf node splats each corresponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each coπesponding to a lower hierarchical node.
2. The method of claim 1 wherein the hierarchical node data is 2-dιmensιonal.
3. The method of claim 1 wherein the hierarchical node data is 3 -dimensional
4. The method of claim 1 wherein the hierarchical node data is in octree format.
5. The method of claim 1 wherein the hierarchical node data is in shared octree format.
6. The method of claim 1 wherein at least one of the pluralities of leaf node splats and non-leaf node splats are determined recursively.
7. The method of claim 6 wherein at least one of the pluralities of leaf node splats and non-leaf node splats are determined employing results matching.
8. The method of claim 1 wherein the scalar data is representative of leaf node material occupancy percentages.
9. The method of claim 1 wherein determining the plurality of leaf node splats includes approximating isosurface locations within at least one of the leaf nodes based on the scalar values.
10. The method of claim 9 wherein ones of the plurality of leaf node splats are each partially defined by a leaf node splat center that is an average of intermediate edge point locations, wherein the intermediate edge points approximate a predetermined scalar value along an intersection between the isosurface and leaf node faces.
11. The method of claim 9 wherein ones of the plurality of leaf node splats are each partially defined by a leaf node splat normal that approximates an isosurface normal.
12. The method of claim 9 wherein ones of the plurality of leaf node splats are each partially defined by a radius determined such that each of the of leaf node splats divides each coπesponding leaf node into two portions.
13. The method of claim 12 wherein the radius of each of the plurality of leaf node splats is the minimum radius that permits the coπesponding leaf node splat to divide the coπesponding leaf node into two portions.
14. The method of claim 1 wherein each of the plurality of non-leaf node splats is partially defined by a plane based on a least square fit of a plurality of lower hierarchical splats.
15. The method of claim 1 wherein each of the plurality of non-leaf nodes splats is partially defined by a radius determined such that each of the of non-leaf node splats divides each coπesponding non-leaf node into two portions.
16. The method of claim 15 wherein the radius of each of the plurality of non-leaf node splats is the minimum radius that permits the coπesponding non-leaf node splat to divide the coπesponding non-leaf node into two portions.
17. The method of claim 1 wherein each of the plurality of non-leaf node splats is partially defined by a normal and a cone encompassing a plurality of lower hierarchy splat normals.
18. The method of claim 1 further comprising compressing a splat hierarchy populated by the pluralities of leaf node splats and non-leaf node splats.
19. The method of claim 18 wherein compressing includes replacing a plurality of substantially coplanar lower hierarchy splats with a combine splat substantially coplanar with the plurality of lower hierarchy splats, having a radius larger than the individual radii of the plurality of lower hierarchy splats, and having a splat cone substantially encompassing a plurality of children splat normals.
20. A method of rendering isosurface data, comprising: providing hierarchical node data representing an object having an isosurface, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes; determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; determining a plurality of non-leaf node splats each coπespondmg to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each coπesponding to a lower hierarchical node; and rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats.
21. The method of claim 20 wherein the plurality of rendered splats satisfy visibility conditions, wherein the splat hierarchy also includes a plurality of non-rendered splats.
22. The method of claim 21 wherein one of the visibility conditions is backface culling.
23. The method of claim 21 wherein one of the visibility conditions is viewpoint frustum culling.
24. The method of claim 21 wherein one of the visibility conditions compares splat screen sizes to threshold values.
25. The method of claim 20 wherein the rendeπng is performed recursively.
26. A processing system for extracting isosurface data from hierarchical node data, comprising: means for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes; means for determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; and means for determining a plurality of non-leaf node splats each coπesponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each coπesponding to a lower hierarchical node.
27. The system of claim 26 wherein at least one of the means for determining the pluralities of leaf node splats and non-leaf node splats includes means for recursive determination.
28. The system of claim 27 wherein the recursive determination means is configured to employ results matching.
29. The system of claim 26 wherein the scalar data is representative of leaf node material occupancy percentages.
30. A processing system for rendering isosurface data, comprising: means for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes; means for determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; means for determining a plurality of non-leaf node splats each coπesponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each coπesponding to a lower hierarchical node; and means for rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats.
31. The system of claim 30 wherein the means for rendering the plurality of splats includes means for verifying that ones of the plurality of splats satisfy visibility conditions, wherein the splat hierarchy also includes a plurality of non-rendered splats.
32. The system of claim 31 wherein one of the visibility conditions is backface culling.
33. The system of claim 31 wherein one of the visibility conditions is viewpoint frustum culling.
34. The system of claim 31 wherein one of the visibility conditions compares splat screen sizes to threshold values.
35. The system of claim 30 wherein the rendeπng means includes means for performing rendering recursively.
36. A program product, comprising: a computer-readable storage medium; means recorded on the medium for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes; means recorded on the medium for determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; and means recorded on the medium for determining a plurality of non-leaf node splats each coπesponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each coπesponding to a lower hierarchical node.
37. The program product of claim 36 wherein at least one of the means for determining the pluralities of leaf node splats and non-leaf node splats includes means recorded on the medium for recursive determination.
38. The program product of claim 37 wherein the recursive determination means is configured to employ results matching.
39. The program product of claim 36 wherein the storage medium is a magnetic recording medium.
40. The program product of claim 36 wherein the storage medium is an optical recording medium.
41. The program product of claim 36 wherein the storage medium is a network distribution medium.
42. A program product, comprising: a computer-readable storage medium; means recorded on the medium for providing hierarchical node data representing an object, the hierarchical node data including a lowest hierarchy level having a plurality of leaf nodes and a plurality of higher hierarchy levels each having a plurality of non-leaf nodes each encompassing ones of the plurality of leaf nodes; means recorded on the medium for determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; means recorded on the medium for determining a plurality of non-leaf node splats each coπesponding to one of the plurality of non-leaf nodes that includes a portion of the isosurface, each of the plurality of non-leaf node splats based on a plurality of splats each coπesponding to a lower hierarchical node; and means recorded on the medium for rendering a plurality of splats partially populating a splat hierarchy resulting from the determination of the pluralities of leaf node splats and non-leaf node splats.
43. The program product of claim 42 wherein the means for rendering the plurality of splats includes means for verifying that ones of the plurality of splats satisfy visibility conditions, wherein the splat hierarchy also includes a plurality of non-rendered splats.
44. The program product of claim 43 wherein one of the visibility conditions is backface culling.
45. The program product of claim 43 wherein one of the visibility conditions is viewpoint frustum culling.
46. The program product of claim 43 wherein one of the visibility conditions compares splat screen sizes to threshold values.
47. The program product of claim 42 wherein the rendering means includes means for performing rendering recursively.
48. The program product of claim 42 wherein the storage medium is a magnetic recording medium.
49. The program product of claim 42 wherein the storage medium is an optical recording medium.
50. The program product of claim 42 wherein the storage medium is a network distribution medium.
51. A method of extracting isosurface data from a scalar field, comprising: providing scalar field data; and building a splat hierarchy, including: determining a plurality of leaf node splats each coπesponding to one of the plurality of leaf nodes that includes a portion of an isosurface, each of the plurality of leaf node splats based on scalar data coπesponding to at least one of the plurality of leaf nodes; and determining a plurality of non-leaf node splats each based on a plurality of lower hierarchical splats.
PCT/US2004/043833 2003-12-31 2004-12-30 Isosurface extraction into splat hierarchy WO2005066901A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/749,256 2003-12-31
US10/749,256 US7272608B2 (en) 2002-11-27 2003-12-31 Isosurface extraction into splat hierarchy

Publications (1)

Publication Number Publication Date
WO2005066901A1 true WO2005066901A1 (en) 2005-07-21

Family

ID=34749291

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/043833 WO2005066901A1 (en) 2003-12-31 2004-12-30 Isosurface extraction into splat hierarchy

Country Status (2)

Country Link
US (1) US7272608B2 (en)
WO (1) WO2005066901A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268940B (en) * 2014-10-17 2017-02-15 中国石油大学(华东) MEMS structure reconstruction and detection method based on CT scanned images
EP2750104A3 (en) * 2012-12-27 2017-08-02 Tsinghua University Methods for extracting shape feature, inspection methods and apparatuses

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3855053B2 (en) * 2003-01-30 2006-12-06 国立大学法人 東京大学 Image processing apparatus, image processing method, and image processing program
JP4654020B2 (en) * 2004-12-21 2011-03-16 富士通株式会社 MESH DATA CREATION DEVICE, MESH DATA CREATION PROGRAM, COMPUTER-READABLE RECORDING MEDIUM RECORDING THE PROGRAM, MESH DATA CREATION METHOD, AND STRUCTURAL ANALYSIS DEVICE
US7697620B2 (en) * 2005-11-14 2010-04-13 Ibiquity Digital Corporation Equalizer for AM in-band on-channel radio receivers
KR101420237B1 (en) * 2008-02-25 2014-07-17 삼성전자주식회사 3D Image Processing Method and Apparatus for Enabling Efficient Retrieval of Neighbor Point
JP5112229B2 (en) * 2008-09-05 2013-01-09 株式会社エヌ・ティ・ティ・ドコモ Distribution device, terminal device, system and method
JP5080406B2 (en) * 2008-09-05 2012-11-21 株式会社エヌ・ティ・ティ・ドコモ Distribution device, terminal device, system and method
WO2016086344A1 (en) * 2014-12-01 2016-06-09 Siemens Aktiengesellschaft Method and apparatus for generating machining codes of workpieces from a paper engineering drawing
US10134104B2 (en) * 2016-11-11 2018-11-20 Facebook, Inc. Systems and methods for providing reduced complexity rendering of user interface elements
US11630853B2 (en) * 2021-01-29 2023-04-18 Snowflake Inc. Metadata classification

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4202046A (en) 1978-09-01 1980-05-06 Ncr Corporation Data storage system for storing multilevel signals
US5469366A (en) 1993-09-20 1995-11-21 Lsi Logic Corporation Method and apparatus for determining the performance of nets of an integrated circuit design on a semiconductor design automation system
US5963956A (en) 1997-02-27 1999-10-05 Telcontar System and method of optimizing database queries in two or more dimensions
US6279007B1 (en) * 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6807550B1 (en) 1999-12-01 2004-10-19 Microsoft Corporation Methods and systems for providing random access to structured media content
DE60113073T2 (en) 2000-03-10 2006-08-31 Smiths Detection Inc., Pasadena CONTROL FOR AN INDUSTRIAL PROCESS WITH ONE OR MULTIPLE MULTIDIMENSIONAL VARIABLES
US20020138353A1 (en) 2000-05-03 2002-09-26 Zvi Schreiber Method and system for analysis of database records having fields with sets
US6603984B2 (en) 2000-05-16 2003-08-05 At&T Wireless Services, Inc. Methods and systems for managing information on wireless data devices
US6597359B1 (en) 2000-05-17 2003-07-22 Raychip, Inc. Hierarchical space subdivision hardware for ray tracing
US7292255B2 (en) 2000-05-31 2007-11-06 Canon Kabushiki Kaisha Image data acquisition optimisation
US6539519B1 (en) 2000-05-31 2003-03-25 Mark D. Meeker Spatial characteristic and logical hierarchy based manner for compactly storing IC design data and related operations
AU2002324775A1 (en) 2001-08-23 2003-03-10 Sciperio, Inc. Architecture tool and methods of use
AU2002328118A1 (en) 2001-10-04 2003-04-22 Koninklijke Philips Electronics N.V. Method of styling a user interface and device with adaptive user interface
US6671710B2 (en) 2002-05-10 2003-12-30 Energy Conversion Devices, Inc. Methods of computing with digital multistate phase change materials

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CO C S ET AL: "Iso-splatting: a point-based alternative to isosurface visualization", COMPUTER GRAPHICS AND APPLICATIONS, 2003. PROCEEDINGS. 11TH PACIFIC CONFERENCE ON OCT. 8-10, 2003, PISCATAWAY, NJ, USA,IEEE, 8 October 2003 (2003-10-08), pages 325 - 334, XP010662584, ISBN: 0-7695-2028-6 *
PARKER ERIC ET AL: "Exploiting self-similarity in geometry for voxel based solid modeling", PROC SYMP SOLID MODEL APPL; PROCEEDINGS OF THE SYMPOSIUM ON SOLID MODELING AND APPLICATIONS 2003, June 2003 (2003-06-01), pages 157 - 166, XP002328250 *
RUSINKIEWICZ S ET AL: "QSPLAT: A MULTIRESOLUTION POINT RENDERING SYSTEM FOR LARGE MESHES", COMPUTER GRAPHICS. SIGGRAPH 2000 CONFERENCE PROCEEDINGS. NEW ORLEANS, LA, JULY 23 - 28, 2000, COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH, NEW YORK, NY : ACM, US, 23 July 2000 (2000-07-23), pages 343 - 352, XP001003573, ISBN: 1-58113-208-5 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2750104A3 (en) * 2012-12-27 2017-08-02 Tsinghua University Methods for extracting shape feature, inspection methods and apparatuses
CN104268940B (en) * 2014-10-17 2017-02-15 中国石油大学(华东) MEMS structure reconstruction and detection method based on CT scanned images

Also Published As

Publication number Publication date
US7272608B2 (en) 2007-09-18
US20040162839A1 (en) 2004-08-19

Similar Documents

Publication Publication Date Title
Lindstrom et al. Visualization of large terrains made easy
Baert et al. Out-of-core construction of sparse voxel octrees
Shekhar et al. Octree-based decimation of marching cubes surfaces
Schreiner et al. High-quality extraction of isosurfaces from regular and irregular grids
JP4012258B2 (en) Progressive mesh adaptive subdivision method and apparatus
Andújar et al. Topology-reducing surface simplification using a discrete solid representation
TWI846636B (en) Non-transitory medium, system and method for multi-material mesh generation from fill- fraction voxel data
US20050128195A1 (en) Method for converting explicitly represented geometric surfaces into accurate level sets
Cignoni et al. Selective refinement queries for volume visualization of unstructured tetrahedral meshes
JP2004533026A (en) How to align a grid of points according to features in a digital image
WO2001008263A2 (en) Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
Shaffer et al. A multiresolution representation for massive meshes
KR100959349B1 (en) A method for accelerating terrain rendering based on quadtree using graphics processing unit
US7272608B2 (en) Isosurface extraction into splat hierarchy
CN112669463A (en) Method for reconstructing curved surface of three-dimensional point cloud, computer device and computer-readable storage medium
Grosso et al. Progressive Iso‐Surface Extraction from Hierarchical 3D Meshes
Van der Laan et al. Lossy geometry compression for high resolution voxel scenes
Schroeder et al. Compatible triangulations of spatial decompositions
US5883629A (en) Recursive and anisotropic method and article of manufacture for generating a balanced computer representation of an object
Bajaj et al. Accelerated isocontouring of scalar fields
Zanni et al. HCSG: Hashing for real-time CSG modeling
Ballesteros A Parallel Adaptive Mesh Refinement Library for Cartesian Meshes
Böonning et al. Interactive sculpturing and visualization of unbounded voxel volumes
Wood Improved isosurfacing through compression and sparse grid orientation estimation
van Rüschen et al. Volumetric terrain rendering with webgl

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

122 Ep: pct application non-entry in european phase