Blendshape compression system
AssigneeElectronic Arts Inc.
InventorDmitry Andreevich Andreev
Life of this patent
Estimating the term…
Abstract
The systems and methods described herein can pre-process a blendshape matrix via a global clusterization process and a local clusterization process. The pre-processing can cause the blendshape matrix to be divided into multiple blocks. The techniques can further apply a matrix compression technique to each block of the blendshape matrix to generate a compression result. The matrix compression technique can comprise a matrix approximation step, an accuracy verification step, and a recursive compression step. The compression result for each block may be combined to generate a compressed blendshape matrix for rendering a virtual entity.
Claims22
A computer-implemented method for compressing a blendshape matrix associated with animating a three-dimensional virtual entity during runtime execution of a game application, comprising:
- under control of one or more hardware computing devices configured with specific computer-executable instructions, the specific computer-executable instructions stored in an electronic hardware memory,
- accessing a blendshape matrix associated with animating a three-dimensional virtual entity;
- dividing the blendshape matrix into a plurality of block matrixes, wherein each block matrix is a subset of the blendshape matrix;
- for each block matrix of the plurality of block matrixes:
- dividing the block matrix into a plurality of compressed submatrixes using a recursive division routine, wherein the block matrix is a parent matrix in a first stage of the recursive division routine, wherein each stage of the recursive division routine comprises:
- dividing a parent matrix into a plurality of submatrixes;
- compressing the parent matrix to generate a first compression result using a matrix approximation algorithm;
- compressing the plurality of submatrixes to generate a second compression result using the matrix approximation algorithm;
- determining whether a first compression ratio of the first compression result is an improvement over a second compression ratio of the second compression result;
- in response to a determination that the first compression ratio is an improvement over the second compression ratio, outputting the first compression result as a compressed submatrix of the plurality of compressed submatrixes;
- and
- in response to a determination that the first compression ratio is not an improvement over the second compression ratio, performing a subsequent stage of the recursive division routine on each submatrix of the plurality of submatrixes, wherein in the subsequent stage of the recursive division routine each submatrix is a parent matrix;
- and
- combining the plurality of compressed submatrixes into a compressed blendshape output;
- and
- storing the compressed blendshape output on the hardware computing device for real-time rendering of the three dimensional virtual entity in a game application.
A computer system comprising:
- a hardware processor in communication with the electronic data store, the hardware processor configured to execute specific computer-executable instructions to at least:
- divide a blendshape matrix into a plurality of block matrixes;
- for each block matrix of the plurality of block matrixes:
- divide the block matrix into a plurality of compressed submatrixes using a recursive division routine, wherein the block matrix is a parent matrix in a first stage of the recursive division routine, wherein each stage of the recursive division routine is configured to:
- divide a parent matrix into a plurality of submatrixes;
- compress the parent matrix to generate a first compression result using a matrix approximation algorithm;
- compress the plurality of submatrixes to generate a second compression result using the matrix approximation algorithm;
- determine whether a first compression ratio of the first compression result is an improvement over a second compression ratio of the second compression result;
- in response to a determination that the first compression ratio is an improvement over the second compression ratio, output the first compression result as a compressed submatrix of the plurality of compressed submatrixes;
- and
- in response to a determination that the first compression ratio is not an improvement over the second compression ratio, perform a subsequent stage of the recursive division routine on each submatrix of the plurality of submatrixes, wherein in the subsequent stage of the recursive division routine each submatrix is a parent matrix;
- and
- combine the plurality of compressed submatrixes into a compressed blendshape output;
- and
- store the compressed blendshape output in a data store of the computing system for real-time rendering of the three dimensional virtual entity in a game application.
A non-transitory computer-readable storage medium storing computer executable instructions that, when executed by one or more computing devices, configure the one or more computing devices to perform operations comprising:
- under control of one or more hardware computing devices configured with specific computer-executable instructions, the specific computer-executable instructions stored in an electronic hardware memory,
- dividing a blendshape matrix into a plurality of block matrixes;
- for each block matrix of the plurality of block matrixes:
- dividing the block matrix into a plurality of compressed submatrixes using a recursive division routine, wherein the block matrix is a parent matrix in a first stage of the recursive division routine, wherein each stage of the recursive division routine comprises:
- dividing a parent matrix into a plurality of submatrixes;
- compressing the parent matrix to generate a first compression result using a matrix approximation algorithm;
- compressing the plurality of submatrixes to generate a second compression result using the matrix approximation algorithm;
- determining whether a first compression ratio of the first compression result is an improvement over a second compression ratio of the second compression result;
- in response to a determination that the first compression ratio is an improvement over the second compression ratio, outputting the first compression result as a compressed submatrix of the plurality of compressed submatrixes;
- and
- in response to a determination that the first compression ratio is not an improvement over the second compression ratio, performing a subsequent stage of the recursive division routine on each submatrix of the plurality of submatrixes, wherein in the subsequent stage of the recursive division routine each submatrix is a parent matrix;
- and
- combining the plurality of compressed submatrixes into a compressed blendshape output;
- and
- storing the compressed blendshape output on the hardware computing device for real-time rendering of the three dimensional virtual entity in a game application.
Dependencies are inferred from the claim text.