UNPKG

@babylonjs/core

Version:

Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.

135 lines (134 loc) 5.22 kB
/** This file must only contain pure code and pure imports */ import { type Nullable } from "../../types.js"; import { type Scene } from "../../scene.pure.js"; import { Mesh } from "../mesh.pure.js"; import { BoundingInfo } from "../../Culling/boundingInfo.js"; import { type GaussianSplattingMesh } from "./gaussianSplattingMesh.pure.js"; import { type Ray } from "../../Culling/ray.core.js"; import { PickingInfo } from "../../Collisions/pickingInfo.js"; /** * Class used as a proxy mesh for a part of a compound Gaussian Splatting mesh */ export declare class GaussianSplattingPartProxyMesh extends Mesh { /** * Local-space bounds for this part, stored directly on the proxy so it does not * need to retain a reference to the original source mesh. */ private _minimum; private _maximum; /** * The index of the part in the compound mesh (internal storage) */ private _partIndex; /** * Number of splats owned by this part. * @internal */ _vertexCount: number; /** * Offset of this part in the compound splat ordering. * @internal */ _splatsDataOffset: number; /** * Texel offset of this part inside the compound SH textures. * This matches the splat offset because SH data is stored one texel per splat. * @internal */ _shDataOffset: number; /** * Gets the index of the part in the compound mesh */ get partIndex(): number; /** * The compound mesh that owns this part proxy */ readonly compoundSplatMesh: GaussianSplattingMesh; /** * Backward-compatible alias for the owning compound mesh. * @deprecated Use `compoundSplatMesh` instead. */ get proxiedMesh(): GaussianSplattingMesh; /** * Creates a new Gaussian Splatting part proxy mesh * @param name The name of the proxy mesh * @param scene The scene the proxy mesh belongs to * @param compoundSplatMesh The compound mesh that owns this part proxy * @param partIndex The index of the part in the compound mesh * @param boundingInfo Local-space bounds of the part inside the compound mesh * @param vertexCount Number of splats owned by the part * @param splatsDataOffset Offset of the part in the compound splat ordering * @param shDataOffset Offset of the part in the compound SH textures */ constructor(name: string, scene: Nullable<Scene>, compoundSplatMesh: GaussianSplattingMesh, partIndex: number, boundingInfo: BoundingInfo, vertexCount: number, splatsDataOffset: number, shDataOffset?: number); /** * Updates the bounding info of this proxy mesh from its stored part metadata. */ updateBoundingInfoFromPartData(): void; /** * Backward-compatible alias retained while callers move away from source-mesh based semantics. */ updateBoundingInfoFromProxiedMesh(): void; private _applyBoundingInfo; /** * Returns the class name * @returns "GaussianSplattingPartProxyMesh" */ getClassName(): string; /** * Updates the part index for this proxy mesh. * This should only be called internally when parts are removed from the compound mesh. * @param newPartIndex the new part index * @internal */ updatePartIndex(newPartIndex: number): void; /** * Updates the per-part metadata for this proxy mesh. * This is used internally when compound parts are rebuilt and re-indexed. * @param vertexCount the number of splats owned by the part * @param splatsDataOffset the new splat offset in the compound * @param shDataOffset the new SH texel offset in the compound * @internal */ updatePartMetadata(vertexCount: number, splatsDataOffset: number, shDataOffset?: number): void; /** * Gets whether the part is visible */ get isVisible(): boolean; /** * Sets whether the part is visible */ set isVisible(value: boolean); /** * Gets the visibility of the part (0.0 to 1.0) */ get visibility(): number; /** * Sets the visibility of the part (0.0 to 1.0) */ set visibility(value: number); /** * Checks if a ray intersects with this proxy mesh using only bounding info * @param ray defines the ray to test * @returns the picking info with this mesh set as pickedMesh if hit */ intersects(ray: Ray): PickingInfo; /** * Serialize current GaussianSplattingPartProxyMesh * @param serializationObject defines the object which will receive the serialization data * @returns the serialized object */ serialize(serializationObject?: any): any; /** * Parses a serialized GaussianSplattingPartProxyMesh * @param parsedMesh the serialized mesh * @param scene the scene to create the GaussianSplattingPartProxyMesh in * @returns the created GaussianSplattingPartProxyMesh */ static Parse(parsedMesh: any, scene: Scene): GaussianSplattingPartProxyMesh; } /** * Register side effects for gaussianSplattingPartProxyMesh. * Safe to call multiple times; only the first call has an effect. */ export declare function RegisterGaussianSplattingPartProxyMesh(): void;