Systems and methods for real-time analytic generation of a splat representation at different levels-of-detail
A system and associated methods perform real-time analytic and non-iterative generation of a splat representation at different levels-of-detail (LoDs). The system receives a splat representation of a three-dimensional (3D) asset. The system partitions the 3D space of the splat representation into voxels and determines directions and amounts with which the set of splats within each voxel spread out from a centroid that is derived based on positions of the splats in that voxel. The system defines a substitute splat for each voxel based on the one or more directions and amounts that are determined for the set of splats in that voxel and generates the splat representation at a reduced LoD based on the substitute splat that is defined for each voxel.
1 . A method comprising:
receiving a splat representation of a three-dimensional (3D) asset, the splat representation comprising a plurality of splats distributed in a 3D space;
partitioning the 3D space into a plurality of voxels;
determining one or more directions and amounts with which a set of splats from the plurality of splats positioned within a voxel of the plurality of voxels spread out from a centroid that is derived based on positions of the set of splats;
defining a substitute splat for each particular voxel of the plurality of voxels based on the one or more directions and amounts that are determined for the set of splats in that particular voxel; and
generating the splat representation at a reduced level-of-detail (LoD) based on the substitute splat that is defined for each voxel of the plurality of voxels.
2 . The method of claim 1 further comprising:
defining a central moment matrix for each specific voxel of the plurality of voxels based on a spatial distribution of the set of splats positioned within the specific voxel; and
wherein determining the one or more directions and amounts comprises performing an eigen-decomposition of the central moment matrix that is defined for each specific voxel of the plurality of voxels.
3 . The method of claim 1 further comprising:
defining a central moment matrix for a specific voxel from the plurality of voxels based on a spatial distribution of the set of splats positioned within the specific voxel;
calculating the one or more directions for the set of splats associated with the specific voxel based on eigenvectors that are derived from the central moment matrix that is defined for the specific voxel; and
calculating the amounts for the set of splats associated with the specific voxel based on eigenvalues that are derived from the central moment matrix that is defined for the specific voxel.
4 . The method of claim 1 , wherein defining the substitute splat for each particular voxel comprises:
centering the substitute splat at the centroid that is derived for the particular voxel;
orienting the substitute splat according to the one or more directions with which the set of splats within the particular voxel spread out from the centroid; and
scaling the substitute splat based on the amounts associated with the one or more directions.
5 . The method of claim 1 , wherein defining the substitute splat for each particular voxel comprises:
replacing the set of splats positioned within the particular voxel with the substitute splat that is defined for the particular voxel.
6 . The method of claim 1 , wherein defining the substitute splat for each particular voxel comprises:
scaling the substitute splat to encompass regions of the particular voxel that are spanned by the set of splats.
7 . The method of claim 1 , wherein defining the substitute splat for each particular voxel comprises:
defining visual characteristics of the substitute splat based on an average or weighted average of visual characteristics from the set of splats in the particular voxel.
8 . The method of claim 1 further comprising:
processing each voxel of the plurality of voxels in parallel using a different process, thread, or compute unit of a hardware processor.
9 . The method of claim 1 further comprising:
receiving a request for the splat representation or the 3D asset; and
streaming the substitute splat that is defined for each voxel of the plurality of voxels in order to provide the splat representation at the reduced LoD in response to the request.
10 . The method of claim 1 further comprising:
generating a visualization of the splat representation at the reduced LoD in response to rendering the substitute splat that is defined for each voxel of the plurality of voxels instead of the plurality of splats.
11 . The method of claim 1 further comprising:
partitioning each voxel of the plurality of voxels into a smaller set of voxels;
determining one or more directions and amounts with which a subset of splats positioned within a voxel of the smaller set of voxels spread out from a centroid that is derived based on positions of the subset of splats;
defining a substitute splat for each particular voxel of the smaller set of voxels based on the one or more directions and amounts that are determined for the subset of splats in that particular voxel; and
generating the splat representation at a second LoD based on the substitute splat that is defined for each voxel of the smaller set of voxels.
12 . A splat generation system comprising:
one or more hardware processors configured to:
receive a splat representation of a three-dimensional (3D) asset, the splat representation comprising a plurality of splats distributed in a 3D space;
partition the 3D space into a plurality of voxels;
determine one or more directions and amounts with which a set of splats from the plurality of splats positioned within a voxel of the plurality of voxels spread out from a centroid that is derived based on positions of the set of splats;
define a substitute splat for each particular voxel of the plurality of voxels based on the one or more directions and amounts that are determined for the set of splats in that particular voxel; and
generate the splat representation at a reduced level-of-detail (LoD) based on the substitute splat that is defined for each voxel of the plurality of voxels.
13 . The splat generation system of claim 12 , wherein the one or more hardware processors are further configured to:
define a central moment matrix for each specific voxel of the plurality of voxels based on a spatial distribution of the set of splats positioned within the specific voxel; and
wherein determining the one or more directions and amounts comprises performing an eigen-decomposition of the central moment matrix that is defined for each specific voxel of the plurality of voxels.
14 . The splat generation system of claim 12 , wherein the one or more hardware processors are further configured to:
define a central moment matrix for a specific voxel from the plurality of voxels based on a spatial distribution of the set of splats positioned within the specific voxel;
calculate the one or more directions for the set of splats associated with the specific voxel based on eigenvectors that are derived from the central moment matrix that is defined for the specific voxel; and
calculate the amounts for the set of splats associated with the specific voxel based on eigenvalues that are derived from the central moment matrix that is defined for the specific voxel.
15 . The splat generation system of claim 12 , wherein defining the substitute splat for each particular voxel comprises:
centering the substitute splat at the centroid that is derived for the particular voxel;
orienting the substitute splat according to the one or more directions with which the set of splats within the particular voxel spread out from the centroid; and
scaling the substitute splat based on the amounts associated with the one or more directions.
16 . The splat generation system of claim 12 , wherein defining the substitute splat for each particular voxel comprises:
replacing the set of splats positioned within the particular voxel with the substitute splat that is defined for the particular voxel.
17 . The splat generation system of claim 12 , wherein defining the substitute splat for each particular voxel comprises:
scaling the substitute splat to encompass regions of the particular voxel that are spanned by the set of splats.
18 . The splat generation system of claim 12 , wherein defining the substitute splat for each particular voxel comprises:
defining visual characteristics of the substitute splat based on an average or weighted average of visual characteristics from the set of splats in the particular voxel.
19 . The splat generation system of claim 12 , wherein the one or more hardware processors are further configured to:
process each voxel of the plurality of voxels in parallel using a different process, thread, or compute unit of the one or more hardware processors.
20 . A non-transitory computer-readable medium storing instructions that, when executed by one or more processors of a splat generation system, cause the splat generation system to perform operations comprising:
receiving a splat representation of a three-dimensional (3D) asset, the splat representation comprising a plurality of splats distributed in a 3D space;
partitioning the 3D space into a plurality of voxels;
determining one or more directions and amounts with which a set of splats from the plurality of splats positioned within a voxel of the plurality of voxels spread out from a centroid that is derived based on positions of the set of splats;
defining a substitute splat for each particular voxel of the plurality of voxels based on the one or more directions and amounts that are determined for the set of splats in that particular voxel; and
generating the splat representation at a reduced level-of-detail (LoD) based on the substitute splat that is defined for each voxel of the plurality of voxels.