WO2014094047A1 - A method for efficent streaming of octree data for access - Google Patents

A method for efficent streaming of octree data for access Download PDF

Info

Publication number
WO2014094047A1
WO2014094047A1 PCT/AU2013/001480 AU2013001480W WO2014094047A1 WO 2014094047 A1 WO2014094047 A1 WO 2014094047A1 AU 2013001480 W AU2013001480 W AU 2013001480W WO 2014094047 A1 WO2014094047 A1 WO 2014094047A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
data
octree
blocks
block
Prior art date
Application number
PCT/AU2013/001480
Other languages
French (fr)
Inventor
Damian TREBILCO
Original Assignee
Euclideon Pty Ltd
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
Priority claimed from AU2012905545A external-priority patent/AU2012905545A0/en
Application filed by Euclideon Pty Ltd filed Critical Euclideon Pty Ltd
Publication of WO2014094047A1 publication Critical patent/WO2014094047A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • 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

  • environments i.e. scenes made up of virtual objects for projection and display to a user on a display device of a computer system, exist in two main forms.
  • the two main forms are “repeated models” and “unique models”.
  • a “repeated model” is an environment made from a library of separate objects that are repeated to make up the 3d model.
  • a "unique model” is where all objects are individuals and no two objects are the same.
  • a unique model requires that the processor of the computer system reads totally different parts of the system's memory for each of the objects and each part of the object and does not re-read the same area of memory even if objects look to be similar.
  • a tree may have thousands of leaves but data defining every single leaf would still be individually stored in memory with no repeating or recycling.
  • Unique models use memory wastefully and may use a hundred to a thousand times more memory than a repeated model of the same size. Nevertheless, unique models are necessary for the storage of accurate, truthful copies of the real physical world.
  • Methods for making a digital copy of the real world include laser scanning, structured light based scanning and photogrammetry. Alternatively there are some medical and scientific applications that also produce large models that are theoretical and also need to be stored as unique models.
  • Streaming may take place from devices such as a hard drive, DVD, USB storage device, an organization's central server, over the internet or from any other medium that holds data externally to RAM.
  • Figure 1 depicts a simple unique model of three mushrooms which are stored as points in memory of a computer system. A portion of the model, specified by a user's first "viewpoint" 100, i.e. a particular view volume and projection, has been rendered upon a display of the computer system.
  • Figure 2 shows the further display of a different portion of the model due to a change in to a second viewpoint 102. It will be noted that different points defining the portion of the model to be displayed must be retrieved from memory for processing. Background information about rendering three dimensional scenes in computer graphics to a display of a computer system is available in Chapter 6 of Computer Graphics Principles and Practice 2 nd Edition Published by Addison Wesley, the contents of which is hereby incorporated in its entirety by reference.
  • a computer implemented method for storing octree data for example an octree, the method including:
  • each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
  • the method preferably includes writing node data for upper levels of the tree to a grid file wherein leaf nodes of the within the grid file store file names of the at least one streaming file wherein the at least one streaming file contains node data for child nodes of the nodes stored in the grid file.
  • the method includes writing at plurality of block indexes in each block containing information for determining the location of lower level blocks, said lower level blocks corresponding to lower levels of the octree.
  • the information for determining the location of said lower level blocks may be stored in one or more nodes of the block.
  • the method of identifying the streaming file for processing includes identifying the streaming file from information stored in the grid file.
  • the method includes assigning a processing priority value to blocks not previously written to RAM.
  • the priority value is preferably accorded based upon the area that the block takes up on a display device wherein blocks containing higher level nodes in the octree are accorded a higher priority than blocks containing lower level nodes.
  • blocks are loaded into RAM in order of the priority that has been previously assigned to them.
  • the method includes monitoring the amount of available RAM and upon a predetermined threshold being met removing blocks from RAM in an order determined by their associated priority values.
  • a computer system implemented method for loading octree data from a computer readable file media into RAM of the computer system comprising: a. loading data defining a top level of the octree into the RAM;
  • a computer system including at least one processor in communication with a digital memory storing tangible machine readable instructions for said processor to:
  • a. write node data for the octree to at least one streaming file including: b. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
  • each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
  • a computer readable media for example an optical or magnetic disk or a solid state memory device, bearing tangible machine readable instructions for one or more electronic processors to:
  • a. write node data for a octree to at least one streaming file including: b. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
  • each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
  • a computer readable media for example an optical or magnetic disk or a solid state memory device, bearing information in a file defining a octree including: a. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree; and
  • each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
  • a computer system for retrieving octree data from files generated according to the previously described method, said system including at least one processor in communication with a digital memory storing tangible machine readable instructions for said processor to:
  • the instructions for identifying the streaming file for processing include instructions to identify the streaming file from information stored in the grid file.
  • FIG. 13 Illustrates a block with child block indices and nodes Figure 13. Illustrates the process for querying a block and acquiring a node.
  • FIG. 14 Illustrates the process for loading blocks. DETAILED DESCRIPTION
  • FIG. 3 there is shown a block diagram of an exemplary computer system 1 for carrying out a method according to an embodiment of the invention that will be described.
  • the computer system 1 includes a main board 2 which includes circuitry for powering and interfacing to at least one central processing unit in the form of onboard processor 3.
  • the at least one onboard processor may comprise one or more discrete processors or a processor with multiple processing cores.
  • a non-limiting example of a microprocessor that is presently popular in personal computers used for playing computer games, is one of the i5 or i7 families of processors manufactured by Intel Corp.
  • the main board 2 acts as an interface between microprocessor 3 and secondary memory 4.
  • the secondary memory 4 may comprise one or more optical or magnetic, or solid state, drives.
  • the secondary memory 4 stores instructions for an operating system 5.
  • the main board 2 also communicates with random access memory (RAM) 6 and read only memory (ROM) 7.
  • RAM random access memory
  • ROM read only memory
  • the ROM 7 typically stores instructions for a Basic Input Output System (BIOS) which the microprocessor 3 accesses upon start up and which preps the microprocessor 3 for loading of the operating system 5.
  • BIOS Basic Input Output System
  • the main board 2 also interfaces with a graphics processor unit 8. It will be understood that in some systems the graphics processor unit 8 is integrated into the main board 2 or the central processing unit 3.
  • the main board 2 will typically include a communications adapter, for example a LAN adaptor or a modem 13, that places the computer system 1 in data communication with a computer network such as the internet 14.
  • a user of the computer system 1 interfaces with it by means of keyboard 10, mouse 11 and display 9.
  • the user of system 1 may operate the operating system 5 to load a computer graphics related software product 16.
  • the computer graphics related software product 16 is provided as tangible instructions borne upon a computer readable media such as optical disk 15 read by disk drive 12. Alternatively it might also be downloaded via port 13.
  • the computer graphics related software product 16 includes data structures that store data defining various scenes, i.e. "environments" of, for example, a game.
  • the software product 16 also includes instructions for the microprocessor 3 and possibly for the GPU 8 to manipulate the scene data in response to inputs received from the user via operator controls such as keyboard 10 and mouse 11 .
  • the chosen embodiment proposes the use of an octree to store point cloud data.
  • the inventor has discovered an effective structure to store the octree that minimizes loading time as well shrinking the RAM footprint of the octree model.
  • An octree is a hierarchal tree structure in the shape of a cube. It has a root node that subdivides into 8 child nodes, of which each node may then subdivide into 8 further child nodes. Each node represents a cube octant that is one eighth the size of its parent node and is placed in one of the corners of the parent node. Each 8 child nodes represents an independent corner of a parent node from each other child node.
  • Figure 4 shows an octree with 8 octants, and 8 further octants within the 3 rd octant.
  • Figure 5 is a diagram of the nodes for that octree.
  • each octant that contains a part of the model subdivides into further octants. This continues until a maximum depth is reached whereupon the last child nodes are said to be leaf nodes to their parent node.
  • a node also contains information such as local color, specular properties, and normal information for the model region covered by the node.
  • Parent nodes information will typically be a summary of the information of all the child nodes. For example a parent node's color could be the average color of all its child nodes.
  • each node would contain an array of 8 references to the location of each child node within memory.
  • the preferred embodiment is less memory intensive by instead storing each child node consecutively along with a child mask.
  • the child mask stores a bit for each child node indicating if such a node exists.
  • the system checks the child mask to determine if that child exists, as well as its placement in memory. For example, a parent node could only contain 2 child nodes. When the system checks the 8 th , node, it may really be the 2nd node of the parent, and hence the 2 nd node in memory is read. With this method, a parent node need only store a single reference to the location of the child nodes.
  • figure 6 shows an octree with nodes 1 , 5 and 6 with content.
  • Figure 7 illustrates the corresponding node in memory, with the child mask indicating the relevant child nodes that exist.
  • an octree model is stored in a file or files, located on a storage unit 4 that may consist of a hard disk, flash drive, optical disk 15, etc.
  • the octree data is stored within two types of data files of which there can be a plurality of files for a single octree. Of these, the first is called a grid file 17 and the second, a streaming file 18.
  • each octree data set there can be a single streaming 18 file or multiple streaming files with a single grid file 17.
  • the grid file when paired with streaming files contains the root and top levels of the octree with the streaming files containing the lower levels of the octree. When no grid file is present, the streaming file then contains all of the octree.
  • the leaf nodes within the grid file store the file name of the streaming file that the child nodes are contained within.
  • the streaming file 19 contents are divided into 3 sections, a header section 20, data section 21 and table of contents section 22.
  • the data sections are further divided into blocks 23, with each block containing a subset of octree nodes.
  • Figure 10 demonstrates that a block 23 may also have many child blocks as illustrated with block 24 being the parent to blocks 25. Nodes within each block have child nodes that are within the same block or within a child block.
  • the table of contents 22 contains the ordered indexed position of each block 23 within the streaming file 19 as demonstrated in figure 11.
  • index 0 will point to the first block's position in the file, index 1 to the second block's position, continuing until each block is mapped. This allows for random access of a block, such that as long as the block's index is known, it can be retrieved from a file. Retrieval is processed by reading a file from the position indicated in the table until the contents at the position of the next block is read.
  • FIG. 12 a preferred embodiment of a block 26 is illustrated.
  • the block contains an ordered array of child block indices (or equivalently "indexes") 27. Each of these directs to an index within the table of contents 29.
  • Each node 28 within the block 26 stores a reference to the block that its child nodes are contained within. This is accomplished by storing the index of the child block indices.
  • An embodiment may conceivably have a node store the index for the block array instead of directing to the block which stores the index. This is inferior as each node requires a large integer in comparison to each node using a small integer and the indexes in the block using a large integer.
  • Embodiments of the present invention are used as the octree is traversed by a method such as a ray tracer, rasterizer or similar process, attempts to read a node from the octree. If the octree has a grid file, the nodes of the octree are loaded into RAM and are read as a traditional octree. When reading the grid file's leaf nodes, a streaming file name is read from the leaf node and checked to see if this streaming file has been loaded into RAM. If it has not, which will be the case for the first time the file has been accessed, then a segment of RAM is set aside called the block array.
  • a method such as a ray tracer, rasterizer or similar process
  • the block arrays within RAM stores indices, which match the indices of the table of contents for that streaming file.
  • the starting values within the block array are set to NULL. If a model is contained only within a streaming file and not a grid file, then process begins by loading the streaming file if not done so already.
  • the child block index is read from that the parent node. This provides an index to the child block indices array inside the parent node's block.
  • the requested child node is read from the block.
  • an untouched value for that block is set to zero.
  • the path of the block location is equal to NULL has been taken.
  • a priority value is generated from the area that the block takes up on a display medium. This results in the tendency for nodes higher in the octree to be given a higher priority.
  • the Job is added to a list of pending jobs.
  • the node to be returned is set to null.
  • the node is returned.
  • any block with an untouched priority value that is not zero has its value incremented and placed into an untouched list.
  • Each block that has nodes read from them have their untouched value turned to zero.
  • any blocks that are not used continually receive a higher untouched value as each cycle the value increases.
  • the list of untouched blocks list is sorted from highest untouched value to lowest.
  • the job list is also sorted from highest priority to lowest.
  • the list of jobs is sequentially processed from highest priority to lowest. In the preferred embodiment, this may be done parallel to rasterization. In such a method, when rasterization finishes and blocks are being loaded in parallel, then this process finishes, leaving any remaining jobs incomplete,
  • the threshold is checked to see if any blocks can be loaded.
  • the threshold has been met and blocks need to be unloaded.
  • the block indicated by the item with the highest untouched value in the untouched list is the block that is removed. That block is removed from RAM and the block array is updated so that its value is NULL instead of pointing to its previous location in RAM.
  • the index of the block to be loaded is read from the job in the job list with the highest priority. This index provides the index for the table of contents, providing the position of the block within the streaming file.
  • the Block is read from the streaming file.
  • memory is allocated for the new block and stored in that location.
  • a "data packet” is type of data structure having one or more related fields, which are collectively defined as a unit of information transmitted from one device or program module to another.
  • the symbolic representations of operations are the means used by those skilled in the art of computer programming and computer construction to most effectively convey teachings and discoveries to others skilled in the art.
  • any steps of the present invention e.g. the steps described with reference to Figures 14 and 15
  • the instructions can be used to cause a general-purpose or special-purpose processor which is programmed with the instructions to perform the steps of the present invention.
  • the steps of the present invention might be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components.
  • the present invention is composed of hardware and computer program products (e.g. product 16 of Figure 3) which may include a machine-readable medium, e.g. the disk 15 of Figure 3, having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process according to the present invention.
  • the machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnet or optical cards, or other type of media/machine-readable medium suitable for storing electronic instructions.
  • the software portion of the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection) such as network adaptor 13 of Figure 3.
  • a remote computer e.g., a server
  • a requesting computer e.g., a client
  • a communication link e.g., a modem or network connection

Landscapes

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

Abstract

A computer implemented method for storing octree data for rapid access. The method includes a number of steps as follows. Writing node data for the octree to at least one streaming file. The streaming file includes a data section of the file comprised of a plurality of blocks where each block stores data for a subset of nodes of the octree. Each child node is stored consecutively along with a child mask containing a bit for each child node that is present so that the mask indicates if a child node exists or not. The streaming file also includes a table of contents section of the file containing an ordered index position of each of the blocks for subsequent retrieval of the stored data. Each node within each of the blocks stores a reference to a block containing a sublevel of child nodes.

Description

A METHOD FOR EFFICENT STREAMING OF OCTREE DATA FOR ACCESS
BACKGROUND
[01] Within the field of 3d computer graphics, "environments", i.e. scenes made up of virtual objects for projection and display to a user on a display device of a computer system, exist in two main forms. The two main forms are "repeated models" and "unique models". A "repeated model" is an environment made from a library of separate objects that are repeated to make up the 3d model.
[02] A good example of repeated models can be seen in the vast majority of computer games, an object like a tree or a rock may be made and repeated many times. These repeated objects address the same data in computer memory and so a large model can be created with only a fraction of the memory that would have been required if every tree or rock was unique and individually created.
[03] A "unique model" is where all objects are individuals and no two objects are the same. A unique model requires that the processor of the computer system reads totally different parts of the system's memory for each of the objects and each part of the object and does not re-read the same area of memory even if objects look to be similar.
[04] For example in a unique model a tree may have thousands of leaves but data defining every single leaf would still be individually stored in memory with no repeating or recycling. Unique models use memory wastefully and may use a hundred to a thousand times more memory than a repeated model of the same size. Nevertheless, unique models are necessary for the storage of accurate, truthful copies of the real physical world. [05] Methods for making a digital copy of the real world include laser scanning, structured light based scanning and photogrammetry. Alternatively there are some medical and scientific applications that also produce large models that are theoretical and also need to be stored as unique models.
[06] Unique models may use up gigabytes to terabytes of data and this causes two large problems. The first is the time it takes to load these models in to computer RAM. The second is that the model is often many times bigger than the capacity of the computer system's RAM.
[07] Unique models are often stored as a series of points comprising of X, Y,Z positions and other information. Collections of these points are known as a "point cloud". By breaking this point cloud into an octree format it is possible to remove from memory the parts of the model that are not required to be projected and rendered to the computer system's screen and loading in the parts that are. This process is known as "streaming".
[08] Streaming may take place from devices such as a hard drive, DVD, USB storage device, an organization's central server, over the internet or from any other medium that holds data externally to RAM.
[09] Loading from such external devices is a significantly slower process than accessing the computer's RAM. Consequently, the display of the model visually shows many imperfections. The imperfections occur as a user controls the computer system to request the generation of new views of the model from different viewpoints and angles on the display thereby requiring new sections of the model to be streamed in from the external device for processing and projection upon a display of the computer system. For example, Figure 1 depicts a simple unique model of three mushrooms which are stored as points in memory of a computer system. A portion of the model, specified by a user's first "viewpoint" 100, i.e. a particular view volume and projection, has been rendered upon a display of the computer system. Figure 2 shows the further display of a different portion of the model due to a change in to a second viewpoint 102. It will be noted that different points defining the portion of the model to be displayed must be retrieved from memory for processing. Background information about rendering three dimensional scenes in computer graphics to a display of a computer system is available in Chapter 6 of Computer Graphics Principles and Practice 2nd Edition Published by Addison Wesley, the contents of which is hereby incorporated in its entirety by reference.
[10] The imperfections due to the loading from external devices are usually expressed as either the display of a temporary low resolution copy of the model while higher resolutions are streamed in, or by simply not having the new data present until streamed in thus leaving a temporary hole in the model.
[1 1] This problem could be approached by producing better external hardware devices that would stream in the new sections at a faster rate. Alternatively this present invention puts forth a software method for significantly speeding up the streaming process without the need for improved hardware.
[12] Traditionally the fastest approaches to streaming have been achieved using the octree format. The organization of this data format can occur in many different ways. The larger part of octree data storage is taken up by memory addresses pointing to the location of the next level octree cube.
[13] One approach of the prior art to addressing the above described problem has been to reduce the size of these addresses. However, it would be advantageous if another approach was feasible that eliminated them completely from the external storage medium. It is an object of the present invention to provide a method of addressing the above described problem that results in a significant speed increase so that the visual representation problems associated with streaming from hard drives or other devices of similar loading speeds are overcome SUMMARY OF THE INVENTION
[14] According to a first aspect of the present invention there is provided a computer implemented method for storing octree data, for example an octree, the method including:
a. writing node data for the octree to at least one streaming file including: b. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
c. a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data;
d. wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
[15] The method preferably includes writing node data for upper levels of the tree to a grid file wherein leaf nodes of the within the grid file store file names of the at least one streaming file wherein the at least one streaming file contains node data for child nodes of the nodes stored in the grid file.
[16] Preferably the method includes writing at plurality of block indexes in each block containing information for determining the location of lower level blocks, said lower level blocks corresponding to lower levels of the octree.
[17] Alternatively, in a less preferred embodiment the information for determining the location of said lower level blocks may be stored in one or more nodes of the block.
[18] According to a further aspect of the present invention there is provided a computer implemented method for retrieving octree data from files generated according to the previously described method, the method for retrieving octree data comprising the steps of:
a. identifying a streaming file for processing; and
b. writing index positions from the table of contents section of the streaming file to a portion of RAM comprising a block array. [19] Where the files include a grid file then the method of identifying the streaming file for processing includes identifying the streaming file from information stored in the grid file.
[20] Preferably the method includes assigning a processing priority value to blocks not previously written to RAM.
[21] The priority value is preferably accorded based upon the area that the block takes up on a display device wherein blocks containing higher level nodes in the octree are accorded a higher priority than blocks containing lower level nodes.
[22] In a preferred embodiment of the invention, blocks are loaded into RAM in order of the priority that has been previously assigned to them.
[23] Preferably the method includes monitoring the amount of available RAM and upon a predetermined threshold being met removing blocks from RAM in an order determined by their associated priority values.
[24] A computer system implemented method for loading octree data from a computer readable file media into RAM of the computer system comprising: a. loading data defining a top level of the octree into the RAM;
b. subsequently loading data defining lower levels of the octree into the RAM until no new nodes of said octree need to be accessed for a given viewpoint; and
c. upon the viewpoint changing loading only data from the file media to RAM required for visualizing the data from the new viewpoint.
[25] A computer system including at least one processor in communication with a digital memory storing tangible machine readable instructions for said processor to:
a. write node data for the octree to at least one streaming file including: b. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
c. a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data; d. wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
[26] According to a further aspect of the present invention there is provided a computer readable media, for example an optical or magnetic disk or a solid state memory device, bearing tangible machine readable instructions for one or more electronic processors to:
a. write node data for a octree to at least one streaming file including: b. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
c. a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data: d. wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
[27] According another aspect of the present invention there is provided a computer readable media, for example an optical or magnetic disk or a solid state memory device, bearing information in a file defining a octree including: a. a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree; and
b. a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data; c. wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
[28] According to another aspect of the present invention there is provided a computer system for retrieving octree data from files generated according to the previously described method, said system including at least one processor in communication with a digital memory storing tangible machine readable instructions for said processor to:
a. identify a streaming file for processing; and
b. write index positions from the table of contents section of the streaming file to a portion of RAM comprising a block array.
[29] Preferably, where the files include a grid file then the instructions for identifying the streaming file for processing include instructions to identify the streaming file from information stored in the grid file.
DESCRIPTION OF DRAWINGS
Illustrates the projection of a portion of a three dimensional model, specified by a user's first viewpoint, by a computer system onto a display of the system.
Illustrates the projection of a portion of the three dimensional model, specified by a user's second viewpoint, by the computer system onto the display of the system.
Illustrates a computer system for implementing a method according to an embodiment of the present invention,
shows an octree with 8 octants, and 8 further octants within the 3rd octant.
Is a diagram depicting the nodes for the octree of Figure 4.
Shows an octree wherein nodes 1 , 5 and 6 have content, illustrates storage of the node of Figure 6 in memory of the computer system
Illustrates the files used to store octree data.
Illustrates the internal structure of a streaming file.
Illustrates a node and block structure.
Illustrates a table of contents referring to blocks in a streaming file.
Illustrates a block with child block indices and nodes Figure 13. Illustrates the process for querying a block and acquiring a node.
Figure 14. Illustrates the process for loading blocks. DETAILED DESCRIPTION
[30] Referring now to Figure 3, there is shown a block diagram of an exemplary computer system 1 for carrying out a method according to an embodiment of the invention that will be described.
[31] The computer system 1 includes a main board 2 which includes circuitry for powering and interfacing to at least one central processing unit in the form of onboard processor 3. The at least one onboard processor may comprise one or more discrete processors or a processor with multiple processing cores.
[32] A non-limiting example of a microprocessor, that is presently popular in personal computers used for playing computer games, is one of the i5 or i7 families of processors manufactured by Intel Corp.
[33] The main board 2 acts as an interface between microprocessor 3 and secondary memory 4. The secondary memory 4 may comprise one or more optical or magnetic, or solid state, drives. The secondary memory 4 stores instructions for an operating system 5. The main board 2 also communicates with random access memory (RAM) 6 and read only memory (ROM) 7. The ROM 7 typically stores instructions for a Basic Input Output System (BIOS) which the microprocessor 3 accesses upon start up and which preps the microprocessor 3 for loading of the operating system 5.
[34] The main board 2 also interfaces with a graphics processor unit 8. It will be understood that in some systems the graphics processor unit 8 is integrated into the main board 2 or the central processing unit 3. [35] The main board 2 will typically include a communications adapter, for example a LAN adaptor or a modem 13, that places the computer system 1 in data communication with a computer network such as the internet 14.
[36] A user of the computer system 1 interfaces with it by means of keyboard 10, mouse 11 and display 9.
[37] The user of system 1 may operate the operating system 5 to load a computer graphics related software product 16. The computer graphics related software product 16 is provided as tangible instructions borne upon a computer readable media such as optical disk 15 read by disk drive 12. Alternatively it might also be downloaded via port 13.
[38] The computer graphics related software product 16 includes data structures that store data defining various scenes, i.e. "environments" of, for example, a game.
[39] The software product 16 also includes instructions for the microprocessor 3 and possibly for the GPU 8 to manipulate the scene data in response to inputs received from the user via operator controls such as keyboard 10 and mouse 11 .
[40] The chosen embodiment proposes the use of an octree to store point cloud data. The inventor has discovered an effective structure to store the octree that minimizes loading time as well shrinking the RAM footprint of the octree model.
[41] An octree is a hierarchal tree structure in the shape of a cube. It has a root node that subdivides into 8 child nodes, of which each node may then subdivide into 8 further child nodes. Each node represents a cube octant that is one eighth the size of its parent node and is placed in one of the corners of the parent node. Each 8 child nodes represents an independent corner of a parent node from each other child node. Figure 4 shows an octree with 8 octants, and 8 further octants within the 3rd octant. Figure 5 is a diagram of the nodes for that octree.
[42] For an octree to represent a model (i.e. a "scene" or "environment"), each octant that contains a part of the model subdivides into further octants. This continues until a maximum depth is reached whereupon the last child nodes are said to be leaf nodes to their parent node.
[43] In the preferred embodiment, a node also contains information such as local color, specular properties, and normal information for the model region covered by the node. Parent nodes information will typically be a summary of the information of all the child nodes. For example a parent node's color could be the average color of all its child nodes.
[44] Traditionally, each node would contain an array of 8 references to the location of each child node within memory. The preferred embodiment is less memory intensive by instead storing each child node consecutively along with a child mask. The child mask stores a bit for each child node indicating if such a node exists. In order for the computer system to access a child node, the system checks the child mask to determine if that child exists, as well as its placement in memory. For example, a parent node could only contain 2 child nodes. When the system checks the 8th, node, it may really be the 2nd node of the parent, and hence the 2nd node in memory is read. With this method, a parent node need only store a single reference to the location of the child nodes.
[45] For example, figure 6 shows an octree with nodes 1 , 5 and 6 with content. Figure 7 illustrates the corresponding node in memory, with the child mask indicating the relevant child nodes that exist.
[46] In the preferred embodiment, an octree model is stored in a file or files, located on a storage unit 4 that may consist of a hard disk, flash drive, optical disk 15, etc. Referring to figure 8, the octree data is stored within two types of data files of which there can be a plurality of files for a single octree. Of these, the first is called a grid file 17 and the second, a streaming file 18.
[47] For each octree data set there can be a single streaming 18 file or multiple streaming files with a single grid file 17. The grid file when paired with streaming files contains the root and top levels of the octree with the streaming files containing the lower levels of the octree. When no grid file is present, the streaming file then contains all of the octree. The leaf nodes within the grid file store the file name of the streaming file that the child nodes are contained within.
[48] Referring to figure 9, the streaming file 19 contents are divided into 3 sections, a header section 20, data section 21 and table of contents section 22. The data sections are further divided into blocks 23, with each block containing a subset of octree nodes.
[49] Figure 10 demonstrates that a block 23 may also have many child blocks as illustrated with block 24 being the parent to blocks 25. Nodes within each block have child nodes that are within the same block or within a child block.
[50] The table of contents 22 contains the ordered indexed position of each block 23 within the streaming file 19 as demonstrated in figure 11. In the preferred embodiment, index 0 will point to the first block's position in the file, index 1 to the second block's position, continuing until each block is mapped. This allows for random access of a block, such that as long as the block's index is known, it can be retrieved from a file. Retrieval is processed by reading a file from the position indicated in the table until the contents at the position of the next block is read.
[51] In Figure 12, a preferred embodiment of a block 26 is illustrated. The block contains an ordered array of child block indices (or equivalently "indexes") 27. Each of these directs to an index within the table of contents 29. Each node 28 within the block 26 stores a reference to the block that its child nodes are contained within. This is accomplished by storing the index of the child block indices.
[52] An embodiment may conceivably have a node store the index for the block array instead of directing to the block which stores the index. This is inferior as each node requires a large integer in comparison to each node using a small integer and the indexes in the block using a large integer.
[53] By following this process the memory addresses that are vital to the function of the octree data structure have been removed from the streaming process and replaced by only 1 bit to represent each of the octree formats 8 cubes. As the octree format is well known as a system that contains addresses to other cubes, it may be better to say that the above described streaming format is not a conventional octree data structure, but rather octree data is created from the bit pattern, at the time the data enters the computers RAM.
[54] The present inventor has also discovered that by use of the grid file, streaming files and structure within these files, that visible octree nodes can be loaded and unloaded from storage to RAM while substantially reducing the memory footprint and lowering loading time to less than a second on modern hardware. The method used to do this is discussed below.
[55] There are many methods for reading octree data as known in the art of computer science. Processes for rasterization commonly traverse an octree, accessing all visible nodes in front to back order from a viewpoint and displaying content from these nodes.
[56] Embodiments of the present invention are used as the octree is traversed by a method such as a ray tracer, rasterizer or similar process, attempts to read a node from the octree. If the octree has a grid file, the nodes of the octree are loaded into RAM and are read as a traditional octree. When reading the grid file's leaf nodes, a streaming file name is read from the leaf node and checked to see if this streaming file has been loaded into RAM. If it has not, which will be the case for the first time the file has been accessed, then a segment of RAM is set aside called the block array.
[57] The block arrays within RAM, stores indices, which match the indices of the table of contents for that streaming file. The starting values within the block array are set to NULL. If a model is contained only within a streaming file and not a grid file, then process begins by loading the streaming file if not done so already.
[58] Referring to figure 13, the process for retrieving a child node is explained starting from a parent node.
[59] At box 30, the child block index is read from that the parent node. This provides an index to the child block indices array inside the parent node's block.
[60] At box 31 , the value at this index is read from the block indices inside the block.
[61] At box 32, using the value read previously, the block location is read from the block array.
[62] At box 33, it is determine if the block location is NULL. If it is NULL then that block is not contained within RAM. Otherwise it will point to the location in memory where the block is located.
[63] At box 34, the path of the block location is not NULL and the block is read from its location in RAM.
[64] At box 35, the requested child node is read from the block. [65] At box 36, an untouched value for that block is set to zero. [66] At box 37, the path of the block location is equal to NULL has been taken. In the preferred embodiment, a priority value is generated from the area that the block takes up on a display medium. This results in the tendency for nodes higher in the octree to be given a higher priority.
[67] At box 38, a job is created for that block. Set the block index and priority for the block.
[68] At box 39, the Job is added to a list of pending jobs. [69] At box 40, the node to be returned is set to null. [70] At box 41 , the node is returned.
[71] Referring to Figure 14, the process for a processor to ioad blocks is described below. This process begins once a rasterization cycle has completed and the block arrays are no longer being read.
[72] At box 42, All Blocks in the Block Arrays are searched.
[73] At box 43 and 44, any block with an untouched priority value that is not zero has its value incremented and placed into an untouched list. Each block that has nodes read from them have their untouched value turned to zero. Hence any blocks that are not used continually receive a higher untouched value as each cycle the value increases.
[74] At box 45, the list of untouched blocks list is sorted from highest untouched value to lowest. The job list is also sorted from highest priority to lowest.
[75] At box 46, the list of jobs is sequentially processed from highest priority to lowest. In the preferred embodiment, this may be done parallel to rasterization. In such a method, when rasterization finishes and blocks are being loaded in parallel, then this process finishes, leaving any remaining jobs incomplete,
[76] Because only jobs with high priority are loaded first, and jobs with high priority represent blocks that take large screen space, it ensures blocks that are the largest are loaded before blocks only represent smaller areas of the display.
[77] At box 47, the threshold is checked to see if any blocks can be loaded.
[78] At box 48, the threshold has been met and blocks need to be unloaded. The block indicated by the item with the highest untouched value in the untouched list is the block that is removed. That block is removed from RAM and the block array is updated so that its value is NULL instead of pointing to its previous location in RAM.
[79] At box 49, the index of the block to be loaded is read from the job in the job list with the highest priority. This index provides the index for the table of contents, providing the position of the block within the streaming file. The Block is read from the streaming file.
[80] At box 50, memory is allocated for the new block and stored in that location.
[81] At box 51 , at the index location in the block array is set to the RAM location of the block.
[82] At box 52, the job is popped off the list. [83] At box 53, the job list is emptied.
[84] The result is that for the first cycle, only the top level of the octree will load into memory, and each cycle thereafter a new layer will load until no new nodes need to be accessed. If a viewpoint changes then new nodes will become visible, blocks will already be loaded so the cycles required to load new blocks will be less.
[85] The detailed description contained herein is represented partly in terms of processes and symbolic, e.g. diagrammatic, representations of operations and data structures implemented by a conventional computer and/or wired or wireless network. The processes and operations performed by the computer include the manipulation of signals by a processor (e.g. processor 3 and/or GPU 8 of computer system 1 of Figure 3) and the maintenance of these signals within data packets and data structures (e.g. octrees) resident in one or more media within memory storage devices. Generally, a "data structure" is an organizational scheme applied to data or an object so that specific operations can be performed upon that data or modules of data so that specific relationships are established between organized parts of the data structure.
[86] A "data packet" is type of data structure having one or more related fields, which are collectively defined as a unit of information transmitted from one device or program module to another. Thus, the symbolic representations of operations are the means used by those skilled in the art of computer programming and computer construction to most effectively convey teachings and discoveries to others skilled in the art.
[87] For the purpose of this discussion, a process is generally conceived to be a sequence of computer-executed steps leading to a desired result. These steps generally require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electricaL magnetic, or optical signals capable of being stored, transferred, combined, compared, or otherwise manipulated. It is conventional for those skilled in the art to refer to representations of these signals as bits, bytes, words, information, data, packets, nodes, numbers, points, entries, objects, images, files or the like. It should be kept in mind, however, that these and similar terms are associated with appropriate physical quantities for computer operations, and that these terms are merely conventional labels applied to physical quantities that exist within and during operation of the computer.
[88] It should be understood that manipulations within the computer are often referred to in terms such as issuing, sending, altering, adding, disabling, determining, comparing, reporting, rendering, displaying, projecting and the like, which may sometimes be associated with manual operations performed by a human operator. The operations described herein are machine operations performed in conjunction with various inputs provided by a human operator or user that interacts with the computer.
Hardware
[89] It should be understood that the programs, processes, methods, etc. described herein are not related or limited to any particular computer or apparatus, nor are they related or limited to any particular communication architecture. For example, a general purpose computer system has been illustrated in Figure 3 which is shown as having a desktop computer form however it will be understood that laptops, game consoles, mobile phones and dedicated computational apparatus, e.g. for rendering medical and architectural images are all encompassed. Various types of general purpose machines, sensors, transmitters, receivers, transceivers, and network physical layers may be used with any program modules and any other aspects of the invention constructed in accordance with the teachings described herein. Similarly, it may prove advantageous to construct a specialized apparatus to perform the method steps described herein by way of dedicated computer systems in a specific network architecture with hard-wired logic or programs stored in nonvolatile memory, such as read-only memory.
Program
[90] In the preferred embodiment where any steps of the present invention (e.g. the steps described with reference to Figures 14 and 15) are embodied in machine-executable instructions, the instructions can be used to cause a general-purpose or special-purpose processor which is programmed with the instructions to perform the steps of the present invention. Alternatively, the steps of the present invention might be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components.
[91] The foregoing system may be conveniently implemented in a program or program module(s) that is based upon the diagrams and descriptions in this specification. No particular programming language has been required for carrying out the various procedures described above because it is considered that the operations, steps, and procedures described above and illustrated in the accompanying drawings are sufficiently disclosed to permit one of ordinary skill in the art to practice the present invention.
[92] Moreover, there are many computers, computer languages, and operating systems which may be used in practicing the present invention and therefore no detailed computer program could be provided which would be applicable to all of these many different systems. Each user of a particular computer will be aware of the language and tools which are most useful for that user's needs and purposes.
[93] The invention thus can be implemented by programmers of ordinary skill in the art without undue experimentation after understanding the description herein.
Product
[94] The present invention is composed of hardware and computer program products (e.g. product 16 of Figure 3) which may include a machine-readable medium, e.g. the disk 15 of Figure 3, having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process according to the present invention. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnet or optical cards, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, the software portion of the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection) such as network adaptor 13 of Figure 3.
Components
[95] The major components (also interchangeably called aspects, subsystems, modules, functions, services) of the system and method of the invention, and examples of advantages they provide, are described herein with reference to the figures. For figures including process/means blocks, each block, separately or in combination, is alternatively computer implemented, computer assisted, and/or human implemented. Computer implementation optionally includes one or more conventional general purpose computers having a processor, memory, storage, input devices, output devices and/or conventional networking devices, protocols, and/or conventional client-server hardware and software. Where any block or combination of blocks is computer implemented, it is done optionally by conventional means, whereby one skilled in the art of computer implementation could utilize conventional algorithms, components, and devices to implement the requirements and design of the invention provided herein. However, the invention also includes any new, unconventional implementation means.
Other Implementations
[96] Other embodiments of the present invention and its individual components will become readily apparent to those skilled in the art from the foregoing detailed description. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the spirit and the scope of the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive. It is therefore not intended that the invention be limited except as indicated by the appended claims.
[97] In compliance with the statute, the invention has been described in language more or less specific to structural or methodical features. The term "comprises" and its variations, such as "comprising" and "comprised of" is used throughout in an inclusive sense and not to the exclusion of any additional features. It is to be understood that the invention is not limited to specific features shown or described since the means herein described comprises preferred forms of putting the invention into effect. The invention is, therefore, claimed in any of its forms or modifications within the proper scope of the appended claims appropriately interpreted by those skilled in the art.
[98] Throughout the specification and claims (if present), unless the context requires otherwise, the term "substantially" or "about" will be understood to not be limited to the value for the range qualified by the terms.
[99] Throughout the description and claims of this specification the singular encompasses the plural unless the context otherwise requires. In particular, where the indefinite article is used, the specification is to be understood as contemplating plurality as well as singularity, unless the context requires otherwise.
[100] Features, integers or characteristics described in conjunction with a particular aspect, embodiment or example of the invention are to be understood to be applicable to any other aspect, embodiment or example described herein unless incompatible therewith.

Claims

CLAIMS:
1. A computer implemented method for storing octree data, the method including operating at least one electronic processor for:
writing node data for the octree to at least one streaming file including: a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree; and
a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data; wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
2. The method of claim 1 , including writing node data for upper levels of the tree to a grid file wherein leaf nodes within the grid file store file names of the at least one streaming file and wherein the at least one streaming file contains node data for child nodes of the nodes stored in the grid file.
3. The method of claim 1 or claim 2, including writing a plurality of block indexes in each block containing information for determining locations of lower level blocks, said lower level blocks corresponding to lower levels of the octree.
4. The method of claim 1 or claim 2, wherein the information for determining the location of said lower level blocks is stored in one or more nodes of the block.
5. A computer implemented method for retrieving octree data from files generated according the method of any one of claims 1 to 4, the method for retrieving octree data comprising the steps of:
identifying a streaming file for processing; and
writing index positions from the table of contents section of the streaming file to a portion of RAM comprising a block array.
6. The method of claim 5, wherein where the files include a grid file, the step of identifying the streaming file for processing includes identifying the streaming file from information stored in the grid file.
7. The method of claim 5 or claim 6, including assigning a processing priority value to blocks not previously written to RAM.
8. The method of claim 7, wherein the priority value is accorded based upon the area that a visualization of the block takes up on a display device wherein blocks containing higher level nodes in the octree are accorded a higher priority than blocks containing lower level nodes.
9. The method of claim 7 or claim 8, wherein blocks are loaded into RAM in order of the priority that has been previously assigned to them.
10. The method of any one of claims 7 to 9, including monitoring available RAM and upon a predetermined threshold being met removing blocks from RAM in an order determined by their associated priority values.
11. The method of claim 1 including storing a child mask associated with a node wherein the child mask comprises a series of bits indicating the absence or presence of further child nodes.
12. A computer system for retrieving octree data from files generated according to the previously described method, said system including at least one processor in communication with a digital memory storing tangible machine readable instructions for said processor to:
identify a streaming file for processing; and
write index positions from the table of contents section of the streaming file to a portion of RAM comprising a block array.
13. The computer system of claim 12, wherein, where the files include a grid file, the instructions for identifying the streaming file for processing include instructions to identify the streaming file from information stored in the grid file.
14. A computer system implemented method for loading octree data from a computer readable file media into RAM of the computer system comprising: loading data defining a top level of the octree into the RAM;
subsequently loading data defining lower levels of the octree into the RAM until no new nodes of said octree need to be accessed for a given viewpoint; and
upon the viewpoint changing loading only data from the file media to RAM required for visualizing the data from the new viewpoint.
15. A computer system including at least one processor in communication with a digital memory storing tangible machine readable instructions for said processor to:
write node data for the octree to at least one streaming file including: a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data; wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
16. A computer readable media bearing tangible machine readable instructions for one or more electronic processors to:
write node data for a octree to at least one streaming file including: a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree;
a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data; wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
17. A computer readable media bearing information in a file defining a octree including:
a data section of the file comprised of a plurality of blocks wherein each block stores data for a subset of nodes of said octree; and
a table of contents section of the file containing an ordered index position of each of said blocks for subsequent retrieval of said stored data; wherein each node within each of said blocks stores a reference to a block containing a sublevel of child nodes.
PCT/AU2013/001480 2012-12-18 2013-12-18 A method for efficent streaming of octree data for access WO2014094047A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU2012905545 2012-12-18
AU2012905545A AU2012905545A0 (en) 2012-12-18 A method for efficent streaming of octree data for access

Publications (1)

Publication Number Publication Date
WO2014094047A1 true WO2014094047A1 (en) 2014-06-26

Family

ID=50977397

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/AU2013/001480 WO2014094047A1 (en) 2012-12-18 2013-12-18 A method for efficent streaming of octree data for access

Country Status (1)

Country Link
WO (1) WO2014094047A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109643457A (en) * 2016-10-12 2019-04-16 惠普发展公司,有限责任合伙企业 Serialize the expression of three dimensional object
EP3507720A4 (en) * 2016-08-31 2020-03-18 Pointerra Technologies Pty Ltd Method and system for storing and retrieving multi-dimensional data
CN116226042A (en) * 2023-01-31 2023-06-06 上海科技大学 Middleware system and method for optimizing reading and writing of scientific data files
US20230229362A1 (en) * 2022-01-18 2023-07-20 Craxel, Inc. Organizing information using hierarchical data spaces
US11740788B2 (en) 2022-01-18 2023-08-29 Craxel, Inc. Composite operations using multiple hierarchical data spaces

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080238919A1 (en) * 2007-03-27 2008-10-02 Utah State University System and method for rendering of texel imagery
EP2339481A1 (en) * 2009-12-03 2011-06-29 National Digital Research Centre Enablement of three-dimensional hosting, indexing, analysing and querying structure for spatial systems
EP2533213A2 (en) * 2011-06-08 2012-12-12 Pacific Data Images LLC Coherent point-based global illumination using out-of-core storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080238919A1 (en) * 2007-03-27 2008-10-02 Utah State University System and method for rendering of texel imagery
EP2339481A1 (en) * 2009-12-03 2011-06-29 National Digital Research Centre Enablement of three-dimensional hosting, indexing, analysing and querying structure for spatial systems
EP2533213A2 (en) * 2011-06-08 2012-12-12 Pacific Data Images LLC Coherent point-based global illumination using out-of-core storage

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3507720A4 (en) * 2016-08-31 2020-03-18 Pointerra Technologies Pty Ltd Method and system for storing and retrieving multi-dimensional data
US11263191B2 (en) 2016-08-31 2022-03-01 Pointerra Technologies Pty Ltd Method and system for storing and retrieving multi-dimensional data
AU2017320349B2 (en) * 2016-08-31 2022-12-08 Pointerra Technologies Pty Ltd Method and system for storing and retrieving multi-dimensional data
CN109643457A (en) * 2016-10-12 2019-04-16 惠普发展公司,有限责任合伙企业 Serialize the expression of three dimensional object
CN109643457B (en) * 2016-10-12 2023-04-21 惠普发展公司,有限责任合伙企业 Serializing representations of three-dimensional objects
US20230229362A1 (en) * 2022-01-18 2023-07-20 Craxel, Inc. Organizing information using hierarchical data spaces
US11740788B2 (en) 2022-01-18 2023-08-29 Craxel, Inc. Composite operations using multiple hierarchical data spaces
US11880608B2 (en) * 2022-01-18 2024-01-23 Craxel, Inc. Organizing information using hierarchical data spaces
CN116226042A (en) * 2023-01-31 2023-06-06 上海科技大学 Middleware system and method for optimizing reading and writing of scientific data files
CN116226042B (en) * 2023-01-31 2024-03-22 上海科技大学 Middleware system and method for optimizing reading and writing of scientific data files

Similar Documents

Publication Publication Date Title
Nießner et al. Real-time 3D reconstruction at scale using voxel hashing
US9396512B2 (en) Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
WO2021103513A1 (en) Method, device, and apparatus for rendering point cloud scene
US9721320B2 (en) Fully parallel in-place construction of 3D acceleration structures and bounding volume hierarchies in a graphics processing unit
US9754405B1 (en) System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure
US20160078588A1 (en) Out-of-core ray tracing with memory-efficient page generation
US7561156B2 (en) Adaptive quadtree-based scalable surface rendering
WO2014094047A1 (en) A method for efficent streaming of octree data for access
US20080231633A1 (en) Terminating Spatial Partition Hierarchies By A Priori Bounding Memory
JP4858795B2 (en) Instant ray tracing
KR102633002B1 (en) Texture residency check using compressed metadata
US10460419B2 (en) Graphics rendering using a hierarchical acceleration structure
US7050054B2 (en) Method, apparatus, signals and codes for establishing and using a data structure for storing voxel information
JP2007220090A (en) Processing for selecting objects in plm database, and device mounted therewith
Sintorn et al. Compact precomputed voxelized shadows
US20060066616A1 (en) Diffuse photon map decomposition for parallelization of global illumination algorithm
Vasilakis et al. k+-buffer: Fragment synchronized k-buffer
JP2882465B2 (en) Image generation method and apparatus
CN115798654A (en) Model material processing method, device, equipment and medium
US9454554B1 (en) View dependent query of multi-resolution clustered 3D dataset
CN105512194A (en) Game scene management method and device
CN115952252B (en) Semantic tile data processing method and device based on dynamic rendering and electronic equipment
Zirr et al. Memory-efficient on-the-fly voxelization and rendering of particle data
CN114926590A (en) Mass point cloud data visualization method
Nguyen et al. A demonstration of B-EagleV Visualizing massive point cloud directly from HDFS

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13865573

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13865573

Country of ref document: EP

Kind code of ref document: A1