@realsee/dnalogel 3.78.0-alpha.0 → 3.78.0-alpha.2
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/dist/PanoTagPlugin/controller/Tag/BoxTag.d.ts +1 -0
- package/dist/PanoTagPlugin/controller/Tag/MaskTag.d.ts +116 -16
- package/dist/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +4 -1
- package/dist/PanoTagPlugin/controller/index.d.ts +20 -2
- package/dist/PanoTagPlugin/typings/tag/Tag.d.ts +2 -2
- package/dist/PanoTagPlugin/typings/tag/Utils.d.ts +2 -2
- package/dist/PanoTagPlugin/utils/tagPosition.d.ts +9 -1
- package/dist/index.cjs.js +154 -149
- package/dist/index.js +8398 -8018
- package/dist/index.umd.js +144 -139
- package/libs/PanoTagPlugin/controller/Tag/BaseTag.js +11 -11
- package/libs/PanoTagPlugin/controller/Tag/BoxTag.d.ts +1 -0
- package/libs/PanoTagPlugin/controller/Tag/BoxTag.js +17 -10
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.d.ts +116 -16
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.js +539 -220
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.d.ts +4 -1
- package/libs/PanoTagPlugin/controller/Tag/MaskTag.shaders.js +134 -41
- package/libs/PanoTagPlugin/controller/Tag/MaskTag1.d.ts +202 -0
- package/libs/PanoTagPlugin/controller/Tag/MaskTag1.js +617 -0
- package/libs/PanoTagPlugin/controller/TagUtil.js +11 -11
- package/libs/PanoTagPlugin/controller/index.d.ts +20 -2
- package/libs/PanoTagPlugin/controller/index.js +168 -120
- package/libs/PanoTagPlugin/typings/tag/Tag.d.ts +2 -2
- package/libs/PanoTagPlugin/typings/tag/Utils.d.ts +2 -2
- package/libs/PanoTagPlugin/utils/index.js +25 -23
- package/libs/PanoTagPlugin/utils/tagPosition.d.ts +9 -1
- package/libs/PanoTagPlugin/utils/tagPosition.js +3 -1
- package/libs/base/BasePlugin.js +1 -1
- package/libs/shared-utils/logger.js +1 -1
- package/package.json +1 -1
- package/docs/.nojekyll +0 -1
- package/docs/assets/custom.css +0 -0
- package/docs/assets/highlight.css +0 -127
- package/docs/assets/icons.js +0 -18
- package/docs/assets/icons.svg +0 -1
- package/docs/assets/main.js +0 -60
- package/docs/assets/navigation.js +0 -1
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1493
- package/docs/classes/AreaMakerPluginType.AreaMakerController.html +0 -59
- package/docs/classes/AreaMakerPluginType.AreaMakerItem.html +0 -71
- package/docs/classes/CSS3DRender.html +0 -100
- package/docs/classes/GuideLineItem.GuideLineItem.html +0 -21
- package/docs/classes/GuideLineModeItem.GuideLineModeItem.html +0 -70
- package/docs/classes/ModelMakerPluginInstance.html +0 -116
- package/docs/classes/ModelMakerPluginType.ModelMakerBoxItem.html +0 -52
- package/docs/classes/ModelMakerPluginType.ModelMakerPolygonItem.html +0 -52
- package/docs/classes/ModelMakerPluginType.ModelMakerPrismItem.html +0 -53
- package/docs/classes/ModelRoomLabelController.html +0 -19
- package/docs/classes/MoveController.html +0 -45
- package/docs/classes/Object3DHelperController.html +0 -45
- package/docs/classes/PaintBrush.html +0 -15
- package/docs/classes/PanoMeasurePluginLine.html +0 -24
- package/docs/classes/PanoMeasurePluginModel.html +0 -23
- package/docs/classes/PanoMeasurePluginPoint.html +0 -7
- package/docs/classes/PanoMeasurePluginPolyline.html +0 -27
- package/docs/classes/PanoTagPluginController.html +0 -119
- package/docs/classes/Sculpt.html +0 -77
- package/docs/classes/Util.BetterTween.html +0 -6
- package/docs/classes/Util.FiveDomEvents.html +0 -13
- package/docs/classes/Util.FivePuppet.html +0 -20
- package/docs/classes/Util.Interval.html +0 -11
- package/docs/classes/Util.LegacyPointHelper.html +0 -7
- package/docs/classes/Util.LightTag.html +0 -47
- package/docs/classes/Util.LineSegments.html +0 -4
- package/docs/classes/Util.Magnifier.html +0 -26
- package/docs/classes/Util.Object3D.html +0 -8
- package/docs/classes/Util.PointDomHelper.html +0 -8
- package/docs/classes/Util.PointHelper.html +0 -10
- package/docs/classes/Util.PointSelector.html +0 -66
- package/docs/classes/Util.PointSelectorHelper.html +0 -14
- package/docs/classes/Util.Rectangle.html +0 -12
- package/docs/classes/Util.sculpt.BaseEditor.html +0 -17
- package/docs/classes/Util.sculpt.BoxMesh.html +0 -48
- package/docs/classes/Util.sculpt.BoxMeshEditor.html +0 -18
- package/docs/classes/Util.sculpt.CircleMesh.html +0 -26
- package/docs/classes/Util.sculpt.CircleMeshEditor.html +0 -18
- package/docs/classes/Util.sculpt.CircleWithEdgeMesh.html +0 -26
- package/docs/classes/Util.sculpt.CylinderMesh.html +0 -25
- package/docs/classes/Util.sculpt.CylinderMeshEditor.html +0 -18
- package/docs/classes/Util.sculpt.LineMesh.html +0 -34
- package/docs/classes/Util.sculpt.PointMesh.html +0 -24
- package/docs/classes/Util.sculpt.PolygonMesh.html +0 -40
- package/docs/classes/Util.sculpt.PrismMesh.html +0 -48
- package/docs/classes/Util.sculpt.PrismMeshEditor.html +0 -18
- package/docs/classes/Util.sculpt.RectangleMesh.html +0 -41
- package/docs/classes/Util.sculpt.RectangleMeshEditor.html +0 -18
- package/docs/classes/Util.sculpt.RectangleWithEdgeMesh.html +0 -44
- package/docs/classes/WalkController.html +0 -42
- package/docs/enums/CameraMovementEffect.html +0 -4
- package/docs/enums/ContentType.html +0 -34
- package/docs/enums/DIRECTION.html +0 -5
- package/docs/enums/DISPLAY_STRATEGY_TYPE.html +0 -5
- package/docs/enums/DimensionType.html +0 -4
- package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +0 -4
- package/docs/enums/ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE.html +0 -5
- package/docs/enums/PaintBrushTypeEnum.html +0 -4
- package/docs/enums/PointType.html +0 -4
- package/docs/enums/Rotation.html +0 -5
- package/docs/functions/AreaMakerPlugin.html +0 -1
- package/docs/functions/CSS3DRenderPlugin.html +0 -1
- package/docs/functions/CameraMovementPlugin.html +0 -2
- package/docs/functions/CruisePlugin.html +0 -1
- package/docs/functions/CurrentPanoImagePlugin.html +0 -1
- package/docs/functions/FloorplanGuidePlugin.html +0 -1
- package/docs/functions/GuideLinePlugin.html +0 -1
- package/docs/functions/ItemLabelPlugin.html +0 -1
- package/docs/functions/MapviewFloorplanPlugin.html +0 -1
- package/docs/functions/MeasurePlugin.html +0 -1
- package/docs/functions/ModelChassisCompassPlugin.html +0 -2
- package/docs/functions/ModelEntryDoorGuidePlugin.html +0 -2
- package/docs/functions/ModelFloorplanPlugin.html +0 -1
- package/docs/functions/ModelItemLabelPlugin.html +0 -1
- package/docs/functions/ModelMakerPlugin.html +0 -1
- package/docs/functions/ModelRoomLabelPlugin.html +0 -1
- package/docs/functions/ModelTVVideoPlugin.html +0 -1
- package/docs/functions/ModelViewPlugin.html +0 -2
- package/docs/functions/MovePlugin.html +0 -1
- package/docs/functions/Object3DHelperPlugin.html +0 -1
- package/docs/functions/PanoCompassPlugin.html +0 -1
- package/docs/functions/PanoCursorRaycasterPlugin.html +0 -2
- package/docs/functions/PanoDoorLabelPlugin.html +0 -1
- package/docs/functions/PanoFloorplanRadarPlugin.html +0 -1
- package/docs/functions/PanoMeasurePlugin.html +0 -1
- package/docs/functions/PanoRulerPlugin.html +0 -2
- package/docs/functions/PanoRulerProPlugin.html +0 -2
- package/docs/functions/PanoSpatialTagPlugin.html +0 -2
- package/docs/functions/PanoTagPlugin.html +0 -1
- package/docs/functions/PanoVideoPlugin.html +0 -10
- package/docs/functions/PipelinePlugin.html +0 -1
- package/docs/functions/SculptPlugin.html +0 -2
- package/docs/functions/SculptPluginForFive.html +0 -2
- package/docs/functions/TopviewFloorplanPlugin.html +0 -1
- package/docs/functions/Util.awaitNextFrame.html +0 -1
- package/docs/functions/Util.blink.html +0 -13
- package/docs/functions/Util.blinkWithPreset.html +0 -6
- package/docs/functions/Util.bounding.html +0 -1
- package/docs/functions/Util.boundingBox.html +0 -1
- package/docs/functions/Util.boundingSphere.html +0 -1
- package/docs/functions/Util.boxVertex.html +0 -7
- package/docs/functions/Util.boxVertexes.html +0 -1
- package/docs/functions/Util.checkFiveModelLoaded.html +0 -2
- package/docs/functions/Util.cleanup.html +0 -3
- package/docs/functions/Util.convexHull.html +0 -2
- package/docs/functions/Util.equal.html +0 -5
- package/docs/functions/Util.fiveModelIsLoaded.html +0 -2
- package/docs/functions/Util.generatePolygonGeometry.html +0 -2
- package/docs/functions/Util.getCoordsFromClient.html +0 -1
- package/docs/functions/Util.getCoordsFromElement.html +0 -1
- package/docs/functions/Util.getFrameTime.html +0 -3
- package/docs/functions/Util.getGeometryArea.html +0 -1
- package/docs/functions/Util.getGeometryInfo.html +0 -1
- package/docs/functions/Util.getIntersectFromRelativePosition.html +0 -1
- package/docs/functions/Util.getRaycasterFromFivePointer.html +0 -1
- package/docs/functions/Util.initialCSS3DRender.html +0 -1
- package/docs/functions/Util.inside.html +0 -1
- package/docs/functions/Util.isModelLike.html +0 -1
- package/docs/functions/Util.isNil.html +0 -2
- package/docs/functions/Util.isPanoramaLike.html +0 -1
- package/docs/functions/Util.lookObject.html +0 -7
- package/docs/functions/Util.lookPoint.html +0 -5
- package/docs/functions/Util.nextFrame.html +0 -1
- package/docs/functions/Util.notNil.html +0 -2
- package/docs/functions/Util.reblink.html +0 -13
- package/docs/functions/Util.replaceStaticPrefix.html +0 -8
- package/docs/functions/Util.requestAnimationFrameInterval.html +0 -5
- package/docs/functions/Util.sculpt.createBox.html +0 -1
- package/docs/functions/Util.sculpt.createCircle.html +0 -1
- package/docs/functions/Util.sculpt.createCylinder.html +0 -1
- package/docs/functions/Util.sculpt.createLine.html +0 -2
- package/docs/functions/Util.sculpt.createPoint.html +0 -1
- package/docs/functions/Util.sculpt.createPolygon.html +0 -1
- package/docs/functions/Util.sculpt.createPrism.html +0 -1
- package/docs/functions/Util.sculpt.createRectangle.html +0 -2
- package/docs/functions/Util.sculpt.transformUnit.html +0 -1
- package/docs/functions/Util.sculpt.transformUnitSquare.html +0 -1
- package/docs/functions/Util.tag.html +0 -1
- package/docs/functions/Util.triangleArea.html +0 -2
- package/docs/functions/Util.triangleCenter.html +0 -2
- package/docs/functions/Util.tweenProgress.html +0 -1
- package/docs/functions/Util.uuid.html +0 -2
- package/docs/functions/Util.waitFiveModelLoaded.html +0 -2
- package/docs/functions/Util.worldBounding.html +0 -1
- package/docs/functions/Util.worldBoundingBox.html +0 -1
- package/docs/functions/Util.worldBoundingSphere.html +0 -1
- package/docs/functions/createPolyline.html +0 -2
- package/docs/functions/pluginFlag.html +0 -1
- package/docs/functions/validatePolygon.html +0 -1
- package/docs/hierarchy.html +0 -1
- package/docs/index.html +0 -70
- package/docs/interfaces/AreaMakerPluginType.AnimeOptions.html +0 -4
- package/docs/interfaces/AreaMakerPluginType.Config.html +0 -8
- package/docs/interfaces/AreaMakerPluginType.EventMap.html +0 -25
- package/docs/interfaces/AreaMakerPluginType.Params.html +0 -4
- package/docs/interfaces/AreaMakerPluginType.ServerAreaMakerItem.html +0 -20
- package/docs/interfaces/AreaMakerPluginType.ServerAreaMakerItemV1.html +0 -13
- package/docs/interfaces/AreaMakerPluginType.ServerDataV1.html +0 -9
- package/docs/interfaces/AreaMakerPluginType.ServerDataV2.html +0 -3
- package/docs/interfaces/AreaMakerPluginType.ShowHideOptions.html +0 -3
- package/docs/interfaces/AreaMakerPluginType.State.html +0 -8
- package/docs/interfaces/BoxAnimationConfig.html +0 -6
- package/docs/interfaces/BoxPosition.html +0 -8
- package/docs/interfaces/CSS3DRenderPluginEventMap.html +0 -9
- package/docs/interfaces/CSS3DRenderPluginState.html +0 -7
- package/docs/interfaces/CameraMovementPluginExportType.html +0 -11
- package/docs/interfaces/ContentTypeMapInterface.html +0 -73
- package/docs/interfaces/CruisePluginTypes.Config.html +0 -7
- package/docs/interfaces/CruisePluginTypes.CruiseKeyframe.html +0 -8
- package/docs/interfaces/CruisePluginTypes.EventMap.html +0 -33
- package/docs/interfaces/CruisePluginTypes.GuildLineConfig.html +0 -6
- package/docs/interfaces/CruisePluginTypes.MoveAction.html +0 -16
- package/docs/interfaces/CruisePluginTypes.MoveWithKeyframesAction.html +0 -19
- package/docs/interfaces/CruisePluginTypes.MoveWithPanoIndexAction.html +0 -20
- package/docs/interfaces/CruisePluginTypes.PluginData.html +0 -8
- package/docs/interfaces/CruisePluginTypes.PluginServerData.html +0 -2
- package/docs/interfaces/CruisePluginTypes.PluginState.html +0 -15
- package/docs/interfaces/CurrentPanoImagePluginType.Config.html +0 -13
- package/docs/interfaces/CurrentPanoImagePluginType.EventMap.html +0 -15
- package/docs/interfaces/CurrentPanoImagePluginType.Params.html +0 -4
- package/docs/interfaces/CurrentPanoImagePluginType.ShowHideOptions.html +0 -3
- package/docs/interfaces/CurrentPanoImagePluginType.State.html +0 -7
- package/docs/interfaces/FloorplanBounding.html +0 -9
- package/docs/interfaces/FloorplanData.html +0 -7
- package/docs/interfaces/FloorplanEntrance.html +0 -14
- package/docs/interfaces/FloorplanExtraObject.html +0 -9
- package/docs/interfaces/FloorplanExtraObject3D.html +0 -5
- package/docs/interfaces/FloorplanFloorData.html +0 -9
- package/docs/interfaces/FloorplanImagePosition.html +0 -4
- package/docs/interfaces/FloorplanObserver.html +0 -8
- package/docs/interfaces/FloorplanOutlineItem.html +0 -6
- package/docs/interfaces/FloorplanPosition.html +0 -4
- package/docs/interfaces/FloorplanRoomItem.html +0 -24
- package/docs/interfaces/FloorplanRoomLabelItem.html +0 -6
- package/docs/interfaces/FloorplanServerBounding.html +0 -9
- package/docs/interfaces/FloorplanServerComputedData.html +0 -6
- package/docs/interfaces/FloorplanServerData.html +0 -4
- package/docs/interfaces/FloorplanServerDoorItem.html +0 -6
- package/docs/interfaces/FloorplanServerDoorPosition.html +0 -4
- package/docs/interfaces/FloorplanServerEntrance.html +0 -14
- package/docs/interfaces/FloorplanServerFloorData.html +0 -8
- package/docs/interfaces/FloorplanServerImagePosition.html +0 -4
- package/docs/interfaces/FloorplanServerObserver.html +0 -8
- package/docs/interfaces/FloorplanServerOutlineItem.html +0 -6
- package/docs/interfaces/FloorplanServerPosition.html +0 -4
- package/docs/interfaces/FloorplanServerRoomItem.html +0 -27
- package/docs/interfaces/FloorplanServerRoomLabelItem.html +0 -6
- package/docs/interfaces/GuideLineModeItem.GuideLineTagContainer.html +0 -4
- package/docs/interfaces/GuideLinePluginType.CatmullRomCurve3.html +0 -7
- package/docs/interfaces/GuideLinePluginType.EventMap.html +0 -13
- package/docs/interfaces/GuideLinePluginType.ExtraRouteData.html +0 -5
- package/docs/interfaces/GuideLinePluginType.GuideLineGeometryStyle.html +0 -8
- package/docs/interfaces/GuideLinePluginType.GuideLineItemContainer.html +0 -2
- package/docs/interfaces/GuideLinePluginType.GuideLineMaterialStyle.html +0 -32
- package/docs/interfaces/GuideLinePluginType.GuideLineMeshStyle.html +0 -4
- package/docs/interfaces/GuideLinePluginType.LineGeometriesConfig.html +0 -5
- package/docs/interfaces/GuideLinePluginType.ModelGuideLineStyle.html +0 -42
- package/docs/interfaces/GuideLinePluginType.ModelGuideLineTagData.html +0 -3
- package/docs/interfaces/GuideLinePluginType.PanoramaGuideLineStyle.html +0 -57
- package/docs/interfaces/GuideLinePluginType.PluginDataV2.html +0 -1
- package/docs/interfaces/GuideLinePluginType.PluginServerData.html +0 -2
- package/docs/interfaces/GuideLinePluginType.PluginState.html +0 -7
- package/docs/interfaces/GuideLinePluginType.Route.html +0 -13
- package/docs/interfaces/HelperOffset.html +0 -4
- package/docs/interfaces/ImagePlaneGroup.html +0 -3
- package/docs/interfaces/ItemLabelPluginData.html +0 -2
- package/docs/interfaces/ItemLabelPluginExportReturnsType.html +0 -7
- package/docs/interfaces/ItemLabelPluginParametersType.html +0 -5
- package/docs/interfaces/MinMax.html +0 -3
- package/docs/interfaces/ModelChassisCompassPluginData.html +0 -3
- package/docs/interfaces/ModelChassisCompassPluginExportType.html +0 -4
- package/docs/interfaces/ModelChassisCompassPluginParameterType.html +0 -3
- package/docs/interfaces/ModelEntryDoorGuidePluginData.html +0 -4
- package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +0 -4
- package/docs/interfaces/ModelItemLabelPluginData.html +0 -2
- package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +0 -7
- package/docs/interfaces/ModelItemLabelPluginParametersType.html +0 -3
- package/docs/interfaces/ModelMakerPluginType.BoxItemObjectData.html +0 -17
- package/docs/interfaces/ModelMakerPluginType.EventMap.html +0 -18
- package/docs/interfaces/ModelMakerPluginType.PrismItemObjectData.html +0 -23
- package/docs/interfaces/ModelMakerPluginType.ServerBaseItem.html +0 -11
- package/docs/interfaces/ModelMakerPluginType.ServerBoxItem.html +0 -10
- package/docs/interfaces/ModelMakerPluginType.ServerData.html +0 -3
- package/docs/interfaces/ModelMakerPluginType.ServerPrismItem.html +0 -10
- package/docs/interfaces/ModelMakerPluginType.ServerTrianglesItem.html +0 -10
- package/docs/interfaces/ModelMakerPluginType.State.html +0 -8
- package/docs/interfaces/ModelMakerPluginType.TrianglesItemObjectData.html +0 -11
- package/docs/interfaces/ModelRoomLabelPluginData.html +0 -2
- package/docs/interfaces/ModelTVVideoPluginData.html +0 -5
- package/docs/interfaces/ModelTVVideoPluginExportType.html +0 -4
- package/docs/interfaces/ModelTVVideoPluginParameterType.html +0 -2
- package/docs/interfaces/ModelViewPluginExportType.html +0 -8
- package/docs/interfaces/Object3DHelperState.html +0 -4
- package/docs/interfaces/ObjectHelperControllers.html +0 -5
- package/docs/interfaces/PaintBrushAction.html +0 -14
- package/docs/interfaces/PaintBrushConfigs.html +0 -8
- package/docs/interfaces/PaintBrushState.html +0 -6
- package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +0 -16
- package/docs/interfaces/PanoCursorRaycasterPluginParameterType.html +0 -1
- package/docs/interfaces/PanoMeasureParameterType.html +0 -20
- package/docs/interfaces/PanoMeasurePluginLineJson.html +0 -4
- package/docs/interfaces/PanoMeasurePluginOpenParameter.html +0 -4
- package/docs/interfaces/PanoMeasurePluginPointJson.html +0 -3
- package/docs/interfaces/PanoMeasurePluginPolylineJson.html +0 -7
- package/docs/interfaces/PanoRulerPluginExportType.html +0 -6
- package/docs/interfaces/PanoRulerPluginOptions.html +0 -3
- package/docs/interfaces/PanoRulerPluginParameterType.html +0 -4
- package/docs/interfaces/PanoRulerProPluginExportType.html +0 -5
- package/docs/interfaces/PanoRulerProPluginOptions.html +0 -3
- package/docs/interfaces/PanoRulerProPluginParameterType.html +0 -3
- package/docs/interfaces/PanoRulerProPluginState.html +0 -4
- package/docs/interfaces/PanoSpatialTagPluginContentEvent.html +0 -1
- package/docs/interfaces/PanoSpatialTagPluginContentReplacement.html +0 -1
- package/docs/interfaces/PanoSpatialTagPluginData.html +0 -7
- package/docs/interfaces/PanoSpatialTagPluginDataElement.html +0 -6
- package/docs/interfaces/PanoSpatialTagPluginExportType.html +0 -9
- package/docs/interfaces/PanoSpatialTagPluginOriginElement.html +0 -6
- package/docs/interfaces/PanoSpatialTagPluginParameterType.html +0 -9
- package/docs/interfaces/PanoSpatialTagPluginPointElement.html +0 -7
- package/docs/interfaces/PanoSpatialTagPluginTagElement.html +0 -6
- package/docs/interfaces/PanoVideoPluginType.LoadParams.html +0 -3
- package/docs/interfaces/PanoVideoPluginType.PanoVideoItem.html +0 -8
- package/docs/interfaces/PanoVideoPluginType.PluginData.html +0 -2
- package/docs/interfaces/PanoVideoPluginType.PluginEventMap.html +0 -15
- package/docs/interfaces/PanoVideoPluginType.PluginState.html +0 -2
- package/docs/interfaces/PanoVideoPluginType.VideoItem.html +0 -14
- package/docs/interfaces/PanoVideoPluginType.VideoMeshParams.html +0 -13
- package/docs/interfaces/PluginEventMap.html +0 -16
- package/docs/interfaces/Point.html +0 -4
- package/docs/interfaces/Room.html +0 -5
- package/docs/interfaces/RoomInfo.html +0 -3
- package/docs/interfaces/RoomLabel.html +0 -16
- package/docs/interfaces/RoomRules.html +0 -1
- package/docs/interfaces/Rooms.html +0 -1
- package/docs/interfaces/Scissor.html +0 -13
- package/docs/interfaces/SculptConfig.html +0 -19
- package/docs/interfaces/State.html +0 -7
- package/docs/interfaces/TagCacheInterface.html +0 -9
- package/docs/interfaces/TagConfig.html +0 -174
- package/docs/interfaces/TagGLTFObjectGroup.html +0 -3
- package/docs/interfaces/TagIconAnimationConfig.html +0 -7
- package/docs/interfaces/TagIconUrl.html +0 -22
- package/docs/interfaces/TagObjectGroup.html +0 -3
- package/docs/interfaces/TagState.html +0 -3
- package/docs/interfaces/TagStyle.html +0 -17
- package/docs/interfaces/Tags.html +0 -8
- package/docs/interfaces/TemporaryState.html +0 -2
- package/docs/interfaces/Util.AnimeInstance.html +0 -14
- package/docs/interfaces/Util.BlinkAnimeOptions.html +0 -21
- package/docs/interfaces/Util.EventHandlerConfig.html +0 -21
- package/docs/interfaces/Util.FiveDomEvent.html +0 -7
- package/docs/interfaces/Util.FiveDomEventMap.html +0 -20
- package/docs/interfaces/Util.LegacyMouseGroupParameter.html +0 -4
- package/docs/interfaces/Util.MagnifierParameter.html +0 -13
- package/docs/interfaces/Util.MouseGroupParameter.html +0 -4
- package/docs/interfaces/Util.ObjectInitialState.html +0 -9
- package/docs/interfaces/Util.PointIntersection.html +0 -21
- package/docs/interfaces/Util.PointSelectorHelperConfig.html +0 -6
- package/docs/interfaces/Util.ReBlinkAnimeOptions.html +0 -27
- package/docs/modules/AreaMakerPluginType.html +0 -17
- package/docs/modules/CruisePluginTypes.html +0 -14
- package/docs/modules/CurrentPanoImagePluginType.html +0 -6
- package/docs/modules/GuideLineItem.html +0 -2
- package/docs/modules/GuideLineModeItem.html +0 -3
- package/docs/modules/GuideLinePluginType.html +0 -25
- package/docs/modules/ModelMakerPluginType.html +0 -19
- package/docs/modules/PanoVideoPluginType.html +0 -8
- package/docs/modules/SculptData.html +0 -9
- package/docs/modules/SculptType.html +0 -2
- package/docs/modules/Util.html +0 -91
- package/docs/modules/Util.sculpt.html +0 -27
- package/docs/modules.html +0 -287
- package/docs/types/AddObject3DHelperConfig.html +0 -19
- package/docs/types/AreaMakerPluginType.AreaMakerItemEventMap.html +0 -7
- package/docs/types/AreaMakerPluginType.ItemRenderer.html +0 -1
- package/docs/types/AreaMakerPluginType.PluginData.html +0 -2
- package/docs/types/AreaMakerPluginType.ServerData.html +0 -2
- package/docs/types/ArrayPosition.html +0 -1
- package/docs/types/AudioAppearance.html +0 -1
- package/docs/types/BoxTag.html +0 -2
- package/docs/types/CSS3DRenderExportType.html +0 -1
- package/docs/types/CSS3DRenderPluginExportType.html +0 -1
- package/docs/types/CSS3DRenderPluginParameterType.html +0 -1
- package/docs/types/ClassFunctionParameters.html +0 -1
- package/docs/types/Color.html +0 -1
- package/docs/types/ContentTypeConfigKey.html +0 -1
- package/docs/types/ContentTypeConfigKeySplit.html +0 -1
- package/docs/types/ContentTypeMap.html +0 -1
- package/docs/types/Create3DDomContainerReturnType.html +0 -1
- package/docs/types/Create3DElementReturnType.html +0 -1
- package/docs/types/CruisePluginExportType.html +0 -1
- package/docs/types/CruisePluginTypes.CruiseData.html +0 -6
- package/docs/types/CruisePluginTypes.MoveEffect.html +0 -1
- package/docs/types/CurrentPanoImagePluginExportType.html +0 -1
- package/docs/types/DeprecatedMediaPlaneProperty.html +0 -3
- package/docs/types/DeprecatedTagProperty.html +0 -3
- package/docs/types/Direction-1.html +0 -1
- package/docs/types/Direction4.html +0 -1
- package/docs/types/ElementRenderer.html +0 -2
- package/docs/types/FloorplanGuidePluginParameterType.html +0 -1
- package/docs/types/FloorplanGuidePluginReturnType.html +0 -1
- package/docs/types/FloorplanRuleLabels.html +0 -2
- package/docs/types/FloorplanServerRuleLabels.html +0 -1
- package/docs/types/GuideLinePluginExportType.html +0 -1
- package/docs/types/GuideLinePluginType.GuideLineItem.html +0 -2
- package/docs/types/GuideLinePluginType.GuideLineItemEventMap.html +0 -1
- package/docs/types/GuideLinePluginType.GuideLineModeItemMode.html +0 -1
- package/docs/types/GuideLinePluginType.GuideLineStyle.html +0 -2
- package/docs/types/GuideLinePluginType.ModelGuideLineTag.html +0 -2
- package/docs/types/GuideLinePluginType.PathItem.html +0 -2
- package/docs/types/GuideLinePluginType.PluginData.html +0 -2
- package/docs/types/GuideLinePluginType.RouteConfig.html +0 -4
- package/docs/types/HelperEventMap.html +0 -1
- package/docs/types/InternalHelperEventMap.html +0 -1
- package/docs/types/MapviewFloorplanPluginParameterType.html +0 -1
- package/docs/types/MapviewFloorplanPluginReturnType.html +0 -1
- package/docs/types/MaskPosition.html +0 -3
- package/docs/types/MaskTag.html +0 -2
- package/docs/types/MeasureEndReason.html +0 -1
- package/docs/types/MeasurePluginConfig.html +0 -5
- package/docs/types/MeasurePluginEventMap.html +0 -1
- package/docs/types/MediaData.html +0 -2
- package/docs/types/MediaStore.html +0 -1
- package/docs/types/ModelEntryDoorGuidePluginParameterType.html +0 -1
- package/docs/types/ModelFloorplanPluginParameterType.html +0 -1
- package/docs/types/ModelFloorplanPluginReturnType.html +0 -1
- package/docs/types/ModelId.html +0 -1
- package/docs/types/ModelMakerPluginType.ElementRenderer.html +0 -1
- package/docs/types/ModelMakerPluginType.ItemType.html +0 -2
- package/docs/types/ModelMakerPluginType.MarkerItem.html +0 -1
- package/docs/types/ModelMakerPluginType.ServerItem.html +0 -2
- package/docs/types/ModelRoomLabelPluginParameters.html +0 -1
- package/docs/types/ModelRoomLabelPluginReturnType.html +0 -1
- package/docs/types/MoveArgs.html +0 -2
- package/docs/types/MoveOpts.html +0 -2
- package/docs/types/Object3DHelperEventMap.html +0 -1
- package/docs/types/ObjectFit.html +0 -1
- package/docs/types/PaintBrushEventMap.html +0 -1
- package/docs/types/PanoCompassPluginData.html +0 -1
- package/docs/types/PanoCompassPluginExportType.html +0 -1
- package/docs/types/PanoCompassPluginParameterType.html +0 -1
- package/docs/types/PanoFloorplanRadarPluginParameterType.html +0 -1
- package/docs/types/PanoFloorplanRadarPluginReturnType.html +0 -1
- package/docs/types/PanoIndex.html +0 -1
- package/docs/types/PanoMeasurePluginEvent.html +0 -1
- package/docs/types/PanoMeasureReturnType.html +0 -1
- package/docs/types/PanoSpatialTagPluginId.html +0 -1
- package/docs/types/PanoTagPluginExportInterface.html +0 -1
- package/docs/types/PanoTagPluginParamsInterface.html +0 -1
- package/docs/types/PanoVideoPluginParameterType.html +0 -1
- package/docs/types/PanoVideoPluginReturnType.html +0 -1
- package/docs/types/PickTagContentTypeInContentTypeConfigKey.html +0 -2
- package/docs/types/PipelinePluginParameterType.html +0 -1
- package/docs/types/PipelinePluginReturnType.html +0 -1
- package/docs/types/PlaneTag.html +0 -2
- package/docs/types/Point2DTag.html +0 -2
- package/docs/types/Point3DTag.html +0 -2
- package/docs/types/PointTagInstance.html +0 -1
- package/docs/types/PolygonPosition.html +0 -3
- package/docs/types/PolygonTag.html +0 -2
- package/docs/types/Position.html +0 -1
- package/docs/types/PositionFrom.html +0 -1
- package/docs/types/RotateArgs.html +0 -2
- package/docs/types/RotateOpts.html +0 -2
- package/docs/types/RuleLabelsKey.html +0 -1
- package/docs/types/RuleLabelsValue.html +0 -1
- package/docs/types/ScaleCallback.html +0 -1
- package/docs/types/ScalePosition.html +0 -3
- package/docs/types/SculptData.BoxData.html +0 -1
- package/docs/types/SculptData.CircleData.html +0 -1
- package/docs/types/SculptData.CylinderData.html +0 -1
- package/docs/types/SculptData.PointData.html +0 -1
- package/docs/types/SculptData.PolygonData.html +0 -1
- package/docs/types/SculptData.PolylineData.html +0 -1
- package/docs/types/SculptData.PrismData.html +0 -1
- package/docs/types/SculptData.RectangleData.html +0 -1
- package/docs/types/SculptType.Theme.html +0 -10
- package/docs/types/StickType.html +0 -1
- package/docs/types/Tag.html +0 -17
- package/docs/types/Tag2D.html +0 -2
- package/docs/types/Tag3D.html +0 -2
- package/docs/types/TagClickParams.html +0 -1
- package/docs/types/TagConfigByKey.html +0 -1
- package/docs/types/TagContentType.html +0 -1
- package/docs/types/TagContentTypeMapping.html +0 -1
- package/docs/types/TagDimensionType.html +0 -1
- package/docs/types/TagElement.html +0 -2
- package/docs/types/TagEvents.html +0 -1
- package/docs/types/TagGLTFObject.html +0 -1
- package/docs/types/TagHooks.html +0 -1
- package/docs/types/TagId.html +0 -1
- package/docs/types/TagInstance.html +0 -1
- package/docs/types/TagPlacement.html +0 -5
- package/docs/types/TagPointType.html +0 -2
- package/docs/types/TagRendererMap.html +0 -1
- package/docs/types/TopviewFloorplanPluginParameterType.html +0 -1
- package/docs/types/TopviewFloorplanPluginReturnType.html +0 -1
- package/docs/types/Util.ActionIfNoIntersection.html +0 -1
- package/docs/types/Util.AdherePoint.html +0 -2
- package/docs/types/Util.PointSelectorConfig.html +0 -1
- package/docs/types/Util.SupportedTarget.html +0 -2
- package/docs/types/Util.Target.html +0 -2
- package/docs/types/Util.ThreeObject.html +0 -2
- package/docs/types/WorkCode.html +0 -1
- package/docs/variables/FLOOR_TYPE_MAP.html +0 -2
- package/docs/variables/PLUGIN.html +0 -1
- package/docs/variables/ROOM_FETILE_TYPE_MAP.html +0 -2
- package/docs/variables/ROOM_TYPE_MAP.html +0 -2
- package/docs/variables/Util.ANIME_PRESETS.html +0 -2
- package/docs/variables/Util.CURRENT_PANO_IMAGE_DEFAULT_IMAGE.html +0 -2
- package/docs/variables/Util.DEFAULT_ANIME_CONFIG.html +0 -2
- package/docs/variables/Util.DEFAULT_STATIC_PREFIX.html +0 -2
- package/docs/variables/Util.DNALOGEL_DEFAULT_ASSETS.html +0 -2
- package/docs/variables/Util.ENTRY_DOOR_DEFAULT_IMAGE.html +0 -2
- package/docs/variables/Util.FLOORPLAN_DEFAULT_IMAGE.html +0 -2
- package/docs/variables/Util.GUIDELINE_DEFAULT_ARROW_TEXTURE.html +0 -2
- package/docs/variables/Util.GUIDELINE_WHITE_ARROW_TEXTURE.html +0 -2
- package/docs/variables/Util.MODEL_CHASSIS_COMPASS_DEFAULT_MODEL.html +0 -2
- package/docs/variables/Util.MODEL_ENTRY_DOOR_GUIDE_PLUGIN_DEFAULT_MODEL.html +0 -2
- package/docs/variables/Util.PANO_COMPASS_DEFAULT_IMAGE.html +0 -2
- package/docs/variables/Util.PANO_SPATIAL_TAG_BLUR_IMAGE.html +0 -2
- package/docs/variables/Util.PANO_TAG_DEFAULT_LINK_ICON.html +0 -2
- package/docs/variables/defaultGlobalConfig.html +0 -1
- package/docs/variables/itemLabelPluginServerParams.html +0 -1
- package/docs/variables/modelItemLabelPluginServerParams.html +0 -1
- package/docs/variables/modelRoomLabelPluginServerParams.html +0 -1
|
@@ -9,5 +9,8 @@ export declare const maskVertexShader = "\nvarying vec2 vUv;\nvoid main() {\n v
|
|
|
9
9
|
/**
|
|
10
10
|
* Fragment Shader
|
|
11
11
|
* 实现颜色匹配和高亮渲染逻辑
|
|
12
|
+
* 参考 MosaicPlugin 的边缘检测实现
|
|
12
13
|
*/
|
|
13
|
-
export declare const maskFragmentShader = "\n#
|
|
14
|
+
export declare const maskFragmentShader = "\n#define RESOLUTION 2048.0\n\nvarying vec2 vUv;\nuniform sampler2D map;\nuniform vec4 color;\nuniform float tolerance;\nuniform vec3 highlightColor;\nuniform float opacity;\n\nfloat colorGap(vec3 color1, vec3 color2) {\n float gap = abs(color1.r - color2.r) + abs(color1.g - color2.g) + abs(color1.b - color2.b);\n return gap;\n}\n\n// \u5224\u65AD\u50CF\u7D20\u662F\u5426\u5339\u914D\u76EE\u6807\u989C\u8272\nbool isMatchingColor(vec3 pixelColor) {\n // \u6392\u9664\u9ED1\u8272\u50CF\u7D20\n if (pixelColor.r == 0.0 && pixelColor.g == 0.0 && pixelColor.b == 0.0) {\n return false;\n }\n return colorGap(pixelColor, color.rgb) < tolerance;\n}\n\n// \u8FB9\u7F18\u68C0\u6D4B\u51FD\u6570\uFF1A\u53C2\u8003 MosaicPlugin \u5B9E\u73B0\nfloat detectEdge(sampler2D map, vec2 uv) {\n vec4 centerColor = texture2D(map, uv);\n \n // \u5F53\u524D\u50CF\u7D20\u5FC5\u987B\u5339\u914D\u76EE\u6807\u989C\u8272\n if (!isMatchingColor(centerColor.rgb)) {\n return 0.0;\n }\n \n float step = 1.0 / RESOLUTION;\n \n // \u68C0\u67E54\u4E2A\u4E3B\u8981\u65B9\u5411\u7684\u90BB\u5C45\u50CF\u7D20\n vec4 upColor = texture2D(map, uv + vec2(0.0, -step));\n vec4 leftColor = texture2D(map, uv + vec2(-step, 0.0));\n vec4 rightColor = texture2D(map, uv + vec2(step, 0.0));\n vec4 downColor = texture2D(map, uv + vec2(0.0, step));\n \n // \u53EA\u6709\u5F53\u524D\u50CF\u7D20\u5339\u914D\u989C\u8272\uFF0C\u4E14\u81F3\u5C11\u6709\u4E00\u4E2A\u90BB\u5C45\u4E0D\u5339\u914D\u65F6\uFF0C\u624D\u662F\u8FB9\u7F18\n bool hasNonMatchingNeighbor = \n !isMatchingColor(upColor.rgb) || \n !isMatchingColor(leftColor.rgb) || \n !isMatchingColor(rightColor.rgb) || \n !isMatchingColor(downColor.rgb);\n \n return hasNonMatchingNeighbor ? 1.0 : 0.0;\n}\n\nvoid main() {\n vec4 image = texture2D(map, vUv);\n \n // \u6392\u9664\u9ED1\u8272\u50CF\u7D20\n if (image.r == 0.0 && image.g == 0.0 && image.b == 0.0) {\n discard;\n }\n \n // \u8BA1\u7B97\u5F53\u524D\u50CF\u7D20\u4E0E\u76EE\u6807\u989C\u8272\u7684\u5DEE\u5F02\n float gap = colorGap(image.rgb, color.rgb);\n \n // \u4F7F\u7528\u56FA\u5B9A\u5E73\u6ED1\u8303\u56F4\u5B9E\u73B0\u989C\u8272\u5339\u914D\u8FB9\u754C\n float smoothRange = 0.01;\n \n // \u5E73\u6ED1\u7684\u989C\u8272\u5339\u914D\u56E0\u5B50\uFF080-1\uFF09\n float matchFactor = 1.0 - smoothstep(tolerance - smoothRange, tolerance + smoothRange, gap);\n \n if (matchFactor > 0.0) {\n // \u4F7F\u7528\u65B0\u7684\u8FB9\u7F18\u68C0\u6D4B\u65B9\u6CD5\n float isEdge = detectEdge(map, vUv);\n \n // \u8FB9\u7F18\u4F7F\u7528\u5B8C\u5168\u4E0D\u900F\u660E\uFF0C\u5185\u90E8\u4F7F\u7528\u8BBE\u5B9A\u7684\u900F\u660E\u5EA6\n float alpha = mix(opacity, 1.0, isEdge);\n \n // \u5E94\u7528\u5339\u914D\u56E0\u5B50\u5B9E\u73B0\u8FB9\u754C\u5E73\u6ED1\uFF0C\u4F46\u4FDD\u7559\u6700\u5C0F 0.9 \u7684\u900F\u660E\u5EA6\n // \u8FD9\u6837\u5373\u4F7F\u5728\u8FB9\u754C\u5904\u4E5F\u4E0D\u4F1A\u5B8C\u5168\u900F\u660E\uFF0C\u540C\u65F6\u5B8C\u5168\u5339\u914D\u533A\u57DF\u4FDD\u6301\u8BBE\u5B9A\u7684\u900F\u660E\u5EA6\n alpha *= max(matchFactor, 0.9);\n \n gl_FragColor = vec4(highlightColor, alpha);\n } else {\n discard;\n }\n}\n";
|
|
15
|
+
/** 多 style:mergedTexture 中每组 3 像素为 color(id)/tolerance+highlight/opacity,用 color 作 id 匹配 */
|
|
16
|
+
export declare const maskFragmentShaderMulti = "\n#define RESOLUTION 2048.0\n#define MAX_GROUPS 64\n#define STRICT_MATCH 0.5/255.0\n\nvarying vec2 vUv;\nuniform sampler2D map;\nuniform sampler2D mergedTexture;\nuniform float groupCount;\nuniform float textureWidth;\nuniform float pixelsPerGroup;\n\nfloat colorGap(vec3 a, vec3 b) {\n return abs(a.r - b.r) + abs(a.g - b.g) + abs(a.b - b.b);\n}\n\nvec4 readStyleColor(float groupIndex) {\n float px = groupIndex * pixelsPerGroup;\n float texX = (px + 0.5) / textureWidth;\n return texture2D(mergedTexture, vec2(texX, 0.5));\n}\n\nvec4 readStyleToleranceHighlight(float groupIndex) {\n float px = groupIndex * pixelsPerGroup + 1.0;\n float texX = (px + 0.5) / textureWidth;\n return texture2D(mergedTexture, vec2(texX, 0.5));\n}\n\nfloat readStyleOpacity(float groupIndex) {\n float px = groupIndex * pixelsPerGroup + 2.0;\n float texX = (px + 0.5) / textureWidth;\n return texture2D(mergedTexture, vec2(texX, 0.5)).r;\n}\n\nfloat detectEdge(sampler2D map, vec2 uv, vec3 matchColor, float tolerance) {\n vec4 centerColor = texture2D(map, uv);\n if (colorGap(centerColor.rgb, matchColor) >= tolerance) return 0.0;\n float step = 1.0 / RESOLUTION;\n vec4 u = texture2D(map, uv + vec2(0.0, -step));\n vec4 l = texture2D(map, uv + vec2(-step, 0.0));\n vec4 r = texture2D(map, uv + vec2(step, 0.0));\n vec4 d = texture2D(map, uv + vec2(0.0, step));\n bool edge = colorGap(u.rgb, matchColor) >= tolerance || colorGap(l.rgb, matchColor) >= tolerance\n || colorGap(r.rgb, matchColor) >= tolerance || colorGap(d.rgb, matchColor) >= tolerance;\n return edge ? 1.0 : 0.0;\n}\n\nvoid main() {\n vec4 image = texture2D(map, vUv);\n if (image.r == 0.0 && image.g == 0.0 && image.b == 0.0) discard;\n\n // WebGL 1.0 \u8981\u6C42\u5FAA\u73AF\u7EC8\u6B62\u6761\u4EF6\u5FC5\u987B\u662F\u7F16\u8BD1\u65F6\u5E38\u91CF\uFF0C\u6240\u4EE5\u7528 MAX_GROUPS\uFF0C\u5FAA\u73AF\u5185\u68C0\u67E5 groupCount\n for (float i = 0.0; i < float(MAX_GROUPS); i += 1.0) {\n if (i < groupCount) {\n vec4 styleColor = readStyleColor(i);\n vec3 colorRgb = styleColor.rgb;\n float tol = readStyleToleranceHighlight(i).r * 3.0;\n vec3 highlight = readStyleToleranceHighlight(i).gba;\n float opacity = readStyleOpacity(i);\n \n if (opacity > 0.0) {\n float gap = colorGap(image.rgb, colorRgb);\n if (gap > STRICT_MATCH) continue;\n float smoothRange = 0.01;\n float matchFactor = 1.0 - smoothstep(tol - smoothRange, tol + smoothRange, gap);\n if (matchFactor > 0.0) {\n float isEdge = detectEdge(map, vUv, colorRgb, tol);\n float alpha = mix(opacity, 1.0, isEdge);\n alpha *= max(matchFactor, 0.9);\n gl_FragColor = vec4(highlight, alpha);\n return;\n }\n }\n }\n }\n discard;\n}\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const e = (
|
|
2
2
|
/* glsl */
|
|
3
3
|
`
|
|
4
4
|
varying vec2 vUv;
|
|
@@ -7,10 +7,10 @@ void main() {
|
|
|
7
7
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
8
8
|
}
|
|
9
9
|
`
|
|
10
|
-
),
|
|
10
|
+
), o = (
|
|
11
11
|
/* glsl */
|
|
12
12
|
`
|
|
13
|
-
#
|
|
13
|
+
#define RESOLUTION 2048.0
|
|
14
14
|
|
|
15
15
|
varying vec2 vUv;
|
|
16
16
|
uniform sampler2D map;
|
|
@@ -24,57 +24,69 @@ float colorGap(vec3 color1, vec3 color2) {
|
|
|
24
24
|
return gap;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
// 判断像素是否匹配目标颜色
|
|
28
|
+
bool isMatchingColor(vec3 pixelColor) {
|
|
29
|
+
// 排除黑色像素
|
|
30
|
+
if (pixelColor.r == 0.0 && pixelColor.g == 0.0 && pixelColor.b == 0.0) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return colorGap(pixelColor, color.rgb) < tolerance;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// 边缘检测函数:参考 MosaicPlugin 实现
|
|
37
|
+
float detectEdge(sampler2D map, vec2 uv) {
|
|
38
|
+
vec4 centerColor = texture2D(map, uv);
|
|
39
|
+
|
|
40
|
+
// 当前像素必须匹配目标颜色
|
|
41
|
+
if (!isMatchingColor(centerColor.rgb)) {
|
|
42
|
+
return 0.0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
float step = 1.0 / RESOLUTION;
|
|
46
|
+
|
|
47
|
+
// 检查4个主要方向的邻居像素
|
|
48
|
+
vec4 upColor = texture2D(map, uv + vec2(0.0, -step));
|
|
49
|
+
vec4 leftColor = texture2D(map, uv + vec2(-step, 0.0));
|
|
50
|
+
vec4 rightColor = texture2D(map, uv + vec2(step, 0.0));
|
|
51
|
+
vec4 downColor = texture2D(map, uv + vec2(0.0, step));
|
|
52
|
+
|
|
53
|
+
// 只有当前像素匹配颜色,且至少有一个邻居不匹配时,才是边缘
|
|
54
|
+
bool hasNonMatchingNeighbor =
|
|
55
|
+
!isMatchingColor(upColor.rgb) ||
|
|
56
|
+
!isMatchingColor(leftColor.rgb) ||
|
|
57
|
+
!isMatchingColor(rightColor.rgb) ||
|
|
58
|
+
!isMatchingColor(downColor.rgb);
|
|
59
|
+
|
|
60
|
+
return hasNonMatchingNeighbor ? 1.0 : 0.0;
|
|
61
|
+
}
|
|
62
|
+
|
|
27
63
|
void main() {
|
|
28
64
|
vec4 image = texture2D(map, vUv);
|
|
29
65
|
|
|
30
|
-
// 计算当前像素与目标颜色的差异
|
|
31
|
-
float gap = colorGap(image.rgb, color.rgb);
|
|
32
|
-
|
|
33
66
|
// 排除黑色像素
|
|
34
67
|
if (image.r == 0.0 && image.g == 0.0 && image.b == 0.0) {
|
|
35
68
|
discard;
|
|
36
69
|
}
|
|
37
70
|
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
#endif
|
|
71
|
+
// 计算当前像素与目标颜色的差异
|
|
72
|
+
float gap = colorGap(image.rgb, color.rgb);
|
|
73
|
+
|
|
74
|
+
// 使用固定平滑范围实现颜色匹配边界
|
|
75
|
+
float smoothRange = 0.01;
|
|
44
76
|
|
|
45
77
|
// 平滑的颜色匹配因子(0-1)
|
|
46
78
|
float matchFactor = 1.0 - smoothstep(tolerance - smoothRange, tolerance + smoothRange, gap);
|
|
47
79
|
|
|
48
80
|
if (matchFactor > 0.0) {
|
|
49
|
-
//
|
|
50
|
-
float
|
|
51
|
-
|
|
52
|
-
vec4 colorLeft = texture2D(map, vUv + vec2(-edgeWidth, 0.0));
|
|
53
|
-
vec4 colorRight = texture2D(map, vUv + vec2(edgeWidth, 0.0));
|
|
54
|
-
vec4 colorUp = texture2D(map, vUv + vec2(0.0, -edgeWidth));
|
|
55
|
-
vec4 colorDown = texture2D(map, vUv + vec2(0.0, edgeWidth));
|
|
56
|
-
|
|
57
|
-
// 计算边缘强度
|
|
58
|
-
float edgeStrength = 0.0;
|
|
59
|
-
|
|
60
|
-
if (colorGap(colorLeft.rgb, color.rgb) >= tolerance || (colorLeft.r == 0.0 && colorLeft.g == 0.0 && colorLeft.b == 0.0)) {
|
|
61
|
-
edgeStrength += 0.25;
|
|
62
|
-
}
|
|
63
|
-
if (colorGap(colorRight.rgb, color.rgb) >= tolerance || (colorRight.r == 0.0 && colorRight.g == 0.0 && colorRight.b == 0.0)) {
|
|
64
|
-
edgeStrength += 0.25;
|
|
65
|
-
}
|
|
66
|
-
if (colorGap(colorUp.rgb, color.rgb) >= tolerance || (colorUp.r == 0.0 && colorUp.g == 0.0 && colorUp.b == 0.0)) {
|
|
67
|
-
edgeStrength += 0.25;
|
|
68
|
-
}
|
|
69
|
-
if (colorGap(colorDown.rgb, color.rgb) >= tolerance || (colorDown.r == 0.0 && colorDown.g == 0.0 && colorDown.b == 0.0)) {
|
|
70
|
-
edgeStrength += 0.25;
|
|
71
|
-
}
|
|
81
|
+
// 使用新的边缘检测方法
|
|
82
|
+
float isEdge = detectEdge(map, vUv);
|
|
72
83
|
|
|
73
|
-
//
|
|
74
|
-
float alpha = mix(opacity, 1.0,
|
|
84
|
+
// 边缘使用完全不透明,内部使用设定的透明度
|
|
85
|
+
float alpha = mix(opacity, 1.0, isEdge);
|
|
75
86
|
|
|
76
|
-
//
|
|
77
|
-
|
|
87
|
+
// 应用匹配因子实现边界平滑,但保留最小 0.9 的透明度
|
|
88
|
+
// 这样即使在边界处也不会完全透明,同时完全匹配区域保持设定的透明度
|
|
89
|
+
alpha *= max(matchFactor, 0.9);
|
|
78
90
|
|
|
79
91
|
gl_FragColor = vec4(highlightColor, alpha);
|
|
80
92
|
} else {
|
|
@@ -82,8 +94,89 @@ void main() {
|
|
|
82
94
|
}
|
|
83
95
|
}
|
|
84
96
|
`
|
|
97
|
+
), r = (
|
|
98
|
+
/* glsl */
|
|
99
|
+
`
|
|
100
|
+
#define RESOLUTION 2048.0
|
|
101
|
+
#define MAX_GROUPS 64
|
|
102
|
+
#define STRICT_MATCH 0.5/255.0
|
|
103
|
+
|
|
104
|
+
varying vec2 vUv;
|
|
105
|
+
uniform sampler2D map;
|
|
106
|
+
uniform sampler2D mergedTexture;
|
|
107
|
+
uniform float groupCount;
|
|
108
|
+
uniform float textureWidth;
|
|
109
|
+
uniform float pixelsPerGroup;
|
|
110
|
+
|
|
111
|
+
float colorGap(vec3 a, vec3 b) {
|
|
112
|
+
return abs(a.r - b.r) + abs(a.g - b.g) + abs(a.b - b.b);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
vec4 readStyleColor(float groupIndex) {
|
|
116
|
+
float px = groupIndex * pixelsPerGroup;
|
|
117
|
+
float texX = (px + 0.5) / textureWidth;
|
|
118
|
+
return texture2D(mergedTexture, vec2(texX, 0.5));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
vec4 readStyleToleranceHighlight(float groupIndex) {
|
|
122
|
+
float px = groupIndex * pixelsPerGroup + 1.0;
|
|
123
|
+
float texX = (px + 0.5) / textureWidth;
|
|
124
|
+
return texture2D(mergedTexture, vec2(texX, 0.5));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
float readStyleOpacity(float groupIndex) {
|
|
128
|
+
float px = groupIndex * pixelsPerGroup + 2.0;
|
|
129
|
+
float texX = (px + 0.5) / textureWidth;
|
|
130
|
+
return texture2D(mergedTexture, vec2(texX, 0.5)).r;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
float detectEdge(sampler2D map, vec2 uv, vec3 matchColor, float tolerance) {
|
|
134
|
+
vec4 centerColor = texture2D(map, uv);
|
|
135
|
+
if (colorGap(centerColor.rgb, matchColor) >= tolerance) return 0.0;
|
|
136
|
+
float step = 1.0 / RESOLUTION;
|
|
137
|
+
vec4 u = texture2D(map, uv + vec2(0.0, -step));
|
|
138
|
+
vec4 l = texture2D(map, uv + vec2(-step, 0.0));
|
|
139
|
+
vec4 r = texture2D(map, uv + vec2(step, 0.0));
|
|
140
|
+
vec4 d = texture2D(map, uv + vec2(0.0, step));
|
|
141
|
+
bool edge = colorGap(u.rgb, matchColor) >= tolerance || colorGap(l.rgb, matchColor) >= tolerance
|
|
142
|
+
|| colorGap(r.rgb, matchColor) >= tolerance || colorGap(d.rgb, matchColor) >= tolerance;
|
|
143
|
+
return edge ? 1.0 : 0.0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
void main() {
|
|
147
|
+
vec4 image = texture2D(map, vUv);
|
|
148
|
+
if (image.r == 0.0 && image.g == 0.0 && image.b == 0.0) discard;
|
|
149
|
+
|
|
150
|
+
// WebGL 1.0 要求循环终止条件必须是编译时常量,所以用 MAX_GROUPS,循环内检查 groupCount
|
|
151
|
+
for (float i = 0.0; i < float(MAX_GROUPS); i += 1.0) {
|
|
152
|
+
if (i < groupCount) {
|
|
153
|
+
vec4 styleColor = readStyleColor(i);
|
|
154
|
+
vec3 colorRgb = styleColor.rgb;
|
|
155
|
+
float tol = readStyleToleranceHighlight(i).r * 3.0;
|
|
156
|
+
vec3 highlight = readStyleToleranceHighlight(i).gba;
|
|
157
|
+
float opacity = readStyleOpacity(i);
|
|
158
|
+
|
|
159
|
+
if (opacity > 0.0) {
|
|
160
|
+
float gap = colorGap(image.rgb, colorRgb);
|
|
161
|
+
if (gap > STRICT_MATCH) continue;
|
|
162
|
+
float smoothRange = 0.01;
|
|
163
|
+
float matchFactor = 1.0 - smoothstep(tol - smoothRange, tol + smoothRange, gap);
|
|
164
|
+
if (matchFactor > 0.0) {
|
|
165
|
+
float isEdge = detectEdge(map, vUv, colorRgb, tol);
|
|
166
|
+
float alpha = mix(opacity, 1.0, isEdge);
|
|
167
|
+
alpha *= max(matchFactor, 0.9);
|
|
168
|
+
gl_FragColor = vec4(highlight, alpha);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
discard;
|
|
175
|
+
}
|
|
176
|
+
`
|
|
85
177
|
);
|
|
86
178
|
export {
|
|
87
|
-
|
|
88
|
-
|
|
179
|
+
o as maskFragmentShader,
|
|
180
|
+
r as maskFragmentShaderMulti,
|
|
181
|
+
e as maskVertexShader
|
|
89
182
|
};
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type PanoTagPluginController from '..';
|
|
2
|
+
import type { TagContentType, Tag as TagData, TagInstance, TagClickParams } from '../..';
|
|
3
|
+
import { BaseTag } from './BaseTag';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import type { PartialObjectDeep } from '../../../typings/typings';
|
|
6
|
+
import type { Tag } from '../..';
|
|
7
|
+
import type { State as FiveState } from '@realsee/five';
|
|
8
|
+
export type MaskTagInterface<C extends TagContentType = TagContentType> = TagInstance<C, 'Mask'>;
|
|
9
|
+
/**
|
|
10
|
+
* Mask 类型的标签
|
|
11
|
+
* 基于全景图 mask 和颜色区域进行物体标记
|
|
12
|
+
*/
|
|
13
|
+
export declare class MaskTag<C extends TagContentType = TagContentType> extends BaseTag<C, 'Mask'> {
|
|
14
|
+
/**
|
|
15
|
+
* Mask 纹理缓存(静态,所有 MaskTag 实例共享)
|
|
16
|
+
* key: mask URL 或 canvas 的 symbol, value: { texture: THREE.Texture, refCount: number, abortController?: AbortController }
|
|
17
|
+
*/
|
|
18
|
+
private static maskTextureCache;
|
|
19
|
+
/**
|
|
20
|
+
* Canvas 到 Symbol 的映射(用于缓存 canvas 纹理)
|
|
21
|
+
*/
|
|
22
|
+
private static canvasSymbolMap;
|
|
23
|
+
/**
|
|
24
|
+
* mask 图片 URL 或 Canvas 元素(2:1 全景图格式)
|
|
25
|
+
*/
|
|
26
|
+
maskUrl: string | HTMLCanvasElement;
|
|
27
|
+
/**
|
|
28
|
+
* 目标颜色(RGB 格式)
|
|
29
|
+
*/
|
|
30
|
+
targetColor: [number, number, number];
|
|
31
|
+
/**
|
|
32
|
+
* mask 渲染的 mesh 对象(使用 Sphere)
|
|
33
|
+
*/
|
|
34
|
+
maskMesh?: THREE.Mesh;
|
|
35
|
+
/**
|
|
36
|
+
* mask 纹理对象
|
|
37
|
+
*/
|
|
38
|
+
private maskTexture?;
|
|
39
|
+
/**
|
|
40
|
+
* 是否正在加载 mask
|
|
41
|
+
*/
|
|
42
|
+
private loadingMask;
|
|
43
|
+
/**
|
|
44
|
+
* 资源是否已释放
|
|
45
|
+
*/
|
|
46
|
+
private _disposed;
|
|
47
|
+
/**
|
|
48
|
+
* 标签样式配置
|
|
49
|
+
*/
|
|
50
|
+
private tagStyle?;
|
|
51
|
+
/**
|
|
52
|
+
* 点击事件清理函数
|
|
53
|
+
*/
|
|
54
|
+
private clickEventDispose?;
|
|
55
|
+
constructor(plugin: PanoTagPluginController, tagData: TagData);
|
|
56
|
+
/**
|
|
57
|
+
* 计算法向量
|
|
58
|
+
* Mask 标签返回向上的法向量(因为是贴在 cube 面上)
|
|
59
|
+
*/
|
|
60
|
+
computeNormal(): THREE.Vector3;
|
|
61
|
+
/**
|
|
62
|
+
* 获取额外的闪烁目标
|
|
63
|
+
* 返回 maskMesh 用于 blink 动画
|
|
64
|
+
*/
|
|
65
|
+
protected getAdditionalBlinkTargets(): any | any[] | null;
|
|
66
|
+
/**
|
|
67
|
+
* 更新标签数据
|
|
68
|
+
*/
|
|
69
|
+
set(tag: PartialObjectDeep<Tag<C, 'Mask'>>, deepMerge?: boolean): void;
|
|
70
|
+
/**
|
|
71
|
+
* 重写 getVisible 方法
|
|
72
|
+
* Mask 标签仅在当前点位可见
|
|
73
|
+
*/
|
|
74
|
+
getVisible(fiveState?: Partial<FiveState>): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* 重写 computeVisible 方法
|
|
77
|
+
* 增加 Mask 特有的可见性检查逻辑,用于 whyHide 功能
|
|
78
|
+
*/
|
|
79
|
+
protected computeVisible(_fiveState?: Partial<FiveState>): {
|
|
80
|
+
value: boolean;
|
|
81
|
+
reason?: any;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* 点击事件处理
|
|
85
|
+
*/
|
|
86
|
+
onClick(params: Pick<TagClickParams, 'target'>): void;
|
|
87
|
+
/**
|
|
88
|
+
* 展开自己,收起其他标签
|
|
89
|
+
*/
|
|
90
|
+
unfoldAndFoldOthers(): void;
|
|
91
|
+
/**
|
|
92
|
+
* 展开标签详情
|
|
93
|
+
*/
|
|
94
|
+
unfold(): void;
|
|
95
|
+
/**
|
|
96
|
+
* 折叠标签详情
|
|
97
|
+
*/
|
|
98
|
+
fold(): void;
|
|
99
|
+
/**
|
|
100
|
+
* 设置展开/折叠状态
|
|
101
|
+
*/
|
|
102
|
+
setUnfold(unfolded: boolean): void;
|
|
103
|
+
/**
|
|
104
|
+
* 更新屏幕位置
|
|
105
|
+
*/
|
|
106
|
+
updateScreenPosition(): void;
|
|
107
|
+
/**
|
|
108
|
+
* 应用可见性变化
|
|
109
|
+
*/
|
|
110
|
+
applyVisible(): void;
|
|
111
|
+
/**
|
|
112
|
+
* 更新 mesh 的位置和旋转(跟随观察者)
|
|
113
|
+
* 参考 itemMask 实现
|
|
114
|
+
*/
|
|
115
|
+
private updateMeshTransform;
|
|
116
|
+
/**
|
|
117
|
+
* 初始化 Mask Mesh(使用 Sphere)
|
|
118
|
+
*/
|
|
119
|
+
private initializeMaskMesh;
|
|
120
|
+
/**
|
|
121
|
+
* 创建 Sphere mesh(参考 itemMask 实现)
|
|
122
|
+
*/
|
|
123
|
+
private createSphereMesh;
|
|
124
|
+
/**
|
|
125
|
+
* 获取 Mask 样式配置(合并用户配置和默认值)
|
|
126
|
+
*/
|
|
127
|
+
private getMaskStyle;
|
|
128
|
+
/**
|
|
129
|
+
* 设置点击事件
|
|
130
|
+
*/
|
|
131
|
+
private setupClickEvents;
|
|
132
|
+
/**
|
|
133
|
+
* 清理点击事件
|
|
134
|
+
*/
|
|
135
|
+
private cleanupClickEvents;
|
|
136
|
+
/**
|
|
137
|
+
* 重新加载 mask 图
|
|
138
|
+
* @param oldMaskUrl 旧的 mask 源,用于正确释放纹理缓存(调用 set 时已更新 this.maskUrl,需传入旧值)
|
|
139
|
+
*/
|
|
140
|
+
private reloadMask;
|
|
141
|
+
/**
|
|
142
|
+
* 更新 mask 样式
|
|
143
|
+
*/
|
|
144
|
+
private updateMaskStyle;
|
|
145
|
+
/**
|
|
146
|
+
* 更新 Canvas 纹理(仅当 maskUrl 为 Canvas 时有效)
|
|
147
|
+
* 当 canvas 内容发生变化时,调用此方法更新渲染
|
|
148
|
+
*/
|
|
149
|
+
updateCanvasTexture(): void;
|
|
150
|
+
/**
|
|
151
|
+
* 清理 MaskTag 特有的资源(内部方法,避免重复调用)
|
|
152
|
+
*/
|
|
153
|
+
private disposeMaskResources;
|
|
154
|
+
/**
|
|
155
|
+
* 清理 MaskTag 特有的资源(公开方法)
|
|
156
|
+
*/
|
|
157
|
+
dispose(): void;
|
|
158
|
+
/**
|
|
159
|
+
* 禁用标签(重写父类方法)
|
|
160
|
+
*/
|
|
161
|
+
disable(): void;
|
|
162
|
+
/**
|
|
163
|
+
* 销毁标签(重写父类方法)
|
|
164
|
+
*/
|
|
165
|
+
destroy(): void;
|
|
166
|
+
/**
|
|
167
|
+
* 获取 mask 的缓存 key
|
|
168
|
+
* @param maskSource mask URL 或 Canvas
|
|
169
|
+
* @returns 缓存 key
|
|
170
|
+
*/
|
|
171
|
+
private static getMaskCacheKey;
|
|
172
|
+
/**
|
|
173
|
+
* 加载 Mask 纹理(静态方法,支持缓存和引用计数)
|
|
174
|
+
* @param maskSource mask 图片 URL 或 Canvas 元素
|
|
175
|
+
* @returns Promise<THREE.Texture>
|
|
176
|
+
*/
|
|
177
|
+
private static loadMaskTexture;
|
|
178
|
+
/**
|
|
179
|
+
* 释放 Mask 纹理(静态方法)
|
|
180
|
+
* @param maskSource mask 图片 URL 或 Canvas 元素
|
|
181
|
+
*/
|
|
182
|
+
private static releaseMaskTexture;
|
|
183
|
+
/**
|
|
184
|
+
* 获取当前缓存的纹理统计信息(用于性能监控和调试)
|
|
185
|
+
* @returns 缓存统计信息
|
|
186
|
+
*/
|
|
187
|
+
static getCacheStats(): {
|
|
188
|
+
totalCached: number;
|
|
189
|
+
totalRefCount: number;
|
|
190
|
+
estimatedMemoryMB: number;
|
|
191
|
+
cacheEntries: Array<{
|
|
192
|
+
source: string;
|
|
193
|
+
refCount: number;
|
|
194
|
+
sizeMB: number;
|
|
195
|
+
}>;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* 强制清理所有缓存的纹理(用于内存管理,谨慎使用)
|
|
199
|
+
* 注意:这会释放所有纹理,即使它们仍在使用中
|
|
200
|
+
*/
|
|
201
|
+
static clearAllCache(): void;
|
|
202
|
+
}
|