UNPKG

@playcanvas/splat-transform

Version:

Library and CLI tool for 3D Gaussian splat format conversion and transformation

16 lines (15 loc) 2.33 kB
/** * 3D world-space covariance Σ = M·Mᵀ where M = R·diag(scale), then * rotated into camera space via V·Σ·Vᵀ. * * Reads: r00..r22 (world rotation), lsX, lsY, lsZ (log scales), * uniforms.rightX/Y/Z, uniforms.downX/Y/Z, uniforms.forwardX/Y/Z * (camera basis rows = view-rotation matrix V) * Defines: c00, c01, c02, c11, c12, c22 (camera-space 3D covariance, * symmetric — only the upper triangle is stored) * * The output covariance feeds the Jacobian chunks (pinhole / equirect) * to derive the 2D screen-space covariance via cov2D = J · cov3D · Jᵀ. */ declare const covariance3D = "\n let sx = exp(lsX);\n let sy = exp(lsY);\n let sz = exp(lsZ);\n\n let m00 = r00 * sx; let m01 = r01 * sy; let m02 = r02 * sz;\n let m10 = r10 * sx; let m11 = r11 * sy; let m12 = r12 * sz;\n let m20 = r20 * sx; let m21 = r21 * sy; let m22 = r22 * sz;\n\n let sig00 = m00 * m00 + m01 * m01 + m02 * m02;\n let sig01 = m00 * m10 + m01 * m11 + m02 * m12;\n let sig02 = m00 * m20 + m01 * m21 + m02 * m22;\n let sig11 = m10 * m10 + m11 * m11 + m12 * m12;\n let sig12 = m10 * m20 + m11 * m21 + m12 * m22;\n let sig22 = m20 * m20 + m21 * m21 + m22 * m22;\n\n let v00 = uniforms.rightX; let v01 = uniforms.rightY; let v02 = uniforms.rightZ;\n let v10 = uniforms.downX; let v11 = uniforms.downY; let v12 = uniforms.downZ;\n let v20 = uniforms.forwardX; let v21 = uniforms.forwardY; let v22 = uniforms.forwardZ;\n\n let t00 = v00 * sig00 + v01 * sig01 + v02 * sig02;\n let t01 = v00 * sig01 + v01 * sig11 + v02 * sig12;\n let t02 = v00 * sig02 + v01 * sig12 + v02 * sig22;\n let t10 = v10 * sig00 + v11 * sig01 + v12 * sig02;\n let t11 = v10 * sig01 + v11 * sig11 + v12 * sig12;\n let t12 = v10 * sig02 + v11 * sig12 + v12 * sig22;\n let t20 = v20 * sig00 + v21 * sig01 + v22 * sig02;\n let t21 = v20 * sig01 + v21 * sig11 + v22 * sig12;\n let t22 = v20 * sig02 + v21 * sig12 + v22 * sig22;\n\n let c00 = t00 * v00 + t01 * v01 + t02 * v02;\n let c01 = t00 * v10 + t01 * v11 + t02 * v12;\n let c02 = t00 * v20 + t01 * v21 + t02 * v22;\n let c11 = t10 * v10 + t11 * v11 + t12 * v12;\n let c12 = t10 * v20 + t11 * v21 + t12 * v22;\n let c22 = t20 * v20 + t21 * v21 + t22 * v22;\n"; export { covariance3D };