import type SpatialReference from "../geometry/SpatialReference.js"; import type Layer from "./Layer.js"; import type ElevationInfo from "../symbols/support/ElevationInfo.js"; import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js"; import type { APIKeyMixin, APIKeyMixinProperties } from "./mixins/APIKeyMixin.js"; import type { CustomParametersMixin, CustomParametersMixinProperties } from "./mixins/CustomParametersMixin.js"; import type { OperationalLayer, OperationalLayerProperties } from "./mixins/OperationalLayer.js"; import type { PortalLayer, PortalLayerProperties } from "./mixins/PortalLayer.js"; import type { ScaleRangeLayer, ScaleRangeLayerProperties } from "./mixins/ScaleRangeLayer.js"; import type { SpatialReferenceProperties } from "../geometry/SpatialReference.js"; import type { ElevationInfoProperties } from "../symbols/support/ElevationInfo.js"; import type { LayerProperties } from "./Layer.js"; /** @since 5.0 */ export interface GaussianSplatLayerProperties extends LayerProperties, APIKeyMixinProperties, CustomParametersMixinProperties, ScaleRangeLayerProperties, PortalLayerProperties, OperationalLayerProperties, Partial> { /** * Specifies how the Gaussian Splatting scene is placed on the vertical axis (z). This property may only be used * in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the * [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/) for an example of how this property * may be used. * > [!WARNING] * > * > This property only affects [GaussianSplatLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/) when using the `absolute-height` mode. * * @since 5.0 */ elevationInfo?: ElevationInfoProperties | null; /** * The spatial reference of the layer. * * @since 5.0 */ spatialReference?: SpatialReferenceProperties; /** * The title of the layer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget. * * When loading a layer by service url, the title is derived from the service name. * When the layer is loaded from a portal item, the title of the portal item will be used instead. * Finally, if a layer is loaded as part of a webmap or a webscene, then the title of the layer as stored in the * webmap/webscene will be used. * * @since 5.0 */ title?: string | null; } /** * * [Overview](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#overview) * * [Creating a GaussianSplatLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#creating-a-gaussiansplat-layer) * * [Data Visualization](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#data-visualization) * * * ## Overview * * The GaussianSplatLayer is designed for visualizing highly realistic, complex geometry of built and natural environments in a * [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * It excels at rendering high-fidelity details, making it ideal for thin and intricate structures like powerlines, guard rails, * and antennas in infrastructure workflows. It also captures transparency and reflections in human-made features, such as building * windows or metal surfaces and can accurately represent vegetation and other natural features. * * Gaussian splatting is a technique in computer graphics that renders a 3D scene from millions of individual elements called Gaussian splats. * They can be seen as fuzzy ellipsoids that are defined by their position, rotation, size, color, and transparency. * Gaussian splats are optimized during a training process. When rendered together, Gaussian splats blend to form a smooth, * photorealistic 3D representation. * * Unlike mesh-based representations, Gaussian Splat layers represent surfaces using a large set of semi-transparent 3D Gaussians. Depending on the source data and reconstruction, the resulting surface may contain minor outliers or holes. These artifacts are often not visually prominent, but can affect analytical tools. * * > [!WARNING] * > * > **Known Limitations** * > * > * Currently, Shadow Cast analysis, Viewshed and Volume Measurement are not supported. * > * When using the [Slice component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-slice/), the slice plane will, contrary to the behavior described in [`tiltEnabled`](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-slice/#tiltEnabled), not automatically align to the underlying surface of a Gaussian Splat layer due to the absence of surface normals. * > * Gaussian splat layers are not guaranteed to always draw correctly in a local scene using WGS84 as spatial reference * > (WKID 4326). * * * ## Creating a GaussianSplatLayer * Gaussian splat data is generated by a highly automated process from large sets of overlapping imagery and/or from lidar surveys. * You can use [ArcGIS Reality Studio](https://doc.esri.com/en/arcgis-reality-studio/latest/), * [ArcGIS Drone2Map](https://doc.arcgis.com/en/drone2map/latest/get-started/what-is-drone2map.htm), and * [ArcGIS Reality for ArcGIS Pro](https://pro.arcgis.com/en/pro-app/latest/help/data/imagery/introduction-to-arcgis-reality-extension.htm) * to create a Gaussian splat dataset. * * From ArcGIS Pro, you can author a Gaussian splat layer and share it to ArcGIS Online or ArcGIS Enterprise 12.1 or newer. * In addition, you can upload a 3TZ file (3D Tiles Package). * * The Scene Service is identified by the [url](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#url) or [portalItem](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/#portalItem) * property and can be used to create an instance of a Gaussian splat layer: * * ```js * let gaussianSplatLayer = new GaussianSplatLayer({ * url: "https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Portcoast_industrial/3DTilesServer/tileset.json" * }); * ``` * * ```js * let gaussianSplatLayer = new GaussianSplatLayer({ * portalItem: { * id: "01596d71a5ce40ec8a6f21baad6e5b6f" * } * }); * ``` * * * ## Data Visualization * Besides human-made structures, natural objects such as vegetation can be visualized with high fidelity. This includes details like tree leaves, * enabling classification of tree species or other types of vegetation. * * A Gaussian splat layer is a 3D layer that can be visualized in either a local or global scene. For example, if you create a Gaussian splat layer in a * projected coordinate system, you can visualize it in a local scene using the same projected coordinate system. * Since Gaussian splat layers support the * [ESRI_CRS](https://github.com/Esri/3D-tiles-layer/blob/main/ESRI_CRS/Esri_crs_extension.md) extension, you can also visualize the same Gaussian splat layer * in a global scene that uses the geodetic coordinate system WGS84. * * You can visualize and explore other layers such as feature, imagery, and other 3D layers together with the Gaussian splat layer in your scene. * * @since 5.0 * @see [Sample - GaussianSplatLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-gaussiansplatlayer/) * @see [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) * @see [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) */ export default class GaussianSplatLayer extends GaussianSplatLayerSuperclass { /** @since 5.0 */ constructor(properties?: GaussianSplatLayerProperties); /** * Specifies how the Gaussian Splatting scene is placed on the vertical axis (z). This property may only be used * in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the * [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/) for an example of how this property * may be used. * > [!WARNING] * > * > This property only affects [GaussianSplatLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/) when using the `absolute-height` mode. * * @since 5.0 */ get elevationInfo(): ElevationInfo | null | undefined; set elevationInfo(value: ElevationInfoProperties | null | undefined); /** * The opacity of the layer. This value can range between `1` and `0`, where `0` is 100 percent * transparent and `1` is completely opaque. * * > [!WARNING] * > * > **Known Limitations** * > * > In a 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/), modifying opacity is not supported for * > [DimensionLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/DimensionLayer/), * > [GaussianSplatLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GaussianSplatLayer/), * > [IntegratedMesh3DTilesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMesh3DTilesLayer/), * > [IntegratedMeshLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/IntegratedMeshLayer/), * > [LineOfSightLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/LineOfSightLayer/), [PointCloudLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/PointCloudLayer/), * > [ViewshedLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ViewshedLayer/), and [VoxelLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/VoxelLayer/). * * @default 1 * @example * // Makes the layer 50% transparent * layer.opacity = 0.5; */ get opacity(): number; /** * The spatial reference of the layer. * * @since 5.0 */ get spatialReference(): SpatialReference; set spatialReference(value: SpatialReferenceProperties); /** * The title of the layer used to identify it in places such as the [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/) widget. * * When loading a layer by service url, the title is derived from the service name. * When the layer is loaded from a portal item, the title of the portal item will be used instead. * Finally, if a layer is loaded as part of a webmap or a webscene, then the title of the layer as stored in the * webmap/webscene will be used. * * @since 5.0 */ accessor title: string | null | undefined; /** * The layer type provides a convenient way to check the type of the layer without the need to import specific layer modules. * * @since 5.0 */ get type(): "gaussian-splat"; /** * The URL of the root json file. * * @since 5.0 */ accessor url: string | null | undefined; } declare const GaussianSplatLayerSuperclass: typeof Layer & typeof APIKeyMixin & typeof CustomParametersMixin & typeof MultiOriginJSONSupportMixin & typeof ScaleRangeLayer & typeof PortalLayer & typeof OperationalLayer