@realsee/five 6.8.0-alpha.0 → 6.8.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS_READ_ME.md +4 -0
- package/AI_CONTEXT.md +4 -0
- package/README.md +50 -389
- package/ai_guides/README.md +122 -0
- package/ai_guides/ai-doc-guidelines.md +102 -0
- package/ai_guides/api.md +274 -0
- package/ai_guides/features/3dtile.md +172 -0
- package/ai_guides/features/camera-animation.md +205 -0
- package/ai_guides/features/clipper.md +135 -0
- package/ai_guides/features/coordinate-system.md +128 -0
- package/ai_guides/features/event.md +154 -0
- package/ai_guides/features/five.md +184 -0
- package/ai_guides/features/flowing-light-2d-pass.md +438 -0
- package/ai_guides/features/flowing-light-3d-pass.md +420 -0
- package/ai_guides/features/gaussian-blur-pass.md +202 -0
- package/ai_guides/features/gesture.md +180 -0
- package/ai_guides/features/get-screen-pixels.md +182 -0
- package/ai_guides/features/image-options.md +164 -0
- package/ai_guides/features/load-external-model.md +350 -0
- package/ai_guides/features/load-progress.md +140 -0
- package/ai_guides/features/material.md +151 -0
- package/ai_guides/features/mode.md +269 -0
- package/ai_guides/features/model.md +186 -0
- package/ai_guides/features/move-pano-effect.md +145 -0
- package/ai_guides/features/multi-work.md +146 -0
- package/ai_guides/features/pano-tile.md +132 -0
- package/ai_guides/features/pano-uv.md +131 -0
- package/ai_guides/features/parameter.md +153 -0
- package/ai_guides/features/plugin.md +210 -0
- package/ai_guides/features/postprocessing.md +259 -0
- package/ai_guides/features/raycast.md +175 -0
- package/ai_guides/features/request-proxy.md +112 -0
- package/ai_guides/features/screen-project.md +165 -0
- package/ai_guides/features/state.md +101 -0
- package/ai_guides/features/view-layer.md +187 -0
- package/ai_guides/features/work.md +303 -0
- package/ai_guides/glossary.md +93 -0
- package/ai_guides/intro.md +23 -0
- package/ai_guides/quick-start.md +69 -0
- package/ai_guides/release_notes/6.6.md +86 -0
- package/ai_guides/release_notes/6.7.md +401 -0
- package/ai_guides/release_notes/6.8.md +90 -0
- package/ai_guides/support.md +23 -0
- package/ai_guides/template.md +70 -0
- package/docs/00_FOR_AI_AGENTS.md +11 -0
- package/docs/README.md +11 -0
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/highlight.css +29 -29
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/main.js +2 -2
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +3 -3
- package/docs/classes/five.AdaptiveLuminancePass.html +2 -2
- package/docs/classes/five.AnimationFrameLoop.html +5 -5
- package/docs/classes/five.BoundingMesh.html +1 -1
- package/docs/classes/five.Camera.html +5 -5
- package/docs/classes/five.EffectComposer.html +1 -1
- package/docs/classes/five.EyeDomeLightingPass.html +2 -2
- package/docs/classes/five.Five.html +134 -134
- package/docs/classes/five.FivePass.html +2 -2
- package/docs/classes/five.FullScreenQuad.html +2 -2
- package/docs/classes/five.InternalWebGLRenderer.html +1 -1
- package/docs/classes/five.Model.html +36 -36
- package/docs/classes/five.ModelScene.html +12 -12
- package/docs/classes/five.Motion.html +1 -1
- package/docs/classes/five.NetworkSubscribe.html +23 -23
- package/docs/classes/five.PBMContainer.html +3 -3
- package/docs/classes/five.PBMGSObject.html +24 -0
- package/docs/classes/five.PBMGroup.html +1 -1
- package/docs/classes/five.PBMMesh.html +1 -1
- package/docs/classes/five.PBMMeshMaterial.html +15 -6
- package/docs/classes/five.PBMPointCloud.html +1 -1
- package/docs/classes/five.PBMPointCloudMaterial.html +3 -3
- package/docs/classes/five.PBMSkinnedMesh.html +1 -1
- package/docs/classes/five.PanoCircleMesh.html +4 -4
- package/docs/classes/five.PanoCircleMeshCustom.html +4 -4
- package/docs/classes/five.PanoCircleMeshSolid.html +4 -4
- package/docs/classes/five.Parameter.html +55 -51
- package/docs/classes/five.Scene.html +3 -3
- package/docs/classes/five.Subscribe.html +26 -25
- package/docs/classes/five.Tile.html +1 -1
- package/docs/classes/five.Tile3D.html +30 -26
- package/docs/classes/five.TileNode.html +2 -2
- package/docs/classes/five.Tileset.html +11 -11
- package/docs/classes/five.Trajectory.html +1 -1
- package/docs/classes/five.TrajectoryNode.html +1 -1
- package/docs/classes/five.Work.html +19 -19
- package/docs/classes/five.WorkResolvedObserver.html +41 -16
- package/docs/classes/gltf-loader.DDSLoader.html +1 -1
- package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
- package/docs/classes/gltf-loader.GLTFLoader.html +6 -6
- package/docs/classes/gltf-loader.GLTFObject.html +1 -1
- package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
- package/docs/classes/line.Line.html +1 -1
- package/docs/classes/line.LineGeometry.html +4 -4
- package/docs/classes/line.LineMaterial.html +1 -1
- package/docs/classes/line.LineSegmentsGeometry.html +4 -4
- package/docs/classes/line.THREE_Line2.html +1 -1
- package/docs/classes/line.THREE_LineSegments2.html +1 -1
- package/docs/classes/plugins.BasePlugin.Controller.html +16 -16
- package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
- package/docs/classes/react.Store.html +12 -11
- package/docs/classes/sticker.Sticker.html +11 -11
- package/docs/classes/vfx.Airflow.html +1 -1
- package/docs/classes/vfx.Flame.html +1 -1
- package/docs/classes/vfx.Particle.html +31 -31
- package/docs/classes/vfx.ParticleGPU.html +7 -7
- package/docs/classes/vfx.SpotLight.html +1 -1
- package/docs/documents/README.html +138 -0
- package/docs/documents/ai-doc-guidelines.html +117 -0
- package/docs/documents/api.html +337 -0
- package/docs/documents/features_3dtile.html +216 -0
- package/docs/documents/features_camera-animation.html +157 -0
- package/docs/documents/features_clipper.html +80 -0
- package/docs/documents/features_coordinate-system.html +127 -0
- package/docs/documents/features_event.html +104 -0
- package/docs/documents/features_five.html +147 -0
- package/docs/documents/features_flowing-light-2d-pass.html +356 -0
- package/docs/documents/features_flowing-light-3d-pass.html +351 -0
- package/docs/documents/features_gaussian-blur-pass.html +182 -0
- package/docs/documents/features_gesture.html +120 -0
- package/docs/documents/features_get-screen-pixels.html +88 -0
- package/docs/documents/features_image-options.html +108 -0
- package/docs/documents/features_load-external-model.html +600 -0
- package/docs/documents/features_load-progress.html +110 -0
- package/docs/documents/features_material.html +334 -0
- package/docs/documents/features_mode.html +114 -0
- package/docs/documents/features_model.html +141 -0
- package/docs/documents/features_move-pano-effect.html +110 -0
- package/docs/documents/features_multi-work.html +97 -0
- package/docs/documents/features_pano-tile.html +100 -0
- package/docs/documents/features_pano-uv.html +82 -0
- package/docs/documents/features_parameter.html +101 -0
- package/docs/documents/features_plugin.html +105 -0
- package/docs/documents/features_postprocessing.html +109 -0
- package/docs/documents/features_raycast.html +98 -0
- package/docs/documents/features_request-proxy.html +78 -0
- package/docs/documents/features_screen-project.html +112 -0
- package/docs/documents/features_state.html +71 -0
- package/docs/documents/features_view-layer.html +158 -0
- package/docs/documents/features_work.html +129 -0
- package/docs/documents/glossary.html +94 -0
- package/docs/documents/intro.html +24 -0
- package/docs/documents/quick-start.html +32 -0
- package/docs/documents/release_notes_6.6.html +79 -0
- package/docs/documents/release_notes_6.7.html +209 -0
- package/docs/documents/release_notes_6.8.html +103 -0
- package/docs/documents/support.html +49 -0
- package/docs/documents/template.html +80 -0
- package/docs/functions/five.coordinatesToVector.html +1 -1
- package/docs/functions/five.defaultImageURLTransform.html +3 -3
- package/docs/functions/five.headingToLongitude.html +1 -1
- package/docs/functions/five.loadAt3d.html +1 -1
- package/docs/functions/five.loadB3dm.html +1 -1
- package/docs/functions/five.loadDome.html +1 -1
- package/docs/functions/five.loadDomez.html +1 -1
- package/docs/functions/five.loadFbx.html +1 -1
- package/docs/functions/five.loadGltf.html +1 -1
- package/docs/functions/five.loadPbm.html +1 -1
- package/docs/functions/five.loadPly.html +1 -1
- package/docs/functions/five.loadPnts.html +1 -1
- package/docs/functions/five.loadSplat.html +1 -0
- package/docs/functions/five.loadSpz.html +1 -0
- package/docs/functions/five.loadX3p.html +1 -1
- package/docs/functions/five.longitudeToHeading.html +1 -1
- package/docs/functions/five.parseWork.html +3 -3
- package/docs/functions/five.vectorToCoordinates.html +1 -1
- package/docs/functions/react.createFiveProvider.html +2 -2
- package/docs/functions/react.createStore.html +8 -8
- package/docs/functions/react.useFiveAction.html +6 -6
- package/docs/functions/react.useFiveCameraDirection.html +1 -1
- package/docs/functions/react.useFiveCameraRaycaster.html +1 -1
- package/docs/functions/react.useFiveCurrentObserver.html +1 -1
- package/docs/functions/react.useFiveCurrentState.html +1 -1
- package/docs/functions/react.useFiveEventCallback.html +1 -1
- package/docs/functions/react.useFiveFloor.html +1 -1
- package/docs/functions/react.useFiveHelper.html +1 -1
- package/docs/functions/react.useFiveModelIntersectRaycaster.html +2 -2
- package/docs/functions/react.useFiveModelReadyState.html +1 -1
- package/docs/functions/react.useFiveProject2d.html +2 -2
- package/docs/functions/react.useFiveSceneEffect.html +1 -1
- package/docs/functions/react.useFiveWork.html +2 -2
- package/docs/functions/vue.useFiveAction.html +8 -8
- package/docs/functions/vue.useFiveCameraDirection.html +1 -1
- package/docs/functions/vue.useFiveCameraRaycaster.html +1 -1
- package/docs/functions/vue.useFiveCurrentObserver.html +1 -1
- package/docs/functions/vue.useFiveCurrentState.html +1 -1
- package/docs/functions/vue.useFiveEventCallback.html +1 -1
- package/docs/functions/vue.useFiveFloor.html +1 -1
- package/docs/functions/vue.useFiveHelper.html +1 -1
- package/docs/functions/vue.useFiveModel.html +1 -1
- package/docs/functions/vue.useFiveModelBounding.html +1 -1
- package/docs/functions/vue.useFiveModelIntersectRaycaster.html +2 -2
- package/docs/functions/vue.useFiveModelReadyState.html +1 -1
- package/docs/functions/vue.useFiveProject2d.html +2 -2
- package/docs/functions/vue.useFiveScene.html +1 -1
- package/docs/functions/vue.useFiveState.html +1 -1
- package/docs/functions/vue.useFiveWorks.html +4 -4
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +115 -187
- package/docs/interfaces/five.AddableObject.html +5 -5
- package/docs/interfaces/five.AjaxOptions.html +5 -5
- package/docs/interfaces/five.BaseEvent.html +2 -2
- package/docs/interfaces/five.EventCallback.html +198 -194
- package/docs/interfaces/five.FiveInitArgs.html +18 -18
- package/docs/interfaces/five.FiveLoadOptions.html +3 -3
- package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +8 -8
- package/docs/interfaces/five.GestureEvent.html +2 -2
- package/docs/interfaces/five.ImageOptions.html +11 -11
- package/docs/interfaces/five.ImageURLOptions.html +8 -8
- package/docs/interfaces/five.IntersectEvent.html +2 -2
- package/docs/interfaces/five.IntersectMesh.html +1 -1
- package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
- package/docs/interfaces/five.Intersection.html +4 -3
- package/docs/interfaces/five.LooseWorkWithExtrinsics.html +7 -7
- package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +8 -8
- package/docs/interfaces/five.ModeChangeEvent.html +2 -2
- package/docs/interfaces/five.ModelControllerCustomInitArgs.html +9 -9
- package/docs/interfaces/five.ModelEvent.html +2 -2
- package/docs/interfaces/five.ModelOptions.html +3 -3
- package/docs/interfaces/five.ModelSceneEvent.html +2 -2
- package/docs/interfaces/five.ModelTileEvent.html +8 -0
- package/docs/interfaces/five.MovePanoOptions.html +10 -10
- package/docs/interfaces/five.NetworkAbortError.html +1 -1
- package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
- package/docs/interfaces/five.NetworkOptions.html +4 -4
- package/docs/interfaces/five.NetworkProxyError.html +1 -1
- package/docs/interfaces/five.NetworkResourceEvent.html +2 -2
- package/docs/interfaces/five.NetworkResponseError.html +1 -1
- package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
- package/docs/interfaces/five.ObjectEvent.html +2 -2
- package/docs/interfaces/five.PBMMaterial.html +1 -1
- package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
- package/docs/interfaces/five.PBMPanoDepth.html +4 -4
- package/docs/interfaces/five.PBMPanoPicture.html +5 -5
- package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
- package/docs/interfaces/five.PanoCircleMeshInterface.html +4 -4
- package/docs/interfaces/five.PanoEvent.html +2 -2
- package/docs/interfaces/five.PanoTextureEvent.html +2 -2
- package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +15 -15
- package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +9 -9
- package/docs/interfaces/five.ParameterMaterialValue.html +40 -36
- package/docs/interfaces/five.ParameterTilesetValue.html +15 -15
- package/docs/interfaces/five.ParameterValue.html +54 -50
- package/docs/interfaces/five.Pass.html +1 -1
- package/docs/interfaces/five.Pose.html +6 -7
- package/docs/interfaces/five.RenderEvent.html +2 -2
- package/docs/interfaces/five.ResolvedParameterValue.html +54 -50
- package/docs/interfaces/five.SplatData.html +10 -0
- package/docs/interfaces/five.State.html +9 -9
- package/docs/interfaces/five.StateEvent.html +2 -2
- package/docs/interfaces/five.TextureOptions.html +12 -12
- package/docs/interfaces/five.Tile3DOptions.html +2 -2
- package/docs/interfaces/five.TileCoordinateSystem.html +2 -2
- package/docs/interfaces/five.TilesetHeader.html +12 -12
- package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +7 -7
- package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +13 -13
- package/docs/interfaces/five.ViewLayer.html +30 -26
- package/docs/interfaces/five.Viewport.html +4 -4
- package/docs/interfaces/five.WorkCubeImage.html +1 -1
- package/docs/interfaces/five.WorkImage.html +4 -4
- package/docs/interfaces/five.WorkInitial.html +8 -8
- package/docs/interfaces/five.WorkModel.html +8 -8
- package/docs/interfaces/five.WorkModelLayer.html +6 -6
- package/docs/interfaces/five.WorkObserver.html +41 -16
- package/docs/interfaces/five.WorkTile.html +4 -4
- package/docs/interfaces/five.WorkVideo.html +4 -4
- package/docs/interfaces/five.WorksEvent.html +2 -2
- package/docs/interfaces/five.XRControllerEvent.html +2 -2
- package/docs/interfaces/five.XRGestureEvent.html +2 -2
- package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +13 -13
- package/docs/interfaces/five.XRSessionEvent.html +2 -2
- package/docs/interfaces/plugins.BackgroundPluginController.html +11 -11
- package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +8 -8
- package/docs/interfaces/plugins.BasePlugin.BaseOptions.html +1 -1
- package/docs/interfaces/plugins.BasePlugin.Config.html +2 -2
- package/docs/interfaces/plugins.BasePlugin.State.html +4 -4
- package/docs/interfaces/plugins.BasePlugin.StateChangeParams.html +3 -3
- package/docs/interfaces/plugins.DynamicPathLinePluginController.html +45 -45
- package/docs/interfaces/plugins.DynamicPathLinePluginType.Config.html +18 -18
- package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +13 -13
- package/docs/interfaces/plugins.DynamicPathLinePluginType.Params.html +2 -2
- package/docs/interfaces/plugins.DynamicPathLinePluginType.PathConfig.html +14 -14
- package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +5 -5
- package/docs/interfaces/plugins.ItemMaskController.html +12 -12
- package/docs/interfaces/plugins.ItemMaskPluginType.Config.html +1 -1
- package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +5 -5
- package/docs/interfaces/plugins.ItemMaskPluginType.Params.html +1 -1
- package/docs/interfaces/plugins.ItemMaskPluginType.State.html +7 -7
- package/docs/interfaces/plugins.OrientationPluginController.html +12 -12
- package/docs/interfaces/plugins.OrientationPluginType.Config.html +1 -1
- package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +5 -5
- package/docs/interfaces/plugins.OrientationPluginType.Params.html +1 -1
- package/docs/interfaces/plugins.OrientationPluginType.State.html +5 -5
- package/docs/interfaces/plugins.PanoAnimeController.html +14 -14
- package/docs/interfaces/plugins.PanoAnimePluginType.Config.html +1 -1
- package/docs/interfaces/plugins.PanoAnimePluginType.ConfigChangeEvent.html +3 -3
- package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +6 -6
- package/docs/interfaces/plugins.PanoAnimePluginType.Params.html +1 -1
- package/docs/interfaces/plugins.PanoAnimePluginType.State.html +4 -4
- package/docs/interfaces/plugins.PluginTemplateType.Config.html +1 -1
- package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +5 -5
- package/docs/interfaces/plugins.PluginTemplateType.Params.html +1 -1
- package/docs/interfaces/plugins.PluginTemplateType.State.html +4 -4
- package/docs/interfaces/plugins.TrajectoryController.html +30 -15
- package/docs/interfaces/react.FiveActionReactCallbacks.html +23 -23
- package/docs/interfaces/react.FiveCanvasProps.html +2 -2
- package/docs/interfaces/react.FiveInjectionTypes.html +76 -76
- package/docs/interfaces/sticker.IntersectionLike.html +2 -2
- package/docs/interfaces/vfx.ParticleArgs.html +26 -26
- package/docs/interfaces/vfx.ParticleGPUArgs.html +30 -30
- package/docs/interfaces/vue.FiveActionVueCallbacks.html +23 -23
- package/docs/modules/five.html +1 -1
- package/docs/modules.html +1 -1
- package/docs/types/five.ControllerEventTypes.html +32 -32
- package/docs/types/five.EventTypes.html +26 -24
- package/docs/types/five.FivePlugin.html +2 -2
- package/docs/types/five.FivePluginInit.html +1 -1
- package/docs/types/five.FivePluginInstance.html +1 -1
- package/docs/types/five.LegacyEventType.html +142 -142
- package/docs/types/five.LoadResultType.html +2 -2
- package/docs/types/five.Mode.html +1 -1
- package/docs/types/five.MotionCircle.html +1 -1
- package/docs/types/five.NetworkProgressCallback.html +1 -1
- package/docs/types/five.ParseOptions.html +6 -6
- package/docs/types/plugins.BasePlugin.EventMap.html +5 -5
- package/docs/types/plugins.DynamicPathLinePluginType.PluginData.html +1 -1
- package/docs/types/plugins.DynamicPathLinePluginType.ServerData.html +1 -1
- package/docs/variables/react.FiveCanvas.html +1 -1
- package/docs/variables/react.useFiveScene.html +1 -1
- package/docs/variables/vue.FiveCanvas.html +1 -1
- package/docs/variables/vue.FiveProvider.html +1 -1
- package/five/application/analysis.d.ts +40 -0
- package/five/application/controllers.d.ts +41 -0
- package/five/application/events-legacy.d.ts +454 -0
- package/five/application/events.d.ts +69 -0
- package/five/application/five.d.ts +518 -0
- package/five/application/fiveInitArgs.d.ts +176 -0
- package/five/application/fiveLoadOptions.d.ts +21 -0
- package/five/application/generateDefaultVideoElement.d.ts +2 -0
- package/five/application/getViewportScale.d.ts +2 -0
- package/five/application/initLights.d.ts +3 -0
- package/five/application/mode.d.ts +28 -0
- package/five/application/renderPoweredByRealsee.d.ts +3 -0
- package/five/assets/cardboard-png-data-url.d.ts +2 -0
- package/five/assets/gradient-png-data-url.d.ts +2 -0
- package/five/assets/loading-png-data-url.d.ts +2 -0
- package/five/assets/phone-png-data-url.d.ts +2 -0
- package/five/assets/realsee-pmg-data-url.d.ts +2 -0
- package/five/bvh/bvhMath.d.ts +33 -0
- package/five/bvh/bvhMesh.d.ts +7 -0
- package/five/bvh/bvhNode.d.ts +29 -0
- package/five/bvh/bvhObject.d.ts +18 -0
- package/five/bvh/bvhPoints.d.ts +6 -0
- package/five/bvh/index.d.ts +10 -0
- package/five/bvh/worker.d.ts +35 -0
- package/five/cardboard/helper.d.ts +2 -0
- package/five/cardboard/index.d.ts +13 -0
- package/five/cardboard/sensor.d.ts +158 -0
- package/five/certificates/hardware.d.ts +1 -0
- package/five/controllers/base.d.ts +166 -0
- package/five/controllers/events.d.ts +69 -0
- package/five/controllers/floorplan.d.ts +119 -0
- package/five/controllers/mapview.d.ts +138 -0
- package/five/controllers/model.d.ts +57 -0
- package/five/controllers/panorama.d.ts +143 -0
- package/five/controllers/panoramaLike.d.ts +87 -0
- package/five/controllers/topview.d.ts +42 -0
- package/five/controllers/vrPanorama.d.ts +56 -0
- package/five/controllers/xrPanorama.d.ts +81 -0
- package/five/core/camera.d.ts +65 -0
- package/five/core/internalWebGLRenderer.d.ts +14 -0
- package/five/core/panoVideo.d.ts +18 -0
- package/five/core/scene.d.ts +10 -0
- package/five/core/tiling.d.ts +43 -0
- package/five/declare.d.ts +2 -1
- package/five/gs/util/renderData.d.ts +32 -0
- package/five/gs/wasm/data.d.ts +20 -0
- package/five/gs/wasm/sort.d.ts +18 -0
- package/five/gs/worker/dataWorker.d.ts +1 -0
- package/five/gs/worker/sortWorker.d.ts +1 -0
- package/five/index.d.ts +57 -4582
- package/five/index.js +605 -92
- package/five/index.mjs +9661 -7537
- package/five/meshes/boundingMesh.d.ts +12 -0
- package/five/meshes/intersectMesh.d.ts +8 -0
- package/five/meshes/panoCircleMesh.d.ts +35 -0
- package/five/meshes/panoCircleMeshCustom.d.ts +40 -0
- package/five/meshes/panoCircleMeshSolid.d.ts +34 -0
- package/five/meshes/panoSphereMesh.d.ts +27 -0
- package/five/model/helpers/coordinate-transform.d.ts +3 -0
- package/five/model/helpers/ellipsoid-coordinates.d.ts +14 -0
- package/five/model/helpers/get-edges-by-sphere.d.ts +8 -0
- package/five/model/helpers/get-recommend-tile3d-parameters.d.ts +8 -0
- package/five/model/index.d.ts +70 -0
- package/five/model/intersection.d.ts +18 -0
- package/five/model/loaders/at3d.d.ts +12 -0
- package/five/model/loaders/b3dm.d.ts +9 -0
- package/five/model/loaders/dome.d.ts +22 -0
- package/five/model/loaders/domez.d.ts +11 -0
- package/five/model/loaders/fbx.d.ts +8 -0
- package/five/model/loaders/glTF-helpers/extensions/CESIUM_RTC.d.ts +9 -0
- package/five/model/loaders/glTF-helpers/extensions/EXT_meshopt_compression.d.ts +8 -0
- package/five/model/loaders/glTF-helpers/extensions/EXT_texture_webp.d.ts +11 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_animation_pointer.d.ts +6 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_binary_glTF.d.ts +25 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_draco_mesh_compression.d.ts +11 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz.d.ts +9 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_materials_clearcoat.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_materials_emissive_strength.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_materials_sheen.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_materials_transmission.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_materials_unlit.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_mesh_quantization.d.ts +6 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_node_visibility.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_texture_basisu.d.ts +9 -0
- package/five/model/loaders/glTF-helpers/extensions/KHR_texture_transform.d.ts +10 -0
- package/five/model/loaders/glTF-helpers/extensions/REALSEE_materials_lightmap.d.ts +7 -0
- package/five/model/loaders/glTF-helpers/extensions/base.d.ts +24 -0
- package/five/model/loaders/glTF-helpers/glTF.d.ts +713 -0
- package/five/model/loaders/glTF-helpers/index.d.ts +47 -0
- package/five/model/loaders/glTF-helpers/parser.d.ts +114 -0
- package/five/model/loaders/glTF-helpers/type.d.ts +14 -0
- package/five/model/loaders/gltf.d.ts +10 -0
- package/five/model/loaders/obj.d.ts +9 -0
- package/five/model/loaders/pbm.d.ts +26 -0
- package/five/model/loaders/ply.d.ts +24 -0
- package/five/model/loaders/pnts.d.ts +8 -0
- package/five/model/loaders/protobuf/dome.d.ts +540 -0
- package/five/model/loaders/protobuf/pbm.d.ts +203 -0
- package/five/model/loaders/shared.d.ts +16 -0
- package/five/model/loaders/splat.d.ts +8 -0
- package/five/model/loaders/spz.d.ts +14 -0
- package/five/model/loaders/tile3d-helpers/feature-table.d.ts +15 -0
- package/five/model/loaders/tile3d-helpers/gl-type.d.ts +20 -0
- package/five/model/loaders/tile3d-helpers/parse-gltf-array-buffer.d.ts +2 -0
- package/five/model/loaders/tile3d-helpers/parse-header.d.ts +2 -0
- package/five/model/loaders/tile3d-helpers/parse-point-cloud-attributes.d.ts +2 -0
- package/five/model/loaders/tile3d-helpers/parse-point-cloud-attributes.worker.d.ts +6 -0
- package/five/model/loaders/tile3d-helpers/parse-table.d.ts +3 -0
- package/five/model/loaders/tile3d-helpers/tile3d-type.d.ts +35 -0
- package/five/model/loaders/x3p.d.ts +22 -0
- package/five/model/materials/pbmMaterial.d.ts +87 -0
- package/five/model/materials/pbmMeshMaterial.d.ts +124 -0
- package/five/model/materials/pbmPointCloudMaterial.d.ts +72 -0
- package/five/model/model-scene.d.ts +172 -0
- package/five/model/model.d.ts +209 -0
- package/five/model/objects/pbmContainer.d.ts +28 -0
- package/five/model/objects/pbmGSObject.d.ts +40 -0
- package/five/model/objects/pbmGSRenderMesh.d.ts +32 -0
- package/five/model/objects/pbmGroup.d.ts +8 -0
- package/five/model/objects/pbmMesh.d.ts +10 -0
- package/five/model/objects/pbmPointCloud.d.ts +7 -0
- package/five/model/parameter.d.ts +136 -0
- package/five/model/shaders/pbm_gaussian_splatting/fragment.d.ts +2 -0
- package/five/model/shaders/pbm_gaussian_splatting/vertex.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_basic/fragment.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_basic/vertex.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_none/fragment.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_none/vertex.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_phong/fragment.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_phong/vertex.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_standard/fragment.d.ts +2 -0
- package/five/model/shaders/pbm_mesh_standard/vertex.d.ts +2 -0
- package/five/model/shaders/pbm_pointcloud/fragment.d.ts +2 -0
- package/five/model/shaders/pbm_pointcloud/vertex.d.ts +2 -0
- package/five/model/tile3d/header.d.ts +88 -0
- package/five/model/tile3d/index.d.ts +214 -0
- package/five/model/tile3d/tile-cache.d.ts +18 -0
- package/five/model/tile3d/tile-content.d.ts +10 -0
- package/five/model/tile3d/tile-node.d.ts +24 -0
- package/five/model/tile3d/tile-request-scheduler.d.ts +17 -0
- package/five/model/tile3d/tile.d.ts +79 -0
- package/five/model/tile3d/tileset-base-traverser.d.ts +59 -0
- package/five/model/tile3d/tileset-most-detail-traverser.d.ts +14 -0
- package/five/model/tile3d/tileset-normal-traverser.d.ts +15 -0
- package/five/model/tile3d/tileset-skip-traverser.d.ts +60 -0
- package/five/model/tile3d/tileset.d.ts +69 -0
- package/five/model/tile3d/trajectory-content.d.ts +9 -0
- package/five/model/tile3d/trajectory-node.d.ts +15 -0
- package/five/model/tile3d/trajectory.d.ts +30 -0
- package/five/model/tile3d/types.d.ts +33 -0
- package/five/model/view-layer.d.ts +20 -0
- package/five/renderer/five-renderer.d.ts +17 -0
- package/five/renderer/index.d.ts +3 -0
- package/five/renderer/postprocessing/composer.d.ts +37 -0
- package/five/renderer/postprocessing/index.d.ts +7 -0
- package/five/renderer/postprocessing/passes/adaptive-luminance-pass.d.ts +15 -0
- package/five/renderer/postprocessing/passes/eye-dome-lighting-pass.d.ts +14 -0
- package/five/renderer/postprocessing/passes/flowing-light-2d-pass.d.ts +36 -0
- package/five/renderer/postprocessing/passes/flowing-light-3d-pass.d.ts +36 -0
- package/five/renderer/postprocessing/passes/gaussian-blur-pass.d.ts +12 -0
- package/five/renderer/postprocessing/passes/pass.d.ts +38 -0
- package/five/renderer/scene-renderers/point-cloud-high-quality-scene-renderer.d.ts +11 -0
- package/five/renderer/scene-renderers/scene-renderer.d.ts +9 -0
- package/five/renderer/scene-renderers/ssaa-scene-renderer.d.ts +15 -0
- package/five/renderer/tools/full-screen-quad.d.ts +15 -0
- package/five/renderer/tools/render-full-screen-depth.d.ts +2 -0
- package/five/renderer/tools/render-full-screen.d.ts +2 -0
- package/five/texture/imageBitmap.d.ts +13 -0
- package/five/texture/initTexture.d.ts +3 -0
- package/five/texture/loader.d.ts +39 -0
- package/five/thirdparty/fflate.d.ts +1407 -0
- package/five/thirdparty/hammer.d.ts +259 -0
- package/five/thirdparty/jsrsasign.d.ts +768 -0
- package/five/thirdparty/meshopt_decoder.d.ts +15 -0
- package/five/three-version-check.d.ts +1 -0
- package/five/types/addableObject.d.ts +12 -0
- package/five/types/cube.d.ts +1 -0
- package/five/types/gestureInput.d.ts +24 -0
- package/five/types/imageOptions.d.ts +20 -0
- package/five/types/intersectMeshInterface.d.ts +8 -0
- package/five/types/movePanoEffect.d.ts +13 -0
- package/five/types/movePanoOptions.d.ts +35 -0
- package/five/types/panoCircleMeshInterface.d.ts +34 -0
- package/five/types/plugin.d.ts +25 -0
- package/five/types/pose.d.ts +17 -0
- package/five/types/state.d.ts +20 -0
- package/five/types/viewport.d.ts +22 -0
- package/five/utils/ajax.d.ts +66 -0
- package/five/utils/animationFrameLoop.d.ts +45 -0
- package/five/utils/array.d.ts +31 -0
- package/five/utils/asyncTaskQueue.d.ts +8 -0
- package/five/utils/bufferGeometry.d.ts +33 -0
- package/five/utils/calculateProgress.d.ts +39 -0
- package/five/utils/calculateThreeMouse.d.ts +13 -0
- package/five/utils/canplayVideo.d.ts +2 -0
- package/five/utils/clamp.d.ts +2 -0
- package/five/utils/clock.d.ts +17 -0
- package/five/utils/createSymbol.d.ts +5 -0
- package/five/utils/decodeText.d.ts +2 -0
- package/five/utils/deepEqual.d.ts +2 -0
- package/five/utils/deepFreeze.d.ts +2 -0
- package/five/utils/defineProperty.d.ts +9 -0
- package/five/utils/detector.d.ts +14 -0
- package/five/utils/distance.d.ts +10 -0
- package/five/utils/draco.d.ts +26 -0
- package/five/utils/easing.d.ts +63 -0
- package/five/utils/event.d.ts +149 -0
- package/five/utils/formatRad.d.ts +7 -0
- package/five/utils/imageSupport.d.ts +6 -0
- package/five/utils/imageURL.d.ts +42 -0
- package/five/utils/isEmptyObject.d.ts +2 -0
- package/five/utils/isNil.d.ts +6 -0
- package/five/utils/isNumber.d.ts +2 -0
- package/five/utils/isPowerOfTwo.d.ts +2 -0
- package/five/utils/isPromise.d.ts +2 -0
- package/five/utils/isSimilar.d.ts +6 -0
- package/five/utils/json.d.ts +7 -0
- package/five/utils/ktx2.d.ts +30 -0
- package/five/utils/lzma/index.d.ts +2 -0
- package/five/utils/lzma/lzma.d.ts +3 -0
- package/five/utils/lzma/lzmaWASM.d.ts +2 -0
- package/five/utils/lzma/lzmaWorker.d.ts +14 -0
- package/five/utils/memoryUsage.d.ts +29 -0
- package/five/utils/motion.d.ts +38 -0
- package/five/utils/noop.d.ts +6 -0
- package/five/utils/now.d.ts +7 -0
- package/five/utils/pano.d.ts +9 -0
- package/five/utils/pick.d.ts +3 -0
- package/five/utils/poseUtils.d.ts +5 -0
- package/five/utils/renderCubeTextureToCubeRenderTarget.d.ts +3 -0
- package/five/utils/renderDepth.d.ts +2 -0
- package/five/utils/renderTexturesToCubeRenderTarget.d.ts +10 -0
- package/five/utils/requestPermission.d.ts +3 -0
- package/five/utils/shaderContentFix.d.ts +7 -0
- package/five/utils/shaderMaterial.d.ts +20 -0
- package/five/utils/stateUtils.d.ts +5 -0
- package/five/utils/string-pattern.d.ts +8 -0
- package/five/utils/subscribe.d.ts +67 -0
- package/five/utils/tileCube.d.ts +19 -0
- package/five/utils/toFastProperties.d.ts +1 -0
- package/five/utils/typedCache.d.ts +10 -0
- package/five/utils/uniform.d.ts +15 -0
- package/five/utils/url.d.ts +35 -0
- package/five/utils/uuid.d.ts +5 -0
- package/five/utils/values.d.ts +2 -0
- package/five/utils/vectorCoordinates.d.ts +29 -0
- package/five/utils/volume.d.ts +111 -0
- package/five/utils/webglError.d.ts +7 -0
- package/five/utils/worker.d.ts +26 -0
- package/five/webxr/XRControllerModelFactory.d.ts +28 -0
- package/five/webxr/motionHelper.d.ts +68 -0
- package/five/webxr/xrButton.d.ts +4 -0
- package/five/webxr/xrController.d.ts +24 -0
- package/five/webxr/xrManager.d.ts +84 -0
- package/five/work/_ALLOW_HOST.d.ts +2 -0
- package/five/work/index.d.ts +6 -0
- package/five/work/keychain.d.ts +5 -0
- package/five/work/looseWorkType.d.ts +121 -0
- package/five/work/verify.d.ts +7 -0
- package/five/work/work.d.ts +236 -0
- package/five/work/workFetcher.d.ts +4 -0
- package/five/work/workJson.d.ts +3 -0
- package/five/work/workJsonType.d.ts +73 -0
- package/five/work/workObserverUtils.d.ts +36 -0
- package/five/work/workParser.d.ts +6 -0
- package/five/work/workResolvedObserver.d.ts +12 -0
- package/five/work/workVerify.d.ts +2 -0
- package/five/work/works.d.ts +10 -0
- package/gltf-loader/gltf-object.d.ts +17 -0
- package/gltf-loader/index.d.ts +60 -160
- package/gltf-loader/index.js +3 -3
- package/gltf-loader/index.mjs +3 -3
- package/gltf-loader/thirdparty/DDSLoader.d.ts +23 -0
- package/gltf-loader/thirdparty/DRACOLoader.d.ts +18 -0
- package/gltf-loader/thirdparty/GLTFLoader.d.ts +59 -0
- package/line/circle_png.d.ts +1 -0
- package/line/index.d.ts +19 -69
- package/line/index.js +3 -3
- package/line/index.mjs +3 -3
- package/line/utils/Line2.d.ts +7 -0
- package/line/utils/LineGeometry.d.ts +10 -0
- package/line/utils/LineMaterial.d.ts +20 -0
- package/line/utils/LineSegments2.d.ts +11 -0
- package/line/utils/LineSegmentsGeometry.d.ts +15 -0
- package/llms.txt +65 -0
- package/package.json +10 -1
- package/plugins/BackgroundPlugin/Controller.d.ts +20 -0
- package/plugins/BackgroundPlugin/index.d.ts +5 -0
- package/plugins/BackgroundPlugin/typings.d.ts +44 -0
- package/plugins/BasePlugin/index.d.ts +119 -0
- package/plugins/DynamicPathLinePlugin/Controller.d.ts +167 -0
- package/plugins/DynamicPathLinePlugin/index.d.ts +5 -0
- package/plugins/DynamicPathLinePlugin/line2/Line2.d.ts +7 -0
- package/plugins/DynamicPathLinePlugin/line2/LineGeometry.d.ts +10 -0
- package/plugins/DynamicPathLinePlugin/line2/LineMaterial.d.ts +17 -0
- package/plugins/DynamicPathLinePlugin/line2/LineSegments2.d.ts +11 -0
- package/plugins/DynamicPathLinePlugin/line2/LineSegmentsGeometry.d.ts +15 -0
- package/plugins/DynamicPathLinePlugin/typing.d.ts +129 -0
- package/plugins/DynamicPathLinePlugin/typings.d.ts +72 -0
- package/plugins/ItemMaskPlugin/Controller.d.ts +48 -0
- package/plugins/ItemMaskPlugin/index.d.ts +5 -0
- package/plugins/ItemMaskPlugin/typing.d.ts +58 -0
- package/plugins/OrientationPlugin/Controller.d.ts +82 -0
- package/plugins/OrientationPlugin/RoundedBoxGeometry.d.ts +11 -0
- package/plugins/OrientationPlugin/index.d.ts +6 -0
- package/plugins/OrientationPlugin/typing.d.ts +25 -0
- package/plugins/PanoAnimePlugin/Controller.d.ts +46 -0
- package/plugins/PanoAnimePlugin/index.d.ts +5 -0
- package/plugins/PanoAnimePlugin/typing.d.ts +37 -0
- package/plugins/PluginTemplate/Controller.d.ts +27 -0
- package/plugins/PluginTemplate/index.d.ts +5 -0
- package/plugins/PluginTemplate/typing.d.ts +21 -0
- package/plugins/TrajectoryPlugin/Controller.d.ts +85 -0
- package/plugins/TrajectoryPlugin/index.d.ts +6 -0
- package/plugins/TrajectoryPlugin/typing.d.ts +25 -0
- package/plugins/index.d.ts +9 -1078
- package/plugins/index.js +17 -17
- package/plugins/index.mjs +1518 -1370
- package/plugins/thirdParty/CSS3DRenderer.d.ts +32 -0
- package/plugins/thirdParty/OrbitControls.d.ts +78 -0
- package/plugins/utils/absoluteUrl.d.ts +5 -0
- package/plugins/utils/clamp.d.ts +2 -0
- package/plugins/utils/loadImage.d.ts +1 -0
- package/plugins/utils/motion.d.ts +38 -0
- package/plugins/utils/now.d.ts +6 -0
- package/plugins/utils/uuid.d.ts +5 -0
- package/react/canvas.d.ts +19 -0
- package/react/context.d.ts +11 -0
- package/react/createProvider.d.ts +95 -0
- package/react/createStore.d.ts +144 -0
- package/react/hooks/unsafe__useFiveInstance.d.ts +9 -0
- package/react/hooks/useFiveAction.d.ts +147 -0
- package/react/hooks/useFiveCameraDirection.d.ts +7 -0
- package/react/hooks/useFiveCameraRaycaster.d.ts +7 -0
- package/react/hooks/useFiveCurrentObserver.d.ts +11 -0
- package/react/hooks/useFiveCurrentState.d.ts +15 -0
- package/react/hooks/useFiveEventCallback.d.ts +12 -0
- package/react/hooks/useFiveFloor.d.ts +15 -0
- package/react/hooks/useFiveHelper.d.ts +14 -0
- package/react/hooks/useFiveModelBounding.d.ts +5 -0
- package/react/hooks/useFiveModelEffect.d.ts +14 -0
- package/react/hooks/useFiveModelIntersectRaycaster.d.ts +22 -0
- package/react/hooks/useFiveModelReadyState.d.ts +8 -0
- package/react/hooks/useFiveProject2d.d.ts +20 -0
- package/react/hooks/useFiveSceneEffect.d.ts +21 -0
- package/react/hooks/useFiveState.d.ts +6 -0
- package/react/hooks/useFiveWork.d.ts +29 -0
- package/react/index.d.ts +24 -830
- package/react/index.js +2 -2
- package/react/index.mjs +2 -2
- package/react/rendererPool.d.ts +7 -0
- package/react/withFive.d.ts +213 -0
- package/shader-lib/EvenessPlane/index.d.ts +10 -0
- package/shader-lib/PointCloudExpand/index.d.ts +59 -0
- package/shader-lib/PolygonCuter/index.d.ts +52 -0
- package/shader-lib/PolygonCuter/worker.d.ts +14 -0
- package/shader-lib/ShineModel/index.d.ts +7 -0
- package/shader-lib/SweepModel/index.d.ts +7 -0
- package/shader-lib/index.d.ts +5 -86
- package/shader-lib/index.js +2 -2
- package/shader-lib/index.mjs +2 -2
- package/sticker/geometry.d.ts +3 -0
- package/sticker/index.d.ts +68 -71
- package/sticker/index.js +3 -3
- package/sticker/index.mjs +3 -3
- package/umd/five-gltf-loader.js +3 -3
- package/umd/five-line.js +3 -3
- package/umd/five-plugins.js +16 -16
- package/umd/five-react.js +2 -2
- package/umd/five-shader-lib.js +2 -2
- package/umd/five-sticker.js +3 -3
- package/umd/five-vfx.js +2 -2
- package/umd/five-vue.js +2 -2
- package/umd/five.js +605 -92
- package/vfx/airflow/airflow.d.ts +18 -0
- package/vfx/airflow/fragment-shader.d.ts +2 -0
- package/vfx/airflow/vertex-shader.d.ts +2 -0
- package/vfx/common/scale-shader.d.ts +2 -0
- package/vfx/common/simplex-noise-shader.d.ts +2 -0
- package/vfx/frame/fragment-shader.d.ts +2 -0
- package/vfx/frame/frame.d.ts +22 -0
- package/vfx/frame/vertex-shader.d.ts +2 -0
- package/vfx/index.d.ts +7 -363
- package/vfx/index.js +2 -2
- package/vfx/index.mjs +2 -2
- package/vfx/particle/fragment-shader.d.ts +2 -0
- package/vfx/particle/instance.d.ts +36 -0
- package/vfx/particle/particle.d.ts +205 -0
- package/vfx/particle/utils.d.ts +11 -0
- package/vfx/particle/vertex-shader.d.ts +2 -0
- package/vfx/particle-gpu/fragment-shader.d.ts +2 -0
- package/vfx/particle-gpu/instance.d.ts +36 -0
- package/vfx/particle-gpu/particle.d.ts +95 -0
- package/vfx/particle-gpu/utils.d.ts +11 -0
- package/vfx/particle-gpu/vertex-shader.d.ts +2 -0
- package/vfx/spotLight/fragment-shader.d.ts +2 -0
- package/vfx/spotLight/spotLight.d.ts +15 -0
- package/vfx/spotLight/vertex-shader.d.ts +2 -0
- package/vue/context.d.ts +7 -0
- package/vue/hooks/FiveCanvas.d.ts +36 -0
- package/vue/hooks/FiveProvider.d.ts +35 -0
- package/vue/hooks/unsafe__useFiveInject.d.ts +9 -0
- package/vue/hooks/useFiveAction.d.ts +178 -0
- package/vue/hooks/useFiveCameraDirection.d.ts +8 -0
- package/vue/hooks/useFiveCameraRaycaster.d.ts +8 -0
- package/vue/hooks/useFiveCurrentObserver.d.ts +12 -0
- package/vue/hooks/useFiveCurrentState.d.ts +16 -0
- package/vue/hooks/useFiveEventCallback.d.ts +11 -0
- package/vue/hooks/useFiveFloor.d.ts +16 -0
- package/vue/hooks/useFiveHelper.d.ts +15 -0
- package/vue/hooks/useFiveModel.d.ts +7 -0
- package/vue/hooks/useFiveModelBounding.d.ts +7 -0
- package/vue/hooks/useFiveModelIntersectRaycaster.d.ts +23 -0
- package/vue/hooks/useFiveModelReadyState.d.ts +9 -0
- package/vue/hooks/useFiveProject2d.d.ts +26 -0
- package/vue/hooks/useFiveScene.d.ts +6 -0
- package/vue/hooks/useFiveState.d.ts +16 -0
- package/vue/hooks/useFiveWork.d.ts +30 -0
- package/vue/index.d.ts +23 -467
- package/vue/index.js +2 -2
- package/vue/index.mjs +2 -2
- package/vue/rendererPool.d.ts +10 -0
- package/work-downloader/components/model-3d-tile.d.ts +2 -0
- package/work-downloader/components/model.d.ts +3 -0
- package/work-downloader/components/observer.d.ts +7 -0
- package/work-downloader/download.d.ts +16 -0
- package/work-downloader/index.d.ts +2 -33
- package/work-downloader/index.js +2 -2
- package/work-downloader/index.mjs +2 -2
- package/work-downloader/type.d.ts +28 -0
- package/work-downloader/utils/download-to-file.d.ts +1 -0
- package/work-downloader/utils/image-processing.d.ts +7 -0
- package/work-downloader/utils/join-url.d.ts +2 -0
- package/work-downloader/utils/log.d.ts +1 -0
- package/work-downloader/utils/relative-url.d.ts +1 -0
- package/docs/documents/coordinate.html +0 -9
- package/docs/documents/five.FivePlugin.plugins.html +0 -77
- package/docs/documents/five.Pose.coordinate.html +0 -9
- package/docs/documents/plugins.html +0 -77
- package/docs/documents/react-component.html +0 -32
- package/docs/media/coordinate.jpg +0 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# 插件系统 (Plugin System)
|
|
2
|
+
|
|
3
|
+
- **Summary**: Five 插件系统基于 `BasePlugin` 命名空间构建,提供了一套标准化的状态管理、生命周期控制和事件通信机制。
|
|
4
|
+
- **Schema**: 核心类型定义位于 `BasePlugin` 命名空间。
|
|
5
|
+
- **Concepts**: BasePlugin, State, Lifecycle, Controller.
|
|
6
|
+
- **Configuration**: 插件特定的参数配置。
|
|
7
|
+
- **Examples**: 标准插件开发示例。
|
|
8
|
+
|
|
9
|
+
## Schema
|
|
10
|
+
|
|
11
|
+
> **Definition**: [BasePlugin](../../plugins/BasePlugin/index.d.ts)
|
|
12
|
+
|
|
13
|
+
`BasePlugin` 是一个命名空间,包含 `Controller` (抽象基类), `State` (状态接口), `EventMap` (事件映射) 等核心定义。
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
export namespace BasePlugin {
|
|
17
|
+
export interface State {
|
|
18
|
+
enabled: boolean
|
|
19
|
+
visible?: boolean
|
|
20
|
+
config?: unknown
|
|
21
|
+
}
|
|
22
|
+
export abstract class Controller<PluginState, PluginEventMap, PluginServerData, PluginData> {
|
|
23
|
+
public five: Five
|
|
24
|
+
public abstract state: PluginState
|
|
25
|
+
public hooks: Subscribe<PluginEventMap>
|
|
26
|
+
// ...
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Concepts
|
|
32
|
+
|
|
33
|
+
### Directory Structure (目录结构)
|
|
34
|
+
|
|
35
|
+
一个标准的插件通常包含以下文件:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
PluginName/
|
|
39
|
+
├── index.ts # 插件入口,导出工厂函数和类型
|
|
40
|
+
├── Controller.ts # 插件控制器,核心逻辑实现
|
|
41
|
+
└── typing.ts # 类型定义
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### BasePlugin
|
|
45
|
+
|
|
46
|
+
所有插件推荐继承 `BasePlugin.Controller`。它定义了规范的泛型接口:
|
|
47
|
+
|
|
48
|
+
- `PluginState`: 插件状态类型,继承自 `BasePlugin.State`。
|
|
49
|
+
- `PluginEventMap`: 插件事件类型,继承自 `BasePlugin.EventMap`。
|
|
50
|
+
- `PluginServerData`: 服务端原始数据类型。
|
|
51
|
+
- `PluginData`: 解析后的插件数据类型。
|
|
52
|
+
|
|
53
|
+
### State (状态)
|
|
54
|
+
|
|
55
|
+
插件的状态驱动其行为。`BasePlugin.State` 定义了最基本的状态:
|
|
56
|
+
|
|
57
|
+
- `enabled`: 是否启用。
|
|
58
|
+
- `visible`: UI 是否可见。
|
|
59
|
+
- `config`: 配置项。
|
|
60
|
+
|
|
61
|
+
### Lifecycle (生命周期)
|
|
62
|
+
|
|
63
|
+
插件的主要生命周期方法:
|
|
64
|
+
|
|
65
|
+
- **constructor**: 初始化配置和初始状态。
|
|
66
|
+
- **load**: 加载和解析数据。
|
|
67
|
+
- **enable**: 启用插件,注册事件监听,添加副作用。
|
|
68
|
+
- **disable**: 禁用插件,移除事件监听,清理副作用。
|
|
69
|
+
- **dispose**: 销毁插件,彻底清理资源。
|
|
70
|
+
|
|
71
|
+
## Configuration
|
|
72
|
+
|
|
73
|
+
### BasePlugin Configuration
|
|
74
|
+
|
|
75
|
+
`BasePlugin` 控制器构造函数接受可选的配置对象:
|
|
76
|
+
|
|
77
|
+
| Parameter | Type | Default | Description |
|
|
78
|
+
| :--- | :--- | :--- | :--- |
|
|
79
|
+
| `staticPrefix` | `string` | `'//vr-image-4.realsee-cdn.cn'` | 静态资源前缀。 |
|
|
80
|
+
| `i18n` | `(key: string) => string` | `undefined` | 国际化转换函数。 |
|
|
81
|
+
|
|
82
|
+
## Examples
|
|
83
|
+
|
|
84
|
+
### Plugin Development Walkthrough (插件开发指南)
|
|
85
|
+
|
|
86
|
+
以创建一个 `MyPlugin` 为例。
|
|
87
|
+
|
|
88
|
+
#### 1. 定义类型 (typing.ts)
|
|
89
|
+
|
|
90
|
+
定义插件所需的参数、状态、数据和事件类型。
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import { BasePlugin } from '../BasePlugin'
|
|
94
|
+
|
|
95
|
+
// 1. 定义参数
|
|
96
|
+
export interface Params extends BasePlugin.Config {
|
|
97
|
+
initialState?: Partial<State>
|
|
98
|
+
config?: Config
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// 2. 定义配置
|
|
102
|
+
export interface Config {
|
|
103
|
+
color?: string
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// 3. 定义状态 (继承 BasePlugin.State)
|
|
107
|
+
export interface State extends BasePlugin.State {
|
|
108
|
+
activeId?: string
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// 4. 定义数据类型
|
|
112
|
+
export interface ServerData { /* 服务端数据结构 */ }
|
|
113
|
+
export interface PluginData { /* 解析后的数据结构 */ }
|
|
114
|
+
|
|
115
|
+
// 5. 定义事件 (继承 BasePlugin.EventMap)
|
|
116
|
+
export interface EventMap extends BasePlugin.EventMap<State, PluginData> {
|
|
117
|
+
click: (id: string) => void
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### 2. 实现控制器 (Controller.ts)
|
|
122
|
+
|
|
123
|
+
继承 `BasePlugin.Controller` 并实现核心逻辑。
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
import { Five } from '@realsee/five'
|
|
127
|
+
import { BasePlugin } from '../BasePlugin'
|
|
128
|
+
import * as MyPluginType from './typing'
|
|
129
|
+
|
|
130
|
+
export class Controller extends BasePlugin.Controller<
|
|
131
|
+
MyPluginType.State,
|
|
132
|
+
MyPluginType.EventMap,
|
|
133
|
+
MyPluginType.ServerData,
|
|
134
|
+
MyPluginType.PluginData
|
|
135
|
+
> {
|
|
136
|
+
public state: MyPluginType.State
|
|
137
|
+
|
|
138
|
+
constructor(five: Five, params?: MyPluginType.Params) {
|
|
139
|
+
super(five)
|
|
140
|
+
this.state = {
|
|
141
|
+
enabled: true,
|
|
142
|
+
visible: true,
|
|
143
|
+
...params?.initialState
|
|
144
|
+
}
|
|
145
|
+
if (this.state.enabled) {
|
|
146
|
+
this._enable()
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
public async load(serverData: MyPluginType.ServerData) {
|
|
151
|
+
// 解析数据
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
public enable() {
|
|
155
|
+
if (this.state.enabled) return
|
|
156
|
+
this.state.enabled = true
|
|
157
|
+
this._enable()
|
|
158
|
+
this.hooks.emit('stateChange', { state: this.state, userAction: true })
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
public disable() {
|
|
162
|
+
if (!this.state.enabled) return
|
|
163
|
+
this.state.enabled = false
|
|
164
|
+
this._disable()
|
|
165
|
+
this.hooks.emit('stateChange', { state: this.state, userAction: true })
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
public dispose = () => {
|
|
169
|
+
this.disable()
|
|
170
|
+
this.hooks.emit('dispose')
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
private _enable() {
|
|
174
|
+
// five.scene.add(...)
|
|
175
|
+
// five.on('tap', this.onTap)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
private _disable() {
|
|
179
|
+
// five.scene.remove(...)
|
|
180
|
+
// five.off('tap', this.onTap)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### 3. 导出插件 (index.ts)
|
|
186
|
+
|
|
187
|
+
提供一个工厂函数。
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
import { Five } from '@realsee/five'
|
|
191
|
+
import { Controller } from './Controller'
|
|
192
|
+
import * as MyPluginType from './typing'
|
|
193
|
+
|
|
194
|
+
export const MyPlugin = (five: Five, params?: MyPluginType.Params) =>
|
|
195
|
+
new Controller(five, params)
|
|
196
|
+
|
|
197
|
+
export type { MyPluginType, Controller as MyPluginController }
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Common Pitfalls (最佳实践)
|
|
201
|
+
|
|
202
|
+
1. **状态驱动**: 始终通过修改 `state` 来驱动插件行为,而不是直接操作 DOM 或 3D 对象。
|
|
203
|
+
2. **清理资源**: 在 `disable` 和 `dispose` 中务必清理所有事件监听和副作用,防止内存泄漏。
|
|
204
|
+
3. **类型安全**: 充分利用 TypeScript 泛型,确保事件和状态的类型安全。
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
tags: [plugin, baseplugin, development, guide]
|
|
210
|
+
```
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# 后处理 (Post Processing)
|
|
2
|
+
|
|
3
|
+
- **Summary**: Five 提供了基于 EffectComposer 的后处理机制,默认挂载了自适应亮度 (Auto Exposure) 和眼球穹顶光照 (EDL) 两种效果,同时提供多种可选内置 Pass,并支持开发者编写自定义 Pass。
|
|
4
|
+
- **Schema**: `FivePass` 类及 `Pass` 接口。
|
|
5
|
+
- **Concepts**: EffectComposer, G-Buffer, Pass, AdaptiveLuminance, EyeDomeLighting。
|
|
6
|
+
- **Configuration**: 开启内置 Pass 的开关及参数配置。
|
|
7
|
+
- **Examples**: 开启内置 Pass 示例,自定义黑白滤镜 Pass 示例。
|
|
8
|
+
|
|
9
|
+
## Schema
|
|
10
|
+
|
|
11
|
+
> **Definition**: [FivePass](../../five/renderer/postprocessing/passes/pass.d.ts)
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
/**
|
|
15
|
+
* Pass 接口 (兼容 three.js EffectComposer)
|
|
16
|
+
*/
|
|
17
|
+
export interface Pass {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
needsSwap: boolean;
|
|
20
|
+
clear: boolean;
|
|
21
|
+
renderToScreen: boolean;
|
|
22
|
+
setSize(width: number, height: number): void;
|
|
23
|
+
render(
|
|
24
|
+
renderer: THREE.WebGLRenderer,
|
|
25
|
+
writeBuffer: THREE.WebGLRenderTarget,
|
|
26
|
+
readBuffer: THREE.WebGLRenderTarget,
|
|
27
|
+
deltaTime?: number,
|
|
28
|
+
maskActive?: boolean
|
|
29
|
+
): void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* FivePass 基类
|
|
34
|
+
* 支持 G-Buffer 注入 (depth, normal, color)
|
|
35
|
+
*/
|
|
36
|
+
export class FivePass implements Pass {
|
|
37
|
+
public enabled: boolean = true;
|
|
38
|
+
public needsSwap: boolean = true;
|
|
39
|
+
public clear: boolean = false;
|
|
40
|
+
public renderToScreen: boolean = true;
|
|
41
|
+
public dependencies: ('depth' | 'normal' | 'color')[];
|
|
42
|
+
|
|
43
|
+
// 由 EffectComposer 在 render 时注入
|
|
44
|
+
public gbuffer!: Map<'depth' | 'normal' | 'color', THREE.Texture>;
|
|
45
|
+
|
|
46
|
+
constructor(dependencies?: ('depth' | 'normal' | 'color')[]);
|
|
47
|
+
// ... render method implementation
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Concepts
|
|
52
|
+
|
|
53
|
+
- **EffectComposer**: 后处理管理器,负责按顺序执行 Pass,管理渲染目标 (RenderTarget) 和 G-Buffer。
|
|
54
|
+
- **FivePass**: Five 引擎优化的 Pass 基类。相比普通 Pass,它声明了 `dependencies`,Five 会在渲染 Pass 之前准备好所需的 G-Buffer (如深度图、法线图),避免在每个 Pass 中重复渲染场景。
|
|
55
|
+
- **AdaptiveLuminancePass (自适应亮度)**: 模拟人眼对光线的适应过程。当场景亮度变化时,会自动平滑调整曝光度,使画面保持在舒适的亮度范围内。
|
|
56
|
+
- **EyeDomeLightingPass (EDL)**: 一种非真实感渲染技术,主要用于增强点云模型的深度感知。通过屏幕空间的深度差计算遮蔽效果,让点云看起来更有轮廓感。
|
|
57
|
+
|
|
58
|
+
## Built-in Passes (内置 Pass)
|
|
59
|
+
|
|
60
|
+
Five 默认挂载了两个 Pass 实例,挂载在 `five` 实例上,默认是关闭状态。
|
|
61
|
+
|
|
62
|
+
### 1. AdaptiveLuminancePass
|
|
63
|
+
|
|
64
|
+
位于 `five.adaptiveLuminancePass`。
|
|
65
|
+
|
|
66
|
+
* **作用**: 自动调整画面曝光。
|
|
67
|
+
* **开启方式**: `five.adaptiveLuminancePass.enabled = true`。
|
|
68
|
+
* **配置项**:
|
|
69
|
+
* `luminanceScale` (number): 亮度缩放系数,影响最终画面的整体亮度。
|
|
70
|
+
* `luminanceStep` (number): 亮度适应步长,影响适应速度。
|
|
71
|
+
|
|
72
|
+
### 2. EyeDomeLightingPass
|
|
73
|
+
|
|
74
|
+
位于 `five.eyeDomeLightingPass`。
|
|
75
|
+
|
|
76
|
+
* **作用**: 增强点云的轮廓和深度感。
|
|
77
|
+
* **开启方式**: `five.eyeDomeLightingPass.enabled = true`。
|
|
78
|
+
* **配置项**:
|
|
79
|
+
* `strength` (number): 增强强度,值越大轮廓越明显。
|
|
80
|
+
* `radius` (number): 采样半径,影响阴影的范围。
|
|
81
|
+
* **注意**: 这是一个基于屏幕空间深度的算法,依赖 Depth Buffer。
|
|
82
|
+
|
|
83
|
+
### 3. Optional Built-in Passes (可选内置 Pass)
|
|
84
|
+
|
|
85
|
+
Five 新增了三个可选使用的内置 Pass,这些 Pass 没有预先挂载在 `five` 实例上,需手动导入并添加到渲染链中:
|
|
86
|
+
|
|
87
|
+
* **[GaussianBlurPass](gaussian-blur-pass.md)**: 高斯模糊效果。
|
|
88
|
+
* **[FlowingLight2DPass](flowing-light-2d-pass.md)**: 2D 流光效果(通常用于平面路线流光)。
|
|
89
|
+
* **[FlowingLight3DPass](flowing-light-3d-pass.md)**: 3D 流光效果(通常用于空间路径流光)。
|
|
90
|
+
|
|
91
|
+
#### GaussianBlurPass 使用示例
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { GaussianBlurPass } from '@realsee/five';
|
|
95
|
+
|
|
96
|
+
// 1. 创建 GaussianBlurPass 实例 (需要传入 camera)
|
|
97
|
+
const gaussianBlurPass = new GaussianBlurPass(five.camera);
|
|
98
|
+
|
|
99
|
+
// 2. 配置参数
|
|
100
|
+
// 设置模糊半径 (默认 4.0)
|
|
101
|
+
gaussianBlurPass.setRadius(6);
|
|
102
|
+
|
|
103
|
+
// 3. 将 Pass 添加到渲染链
|
|
104
|
+
five.addPass(gaussianBlurPass);
|
|
105
|
+
|
|
106
|
+
// 4. (可选) 动态开关
|
|
107
|
+
// gaussianBlurPass.enabled = false;
|
|
108
|
+
|
|
109
|
+
// 5. (可选) 移除 Pass
|
|
110
|
+
// five.removePass(gaussianBlurPass);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Custom Pass (自定义 Pass)
|
|
114
|
+
|
|
115
|
+
如果需要实现自定义的后处理效果(如景深、色彩校正、描边等),建议继承 `FivePass`。
|
|
116
|
+
|
|
117
|
+
### 步骤
|
|
118
|
+
|
|
119
|
+
1. **创建类**: 继承 `FivePass`。
|
|
120
|
+
2. **声明依赖**: 在 `super()` 中传入需要的 G-Buffer 依赖 (如 `['depth']`)。
|
|
121
|
+
3. **实现 render**: 使用 `readBuffer` 作为输入,将结果渲染到 `writeBuffer` (或直接渲染到屏幕)。
|
|
122
|
+
4. **挂载**: 使用 `five.addPass(pass)` 将其实例添加到渲染链中。
|
|
123
|
+
|
|
124
|
+
## Examples
|
|
125
|
+
|
|
126
|
+
### 开启内置 Pass
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { Five } from '@realsee/five';
|
|
130
|
+
|
|
131
|
+
const five = new Five();
|
|
132
|
+
|
|
133
|
+
// 开启自适应亮度
|
|
134
|
+
five.adaptiveLuminancePass.enabled = true;
|
|
135
|
+
five.adaptiveLuminancePass.luminanceScale = 0.5; // 调整目标亮度
|
|
136
|
+
|
|
137
|
+
// 开启 EDL (通常用于点云模式)
|
|
138
|
+
five.eyeDomeLightingPass.enabled = true;
|
|
139
|
+
five.eyeDomeLightingPass.strength = 1.5; // 增强轮廓感
|
|
140
|
+
|
|
141
|
+
five.needsRender = true;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 自定义 Pass (黑白滤镜)
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
import * as THREE from 'three';
|
|
148
|
+
import { Five, FivePass } from '@realsee/five';
|
|
149
|
+
import { FullScreenQuad } from '@realsee/five/lib/five/tools/full-screen-quad'; // 需根据实际路径引用
|
|
150
|
+
|
|
151
|
+
// 1. 定义 Shader
|
|
152
|
+
const grayscaleVertexShader = `
|
|
153
|
+
varying vec2 vUv;
|
|
154
|
+
void main() {
|
|
155
|
+
vUv = uv;
|
|
156
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
157
|
+
}
|
|
158
|
+
`;
|
|
159
|
+
|
|
160
|
+
const grayscaleFragmentShader = `
|
|
161
|
+
uniform sampler2D tDiffuse;
|
|
162
|
+
varying vec2 vUv;
|
|
163
|
+
void main() {
|
|
164
|
+
vec4 color = texture2D(tDiffuse, vUv);
|
|
165
|
+
float gray = dot(color.rgb, vec3(0.299, 0.587, 0.114));
|
|
166
|
+
gl_FragColor = vec4(vec3(gray), color.a);
|
|
167
|
+
}
|
|
168
|
+
`;
|
|
169
|
+
|
|
170
|
+
// 2. 创建 Pass 类
|
|
171
|
+
class GrayscalePass extends FivePass {
|
|
172
|
+
private material: THREE.ShaderMaterial;
|
|
173
|
+
private fsQuad: FullScreenQuad;
|
|
174
|
+
|
|
175
|
+
constructor() {
|
|
176
|
+
super(); // 不需要额外的 G-Buffer 依赖,只需要前一个 Pass 的颜色结果
|
|
177
|
+
this.material = new THREE.ShaderMaterial({
|
|
178
|
+
uniforms: {
|
|
179
|
+
tDiffuse: { value: null }
|
|
180
|
+
},
|
|
181
|
+
vertexShader: grayscaleVertexShader,
|
|
182
|
+
fragmentShader: grayscaleFragmentShader
|
|
183
|
+
});
|
|
184
|
+
this.fsQuad = new FullScreenQuad(this.material);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
render(renderer, writeBuffer, readBuffer) {
|
|
188
|
+
// 将上一个 Pass 的结果 (readBuffer) 传给 Shader
|
|
189
|
+
this.material.uniforms.tDiffuse.value = readBuffer.texture;
|
|
190
|
+
|
|
191
|
+
if (this.renderToScreen) {
|
|
192
|
+
// 如果是最后一个 Pass,直接渲染到屏幕
|
|
193
|
+
renderer.setRenderTarget(null);
|
|
194
|
+
this.fsQuad.render(renderer);
|
|
195
|
+
} else {
|
|
196
|
+
// 否则渲染到 writeBuffer,供下一个 Pass 使用
|
|
197
|
+
renderer.setRenderTarget(writeBuffer);
|
|
198
|
+
if (this.clear) renderer.clear();
|
|
199
|
+
this.fsQuad.render(renderer);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// 3. 挂载到 Five
|
|
205
|
+
const grayPass = new GrayscalePass();
|
|
206
|
+
five.addPass(grayPass);
|
|
207
|
+
|
|
208
|
+
// 触发重绘
|
|
209
|
+
five.needsRender = true;
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### 使用 G-Buffer (深度图示例)
|
|
213
|
+
|
|
214
|
+
如果你的 Pass 需要使用场景的深度信息(例如雾效),可以在构造函数中声明依赖。
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
class FogPass extends FivePass {
|
|
218
|
+
constructor() {
|
|
219
|
+
super(['depth']); // 声明需要深度图
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
render(renderer, writeBuffer, readBuffer) {
|
|
223
|
+
// 获取深度图
|
|
224
|
+
const depthTexture = this.gbuffer.get('depth');
|
|
225
|
+
|
|
226
|
+
// 在 Shader 中使用 depthTexture ...
|
|
227
|
+
// this.material.uniforms.tDepth.value = depthTexture;
|
|
228
|
+
|
|
229
|
+
// ... 渲染逻辑
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Debugging
|
|
235
|
+
|
|
236
|
+
* **查看 Pass 列表**: 检查 `five.fiveRenderer.composer.passes` 数组,确认 Pass 是否已添加以及顺序是否正确。
|
|
237
|
+
* **检查 Enabled 状态**: 确保 Pass 实例的 `.enabled` 属性为 `true`。
|
|
238
|
+
* **G-Buffer 调试**: 如果自定义 Pass 依赖 G-Buffer 但效果不对,检查 `this.gbuffer` 是否包含预期的纹理。
|
|
239
|
+
|
|
240
|
+
## Common Pitfalls
|
|
241
|
+
|
|
242
|
+
1. **Pass 顺序**: 后处理是按顺序执行的。如果添加了多个 Pass,要注意它们的添加顺序。`addPass` 会添加到末尾,`insertPass` 可以插入到指定位置。
|
|
243
|
+
2. **renderToScreen**: 只有链中的最后一个 Pass (且 `renderToScreen` 为 true) 才会渲染到屏幕。EffectComposer 会自动管理这个标志,但自定义 Pass 必须在 `render` 方法中正确处理 `this.renderToScreen` 逻辑。
|
|
244
|
+
3. **Performance**: 过多的后处理 Pass 会显著降低帧率,尤其是在高分辨率屏幕上。尽量合并 Shader 逻辑,避免频繁的 Buffer 拷贝。
|
|
245
|
+
4. **Dependencies**: 只有继承 `FivePass` 并声明了 `dependencies`,`this.gbuffer` 才会有值。普通 `Pass` 实现无法自动获取 G-Buffer。
|
|
246
|
+
|
|
247
|
+
## Related
|
|
248
|
+
|
|
249
|
+
* [Gaussian Blur Pass](gaussian-blur-pass.md): 高斯模糊 Pass 文档。
|
|
250
|
+
* [Flowing Light 2D Pass](flowing-light-2d-pass.md): 2D 流光 Pass 文档。
|
|
251
|
+
* [Flowing Light 3D Pass](flowing-light-3d-pass.md): 3D 流光 Pass 文档。
|
|
252
|
+
* [five.ts](../../five/application/five.d.ts): 查看 `addPass` 方法的实现。
|
|
253
|
+
* [pass.ts](../../five/renderer/postprocessing/passes/pass.d.ts): 查看 `FivePass` 基类定义。
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
```yaml
|
|
258
|
+
tags: [postprocessing, shader, effect, adaptive-luminance, edl]
|
|
259
|
+
```
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Raycast (射线检测)
|
|
2
|
+
|
|
3
|
+
- **Summary**: Five 提供了增强版的射线检测机制,内置 BVH 加速,并扩展了 Three.js Raycaster 以支持更灵活的过滤和性能优化。
|
|
4
|
+
- **Schema**: 参见下方 `Three.js Raycaster Extensions`。
|
|
5
|
+
- **Concepts**: BVH, IntersectRaycaster, Raycaster Extensions。
|
|
6
|
+
- **Examples**: 提供基础检测与性能优化示例。
|
|
7
|
+
|
|
8
|
+
## Schema: Three.js Raycaster Extensions
|
|
9
|
+
|
|
10
|
+
> **Definition**: [Raycaster](../../five/declare.d.ts)
|
|
11
|
+
|
|
12
|
+
Five 对 Three.js 的 `Raycaster` 进行了扩展,在 `declare module 'three'` 中增加了以下属性:
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// defined in five/declare.d.ts
|
|
16
|
+
declare module 'three' {
|
|
17
|
+
export interface Raycaster {
|
|
18
|
+
/**
|
|
19
|
+
* 只捕获第一个焦点 (性能优化)
|
|
20
|
+
* - true: 找到第一个交点后立即停止检测,返回结果。
|
|
21
|
+
* - false (默认): 检测所有可能的交点。
|
|
22
|
+
*/
|
|
23
|
+
firstHitOnly?: boolean;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 自定义交点过滤器
|
|
27
|
+
* - 回调函数,返回 boolean。
|
|
28
|
+
* - true: 保留该交点。
|
|
29
|
+
* - false: 丢弃该交点。
|
|
30
|
+
*/
|
|
31
|
+
hitFilter?: (intersect: THREE.Intersection) => boolean;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 是否由近及远排序
|
|
35
|
+
* - true (默认): 返回的结果数组按距离摄像机从近到远排序。
|
|
36
|
+
* - false: 结果顺序不确定(通常按遍历顺序)。
|
|
37
|
+
*/
|
|
38
|
+
sortByDistance?: boolean;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 作用楼层 (Five 特有逻辑)
|
|
42
|
+
* - 用于多楼层场景过滤。
|
|
43
|
+
*/
|
|
44
|
+
floorIndex?: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface Intersection {
|
|
48
|
+
/** 命中的具体 Tile 对象 (仅 3DTiles) */
|
|
49
|
+
tile?: Tile;
|
|
50
|
+
/** 命中的 ViewLayer 对象 */
|
|
51
|
+
viewLayer?: ViewLayer;
|
|
52
|
+
/** 命中的 Model 对象 */
|
|
53
|
+
model?: Model;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Concepts
|
|
59
|
+
|
|
60
|
+
### 1. Five 内置 BVH (Bounding Volume Hierarchy)
|
|
61
|
+
Five 内置了一套高效的 BVH 实现,用于优化 `Mesh` 和 `Points` 的射线检测。
|
|
62
|
+
* **作用**: 在进行射线检测时,不直接遍历所有三角形或点,而是先与构建好的 BVH 树(包围盒层次结构)进行相交测试。只有当射线穿过包围盒时,才进一步检测内部的几何体。
|
|
63
|
+
* **优势**: 极大提升了复杂模型(如数十万面的 Mesh 或百万级 Points)的碰撞检测性能。
|
|
64
|
+
* **透明性**: 开发者通常无需手动操作 BVH,Five 在加载模型时会自动构建,并在调用 `intersectRaycaster` 时自动应用。
|
|
65
|
+
|
|
66
|
+
### 2. models.intersectRaycaster / model.intersectRaycaster vs 原生 intersectObject
|
|
67
|
+
|
|
68
|
+
Five 提供了 `model.intersectRaycaster` 方法,与 Three.js 原生的 `raycaster.intersectObject` 有显著区别:
|
|
69
|
+
|
|
70
|
+
| 特性 | `five.model.intersectRaycaster` | `raycaster.intersectObject` (Three.js 原生) |
|
|
71
|
+
| :--- | :--- | :--- |
|
|
72
|
+
| **检测范围** | 聚合检测 `five.model.shownModels` 中所有可见模型。 | 仅检测指定的单个 Object3D 及其子节点。 |
|
|
73
|
+
| **结果排序** | 自动合并所有模型的检测结果,并根据 `raycaster.sortByDistance` 排序。 | 仅对当前 Object 及其子节点的结果排序。 |
|
|
74
|
+
| **扩展支持** | **支持** `firstHitOnly`, `hitFilter`, `sortByDistance` 等扩展属性。 | 不支持 Five 的扩展属性(需手动实现)。 |
|
|
75
|
+
| **内部优化** | 自动调用模型内部的优化逻辑(如 BVH, Tile3D 的空间索引)。 | 仅进行标准的场景图遍历检测。 |
|
|
76
|
+
| **使用场景** | **推荐**。适用于全局点击、地板检测、物体拾取等业务场景。 | 仅在需要检测特定原生 Object3D 时使用。 |
|
|
77
|
+
|
|
78
|
+
## Examples
|
|
79
|
+
|
|
80
|
+
### 基础用法:检测点击位置
|
|
81
|
+
|
|
82
|
+
最常见的场景是将鼠标点击的屏幕坐标转换为 3D 空间中的点。
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
import * as THREE from 'three';
|
|
86
|
+
import { Five } from '@realsee/five';
|
|
87
|
+
|
|
88
|
+
const five = new Five();
|
|
89
|
+
// ... 初始化 ...
|
|
90
|
+
|
|
91
|
+
const raycaster = new THREE.Raycaster();
|
|
92
|
+
const vector = new THREE.Vector2();
|
|
93
|
+
|
|
94
|
+
// 假设 onTap 是点击事件处理函数
|
|
95
|
+
function onTap(event: { x: number, y: number }) {
|
|
96
|
+
// 1. 将屏幕坐标转换为归一化设备坐标 (NDC)
|
|
97
|
+
// 注意:five.getElement() 获取 canvas 容器
|
|
98
|
+
const element = five.getElement();
|
|
99
|
+
if (!element) return;
|
|
100
|
+
|
|
101
|
+
const rect = element.getBoundingClientRect();
|
|
102
|
+
vector.x = ((event.x - rect.left) / rect.width) * 2 - 1;
|
|
103
|
+
vector.y = -((event.y - rect.top) / rect.height) * 2 + 1;
|
|
104
|
+
|
|
105
|
+
// 2. 设置射线
|
|
106
|
+
raycaster.setFromCamera(vector, five.camera);
|
|
107
|
+
|
|
108
|
+
// 3. 调用 Five 的检测方法
|
|
109
|
+
const intersects = five.model.intersectRaycaster(raycaster);
|
|
110
|
+
|
|
111
|
+
if (intersects.length > 0) {
|
|
112
|
+
const firstHit = intersects[0];
|
|
113
|
+
console.log('点击到了模型:', firstHit.object);
|
|
114
|
+
console.log('交点坐标 (世界坐标):', firstHit.point);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 性能优化:只获取第一个交点
|
|
120
|
+
|
|
121
|
+
在进行如“地面检测”或“视线遮挡检测”时,通常只需要知道最近的交点。此时开启 `firstHitOnly` 可以显著提升性能。
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
const raycaster = new THREE.Raycaster();
|
|
125
|
+
raycaster.setFromCamera(mouseVector, five.camera);
|
|
126
|
+
|
|
127
|
+
// 开启性能优化:找到最近的一个交点后立即停止
|
|
128
|
+
raycaster.firstHitOnly = true;
|
|
129
|
+
|
|
130
|
+
// 结果数组长度最多为 1
|
|
131
|
+
const intersects = five.model.intersectRaycaster(raycaster);
|
|
132
|
+
|
|
133
|
+
if (intersects.length > 0) {
|
|
134
|
+
// 处理最近的交点
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 高级用法:使用过滤器
|
|
139
|
+
|
|
140
|
+
如果你只想检测特定类型的物体(例如只检测地板,忽略天花板),可以使用 `hitFilter`。
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
raycaster.hitFilter = (intersect) => {
|
|
144
|
+
// 示例:假设地板的法线是向上的 (0, 1, 0)
|
|
145
|
+
// 只保留法线朝上的交点(地板)
|
|
146
|
+
if (intersect.face && intersect.face.normal.y > 0.5) {
|
|
147
|
+
return true; // 保留
|
|
148
|
+
}
|
|
149
|
+
return false; // 丢弃
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const intersects = five.model.intersectRaycaster(raycaster);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Debugging
|
|
156
|
+
|
|
157
|
+
* **验证交点**: 在开发阶段,可以在交点处添加一个临时的红色小球 `THREE.Mesh`,直观地确认检测位置是否正确。
|
|
158
|
+
* **检查模型可见性**: `intersectRaycaster` 只会检测 `visible = true` 的模型。如果检测不到,请检查模型的可见性状态。
|
|
159
|
+
* **Performance**: 如果射线检测导致掉帧,检查是否频繁调用了全场景检测。尝试使用 `firstHitOnly` 或减小检测频率(如节流)。
|
|
160
|
+
|
|
161
|
+
## Common Pitfalls
|
|
162
|
+
|
|
163
|
+
1. **混淆 API**: 错误地使用 `raycaster.intersectObject(five.scene)`。虽然这也能工作,但会失去 Five 的 BVH 优化和多模型聚合能力,导致性能下降或漏检。请始终优先使用 `five.model.intersectRaycaster(raycaster)`。
|
|
164
|
+
2. **忽略坐标系**: `raycaster.setFromCamera` 需要 NDC 坐标(-1 到 1),而不是像素坐标。务必进行正确的坐标转换。
|
|
165
|
+
3. **Tile3D 模型的特殊性**: 对于大型 Tile3D 场景,射线检测可能涉及动态加载的瓦片。Five 内部已处理这些逻辑,外部调用方式不变,但返回的 `object` 可能是某个具体的 Tile 节点。
|
|
166
|
+
|
|
167
|
+
## Related
|
|
168
|
+
|
|
169
|
+
* [parameter.md](./parameter.md): 了解模型参数配置。
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
tags: [raycast, bvh, interaction, performance]
|
|
175
|
+
```
|