Ray tracing dynamic primitives in a virtual space using a bounding volume hierarchy
By generating and maintaining voxel representations of 3D units and performing ray tracing rendering based on voxel indices, the problem of low efficiency in rendering 3D units in virtual environments by traditional rendering systems is solved, and efficient 3D unit rendering is achieved.
Patent Information
- Application Number
- CN202080060052.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-08-22
- Filing Date
- 2020-06-16
- Publication Date
- 2025-10-28
- Estimated Expiration
- 2040-06-16
AI Technical Summary
When rendering 3D objects in a virtual environment, especially when there are a large number of transformable 3D objects, traditional rendering systems struggle to effectively handle the movement and transformation of 3D units at a threshold quality level and an acceptable frame rate, resulting in low rendering efficiency.
By generating and maintaining boundary volume representations of 3D units (such as voxel representations) and performing ray tracing rendering based on voxel indexes, the system reduces the demand for processing resources. It selects appropriate voxel representations and indexes based on the occupancy of 3D units in pixel space, flexibly choosing between voxel-based or mesh-based rendering.
It improves the processing efficiency of rendering 3D units, reduces the consumption of computing resources, and ensures the display of high-quality image content under various conditions.
Smart Images

Figure CN114375464B_ABST
Abstract
Description
Background Technology
[0001] In recent years, there has been a dramatic increase in the use of computing devices (e.g., mobile devices, personal computers) to receive, store, edit, generate, or otherwise display digital media. For example, it is now common for consumer electronics devices to use various rendering techniques to render high-resolution video game content, including content with high levels of detail. Furthermore, as computing devices have become more sophisticated and their display capabilities have improved, more complex rendering techniques and more detailed digital object models have become more common in generating and displaying various types of media content.
[0002] Many traditional rendering systems attempt to render digital media content using various ray tracing techniques. In fact, ray tracing has become a popular technique for rendering visual images in 3D computer graphics environments. However, ray tracing and other techniques used to render 3D objects are often computationally inaccessible. For example, when 3D objects move in a virtual environment, computing devices often lack the processing power to render high-quality displays of moving objects in a virtual environment.
[0003] Furthermore, even if computing devices have the capability to render images or videos using ray tracing or other rendering techniques, rendering digital content in virtual space becomes increasingly complex and impractical when virtual environments include a large number of 3D objects and / or when these 3D objects move within the virtual environment. For example, in game environments containing any number of units or characters constructed using 3D mesh models with hundreds or thousands of transformable triangles and vertices, traditional processors and / or graphics processing units (GPUs) typically cannot efficiently handle the movement and transformation of 3D units while delivering images at a threshold quality level and / or an acceptable frame rate.
[0004] These and other issues exist in rendering digital content that includes three-dimensional units. Attached Figure Description
[0005] Figure 1 An example environment including a 3D unit rendering system according to one or more embodiments is described.
[0006] Figure 2 An example workflow for preprocessing three-dimensional cell data according to one or more embodiments is described.
[0007] Figure 3 An example workflow for generating multiple voxel representations and associated voxel indices for a 3D element, according to one or more embodiments, is shown.
[0008] Figure 4An example implementation of a 3D cell rendering system for ray tracing pixels in an example pixel space, according to one or more embodiments, is shown.
[0009] Figure 5 An example implementation of a 3D cell rendering system for ray tracing pixels in another example pixel space, according to one or more embodiments, is shown.
[0010] Figure 6 An example sequence of actions for rendering a 3D unit in virtual space is shown according to one or more embodiments.
[0011] Figure 7 Another example sequence of actions for rendering a 3D unit in virtual space, according to one or more embodiments, is shown.
[0012] Figure 8 It explains certain components that can be included within a computer system. Detailed Implementation
[0013] This disclosure generally relates to a 3D rendering system (or simply "rendering system") for generating one or more boundary volume representations (e.g., voxel representations, boundary volume hierarchy (BVH) representations) for movable 3D units in virtual space and rendering the display of the 3D units from the perspective of a reference point (e.g., a virtual camera) within the virtual space. As will be discussed in further detail below, the rendering system can identify the boundary volume representations of dynamic 3D units, which include boundary volumes (e.g., voxel volumes) corresponding to segments of the structure from which the 3D unit originates. The rendering system can also maintain volume indices comprising pixel values that constitute the respective volumes of the boundary volume representations. Furthermore, the rendering system can render the display of 3D objects by performing ray tracing on pixels in pixel space based on the pixel values from the indices and from the perspective of a reference point within the virtual space.
[0014] As will be discussed in further detail below, this disclosure includes numerous practical applications that provide benefits and / or solve problems associated with rendering movable 3D units in a virtual environment. For example, as described above, the rendering system can identify a voxel representation of the 3D unit. This voxel representation can be based on a more detailed 3D mesh model that includes hundreds or thousands of polygonal (e.g., triangle) faces, edges, and vertices. Furthermore, the voxel representation can include voxel volumes corresponding to the individual bones that further define the structure of the 3D unit.
[0015] One or more examples described herein are discussed in particular in conjunction with voxel representations and voxel volumes that constitute a voxel representation of a 3D unit. However, features and functionality related to voxel representations and voxel volumes can be similarly applied to other types of boundary volume representations (e.g., BVH representations) or to ray tracing of compatible accelerated structures. Therefore, while one or more embodiments described herein are specifically described in conjunction with voxel-based structures, other types of boundary volume representations and / or ray tracing of compatible accelerated structures can be used in conjunction with the examples described and illustrated herein.
[0016] As will be discussed in further detail below, a voxel representation may include multiple voxel volumes corresponding to segments that define interconnected segments of a 3D unit. For example, in one or more embodiments, the rendering system may identify a volume (e.g., a rectangular prism) containing each vertex of a mesh model affected by the corresponding bones of the unit's skeletal structure. Specifically, when bone movement or rotation relative to adjacent bones causes a transformation of the vertices and / or faces of the mesh model, the rendering system may generate voxel volumes containing the affected vertices and edges of the mesh model. The rendering system may generate voxel volumes for each bone of the mesh model to generate a voxel representation including the voxel volumes of each bone of the 3D unit.
[0017] In addition to generating and / or identifying voxel representations of 3D units, the rendering system may additionally generate and / or maintain volume indexes (e.g., voxel indexes), including pixel data from the voxel representation corresponding to the voxel volume. For example, a 3D unit may include pixel data indicating pixel values for a corresponding voxel volume and / or a corresponding bone. Furthermore, where a voxel volume comprises voxel blocks that collectively constitute the voxel volume, the voxel index may include pixel values for the corresponding voxel blocks. In fact, in one or more embodiments, a voxel volume may include a 2D texture that encloses the voxel volume, and it includes pixel values (e.g., color values, brightness values) of voxel blocks covering the surface of the corresponding voxel volume. As will be discussed in further detail below, voxel indexes can be used when performing ray tracing on pixels that contact or are otherwise affected by the corresponding voxel volume.
[0018] In one or more embodiments, the rendering system maintains or generates multiple voxel representations of a 3D unit. Specifically, the 3D unit can generate any number of voxel representations having different granularities (e.g., different levels of detail) selected or identified based on the 3D unit's location in virtual space. For example, if the 3D unit appears far from a reference point (from which the ray tracing engine emits rays to render pixels in pixel space), the rendering system can utilize a smaller voxel representation with lower granularity compared to when the 3D unit appears closer to the reference point. In one or more embodiments, the rendering system identifies voxel representations from multiple voxel representations based on the ratio between the number of pixels the 3D unit will occupy in pixel space and the number of voxel blocks and / or voxel volumes that will appear within a pixel in pixel space.
[0019] As will be discussed in further detail below, this rendering system utilizes various techniques to fill pixels in the pixel space based on voxel representations and corresponding pixel values from voxel indices. For example, as described above, when rendered in pixel space, the rendering system can selectively identify voxel representations from a set of multiple voxel representations based on the projected size of the 3D cell. As another example, the rendering system can consider overlapping voxel volumes from different 3D cells (or from the same cell) when determining the pixel values to be written for one or more pixels in the pixel space. As yet another example, the rendering system can selectively determine whether to perform ray tracing on pixels based on pixel data associated with voxel volumes, or alternatively, simply perform ray tracing on pixels of the 3D cell based on a triangular mesh model, or otherwise render, according to one or more embodiments described herein.
[0020] As described above, the features and functionality of the rendering system described herein offer one or more benefits and overcome the problems associated with rendering high-quality images that include 3D units in virtual space. For example, instead of rendering pixels based on traditional polygonal (e.g., triangular) mesh models, by identifying and utilizing voxel representations, computing devices can use significantly fewer processing resources when providing image display. Specifically, where conventional systems might employ an expensive process to transform the edges and vertices of the mesh model for every 3D unit appearing in each image frame, this rendering system can handle the movement of voxel volumes based on the tracked movement of the corresponding skeletons of the 3D units, thus consuming fewer processing resources.
[0021] The rendering system can further enhance processing efficiency when rendering images by identifying different voxel representations based on the size or number of pixels the 3D unit is expected to occupy in pixel space. For example, when the 3D unit is small and occupies only a few pixels, the rendering system can select a voxel representation that is commensurate with the number of pixels the 3D unit will occupy in pixel space at a granularity (e.g., the resolution of the voxel box). In this way, the rendering system can avoid processing the transformation of the edges and vertices of the mesh model at every frame of the video, where the rendering of the transformed mesh model will only appear within a few pixels in pixel space. Therefore, in one or more embodiments described herein, the rendering system can eliminate inefficient processing dedicated to details of 3D units that will not appear with any sharpness in the image frame.
[0022] In addition to selectively identifying voxel representations from multiple potential voxel representations, this rendering system can also selectively determine whether to render the image based on voxel representations or a traditional mesh model. For example, as discussed below, if a 3D cell will appear within a large portion of the pixel space, or if the 3D cell is within a threshold distance from a reference point in virtual space, the rendering system can render the display of the 3D cell based on a mesh model instead of using a voxel representation. Alternatively, if a 3D cell will appear within a small portion of the pixel space, or if the 3D cell is farther from the reference point in virtual space than the threshold distance, according to one or more embodiments described herein, the rendering system can instead utilize voxel representations and associated pixel data from voxel indices. In this way, the rendering system can provide flexibility in rendering images to ensure high-quality content is displayed under various conditions.
[0023] As illustrated in the foregoing discussion, this disclosure utilizes various terms to describe the features and advantages of the systems described herein. Additional details regarding the meaning of some of these terms are now provided. As used herein, a “three-dimensional unit” can refer to a digital representation of any dynamic object that can move within a virtual space. A three-dimensional unit can correspond to a three-dimensional mesh model comprising any number of vertices and edges defining the structure of the three-dimensional unit. In one or more embodiments, a three-dimensional unit can include interconnected segments capable of moving and rotating around each other within a virtual space. For example, when a three-dimensional unit refers to a character (e.g., a virtual human), the character can include skeletal bones associated with segments or portions of a three-dimensional mesh model. Each bone can move independently and is capable of rotating about connections between adjacent bones in a set of hierarchical bones constituting the three-dimensional unit. As will be discussed below, bones can be associated with corresponding segments of the three-dimensional unit.
[0024] As used herein, “virtual space” refers to a virtual environment in which three-dimensional units can move. For example, virtual space can refer to a game environment in which a three-dimensional character can move from one location to another. A two-dimensional display within virtual space can be referred to as pixel space (e.g., an image plane), which indicates the field of view as seen from a reference point (e.g., a virtual camera). For example, a virtual camera or ray-tracing reference point can generate a pixel space comprising an array of pixels representing what is seen from the virtual camera's perspective. This can be achieved using conventional ray-tracing rendering techniques, where an image is generated by tracing the path of light originating from the reference point to fill the pixels of the pixel space and simulating the image that would appear from the perspective of the reference point within the virtual space.
[0025] Virtual space can refer to various virtual environments. For example, in one or more embodiments, virtual space refers to a digital representation of three-dimensional space. This can include digital space viewed through a graphical user interface, a virtual reality (VR) interface, or other interface that provides a display of computer-generated digital content. In one or more embodiments, virtual space refers to augmented reality (AR) space that includes a combination of the real world and digital elements. For example, virtual space can include a combination of three-dimensional images that are related to or able to interact with real-world elements as seen from the perspective of a client device (e.g., a mobile device, a wearable device). While one or more embodiments described herein include examples that vary depending on the digital space seen through a graphical user interface, the features and functionality described herein in conjunction with rendering or displaying content from the perspective of a reference point can similarly refer to any type of virtual space.
[0026] As used herein, a “voxel representation” refers to a digital model of a 3D unit that includes volumes associated with individual segments (e.g., bones) of the 3D unit. For example, a voxel representation may include multiple voxel volumes comprising rectangular prisms or 3D polygons containing corresponding segments of the 3D unit. In one or more embodiments, a voxel volume refers to a rectangular or other polygonal boundary volume that contains each vertex of a selected portion or segment of the mesh model that is affected (e.g., primarily affected) by a corresponding bone. For example, in the case of a digital character’s arm comprising two bones, the character’s arm may be represented by a first voxel volume and a second voxel volume, the first voxel volume containing vertices of a first portion of the arm affected by a first bone, and the second voxel volume containing vertices of a second portion of the arm affected by a second bone. In one or more embodiments, voxel volumes do not overlap with other voxel volumes when the 3D unit is in a base pose or default position (e.g., a t-pose or a bound pose). Alternatively, voxel volumes may overlap with other voxel volumes, wherein generating a voxel representation involves allowing vertices affected by two or more bones to be contained within two different voxel volumes.
[0027] As will be discussed in further detail below with examples, a voxel representation may include multiple voxel volumes and associated voxel blocks. As used herein, a voxel block may refer to a building block that constitutes a structure of a three-dimensional unit within a boundary defined by a corresponding voxel volume. In one or more embodiments, a voxel block may refer to a block mesh surrounding the surface of a voxel volume, which defines a two-dimensional texture map of the surface of the corresponding voxel volume. Based on the expected size of the voxel representation, a voxel block may have the granularity or level of detail corresponding to the voxel volume when rendered in pixel space. For example, when the display of a three-dimensional unit occupies less than a threshold number of pixels in pixel space, the identified first voxel representation may include voxel volumes with a small number of voxel blocks corresponding to a low granularity or level of detail. Alternatively, when the display of a three-dimensional unit occupies more than a threshold number of pixels in pixel space, a second identified voxel representation may include voxel volumes with more voxel blocks than those from the first voxel representation, corresponding to a higher level of detail granularity.
[0028] As described above, while one or more embodiments described herein specifically relate to ray tracing of pixels using voxel representations, voxel volumes, voxel blocks, and corresponding pixel values from voxel indices, the features and functionality discussed in conjunction with the specific examples and embodiments can be similarly applied to other types of boundary volume representations for 3D units. For example, a boundary volume representation can refer to a BVH representation, including the bounding boxes of corresponding segments bound to interconnected segments of a dynamic 3D structure and associated building blocks. Therefore, although one or more embodiments and illustrated examples have been described in accordance with voxel volumes and corresponding components, other types of representations and associated building blocks can also be used to achieve one or more benefits related to the efficient ray tracing and rendering of pixels for the display of 3D units implemented using the voxel representations discussed herein.
[0029] Now, more additional details will be provided regarding the system used to render digital content, including three-dimensional units, in virtual space. For example, Figure 1 An example computing device 102 comprising a 3D rendering system 104 (or simply "rendering system 104") implemented thereon, according to one or more embodiments described herein, is explained. Figure 1 As shown, the rendering system 104 includes a preprocessing system 106 and a runtime system 108. The preprocessing system 106 may include a voxel manager 110 and an index manager 112. Furthermore, the runtime system 108 may include a cell update manager 114, voxel volume identifiers 116, and a ray tracing engine 118. As also shown, the computing device 102 may include a data storage 120 on which cell data 122 and index data 124 are stored.
[0030] Computing device 102 can refer to various types of computing devices. For example, computing device 102 can refer to mobile devices such as mobile phones, smartphones, personal digital assistants (PDAs), tablets, laptops, or wearable computing devices (e.g., headsets). Alternatively or complementaryly, computing device 102 may include one or more non-mobile devices such as desktop computers, server devices, or other non-portable devices. In one or more implementations, computing device 102 includes a display device capable of providing a graphical user interface. Alternatively or complementaryly, computing device 102 may be communicatively (e.g., wired or wirelessly) coupled to a display device having a graphical user interface thereon for providing the display of digital content (e.g., game content). In one or more embodiments, computing device 102 is an AR device capable of providing the display of digital elements in conjunction with real-world elements. Computing device 102 may include the following combinations... Figure 8 Additional features and functionality described.
[0031] Figure 1 An example embodiment of rendering system 104 and associated components implemented on a single computing device 102 is shown. However, it will be understood that rendering system 104 and / or data storage 120 may be implemented on a single device or across multiple devices. For example, in one or more embodiments, rendering system 104 includes components implemented across a combination of client devices (e.g., consumer electronics devices) and one or more server devices. For example, in one or more embodiments, preprocessing system 106 may be implemented on a first device (e.g., one or more server devices), while runtime system 108 may be implemented on a second device (e.g., a client device). Furthermore, while data storage 120 may be implemented on the same device or device system as one or more components of rendering system 104, data storage 120 may similarly be implemented on a different device (e.g., one or more server devices) than rendering system 104.
[0032] In one or more embodiments, each component of the rendering system 104 communicates with each other using any suitable communication technology. Additionally, components of the rendering system 104 may communicate with one or more other devices. It will be appreciated that, although... Figure 1 The components of the rendering system 104 shown are in Figure 1 The components are shown as independent, but any sub-component can be combined into fewer components, such as a single component, or divided into more components, such as components that may be used in a particular embodiment.
[0033] Components of rendering system 104 may include software, hardware, or both. For example, components of rendering system 104 may include one or more instructions stored on a computer-readable storage medium and executable by a processor of one or more computing devices. When executed by one or more processors, the computer-executable instructions of rendering system 104 may cause computing device 102 to perform the methods described herein. Alternatively, components of rendering system 104 may include hardware, such as dedicated processing equipment for performing a particular function or group of functions. As a supplement or alternative, components of rendering system 104 may include a combination of computer-executable instructions and hardware.
[0034] Based on one or more examples discussed above, the components of rendering system 104 can collaboratively provide a display based on the perspective of a reference point within a virtual space (e.g., a virtual game environment). In one or more embodiments, rendering system 104 performs a series of actions as part of a preprocessing phase. For example, as part of a framework for installing an application or creating a virtual space, rendering system 104 can utilize preprocessing system 106 and associated components to perform actions in a preprocessing phase involving creating a virtual environment and constructing data objects and associated models prior to the application's runtime.
[0035] like Figure 1 As shown, the preprocessing system 106 includes a voxel manager 110. The voxel manager 110 can combine voxel representations of one or more 3D units capable of movement in virtual space to perform one or more actions. For example, in one or more embodiments, the voxel manager 110 generates multiple voxel representations of 3D units. Specifically, the voxel manager 110 can generate one or more voxel representations for each type of 3D unit included or potentially included in a display of virtual space. For example, in a game application that includes various 3D characters capable of movement in a virtual environment, the voxel manager 110 can generate one or more voxel representations for each of these various 3D characters. The voxel manager 110 can generate voxel representations in various ways. The following describes... Figure 2 Further details related to generating voxel representations are discussed.
[0036] The voxel manager 110 can also generate any number of voxel representations. For example, the voxel manager 110 can generate one or more voxel representations for different types of units with different skeletal structures and / or different visual features. Furthermore, the voxel manager 110 can generate multiple voxel representations for an individual 3D unit. Specifically, when the voxel representation is rendered in pixel space, the voxel manager 110 can generate voxel representations with different granularity levels (e.g., different levels of detail and / or the number of voxel blocks) based on the size of the voxel representation. The following is in conjunction with... Figure 3 Additional details related to generating multiple voxel representations are discussed.
[0037] In one or more embodiments, the voxel manager 110 also identifies or maintains criteria for identifying voxel representations used to render 3D units in pixel space. For example, the voxel manager 110 may indicate rules, such as the number of pixels or distance from a reference point, for selectively identifying which of a plurality of voxel representations to use when performing ray tracing on pixels in pixel space. As another example, the voxel manager 110 may indicate rules associated with the processing capabilities of the computing device 102 in determining which voxel representation to use when rendering pixels in pixel space. The voxel manager 110 may also generate rules for determining whether to render pixels based on voxel representations or 3D mesh models.
[0038] As stated above, and as Figure 1 As also shown herein, the preprocessing system 106 includes an index manager 112. The index manager 112 can generate and / or maintain voxel indexes for one or more voxel representations. As used herein, a voxel index can refer to any data structure (e.g., a table, a database) that includes pixel data associated with a corresponding voxel representation. For example, a voxel index can include mapping information between voxel volumes (and / or bones) of a voxel representation and associated pixel values. A voxel index can include pixel data such as color values, brightness values, opacity values, reflection data, shading data, or any other data that can be used to render pixels in pixel space for any pixel whose voxel volume contacts or otherwise occupies within pixel space. In one or more embodiments, the index manager 112 generates or otherwise maintains voxel indexes that include different pixel data for different voxel representations. The following is in conjunction with... Figure 3 Further details are discussed regarding the generation of voxel indices for the corresponding voxel representations.
[0039] In one or more embodiments, the voxel index is maintained locally on computing device 102. For example, in one or more embodiments, index manager 112 generates and stores the voxel index on data storage 120 of computing device 102. Alternatively, in one or more embodiments, computing device 102 receives the voxel index from another device (e.g., a server device) and stores the voxel index on data storage 120. In one or more implementations, index manager 112 may remotely access or otherwise maintain the voxel index on one or more additional devices.
[0040] As described above, in one or more implementations, actions associated with generating voxel representations and associated voxel indexes are performed as part of a preprocessing phase. In one or more embodiments, these actions are performed locally using the processing resources of computing device 102. Alternatively, in one or more implementations, a server device or device system (e.g., a cloud computing system) may perform one or more preprocessing functions and provide voxel data and / or associated index data to computing device 102 for use at runtime when the application is launched.
[0041] like Figure 1 As shown, runtime system 108 includes a cell update manager 114. When the application starts running, cell update manager 114 can update animations within the virtual space. For example, cell update manager 114 can identify the initial or current position of each 3D cell within the virtual space. Furthermore, cell update manager 114 can identify the initial or current position of a reference point (e.g., a virtual camera) within the virtual space.
[0042] The cell update manager 114 can also perform additional processing related to the movement and position of cells and reference points throughout the application's operation. For example, the cell update manager 114 can continuously update the position and orientation data of any number of 3D cells within the virtual space. Furthermore, the cell update manager 114 can continuously update position, orientation, viewpoint, or other information associated with the position and / or orientation of reference points within the virtual space.
[0043] As also shown, runtime system 108 includes a voxel volume identifier 116. When determining the initial or current position of a 3D unit, the voxel volume identifier 116 can be used to determine or identify the voxel volume associated with a pixel in pixel space. In one or more embodiments, the voxel volume identifier 116 identifies the associated skeleton of each pixel by rendering a screen-sized buffer corresponding to the pixel space represented by the voxels included therein. More specifically, the voxel volume identifier 116 can render a screen-sized buffer that includes any voxel volumes visible within the view of a reference point at the current position and orientation in virtual space.
[0044] The voxel volume identifier 116 can also identify the associated bone (e.g., a subset of bones from the corresponding bone structure visible from a reference point) and the corresponding voxel volume for each pixel in pixel space. For example, given a buffer of screen size, the voxel volume identifier 116 can iterate over each pixel or subset of pixels in pixel space to identify pixels affected (e.g., touched or overlapped) by one or more voxel volumes and associate the corresponding bone with the affected pixel. For example, in one or more implementations, the voxel volume identifier 116 iterates over each pixel in pixel space and indicates the associated bone and / or voxel volume corresponding to any voxel volume of each pixel in the touching pixel space. The following will combine... Figure 4 Further details regarding the relevant skeletons associated with the corresponding pixels are discussed.
[0045] As described above, the voxel manager 110 can generate any number of voxel representations for the corresponding 3D unit. In one or more implementations, the voxel volume identifier 116 can selectively identify which voxel representation to use when displaying the 3D unit in the rendered pixel space. For example, the voxel volume identifier 116 can select a voxel representation based on the number of pixels it occupies in the pixel space. In one or more implementations, the voxel volume identifier 116 can decide to abandon all voxel representations and instead use a mesh model when rendering the display.
[0046] The runtime system 108 may also include a ray tracing engine 118. When identifying the associated skeleton of each pixel in pixel space, a voxel volume identifier 116 may provide the ray tracing engine 118 with relevant information and associated mapping information (e.g., voxel index information) for determining and rendering the pixel values of the pixels in pixel space. In one or more implementations, the voxel volume identifier 116 provides the identified voxel volume of pixel space and associated pixel data to the ray tracing engine 118 employing various conventional ray tracing techniques. Specifically, the ray tracing engine 118 may iterate over the pixels in pixel space to determine pixel values in part based on the identified skeleton of each pixel and the associated pixel data from the voxel index.
[0047] In one or more embodiments, the ray tracing engine 118 performs ray tracing more efficiently on pixels in the pixel space by passing rays through pixels in the pixel space and only considering hits in the voxel space that have been indicated as relevant (e.g., visible). Furthermore, in one or more embodiments, the ray tracing engine 118 iterates over pixels in the pixel space only if no bone intersections are detected or relevant bones are left to be iterated. In one or more embodiments, the ray tracing engine 118 iterates over each pixel touched by a voxel volume in the pixel space and projects a single ray based on the corresponding pixel value from the voxel index.
[0048] In one or more embodiments, the ray tracing engine 118 includes a combination of multiple shader engines. For example, in one or more embodiments, the ray tracing engine 118 uses conventional GPU vertex transform methods to render any voxel volume visible to a reference point within voxel space. The ray tracing engine 118 can then replace the values rendered using conventional GPU vertex transforms with shaders that perform ray tracing based on pixel values from the corresponding voxel indices through the visible voxel volumes to produce a high-quality display of three-dimensional units within pixel space.
[0049] like Figure 1 The computing device 102 also includes a data storage 120 containing cell data 122. Cell data 122 may include any information associated with a 3D cell capable of moving around in virtual space. For example, cell data 122 may include a 3D mesh model and associated information (e.g., vertices, edges, and associated transformation data). Cell data 122 may also include any voxel model data containing voxel representations and associated data.
[0050] As also shown, data storage 120 may include index data 124. Index data 124 may include any pixel data associated with a corresponding voxel representation. For example, index data 124 may include pixel data for each voxel volume of each voxel representation. Additionally, index data 124 may include pixel data for each voxel block corresponding to a voxel volume. Index data 124 may include pixel values such as color values, brightness values, reflection values, opacity values, and any other information about pixel values that may be used to fill pixel space during rendering and display.
[0051] continue, Figure 2 Example workflow 200 is provided, which indicates the sequence of actions for generating voxel representations and maintaining the corresponding voxel indices. For example, as... Figure 2 As shown, rendering system 104 can perform action 202 of identifying a mesh model corresponding to a 3D cell. Specifically, rendering system 104 can identify a mesh model of a 3D cell comprising vertices and edges, where vertices and edges represent the structure of the corresponding 3D cell that can move around in a virtual space (e.g., a virtual game space). In one or more embodiments described herein, a mesh model refers to a model of a digital character in a game application. However, other mesh models associated with other types of 3D cells that can move in any virtual environment can be used in conjunction with one or more embodiments of rendering system 104 described herein.
[0052] When identifying mesh models and / or 3D units, the rendering system 104 can perform actions 204 that identify the skeletal structure of the 3D units. As described above, the rendering system 104 can identify multiple bones corresponding to multiple interconnected segments of the 3D units, which at least partially define how the 3D units move in virtual space.
[0053] In one or more embodiments, the rendering system 104 identifies each vertex of the mesh model that is affected by or otherwise bound to the movement of a corresponding bone. In one or more implementations, as the 3D unit moves around in virtual space, the rendering system 104 identifies for each vertex of the mesh model which bone is most closely associated with the movement or transformation of the vertex. In one or more embodiments, each vertex is determined to correspond to a single bone. Alternatively, the rendering system 104 may determine that one or more vertices correspond to multiple bones.
[0054] According to one or more embodiments discussed above, the rendering system 104 may also perform an action 206 of generating voxel representations of 3D units based on the identified bones. Specifically, the rendering system 104 may generate voxel volumes corresponding to the respective bones, including bounding boxes (or other polygonal shapes) surrounding the mesh model that are determined to correspond to each vertex of the respective bone. In one or more embodiments, the rendering system 104 generates voxel volumes for each bone. Furthermore, as described above, and in [the following...] Figure 3 The diagram further illustrates that the rendering system 104 can generate any number of voxel representations for the corresponding 3D unit.
[0055] In one or more embodiments, a voxel volume of a given voxel representation does not overlap with other voxel volumes in the voxel representation. For example, when a 3D element is in a default pose (e.g., a t-pose), a voxel volume may touch or lie flat on adjacent voxel volumes. When exiting the default pose, one or more voxel volumes may overlap with other voxel volumes. In one or more embodiments, a voxel volume may slightly overlap with adjacent voxel volumes, even if the voxel representation is in the default pose.
[0056] When identifying voxel volumes, the rendering system 104 may additionally perform an action 208 of identifying the pixel values of each voxel volume. Specifically, the rendering system 104 may generate a texture comprising voxel blocks, each voxel block covering the surface of a voxel volume and including its own pixel values. The level of detail of each voxel block may differ for each voxel representation associated with a corresponding 3D model. For example, a first volume having the highest level of detail (e.g., the highest granularity metric) among multiple voxel volumes may have significantly more voxel blocks than one or more additional volumes having a lower level of detail (e.g., a lower granularity metric).
[0057] like Figure 2As further shown, the rendering system 104 can perform an action 210 of maintaining voxel indices for corresponding voxel representations. As described above, a voxel index can include pixel data of the corresponding voxel volume of the voxel representation. For example, a voxel index can include color values, brightness values, and opacity values for each voxel volume. In one or more implementations, a voxel index includes corresponding pixel data for each voxel block of the voxel volume. Furthermore, as described above, the rendering system 104 can maintain a voxel index for each voxel representation. Alternatively, the rendering system 104 can maintain a single voxel index for multiple voxel representations corresponding to the same 3D unit.
[0058] As described above, the rendering system 104 can generate any number of voxel representations for the corresponding 3D units. Figure 3 An example implementation of voxel volumes 302a-n with different sizes and voxel granularity levels is shown. For example... Figure 3 A first voxel representation 302a with a high voxel frame granularity relative to other voxel representations 302b-n is shown. Figure 3 A second voxel representation 302b, having a corresponding voxel frame granularity lower than that of the first voxel representation 302a, is also shown. Furthermore, Figure 3 It shows that it includes relative to Figure 3 The other voxel representations shown (e.g., voxel representations 302a-b) are low-granularity nth voxel representations 302n. As described above, the rendering system 104 can generate any number of voxel representations with a wide variety of voxel box granularities.
[0059] As an example, not a limitation, Figure 3 Example voxel volumes 304a-n are also shown, associated with the corresponding bones of the skeletal structures used for voxel representation 302a-n. (See also...) Figure 3 As shown, the textures corresponding to voxel volumes have different granularities relative to each other. Figure 3 In the example shown, voxel volumes 304a-n each exhibit textures with different numbers of voxel frames and different levels of detail.
[0060] When generating different voxel representations 302a-n, the rendering system 104 can determine the level of detail to be included in subsequent versions of voxel representations 302a-n in various ways. For example, in one or more implementations, the most detailed voxel representation is generated first. Then, a second voxel volume can be generated based on the first voxel representation at half the size of the first voxel volume. Specifically, the width, height, and depth of the second voxel volume can be half the size of the first voxel volume. To achieve this, the rendering system 104 can merge eight voxel blocks into a single block from the first version to the second version of the voxel representation. This may include adding pixel values and then averaging based on the combined multiple voxel blocks. In one or more embodiments, the rendering system 104 merges voxel blocks at different ratios (e.g., ratios other than 8:1). The rendering system 104 can similarly generate any number of iterations of voxel representations in a similar manner until the final voxel representation includes a single pixel block (or other minimum number of voxel blocks).
[0061] As stated above, and as Figure 3 As also shown, the rendering system 104 can generate or otherwise maintain voxel indices 306a-n corresponding to voxel representations 302a-n. Each of the voxel indices 306a-n can include an identifier of a bone constituting the skeletal structure of the voxel representation. Each bone identifier can be mapped to a corresponding voxel volume within the voxel representation 302a-n. For example, each voxel volume 304a-n can correspond to a first bone in the voxel representation 302a-n. Furthermore, the voxel indices 306a-n can include pixel data (e.g., color values, brightness values, opacity values) corresponding to each bone. The pixel data can include general information about the pixels constituting the voxel volume. Alternatively, the pixel data can include information about each voxel block within the corresponding voxel volume.
[0062] Figure 4 An example pixel space 402 in which the three-dimensional unit 404 appears is shown. Specifically, pixel space 402 shows the current perspective view (e.g., a two-dimensional field-of-view image) from a reference point (e.g., a virtual camera) within a virtual space that includes the three-dimensional unit 404. Figure 4 As shown, pixel space 402 includes a pixel array that can have any number of pixels, depending on the resolution of the display device, the resolution identified by the application, and / or the capabilities of the computing device 102 that renders the display of pixel space 402. As described above, pixel space 402 can refer to a pixel display via a graphical user interface. In one or more embodiments, pixel space 402 refers to a pixel display via a VR interface, an AR interface, or provided on another display on the display device.
[0063] According to one or more embodiments described herein, rendering system 104 can identify voxel representations 406 of a 3D unit 404, which include any number of voxel spaces corresponding to the skeletal structure of the 3D unit (e.g., a mesh model of the 3D unit). As described above, identifying voxel representation 406 may involve identifying voxel representation 406 from a plurality of voxel representations based on the size of the 3D unit relative to pixel space 402. For example, rendering system 104 may identify voxel representation 406 based on the ratio of voxel space and / or voxel blocks to the number of pixels within pixel space 402. For example, rendering system 104 may identify voxel volumes with low granularity where the voxel volume of a voxel representation occupies or contacts only a single pixel (or other threshold number of pixels). Alternatively, rendering system 104 may identify voxel volumes with higher granularity where the voxel volume occupies more pixels within pixel space 402.
[0064] While one or more of the above embodiments relate to voxel representations in a default or t-pose, where voxel volumes do not necessarily overlap, in one or more implementations, voxel volumes of the same voxel representation and / or from different voxel representations may overlap. For example, in Figure 4 In the example shown, the voxel representation includes a first voxel volume 410a corresponding to the first bone, which overlaps with a second voxel volume 410b corresponding to the second bone. The overlapping portion 408 includes two overlapping voxel volumes that may have different associated pixel values within the voxel index. Although Figure 4 An example of two voxel volumes with the same voxel representation overlapping is shown, but other implementations may involve two (or more) voxel volumes overlapping from different voxel representations corresponding to different 3D units.
[0065] Figure 4 Also shown is a pixel space portion 402a representing a part of pixel space 402, which includes a larger portion of the three-dimensional unit 404 visible therein. Specifically, pixel space portion 402a includes a first voxel volume 410a corresponding to a first skeleton and a second voxel volume 410b corresponding to a second skeleton, and an overlapping portion 412 showing the overlap of voxel volumes 410a-b on one or more shared pixels.
[0066] As described above, rendering system 104 can identify a set of bones visible within the view of a reference point. Specifically, rendering system 104 can identify a subset of voxel volumes that one or more lines (e.g., trajectories) emitted from the reference point will touch within pixel space 402. In one or more embodiments, this is performed by a computation shader that simply identifies which bones (e.g., subsets of bones from a single unit or multiple units) are associated with (e.g., visible) the ray tracing engine 118.
[0067] As described above, the rendering system 104 can indicate which voxel volumes are contacting each pixel from pixel space 402. The rendering system 104 can only simply label the pixel or otherwise associate it with a corresponding bone number when only a single voxel volume is contacting a pixel from pixel space 402. However, as... Figure 4 As shown in pixel space portion 402a, in the case of multiple voxel volumes contacting pixels, the rendering system 104 can associate each bone of voxel volumes 410a-b with the pixels on which voxel volumes 410a-b overlap. Therefore, in Figure 4 In the example shown, the pixels corresponding to the overlapping portion 412 can be labeled or otherwise associated with the skeletons of the first and second voxel volumes 410a-b.
[0068] Rendering system 104 can associate pixels of pixel space 402 in various ways. For example, rendering system 104 can use depth stripping or depth stacking techniques to associate bones with corresponding pixels. In one or more embodiments, rendering system 104 determines the depth order of bones in overlapping portions. For example, if a first voxel volume 410a is closer to a reference point in virtual space than a second voxel volume 410b, rendering system 104 can indicate this depth order when associating bones with corresponding pixels.
[0069] In one or more embodiments, the rendering system 104 associates bones with corresponding pixels within color channels. For example, where a pixel includes four channels (e.g., CMYK channels, RGBA channels), the rendering system 104 can associate up to four overlapping bones with corresponding pixels. Figure 4 In the example shown, the first channel (e.g., the blue channel) can be associated with the first bone of the first voxel volume 410a, while the second channel (e.g., the red channel) can be associated with the second bone of the second voxel volume 410b. The third and fourth channels can remain blank when only two voxel volumes overlap with a given pixel. Alternatively, when more than four bones overlap with a given pixel, the rendering system 104 can indicate only the four bones closest to the reference point in virtual space.
[0070] In one or more embodiments, rendering system 104 assigns bones to corresponding pixels based on the opacity of the voxel blocks that ray tracing will contact when rays are emitted from a reference point. For example, if the foremost voxel volume has 0% opacity, rendering system 104 may ignore any objects behind the foremost voxel volume because ray tracing engine 118 will not see any objects behind that voxel volume. Alternatively, if one or more voxel volumes include arbitrary levels of opacity, rendering system 104 may associate each associated bone with a corresponding pixel (up to four bones per pixel).
[0071] After associating pixels with corresponding bones in 3D unit 404, rendering system 104 can provide the identified bones and / or voxel space to ray tracing engine 118. Rendering system 104 can also provide ray tracing engine 118 with one or more voxel indices, including a mapping between bones and corresponding pixel data, for outputting pixel values for pixels in pixel space. In one or more embodiments, rendering system 104 projects a single ray for each pixel touched by a voxel volume (e.g., based on the corresponding pixel values from the voxel indices). Furthermore, in the case where multiple voxel volumes touch corresponding pixels, rendering system 104 projects a single ray having a value based on a combination of pixel values from voxel indices corresponding to those bones identified for the corresponding pixel.
[0072] In one or more embodiments, rendering system 104 performs a combination of rendering based on a combination of conventional GPU transformation methods and depth stripping techniques. For example, rendering system 104 can use conventional GPU vertex transformation methods and render each voxel volume to pixel space 402 in multiple passes (e.g., corresponding to multiple visible bones within pixel space 402). In the case of pixels being rendered in multiple passes, rendering system 104 can write bone identifiers or pixel values to the pixel because multiple overlapping objects are visible on the pixel (e.g., the pixel has up to four or more color channels). Alternatively, rendering system 104 can perform fewer passes to achieve higher performance, or based on device processing limitations.
[0073] It will be understood that as the 3D unit 404 moves around in virtual space and / or changes with the viewpoint of a reference point within virtual space, the rendering system 104 can repeat one or more of the processes described herein. However, since the movement of the voxel representation 406 in virtual space does not involve transformations of vertices and edges (as is the case with the movement of a mesh model), the rendering system 104 can quickly identify pixel values using conventional ray tracing techniques without expending significant processing resources to determine the transformations of the vertices of the mesh model for each displayed image frame. Furthermore, the rendering system 104 can, depending on the size of the 3D unit 404 within pixel space 402, control potential degradation of image quality to a certain extent by selectively identifying voxel representations or switching between voxel representations.
[0074] While one or more embodiments described herein involve identifying voxel representations from a plurality of voxel representations associated with corresponding 3D units, in one or more embodiments, the rendering system 104 may select between a mesh model and a voxel representation under different circumstances. For example, Figure 5An example computing device 502 with a graphical user interface 504 for displaying pixel space is shown according to one or more embodiments. The computing device 502 may be the combination described above. Figure 1 An example of the computing device 102 discussed. Nevertheless, although Figure 5 An example of a display provided via a graphical user interface 504 of a typical computing device 502 is shown, but similar features and functions can be applied to displays provided via VR interfaces, AR interfaces or other types of displays.
[0075] like Figure 5 As shown, the pixel space may include a first three-dimensional unit 506 (e.g., a portion of three-dimensional unit 506) and a second three-dimensional unit 508. In this example, the rendering system 104 may identify a voxel representation and perform the display procedures described herein for rendering a voxel representation for the second three-dimensional unit 508. When rendered within the pixel space, the rendering system 104 may identify or otherwise determine the voxel representation of the second three-dimensional unit 508 based on the size of the three-dimensional unit 508 (e.g., the number of pixels it occupies).
[0076] In conjunction with the first 3D unit 506, the rendering system 104 can instead determine that the voxel representation identifying the first 3D unit 506 may result in an unsatisfactory number of image artifacts in the pixelated image. As a result, the rendering system 104 can abandon identifying the voxel representation and instead identify a mesh model used to construct the voxel representation, and utilize that mesh model to generate and render the corresponding image. While rendering pixels based on a mesh model may be computationally more expensive than using a voxel representation, the rendering system 104 can still limit processing costs by selectively using the voxel representation and information from the associated voxel index to render pixels for one or more 3D units, rather than using a mesh model for every 3D unit appearing in pixel space.
[0077] According to one or more embodiments, the rendering system 104 can identify an appropriate model for a three-dimensional unit based on a comparison of the size of the three-dimensional unit (as if the three-dimensional unit appeared in pixel space). For example, if the three-dimensional unit exceeds a first size or pixel threshold, the rendering system 104 can determine that a mesh model of the three-dimensional unit is needed to achieve a satisfactory level of image quality. Furthermore, the rendering system 104 can compare the expected size of the three-dimensional unit within the pixel space with multiple threshold ranges corresponding to voxel representations and selectively identify voxel representations associated with the identified threshold ranges for rendering pixels of the three-dimensional unit.
[0078] Now go to Figure 6-7 These accompanying diagrams illustrate example flowcharts, including a series of operations for ray tracing of pixels in a 3D unit in virtual space. Although Figure 6-7Actions according to one or more embodiments have been described, but alternative embodiments may omit, add, reorder, and / or modify them. Figure 6-7 Any of the actions shown. Furthermore, in combination with... Figure 6-7 One or more individual characteristics and functionalities described by an individual action or sequence of actions can be similarly applied to other embodiments and examples described herein. Figure 6-7 The action can be performed as part of a method. Alternatively, a non-transient computer-readable medium may include actions that cause a computing device to perform when executed by one or more processors. Figure 6-7 The system can execute instructions for actions. In a further embodiment, the system can execute... Figure 6-7 The action.
[0079] Figure 6 Action sequence 600 for rendering a three-dimensional image according to one or more embodiments described herein is illustrated. For example, action sequence 600 includes action 610 identifying a voxel representation of a three-dimensional unit, the voxel representation including voxel volumes associated with respective segments of the three-dimensional unit. In one or more embodiments, action 610 includes a voxel representation identifying a three-dimensional unit movable within a virtual space, wherein the voxel representation includes multiple voxel volumes associated with corresponding segments from a plurality of segments, the corresponding segments being associated with movement of corresponding portions of the three-dimensional unit.
[0080] In one or more embodiments, identifying a voxel representation includes selecting a voxel representation from a plurality of voxel representations associated with the 3D unit. In one or more implementations, action sequence 600 includes maintaining a plurality of voxel indices for the 3D unit, wherein each voxel index from the plurality of voxel indices corresponds to an associated voxel representation from the plurality of voxel representations. In one or more embodiments, the plurality of voxel volumes include a plurality of voxel blocks, wherein the granularity of the plurality of voxel blocks is based on the size of the voxel representation when rendered within the pixel space.
[0081] In one or more embodiments, each of the plurality of voxel volumes includes a plurality of voxel blocks bound to a corresponding segment. The plurality of voxel blocks can be configured to move within virtual space relative to the movement of the corresponding segment within virtual space.
[0082] Action sequence 600 further includes action 620 of maintaining a voxel index that includes pixel data for voxel volumes. For example, action 620 may include maintaining a voxel index for a 3D unit, wherein the voxel index includes pixel data of a plurality of voxel volumes mapped to corresponding segments from a plurality of segments. In one or more embodiments, the voxel index includes pixel data for each voxel block across a surface of a plurality of voxel volumes, wherein the pixel data includes one or more of pixel color data, pixel brightness data, or directional opacity data for the plurality of voxel volumes. In one or more embodiments, the pixel data of the voxel index includes opacity values corresponding to corresponding segments in a plurality of segments, wherein ray tracing of pixels in the pixel space is also based on opacity values from voxel indices corresponding to a set of identified segments.
[0083] Action sequence 600 may also include action 630 identifying a set of segments visible in pixel space. For example, action 630 may include identifying a set of segments visible in pixel space from a plurality of segments for the current position of the 3D unit in virtual space, where pixel space represents the field of view from a reference point in virtual space.
[0084] In one or more embodiments, the set of identified segments includes two or more overlapping segments that identify two or more voxel volumes of a pixel within the contact pixel space. The action sequence 600 may further include assigning a first identifier of a first segment of the two or more overlapping segments to a first color channel of the pixel, and assigning a second identifier of a second segment of the two or more overlapping segments to a second color channel of the pixel.
[0085] Action sequence 600 may further include action 640 of ray tracing pixels in pixel space based on a pixel dataset from voxel indices corresponding to a set of identified segments. For example, action 640 may include ray tracing pixels in pixel space based on a pixel dataset from voxel indices corresponding to a set of identified segments visible to reference points in virtual space. In one or more embodiments, ray tracing pixels includes identifying first or more pixel values from voxel indices based on a first segment, identifying second or more pixel values from voxel indices based on a second segment, and filling pixels based on combinations of the first or more pixel values from the voxel indices and the second or more pixel values.
[0086] In one or more embodiments, at the start of application runtime, the identification of the set of segments visible in pixel space and ray tracing of pixels in pixel space are performed. Furthermore, voxel representations and voxel indexes may be stored on the computing device prior to the start of application runtime.
[0087] In one or more embodiments, action sequence 600 includes detecting the updated position of a 3D unit within a virtual space. Action sequence 600 may also include, in response to detecting the updated position of the 3D unit within the virtual space: identifying a set of updated segments from a plurality of segments visible from the viewpoint of a reference point within the virtual space in pixel space, and performing ray tracing on pixels in the pixel space based on pixel data corresponding to the updated set of segments from a voxel index. Detecting the updated position of the 3D unit may be based on one or more of the following: movement of the 3D unit within the virtual space, movement of a reference point within the virtual space, or rotation of the viewpoint around the reference point within the virtual space.
[0088] Action sequence 600 may also include identifying additional 3D units and rendering the display of the additional 3D units in various ways. For example, action sequence 600 may include determining that the size of the additional 3D unit within the pixel space exceeds a threshold size. Action sequence 600 may also include filling pixels in the pixel space based on a polygonal mesh representation of the 3D unit based on determining that the size of the additional 3D unit exceeds the threshold size.
[0089] Figure 7 Action sequence 700 for rendering a 3D image according to one or more embodiments described herein is illustrated. For example, action sequence 700 includes action 710 identifying a boundary volume representation of a 3D unit, the boundary volume representation including boundary volumes associated with respective segments of the 3D unit. In one or more embodiments, action 710 includes a voxel representation identifying a 3D unit movable within a virtual space, wherein the voxel representation includes a plurality of voxel volumes associated with corresponding segments from a plurality of segments, the corresponding segments being associated with movement of corresponding portions of the 3D unit.
[0090] Action sequence 700 may also include action 720 of maintaining a voxel index that includes pixel data for boundary volumes. For example, in one or more embodiments, action 720 includes maintaining a voxel index for a three-dimensional unit that includes a plurality of voxel volumes and maps to pixel data of corresponding segments from a plurality of segments.
[0091] Action sequence 700 may further include action 730 identifying a set of segments visible within pixel space, the set of segments including a first segment associated with a first boundary volume, the first segment overlapping with a second segment associated with a second boundary volume. For example, action 730 may include, for the current position of the 3D unit in virtual space, identifying a set of segments visible from a plurality of segments in pixel space representing a viewpoint in virtual space, wherein the set of segments includes a first segment associated with a first voxel volume, the first segment overlapping with at least a portion of a second segment associated with a second voxel volume.
[0092] In one or more embodiments, action sequence 700 includes identifying a subset of pixels in the pixel space corresponding to the overlapping portion of the first voxel volume and the second voxel volume. For each pixel in this subset of pixels, action sequence 700 may include assigning a first identifier of a first slice to a first color channel of the pixel, and assigning a second identifier of a second slice to a second color channel of the pixel.
[0093] Action sequence 700 may further include action 740 of performing ray tracing on pixels in pixel space based on pixel data corresponding to a set of identified segments from a volume index, and based on a combination of pixel data associated with a first boundary volume and a second boundary volume. For example, action 740 may include performing ray tracing on pixels in pixel space based on a pixel dataset corresponding to a set of identified segments from a voxel index, wherein ray tracing is performed on pixels in the pixel space portion of the overlapping area of the first and second segments based on a combination of pixel data from a first voxel volume and a second voxel volume. In one or more embodiments, performing ray tracing on pixels in pixel space includes projecting pixels of an identifier subset of pixels based on a combination of first or more pixel values from a voxel index for a first identifier and second or more pixel values from a voxel index for a second identifier.
[0094] In one or more embodiments, the action sequence 700 includes detecting movement of a 3D unit within a virtual space. The action sequence 700 may also include, in response to determining an updated position of the 3D unit within the virtual space. In response to detecting the updated position of the 3D unit within the virtual space, the action sequence 700 may include, for the updated position of the 3D unit within the virtual space, identifying an updated set of segments from a plurality of segments visible from a reference point within the virtual space, and performing ray tracing on pixels in the pixel space based on pixel data from a voxel index corresponding to the updated set of segments.
[0095] Figure 8 Certain components that may be included within a computer system 800 are described. One or more computer systems 800 may be used to implement the various devices, components, and systems described herein.
[0096] Computer system 800 includes processor 801. Processor 801 can be a general-purpose single-chip or multi-chip microprocessor (e.g., an advanced RISC (Reduced Instruction Set Computer) machine (ARM)), a special-purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc. Processor 801 can be referred to as a central processing unit (CPU). Although in Figure 8The computer system 800 shows only a single processor 801, but in alternative configurations, a combination of processors (e.g., ARM and DSP) can be used.
[0097] The computer system 800 also includes a memory 803 that is in electronic communication with the processor 801. The memory 803 can be any electronic component capable of storing electronic information. For example, the memory 803 can be embodied as random access memory (RAM), read-only memory (ROM), disk storage media, optical storage media, flash memory devices in RAM, onboard memory included in the processor, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), registers, and combinations thereof.
[0098] Instruction 805 and data 807 may be stored in memory 803. Instruction 805 may be executed by processor 801 to implement some or all of the functions disclosed herein. Execution of instruction 805 may involve using data 807 stored in memory 803. Any of the various examples of modules and components described herein may be implemented in part or in whole as instruction 805 stored in memory 803 and executed by processor 801. Any example of the various examples of data described herein may be in data 807 stored in memory 803 and used during the execution of instruction 805 by processor 801.
[0099] The computer system 800 may also include one or more communication interfaces 809 for communicating with other electronic devices. The communication interface 809 may be based on wired communication technology, wireless communication technology, or both. Some examples of the communication interface 809 include Universal Serial Bus (USB), Ethernet adapters, and wireless adapters operating according to the Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless communication protocol. Wireless communication adapter and infrared (IR) communication port.
[0100] Computer system 800 may also include one or more input devices 811 and one or more output devices 813. Some examples of input devices 811 include keyboards, mice, microphones, remote control devices, buttons, joysticks, trackballs, touchpads, and light pens. Some examples of output devices 813 include speakers and printers. A particular type of output device typically included in computer system 800 is a display device 815. The display device 815 used with the embodiments disclosed herein may utilize any suitable image projection technology, such as liquid crystal displays (LCDs), light-emitting diodes (LEDs), gas plasma, electroluminescence, etc. A display controller 817 may also be provided for converting data 807 stored in memory 803 into text, graphics, and / or moving images (as applicable) displayed on the display device 815.
[0101] Various components of a computer system 800 can be coupled together by one or more buses, which may include power buses, control signal buses, status signal buses, data buses, etc. For clarity, the various buses are... Figure 8 The example is 819, which is a bus system.
[0102] Unless specifically described as implemented in a particular manner, the techniques described herein can be implemented in hardware, software, firmware, or any combination thereof. Any feature described as a module, component, etc., can also be implemented together in an integrated logic device or separately as a discrete but interoperable logic device. If implemented in software, the techniques can be implemented at least in part by a non-transient processor-readable storage medium comprising instructions that, when executed by at least one processor, perform one or more methods described herein. Instructions can be organized into routines, programs, objects, components, data structures, etc., which perform specific tasks and / or implement specific data types, and can be combined or distributed as needed in various embodiments.
[0103] The steps and / or actions of the methods described herein can be interchanged without departing from the scope of the claims. In other words, unless the proper operation of the described methods requires a specific order of steps or actions, the order and / or use of specific steps and / or actions can be modified without departing from the scope of the claims.
[0104] The term "determine" encompasses a wide variety of actions; therefore, "determine" can include calculation, computation, processing, derivation, research, searching (e.g., looking in a table, database, or other data structure), ascertainment, and similar actions. Furthermore, "determine" can include receiving (e.g., receiving information), accessing (e.g., accessing data in memory), and similar actions. Likewise, "determine" can also include parsing, selecting, choosing, building, and similar actions.
[0105] The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that additional elements may be included in addition to those listed. Additionally, it will be understood that references to “one embodiment” or “an embodiment” in this disclosure are not intended to exclude the existence of additional embodiments that also incorporate the described features. For example, where compatible, any element or feature described with respect to embodiments herein may be combined with any element or feature of any other embodiment described herein.
[0106] This disclosure may be embodied in other specific forms without departing from its spirit or characteristics. The described embodiments are to be considered illustrative rather than restrictive. Thus, the scope of the invention is indicated by the appended claims rather than the foregoing description. Changes falling within the meaning and scope of equivalents of the claims should be covered by the scope of the claims.
Claims
1. A method comprising: A voxel representation identifying a three-dimensional unit that can move within a virtual space, the voxel representation comprising a plurality of voxel volumes, each of the plurality of voxel volumes comprising a plurality of voxel blocks, wherein each of the plurality of voxel volumes is associated with a corresponding segment from a plurality of segments, the plurality of segments being associated with movement of corresponding portions of the three-dimensional unit, wherein each of the plurality of voxel volumes comprises a plurality of voxel blocks bound to the corresponding segment, and wherein the plurality of voxel blocks are configured to move within the virtual space relative to movement of the corresponding segment within the virtual space; Maintain the voxel index of the three-dimensional unit, the voxel index including the plurality of voxel volumes and mapped to the pixel data of the corresponding segments from the plurality of segments; For the current position of the three-dimensional unit in the virtual space, a set of segments visible in pixel space is identified from the plurality of segments, wherein the pixel space represents the field of view from a reference point in the virtual space; and Ray tracing is performed on pixels in the pixel space based on a pixel dataset corresponding to the set of identified segments visible to reference points in the virtual space, derived from the voxel index.
2. The method according to claim 1, characterized in that, Identifying the voxel representation includes selecting the voxel representation from a plurality of voxel representations associated with the three-dimensional unit.
3. The method according to claim 2, characterized in that, It also includes maintaining a plurality of voxel indices for the three-dimensional unit, wherein each voxel index from the plurality of voxel indices corresponds to an associated voxel representation from the plurality of voxel representations.
4. The method according to claim 1, characterized in that, The granularity of the plurality of voxel blocks is based on the size of the voxel representation when rendered within the pixel space.
5. The method according to claim 1, characterized in that, The voxel index includes pixel data for each voxel block across the surface of the plurality of voxel volumes, the pixel data including one or more of pixel color data, pixel brightness data, or directional opacity data of the plurality of voxel volumes.
6. The method according to claim 1, characterized in that, The set of segments identified includes identifying two or more overlapping segments associated with two or more voxel volumes that contact a pixel within the pixel space, and the method further includes: Assigning the first identifier of the first segment in one of the two or more overlapping segments to the first color channel of the pixel; and The second identifier of the second segment of the two or more overlapping segments is assigned to the second color channel of the pixel.
7. The method according to claim 6, characterized in that, Ray tracing of pixels in the pixel space includes: Based on the first segment, identify one or more pixel values from the voxel index; Identify a second or more pixel values from the voxel index based on the second segment; and The pixels are filled based on a combination of the first or more pixel values and the second or more pixel values from the voxel index.
8. The method according to claim 1, characterized in that, The pixel data of the voxel index includes opacity values corresponding to the respective segments among the plurality of segments, and wherein ray tracing of the pixels in the pixel space is also based on the opacity values of the voxel indexes corresponding to the set of identified segments.
9. The method according to claim 1, characterized in that, Identifying the set of segments visible within the pixel space and performing ray tracing on the pixels of the pixel space is performed at runtime when the application is initiated, wherein the voxel representation and the voxel index are stored on the computing device prior to the runtime of the application.
10. The method according to claim 1, characterized in that, Also includes: Detect the updated position of the three-dimensional unit in the virtual space; as well as In response to detecting the updated position of the three-dimensional unit within the virtual space: For the updated position of the three-dimensional unit, the updated set of segments is identified among the multiple segments visible in the pixel space from the view of the reference point in the virtual space; as well as Ray tracing is performed on pixels in the pixel space based on pixel data from voxel indices corresponding to the updated set of segments.
11. The method according to claim 10, characterized in that, The updated position of the three-dimensional unit is detected based on one or more of the following: The movement of the three-dimensional unit in the virtual space; The movement of the reference point within the virtual space; or The field of view rotates around the reference point in the virtual space.
12. The method according to claim 1, characterized in that, Also includes: The identifier includes additional three-dimensional units; It is determined that the size of the additional three-dimensional unit within the pixel space exceeds a threshold size; as well as Based on the determination that the size of the additional three-dimensional unit exceeds the threshold size, the pixels in the pixel space are filled based on the polygonal mesh representation of the three-dimensional unit.
13. The method according to claim 1, characterized in that, The set of segments includes a first segment associated with a first voxel volume, which overlaps with at least a portion of a second segment associated with a second voxel volume; and Ray tracing of pixels in the pixel space of the overlapping portion of the first and second segments is based on a combination of pixel data from the first and second voxel volumes.
14. The method according to claim 13, characterized in that, Also includes: A subset of pixels in the pixel space that corresponds to the overlapping portion of the first voxel volume and the second voxel volume; as well as For each pixel of the subset of said pixels: Assign the first identifier of the first segment to the first color channel of the pixel; The second identifier of the second segment is assigned to the second color channel of the pixel.
15. The method according to claim 14, characterized in that, Ray tracing of pixels in the pixel space includes projecting pixels of a subset of the pixel identifiers based on a combination of a first or more pixel values of the first identifier from the voxel index and a second or more pixel values of the second identifier from the voxel index.
16. The method according to claim 13, characterized in that, Also includes: Detect the movement of the three-dimensional unit in the virtual space; Determine the updated position of the three-dimensional unit within the virtual space; as well as In response to detecting the updated position of the three-dimensional unit in the virtual space: For the updated position of the three-dimensional unit in the virtual space, identify the updated set of segments visible in the pixel space from the view of the reference point in the virtual space from the plurality of segments; as well as Ray tracing is performed on pixels in the pixel space based on pixel data from voxel indices corresponding to the updated set of segments.
17. A system comprising: One or more processors; A memory that communicates electronically with the one or more processors; as well as Instructions stored in the memory, which can be executed by the one or more processors to: A boundary volume representation identifying a 3D unit that can move within a virtual space, the boundary volume representation comprising a plurality of boundary volumes, each of the plurality of boundary volumes comprising a plurality of voxel blocks, and wherein each of the plurality of boundary volumes is associated with a corresponding segment from a plurality of segments, the plurality of segments being associated with the movement of corresponding portions of the 3D unit, wherein each of the plurality of boundary volumes comprises a plurality of voxel blocks bound to the corresponding segment, and wherein the plurality of voxel blocks are configured to move within the virtual space relative to the movement of the corresponding segment within the virtual space; Maintain the volume index of the three-dimensional unit, the volume index including the plurality of boundary volumes and mapped to the pixel data of the corresponding segments from the plurality of segments; For the current position of the three-dimensional unit in the virtual space, a set of segments visible in pixel space is identified from the plurality of segments, wherein the pixel space represents the field of view from a reference point in the virtual space; and Ray tracing is performed on pixels in the pixel space based on a pixel dataset corresponding to the set of identified segments visible to reference points within the virtual space, derived from the volume index.
18. The system according to claim 17, characterized in that, It also includes instructions that, when executed by at least one processor, cause the computing device to perform the following operation: generate multiple boundary volume representations of different sizes and different levels of detail for the three-dimensional unit, wherein identifying the boundary volume representation includes selecting the boundary volume representation from the multiple boundary volume representations based on the size of the boundary volume representation when rendered in the pixel space.
19. The system according to claim 17, characterized in that, The set of identifier segments includes two or more overlapping segments that identify two or more boundary volumes associated with pixels in contact with the pixel space, and wherein ray tracing of pixels in the pixel space is based on a combination of pixel values from the voxel index corresponding to the two or more overlapping segments.
Citation Information
Patent Citations
Method and apparatus for capturing motion of dynamic object
US20110148875A1
Method and arrangement for 3D image production
US20140247264A1
Rendering of surfaces from volumetric data employing both dividing and stretching cubes
US6219060B1