@kitware/vtk.js 28.10.2 → 28.11.1
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/Common/Core/Base64.js +53 -82
- package/Common/Core/CellArray.js +52 -60
- package/Common/Core/ClassHierarchy.js +8 -36
- package/Common/Core/DataArray/Constants.js +6 -6
- package/Common/Core/DataArray.js +193 -277
- package/Common/Core/Endian.js +14 -17
- package/Common/Core/HalfFloat.js +17 -34
- package/Common/Core/ImageHelper.js +17 -25
- package/Common/Core/LookupTable.js +131 -144
- package/Common/Core/Math/Constants.js +8 -8
- package/Common/Core/Math/index.js +754 -942
- package/Common/Core/Math.js +2 -4
- package/Common/Core/MatrixBuilder.js +99 -151
- package/Common/Core/Points.js +43 -43
- package/Common/Core/PriorityQueue.js +30 -28
- package/Common/Core/ProgressHandler.js +31 -32
- package/Common/Core/ScalarsToColors/Constants.js +4 -4
- package/Common/Core/ScalarsToColors.js +196 -253
- package/Common/Core/StringArray.js +48 -73
- package/Common/Core/URLExtract.js +10 -29
- package/Common/Core/VariantArray.js +48 -73
- package/Common/Core.js +11 -11
- package/Common/DataModel/AbstractPointLocator.js +19 -17
- package/Common/DataModel/BoundingBox.js +322 -490
- package/Common/DataModel/Box.js +46 -63
- package/Common/DataModel/CardinalSpline1D.js +92 -102
- package/Common/DataModel/Cell.js +41 -61
- package/Common/DataModel/CellLinks.js +91 -127
- package/Common/DataModel/CellTypes/Constants.js +7 -6
- package/Common/DataModel/CellTypes.js +55 -74
- package/Common/DataModel/Collection.js +45 -61
- package/Common/DataModel/Cone.js +28 -20
- package/Common/DataModel/Cylinder.js +41 -35
- package/Common/DataModel/DataSet/Constants.js +11 -5
- package/Common/DataModel/DataSet.js +37 -25
- package/Common/DataModel/DataSetAttributes/Constants.js +18 -18
- package/Common/DataModel/DataSetAttributes/FieldData.js +103 -194
- package/Common/DataModel/DataSetAttributes.js +96 -138
- package/Common/DataModel/EdgeLocator.js +45 -70
- package/Common/DataModel/ITKHelper.js +67 -137
- package/Common/DataModel/ImageData.js +115 -172
- package/Common/DataModel/ImplicitBoolean/Constants.js +2 -2
- package/Common/DataModel/ImplicitBoolean.js +66 -96
- package/Common/DataModel/IncrementalOctreeNode.js +201 -231
- package/Common/DataModel/IncrementalOctreePointLocator.js +160 -198
- package/Common/DataModel/KochanekSpline1D.js +78 -81
- package/Common/DataModel/Line/Constants.js +2 -2
- package/Common/DataModel/Line.js +82 -105
- package/Common/DataModel/Locator.js +17 -10
- package/Common/DataModel/Molecule.js +26 -17
- package/Common/DataModel/PiecewiseFunction.js +218 -239
- package/Common/DataModel/Plane.js +90 -113
- package/Common/DataModel/PointSet.js +30 -26
- package/Common/DataModel/PolyData/Constants.js +2 -2
- package/Common/DataModel/PolyData.js +95 -120
- package/Common/DataModel/PolyLine.js +44 -61
- package/Common/DataModel/Polygon/Constants.js +4 -4
- package/Common/DataModel/Polygon.js +128 -169
- package/Common/DataModel/Quad/Constants.js +2 -2
- package/Common/DataModel/Quad.js +61 -100
- package/Common/DataModel/SelectionNode/Constants.js +5 -4
- package/Common/DataModel/SelectionNode.js +25 -21
- package/Common/DataModel/Sphere.js +40 -35
- package/Common/DataModel/Spline1D/Constants.js +3 -2
- package/Common/DataModel/Spline1D.js +34 -18
- package/Common/DataModel/Spline3D/Constants.js +2 -2
- package/Common/DataModel/Spline3D.js +46 -41
- package/Common/DataModel/StructuredData/Constants.js +2 -2
- package/Common/DataModel/StructuredData.js +9 -20
- package/Common/DataModel/Triangle.js +207 -250
- package/Common/DataModel.js +19 -19
- package/Common/System/MobileVR.js +56 -61
- package/Common/System/TimerLog.js +1 -1
- package/Common/System.js +2 -2
- package/Common/Transform/LandmarkTransform/Constants.js +2 -2
- package/Common/Transform/LandmarkTransform.js +133 -117
- package/Common/Transform/Transform.js +42 -57
- package/Common/Transform.js +2 -2
- package/Common/index.js +4 -4
- package/Filters/Core/Cutter.js +134 -146
- package/Filters/Core/PolyDataNormals.js +44 -50
- package/Filters/Core.js +2 -2
- package/Filters/Cornerstone/ImageDataToCornerstoneImage.js +45 -33
- package/Filters/Cornerstone.js +1 -1
- package/Filters/General/AppendPolyData.js +84 -100
- package/Filters/General/Calculator.js +95 -163
- package/Filters/General/ClipClosedSurface/Constants.js +2 -2
- package/Filters/General/ClipClosedSurface.js +341 -416
- package/Filters/General/ClosedPolyLineToSurfaceFilter.js +141 -156
- package/Filters/General/ContourTriangulator/Constants.js +2 -2
- package/Filters/General/ContourTriangulator/helper.js +684 -812
- package/Filters/General/ContourTriangulator.js +92 -89
- package/Filters/General/ImageCropFilter.js +77 -78
- package/Filters/General/ImageDataOutlineFilter.js +42 -36
- package/Filters/General/ImageMarchingCubes/caseTable.js +9 -521
- package/Filters/General/ImageMarchingCubes.js +99 -112
- package/Filters/General/ImageMarchingSquares/caseTable.js +9 -41
- package/Filters/General/ImageMarchingSquares.js +93 -118
- package/Filters/General/ImageOutlineFilter.js +53 -54
- package/Filters/General/ImageSliceFilter.js +39 -30
- package/Filters/General/ImageStreamline.js +107 -124
- package/Filters/General/LineFilter.js +26 -15
- package/Filters/General/MoleculeToRepresentation.js +136 -149
- package/Filters/General/OBBTree/OBBNode.js +36 -34
- package/Filters/General/OBBTree/helper.js +19 -24
- package/Filters/General/OBBTree.js +396 -488
- package/Filters/General/OutlineFilter.js +52 -34
- package/Filters/General/PaintFilter/PaintFilter.worker.js +93 -130
- package/Filters/General/PaintFilter.js +150 -162
- package/Filters/General/ScalarToRGBA.js +38 -33
- package/Filters/General/TriangleFilter.js +65 -62
- package/Filters/General/TubeFilter/Constants.js +4 -4
- package/Filters/General/TubeFilter.js +376 -496
- package/Filters/General/WarpScalar.js +58 -60
- package/Filters/General/WindowedSincPolyDataFilter.js +258 -330
- package/Filters/General.js +21 -21
- package/Filters/Sources/Arrow2DSource/Constants.js +2 -2
- package/Filters/Sources/Arrow2DSource.js +56 -56
- package/Filters/Sources/ArrowSource.js +39 -29
- package/Filters/Sources/CircleSource.js +43 -43
- package/Filters/Sources/ConcentricCylinderSource.js +151 -174
- package/Filters/Sources/ConeSource.js +51 -42
- package/Filters/Sources/CubeSource.js +75 -96
- package/Filters/Sources/Cursor3D.js +94 -109
- package/Filters/Sources/CylinderSource.js +90 -90
- package/Filters/Sources/ImageGridSource.js +43 -43
- package/Filters/Sources/LineSource.js +49 -39
- package/Filters/Sources/PlaneSource.js +97 -104
- package/Filters/Sources/PointSource.js +46 -37
- package/Filters/Sources/RTAnalyticSource.js +50 -48
- package/Filters/Sources/SLICSource.js +63 -73
- package/Filters/Sources/SphereSource.js +88 -78
- package/Filters/Sources/ViewFinderSource.js +26 -23
- package/Filters/Sources.js +14 -14
- package/Filters/Texture/TextureMapToPlane.js +95 -97
- package/Filters/Texture/TextureMapToSphere.js +46 -54
- package/Filters/Texture.js +2 -2
- package/Filters/index.js +5 -5
- package/IO/Core/BinaryHelper.js +12 -18
- package/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js +43 -59
- package/IO/Core/DataAccessHelper/HttpDataAccessHelper.js +76 -113
- package/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js +62 -112
- package/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js +76 -113
- package/IO/Core/DataAccessHelper.js +6 -6
- package/IO/Core/HttpDataSetReader.js +136 -139
- package/IO/Core/HttpDataSetSeriesReader.js +64 -75
- package/IO/Core/HttpSceneLoader.js +130 -179
- package/IO/Core/ImageStream/DefaultProtocol.js +29 -43
- package/IO/Core/ImageStream/ViewStream.js +100 -103
- package/IO/Core/ImageStream.js +62 -54
- package/IO/Core/ResourceLoader.js +10 -9
- package/IO/Core/Serializer/ArraySerializer.js +40 -40
- package/IO/Core/Serializer/FieldDataSerializer.js +18 -28
- package/IO/Core/Serializer/ImageDataSerializer.js +22 -23
- package/IO/Core/Serializer/PolyDataSerializer.js +17 -21
- package/IO/Core/Serializer.js +6 -13
- package/IO/Core/WSLinkClient.js +90 -76
- package/IO/Core/ZipMultiDataSetReader.js +46 -44
- package/IO/Core/ZipMultiDataSetWriter.js +43 -34
- package/IO/Core.js +7 -7
- package/IO/Geometry/DracoReader.js +118 -121
- package/IO/Geometry/PLYReader.js +163 -223
- package/IO/Geometry/PLYWriter/Constants.js +5 -5
- package/IO/Geometry/PLYWriter.js +139 -154
- package/IO/Geometry/STLReader.js +123 -146
- package/IO/Geometry/STLWriter/Constants.js +2 -2
- package/IO/Geometry/STLWriter.js +83 -82
- package/IO/Geometry.js +5 -5
- package/IO/Legacy/LegacyAsciiParser.js +78 -139
- package/IO/Legacy/PolyDataReader.js +48 -36
- package/IO/Legacy.js +2 -2
- package/IO/Misc/ElevationReader.js +67 -60
- package/IO/Misc/HttpDataSetLODsLoader.js +41 -38
- package/IO/Misc/ITKImageReader.js +58 -45
- package/IO/Misc/ITKPolyDataReader.js +50 -38
- package/IO/Misc/JSONNucleoReader.js +49 -42
- package/IO/Misc/JSONReader.js +38 -33
- package/IO/Misc/MTLReader.js +74 -119
- package/IO/Misc/OBJReader.js +153 -206
- package/IO/Misc/PDBReader.js +70 -68
- package/IO/Misc/SkyboxReader.js +77 -82
- package/IO/Misc.js +9 -9
- package/IO/XML/XMLImageDataReader.js +36 -38
- package/IO/XML/XMLImageDataWriter.js +28 -21
- package/IO/XML/XMLPolyDataReader.js +49 -46
- package/IO/XML/XMLPolyDataWriter.js +43 -42
- package/IO/XML/XMLReader.js +262 -304
- package/IO/XML/XMLWriter/Constants.js +3 -3
- package/IO/XML/XMLWriter.js +70 -84
- package/IO/XML.js +6 -6
- package/IO/index.js +5 -5
- package/Imaging/Core/AbstractImageInterpolator/Constants.js +4 -4
- package/Imaging/Core/AbstractImageInterpolator/InterpolationInfo.js +30 -27
- package/Imaging/Core/AbstractImageInterpolator.js +74 -87
- package/Imaging/Core/ImageInterpolator.js +201 -252
- package/Imaging/Core/ImagePointDataIterator.js +96 -122
- package/Imaging/Core/ImageReslice/Constants.js +2 -2
- package/Imaging/Core/ImageReslice.js +327 -464
- package/Imaging/Core.js +4 -4
- package/Imaging/Hybrid/SampleFunction.js +58 -51
- package/Imaging/Hybrid.js +1 -1
- package/Imaging/index.js +2 -2
- package/Interaction/Animations/TimeStepBasedAnimationHandler.js +39 -54
- package/Interaction/Manipulators/CompositeCameraManipulator.js +22 -13
- package/Interaction/Manipulators/CompositeGestureManipulator.js +31 -43
- package/Interaction/Manipulators/CompositeKeyboardManipulator.js +15 -11
- package/Interaction/Manipulators/CompositeMouseManipulator.js +27 -33
- package/Interaction/Manipulators/CompositeVRManipulator.js +22 -15
- package/Interaction/Manipulators/GestureCameraManipulator.js +54 -36
- package/Interaction/Manipulators/KeyboardCameraManipulator.js +95 -97
- package/Interaction/Manipulators/MouseBoxSelectorManipulator.js +70 -89
- package/Interaction/Manipulators/MouseCameraAxisRotateManipulator.js +67 -54
- package/Interaction/Manipulators/MouseCameraSliceManipulator.js +40 -38
- package/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator.js +83 -68
- package/Interaction/Manipulators/MouseCameraTrackballMultiRotateManipulator.js +32 -28
- package/Interaction/Manipulators/MouseCameraTrackballPanManipulator.js +47 -40
- package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +55 -43
- package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +56 -46
- package/Interaction/Manipulators/MouseCameraTrackballZoomManipulator.js +41 -46
- package/Interaction/Manipulators/MouseCameraTrackballZoomToMouseManipulator.js +29 -27
- package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +123 -146
- package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +144 -166
- package/Interaction/Manipulators/MouseRangeManipulator.js +127 -132
- package/Interaction/Manipulators/VRButtonPanManipulator.js +33 -23
- package/Interaction/Manipulators.js +21 -21
- package/Interaction/Misc/DeviceOrientationToCamera.js +25 -47
- package/Interaction/Misc.js +1 -1
- package/Interaction/Style/InteractorStyleImage.js +101 -121
- package/Interaction/Style/InteractorStyleMPRSlice.js +111 -128
- package/Interaction/Style/InteractorStyleManipulator/Presets.js +9 -17
- package/Interaction/Style/InteractorStyleManipulator.js +254 -329
- package/Interaction/Style/InteractorStyleRemoteMouse.js +195 -180
- package/Interaction/Style/InteractorStyleTrackballCamera.js +154 -157
- package/Interaction/Style/InteractorStyleUnicam.js +30 -38
- package/Interaction/Style.js +5 -5
- package/Interaction/UI/CornerAnnotation/CornerAnnotation.module.css.js +1 -1
- package/Interaction/UI/CornerAnnotation.js +65 -48
- package/Interaction/UI/FPSMonitor.js +104 -105
- package/Interaction/UI/Icons.js +1 -1
- package/Interaction/UI/Slider/Constants.js +2 -2
- package/Interaction/UI/Slider.js +78 -95
- package/Interaction/UI/VolumeController.js +104 -97
- package/Interaction/UI.js +5 -5
- package/Interaction/Widgets/OrientationMarkerWidget/Constants.js +2 -2
- package/Interaction/Widgets/OrientationMarkerWidget.js +90 -135
- package/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
- package/Interaction/Widgets/PiecewiseGaussianWidget.js +381 -498
- package/Interaction/Widgets.js +2 -2
- package/Interaction/index.js +5 -5
- package/Proxy/Animation/AbstractAnimationProxy.js +22 -15
- package/Proxy/Animation/AnimationProxyManager.js +43 -51
- package/Proxy/Animation/TimeStepBasedAnimationHandlerProxy.js +26 -19
- package/Proxy/Core/AbstractRepresentationProxy.js +97 -151
- package/Proxy/Core/LookupTableProxy/Constants.js +4 -4
- package/Proxy/Core/LookupTableProxy.js +49 -52
- package/Proxy/Core/PiecewiseFunctionProxy/Constants.js +4 -4
- package/Proxy/Core/PiecewiseFunctionProxy.js +63 -72
- package/Proxy/Core/ProxyManager/core.js +83 -106
- package/Proxy/Core/ProxyManager/properties.js +53 -76
- package/Proxy/Core/ProxyManager/state.js +100 -110
- package/Proxy/Core/ProxyManager/view.js +45 -55
- package/Proxy/Core/ProxyManager.js +16 -8
- package/Proxy/Core/SourceProxy.js +41 -38
- package/Proxy/Core/View2DProxy.js +143 -199
- package/Proxy/Core/ViewProxy.js +223 -269
- package/Proxy/Core.js +7 -7
- package/Proxy/Representations/GeometryRepresentationProxy.js +34 -20
- package/Proxy/Representations/GlyphRepresentationProxy.js +42 -41
- package/Proxy/Representations/MoleculeRepresentationProxy.js +32 -22
- package/Proxy/Representations/ResliceRepresentationProxy.js +48 -32
- package/Proxy/Representations/SkyboxRepresentationProxy.js +30 -29
- package/Proxy/Representations/SliceRepresentationProxy.js +93 -112
- package/Proxy/Representations/SlicedGeometryRepresentationProxy.js +46 -42
- package/Proxy/Representations/VolumeRepresentationProxy.js +108 -133
- package/Proxy/Representations.js +7 -7
- package/Proxy/index.js +2 -2
- package/README.md +1 -1
- package/Rendering/Core/AbstractImageMapper/helper.js +44 -49
- package/Rendering/Core/AbstractImageMapper.js +18 -19
- package/Rendering/Core/AbstractMapper.js +39 -55
- package/Rendering/Core/AbstractMapper3D.js +26 -31
- package/Rendering/Core/AbstractPicker.js +25 -21
- package/Rendering/Core/Actor.js +71 -93
- package/Rendering/Core/Actor2D.js +64 -78
- package/Rendering/Core/AnnotatedCubeActor/Presets.js +5 -11
- package/Rendering/Core/AnnotatedCubeActor.js +94 -79
- package/Rendering/Core/AxesActor.js +65 -87
- package/Rendering/Core/Camera.js +246 -271
- package/Rendering/Core/CellPicker.js +125 -148
- package/Rendering/Core/ColorTransferFunction/ColorMaps.js +20 -21
- package/Rendering/Core/ColorTransferFunction/ColorMapsLite.js +20 -21
- package/Rendering/Core/ColorTransferFunction/Constants.js +4 -4
- package/Rendering/Core/ColorTransferFunction.js +460 -546
- package/Rendering/Core/Coordinate/Constants.js +2 -2
- package/Rendering/Core/Coordinate.js +119 -198
- package/Rendering/Core/CubeAxesActor.js +294 -320
- package/Rendering/Core/Follower.js +46 -45
- package/Rendering/Core/Glyph3DMapper/Constants.js +4 -4
- package/Rendering/Core/Glyph3DMapper.js +96 -148
- package/Rendering/Core/HardwareSelector.js +36 -69
- package/Rendering/Core/ImageArrayMapper.js +87 -126
- package/Rendering/Core/ImageCPRMapper.js +134 -209
- package/Rendering/Core/ImageMapper/Constants.js +2 -2
- package/Rendering/Core/ImageMapper.js +85 -144
- package/Rendering/Core/ImageProperty/Constants.js +2 -2
- package/Rendering/Core/ImageProperty.js +66 -81
- package/Rendering/Core/ImageResliceMapper/Constants.js +2 -2
- package/Rendering/Core/ImageResliceMapper.js +36 -29
- package/Rendering/Core/ImageSlice.js +85 -127
- package/Rendering/Core/InteractorObserver.js +82 -73
- package/Rendering/Core/InteractorStyle/Constants.js +2 -2
- package/Rendering/Core/InteractorStyle.js +56 -58
- package/Rendering/Core/Light.js +43 -49
- package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +37 -48
- package/Rendering/Core/Mapper/Constants.js +6 -6
- package/Rendering/Core/Mapper/Static.js +15 -12
- package/Rendering/Core/Mapper.js +194 -259
- package/Rendering/Core/Mapper2D.js +61 -100
- package/Rendering/Core/Picker.js +124 -143
- package/Rendering/Core/PixelSpaceCallbackMapper.js +40 -37
- package/Rendering/Core/PointPicker.js +68 -79
- package/Rendering/Core/Prop/Constants.js +2 -2
- package/Rendering/Core/Prop.js +58 -106
- package/Rendering/Core/Prop3D.js +54 -83
- package/Rendering/Core/Property/Constants.js +6 -6
- package/Rendering/Core/Property.js +45 -74
- package/Rendering/Core/Property2D/Constants.js +2 -2
- package/Rendering/Core/Property2D.js +33 -42
- package/Rendering/Core/RenderWindow.js +70 -82
- package/Rendering/Core/RenderWindowInteractor/Constants.js +7 -7
- package/Rendering/Core/RenderWindowInteractor.js +324 -439
- package/Rendering/Core/Renderer.js +192 -256
- package/Rendering/Core/ScalarBarActor.js +267 -272
- package/Rendering/Core/Skybox.js +26 -24
- package/Rendering/Core/SphereMapper.js +22 -12
- package/Rendering/Core/StickMapper.js +22 -12
- package/Rendering/Core/SurfaceLICInterface/Constants.js +6 -6
- package/Rendering/Core/SurfaceLICInterface.js +13 -9
- package/Rendering/Core/SurfaceLICMapper.js +23 -15
- package/Rendering/Core/Texture.js +99 -141
- package/Rendering/Core/Viewport.js +60 -88
- package/Rendering/Core/Volume.js +55 -77
- package/Rendering/Core/VolumeMapper/Constants.js +4 -4
- package/Rendering/Core/VolumeMapper.js +59 -91
- package/Rendering/Core/VolumeProperty/Constants.js +4 -4
- package/Rendering/Core/VolumeProperty.js +78 -115
- package/Rendering/Core.js +47 -49
- package/Rendering/Misc/CanvasView.js +62 -61
- package/Rendering/Misc/FullScreenRenderWindow.js +60 -62
- package/Rendering/Misc/GenericRenderWindow.js +48 -37
- package/Rendering/Misc/RemoteView.js +86 -80
- package/Rendering/Misc/RenderWindowWithControlBar.js +54 -48
- package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager/CameraSynchronizer.js +43 -51
- package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager.js +52 -82
- package/Rendering/Misc/SynchronizableRenderWindow/ObjectManager.js +258 -308
- package/Rendering/Misc/SynchronizableRenderWindow.js +133 -163
- package/Rendering/Misc/TextureLODsDownloader.js +72 -74
- package/Rendering/Misc.js +7 -7
- package/Rendering/OpenGL/Actor.js +57 -68
- package/Rendering/OpenGL/Actor2D.js +56 -56
- package/Rendering/OpenGL/BufferObject/Constants.js +2 -2
- package/Rendering/OpenGL/BufferObject.js +50 -65
- package/Rendering/OpenGL/Camera.js +35 -29
- package/Rendering/OpenGL/CellArrayBufferObject.js +119 -149
- package/Rendering/OpenGL/Convolution2DPass.js +87 -81
- package/Rendering/OpenGL/CubeAxesActor.js +28 -21
- package/Rendering/OpenGL/ForwardPass.js +53 -64
- package/Rendering/OpenGL/Framebuffer.js +61 -101
- package/Rendering/OpenGL/Glyph3DMapper.js +165 -196
- package/Rendering/OpenGL/HardwareSelector/Constants.js +2 -2
- package/Rendering/OpenGL/HardwareSelector.js +272 -397
- package/Rendering/OpenGL/Helper.js +58 -73
- package/Rendering/OpenGL/ImageCPRMapper.js +339 -421
- package/Rendering/OpenGL/ImageMapper.js +268 -361
- package/Rendering/OpenGL/ImageResliceMapper.js +306 -438
- package/Rendering/OpenGL/ImageSlice.js +48 -54
- package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +102 -84
- package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +43 -42
- package/Rendering/OpenGL/PolyDataMapper.js +358 -492
- package/Rendering/OpenGL/PolyDataMapper2D.js +153 -205
- package/Rendering/OpenGL/RadialDistortionPass.js +86 -89
- package/Rendering/OpenGL/RenderWindow/Constants.js +2 -2
- package/Rendering/OpenGL/RenderWindow/ContextProxy.js +20 -29
- package/Rendering/OpenGL/RenderWindow.js +356 -510
- package/Rendering/OpenGL/Renderer.js +77 -89
- package/Rendering/OpenGL/ReplacementShaderMapper.js +28 -46
- package/Rendering/OpenGL/ScalarBarActor.js +28 -21
- package/Rendering/OpenGL/Shader.js +37 -31
- package/Rendering/OpenGL/ShaderCache.js +67 -74
- package/Rendering/OpenGL/ShaderProgram.js +136 -248
- package/Rendering/OpenGL/Skybox.js +99 -60
- package/Rendering/OpenGL/SphereMapper.js +94 -108
- package/Rendering/OpenGL/StickMapper.js +110 -114
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +91 -157
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +142 -151
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +142 -216
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +79 -100
- package/Rendering/OpenGL/SurfaceLIC.js +2 -2
- package/Rendering/OpenGL/Texture/Constants.js +4 -4
- package/Rendering/OpenGL/Texture.js +443 -608
- package/Rendering/OpenGL/TextureUnitManager.js +47 -43
- package/Rendering/OpenGL/VertexArrayObject.js +92 -131
- package/Rendering/OpenGL/ViewNodeFactory.js +25 -13
- package/Rendering/OpenGL/Volume.js +38 -34
- package/Rendering/OpenGL/VolumeMapper.js +437 -547
- package/Rendering/OpenGL.js +28 -28
- package/Rendering/SceneGraph/RenderPass.js +34 -31
- package/Rendering/SceneGraph/RenderWindowViewNode.js +68 -94
- package/Rendering/SceneGraph/ViewNode.js +82 -111
- package/Rendering/SceneGraph/ViewNodeFactory.js +31 -26
- package/Rendering/SceneGraph.js +4 -4
- package/Rendering/WebGPU/Actor.js +49 -49
- package/Rendering/WebGPU/Actor2D.js +45 -44
- package/Rendering/WebGPU/BindGroup.js +43 -50
- package/Rendering/WebGPU/Buffer.js +41 -50
- package/Rendering/WebGPU/BufferManager/Constants.js +4 -4
- package/Rendering/WebGPU/BufferManager.js +111 -141
- package/Rendering/WebGPU/Camera.js +65 -67
- package/Rendering/WebGPU/CellArrayMapper.js +621 -388
- package/Rendering/WebGPU/CubeAxesActor.js +28 -19
- package/Rendering/WebGPU/Device.js +78 -133
- package/Rendering/WebGPU/ForwardPass.js +75 -72
- package/Rendering/WebGPU/FullScreenQuad.js +25 -18
- package/Rendering/WebGPU/Glyph3DMapper.js +62 -74
- package/Rendering/WebGPU/HardwareSelectionPass.js +45 -38
- package/Rendering/WebGPU/HardwareSelector.js +200 -276
- package/Rendering/WebGPU/ImageMapper.js +180 -171
- package/Rendering/WebGPU/ImageSlice.js +45 -44
- package/Rendering/WebGPU/IndexBuffer.js +166 -200
- package/Rendering/WebGPU/OpaquePass.js +37 -36
- package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +72 -45
- package/Rendering/WebGPU/Pipeline.js +37 -51
- package/Rendering/WebGPU/PixelSpaceCallbackMapper.js +27 -19
- package/Rendering/WebGPU/PolyDataMapper.js +50 -53
- package/Rendering/WebGPU/PolyDataMapper2D.js +39 -39
- package/Rendering/WebGPU/RenderEncoder.js +68 -88
- package/Rendering/WebGPU/RenderWindow.js +262 -376
- package/Rendering/WebGPU/Renderer.js +224 -208
- package/Rendering/WebGPU/Sampler.js +27 -21
- package/Rendering/WebGPU/ScalarBarActor.js +28 -19
- package/Rendering/WebGPU/ShaderCache.js +43 -41
- package/Rendering/WebGPU/ShaderDescription.js +52 -59
- package/Rendering/WebGPU/ShaderModule.js +26 -17
- package/Rendering/WebGPU/SimpleMapper.js +185 -121
- package/Rendering/WebGPU/SphereMapper.js +200 -130
- package/Rendering/WebGPU/StickMapper.js +289 -152
- package/Rendering/WebGPU/StorageBuffer.js +100 -115
- package/Rendering/WebGPU/Texture.js +79 -99
- package/Rendering/WebGPU/TextureManager.js +52 -54
- package/Rendering/WebGPU/TextureView.js +40 -43
- package/Rendering/WebGPU/Types.js +53 -70
- package/Rendering/WebGPU/UniformBuffer.js +158 -184
- package/Rendering/WebGPU/VertexInput.js +64 -90
- package/Rendering/WebGPU/ViewNodeFactory.js +25 -13
- package/Rendering/WebGPU/Volume.js +52 -51
- package/Rendering/WebGPU/VolumePass.js +218 -239
- package/Rendering/WebGPU/VolumePassFSQ.js +625 -306
- package/Rendering/WebGPU.js +1 -1
- package/Rendering/index.js +5 -5
- package/Widgets/Core/AbstractWidget/Constants.js +2 -2
- package/Widgets/Core/AbstractWidget.js +49 -58
- package/Widgets/Core/AbstractWidgetFactory.js +101 -122
- package/Widgets/Core/StateBuilder/boundsMixin.js +23 -28
- package/Widgets/Core/StateBuilder/color3Mixin.js +10 -7
- package/Widgets/Core/StateBuilder/colorMixin.js +10 -6
- package/Widgets/Core/StateBuilder/cornerMixin.js +16 -15
- package/Widgets/Core/StateBuilder/directionMixin.js +20 -18
- package/Widgets/Core/StateBuilder/manipulatorMixin.js +26 -18
- package/Widgets/Core/StateBuilder/nameMixin.js +10 -6
- package/Widgets/Core/StateBuilder/orientationMixin.js +19 -16
- package/Widgets/Core/StateBuilder/originMixin.js +25 -32
- package/Widgets/Core/StateBuilder/scale1Mixin.js +10 -6
- package/Widgets/Core/StateBuilder/scale3Mixin.js +10 -6
- package/Widgets/Core/StateBuilder/shapeMixin.js +12 -6
- package/Widgets/Core/StateBuilder/textMixin.js +10 -6
- package/Widgets/Core/StateBuilder/visibleMixin.js +10 -6
- package/Widgets/Core/StateBuilder.js +120 -149
- package/Widgets/Core/WidgetManager/Constants.js +7 -7
- package/Widgets/Core/WidgetManager.js +249 -421
- package/Widgets/Core/WidgetState.js +48 -57
- package/Widgets/Core.js +5 -5
- package/Widgets/Manipulators/AbstractManipulator.js +20 -14
- package/Widgets/Manipulators/CPRManipulator.js +55 -71
- package/Widgets/Manipulators/LineManipulator.js +31 -28
- package/Widgets/Manipulators/PickerManipulator.d.ts +48 -0
- package/Widgets/Manipulators/PickerManipulator.js +65 -0
- package/Widgets/Manipulators/PlaneManipulator.js +26 -23
- package/Widgets/Manipulators/TrackballManipulator.js +39 -35
- package/Widgets/Manipulators.js +4 -2
- package/Widgets/Representations/ArrowHandleRepresentation.js +148 -162
- package/Widgets/Representations/CircleContextRepresentation.js +44 -38
- package/Widgets/Representations/ContextRepresentation.js +17 -14
- package/Widgets/Representations/ConvexFaceContextRepresentation.js +50 -47
- package/Widgets/Representations/CroppingOutlineRepresentation.js +38 -27
- package/Widgets/Representations/CubeHandleRepresentation.js +21 -18
- package/Widgets/Representations/GlyphRepresentation.js +107 -152
- package/Widgets/Representations/HandleRepresentation.js +17 -14
- package/Widgets/Representations/ImplicitPlaneRepresentation.js +97 -91
- package/Widgets/Representations/LineHandleRepresentation.js +44 -41
- package/Widgets/Representations/OutlineContextRepresentation.js +42 -36
- package/Widgets/Representations/PolyLineRepresentation.js +60 -75
- package/Widgets/Representations/RectangleContextRepresentation.js +42 -37
- package/Widgets/Representations/SphereContextRepresentation.js +19 -27
- package/Widgets/Representations/SphereHandleRepresentation.js +31 -27
- package/Widgets/Representations/SplineContextRepresentation.js +46 -70
- package/Widgets/Representations/WidgetRepresentation/Constants.js +2 -2
- package/Widgets/Representations/WidgetRepresentation.js +99 -134
- package/Widgets/Representations.js +13 -13
- package/Widgets/Widgets3D/AngleWidget/behavior.js +41 -63
- package/Widgets/Widgets3D/AngleWidget.js +40 -38
- package/Widgets/Widgets3D/DistanceWidget/behavior.js +40 -61
- package/Widgets/Widgets3D/DistanceWidget.js +38 -36
- package/Widgets/Widgets3D/EllipseWidget/behavior.js +14 -19
- package/Widgets/Widgets3D/EllipseWidget/state.js +4 -2
- package/Widgets/Widgets3D/EllipseWidget.js +37 -26
- package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +26 -56
- package/Widgets/Widgets3D/ImageCroppingWidget/helpers.js +14 -17
- package/Widgets/Widgets3D/ImageCroppingWidget/state.js +20 -16
- package/Widgets/Widgets3D/ImageCroppingWidget.js +80 -98
- package/Widgets/Widgets3D/ImplicitPlaneWidget.js +55 -77
- package/Widgets/Widgets3D/InteractiveOrientationWidget/behavior.js +17 -18
- package/Widgets/Widgets3D/InteractiveOrientationWidget/state.js +15 -7
- package/Widgets/Widgets3D/InteractiveOrientationWidget.js +30 -29
- package/Widgets/Widgets3D/LabelWidget/behavior.js +37 -62
- package/Widgets/Widgets3D/LabelWidget.js +31 -25
- package/Widgets/Widgets3D/LineWidget/Constants.js +8 -8
- package/Widgets/Widgets3D/LineWidget/behavior.js +77 -114
- package/Widgets/Widgets3D/LineWidget/helpers.js +13 -20
- package/Widgets/Widgets3D/LineWidget/state.js +2 -1
- package/Widgets/Widgets3D/LineWidget.js +39 -35
- package/Widgets/Widgets3D/PaintWidget/behavior.js +24 -59
- package/Widgets/Widgets3D/PaintWidget.js +39 -37
- package/Widgets/Widgets3D/PolyLineWidget/behavior.js +44 -68
- package/Widgets/Widgets3D/PolyLineWidget.js +36 -31
- package/Widgets/Widgets3D/RectangleWidget/behavior.js +6 -11
- package/Widgets/Widgets3D/RectangleWidget/state.js +4 -2
- package/Widgets/Widgets3D/RectangleWidget.js +37 -25
- package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +35 -21
- package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +133 -209
- package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
- package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +89 -116
- package/Widgets/Widgets3D/ResliceCursorWidget/state.js +33 -40
- package/Widgets/Widgets3D/ResliceCursorWidget.js +186 -227
- package/Widgets/Widgets3D/SeedWidget/behavior.js +82 -0
- package/Widgets/Widgets3D/SeedWidget/state.js +18 -0
- package/Widgets/Widgets3D/SeedWidget.d.ts +44 -0
- package/Widgets/Widgets3D/SeedWidget.js +43 -0
- package/Widgets/Widgets3D/ShapeWidget/Constants.js +19 -19
- package/Widgets/Widgets3D/ShapeWidget/behavior.js +150 -252
- package/Widgets/Widgets3D/ShapeWidget.js +24 -27
- package/Widgets/Widgets3D/SphereWidget/behavior.js +35 -69
- package/Widgets/Widgets3D/SphereWidget/state.js +9 -5
- package/Widgets/Widgets3D/SphereWidget.js +34 -44
- package/Widgets/Widgets3D/SplineWidget/behavior.js +85 -120
- package/Widgets/Widgets3D/SplineWidget.js +43 -39
- package/Widgets/Widgets3D.js +15 -15
- package/Widgets/index.js +4 -4
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +95 -207
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
- package/favicon.js +5 -6
- package/index.d.ts +4 -2
- package/index.js +4 -3
- package/macros.js +4 -1931
- package/macros2.js +1684 -0
- package/package.json +6 -6
- package/vtk.js +18 -31
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
3
|
-
import macro from '../../macros.js';
|
|
1
|
+
import { m as macro } from '../../macros2.js';
|
|
4
2
|
import vtkBoundingBox from '../../Common/DataModel/BoundingBox.js';
|
|
5
3
|
import vtkImageCropFilter from '../../Filters/General/ImageCropFilter.js';
|
|
6
4
|
import vtkImageMapper from '../../Rendering/Core/ImageMapper.js';
|
|
@@ -9,35 +7,37 @@ import vtkVolume from '../../Rendering/Core/Volume.js';
|
|
|
9
7
|
import vtkVolumeMapper from '../../Rendering/Core/VolumeMapper.js';
|
|
10
8
|
import vtkAbstractRepresentationProxy from '../Core/AbstractRepresentationProxy.js';
|
|
11
9
|
|
|
10
|
+
// ----------------------------------------------------------------------------
|
|
11
|
+
|
|
12
12
|
function sum(a, b) {
|
|
13
13
|
return a + b;
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
15
|
|
|
16
|
+
// ----------------------------------------------------------------------------
|
|
16
17
|
|
|
17
18
|
function mean() {
|
|
18
19
|
for (var _len = arguments.length, array = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
19
20
|
array[_key] = arguments[_key];
|
|
20
21
|
}
|
|
21
|
-
|
|
22
22
|
return array.reduce(sum, 0) / array.length;
|
|
23
|
-
}
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
+
// ----------------------------------------------------------------------------
|
|
25
26
|
|
|
26
27
|
function updateDomains(dataset, dataArray, model, updateProp) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var propToUpdate = {
|
|
28
|
+
const dataRange = dataArray.getRange();
|
|
29
|
+
const spacing = dataset.getSpacing();
|
|
30
|
+
const bounds = dataset.getBounds();
|
|
31
|
+
const {
|
|
32
|
+
ijkMode: xIJKAxis
|
|
33
|
+
} = model.mapperX.getClosestIJKAxis();
|
|
34
|
+
const {
|
|
35
|
+
ijkMode: yIJKAxis
|
|
36
|
+
} = model.mapperY.getClosestIJKAxis();
|
|
37
|
+
const {
|
|
38
|
+
ijkMode: zIJKAxis
|
|
39
|
+
} = model.mapperZ.getClosestIJKAxis();
|
|
40
|
+
const propToUpdate = {
|
|
41
41
|
xSlice: {
|
|
42
42
|
domain: {
|
|
43
43
|
min: bounds[0],
|
|
@@ -86,59 +86,63 @@ function updateDomains(dataset, dataArray, model, updateProp) {
|
|
|
86
86
|
windowWidth: propToUpdate.windowWidth.domain.max,
|
|
87
87
|
windowLevel: Math.floor(mean(propToUpdate.windowLevel.domain.min, propToUpdate.windowLevel.domain.max))
|
|
88
88
|
};
|
|
89
|
-
}
|
|
89
|
+
}
|
|
90
90
|
|
|
91
|
+
// ----------------------------------------------------------------------------
|
|
91
92
|
|
|
92
93
|
function updateConfiguration(dataset, dataArray, _ref) {
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
let {
|
|
95
|
+
mapper,
|
|
96
|
+
property
|
|
97
|
+
} = _ref;
|
|
95
98
|
// Configuration
|
|
96
99
|
// actor.getProperty().setInterpolationTypeToFastLinear();
|
|
97
100
|
property.setInterpolationTypeToLinear();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
for (var component = 0; component < numberOfComponents; component++) {
|
|
101
|
+
const numberOfComponents = dataArray.getNumberOfComponents();
|
|
102
|
+
const scalarOpacityUnitDistance = vtkBoundingBox.getDiagonalLength(dataset.getBounds()) / Math.max(...dataset.getDimensions());
|
|
103
|
+
for (let component = 0; component < numberOfComponents; component++) {
|
|
102
104
|
// For better looking volume rendering
|
|
103
105
|
// - distance in world coordinates a scalar opacity of 1.0
|
|
104
106
|
property.setScalarOpacityUnitDistance(component, scalarOpacityUnitDistance);
|
|
105
|
-
|
|
107
|
+
const dataRange = dataArray.getRange(component);
|
|
108
|
+
// - control how we emphasize surface boundaries
|
|
106
109
|
// => max should be around the average gradient magnitude for the
|
|
107
110
|
// volume or maybe average plus one std dev of the gradient magnitude
|
|
108
111
|
// (adjusted for spacing, this is a world coordinate gradient, not a
|
|
109
112
|
// pixel gradient)
|
|
110
113
|
// => max hack: (dataRange[1] - dataRange[0]) * 0.05
|
|
111
|
-
|
|
112
114
|
property.setGradientOpacityMinimumValue(component, 0);
|
|
113
|
-
property.setGradientOpacityMaximumValue(component, (dataRange[1] - dataRange[0]) * 0.05);
|
|
114
|
-
|
|
115
|
+
property.setGradientOpacityMaximumValue(component, (dataRange[1] - dataRange[0]) * 0.05);
|
|
116
|
+
// - Use shading based on gradient
|
|
115
117
|
property.setShade(true);
|
|
116
|
-
property.setUseGradientOpacity(component, true);
|
|
117
|
-
|
|
118
|
+
property.setUseGradientOpacity(component, true);
|
|
119
|
+
// - generic good default
|
|
118
120
|
property.setGradientOpacityMinimumOpacity(component, 0.0);
|
|
119
121
|
property.setGradientOpacityMaximumOpacity(component, 1.0);
|
|
120
122
|
}
|
|
121
|
-
|
|
122
123
|
property.setAmbient(0.2);
|
|
123
124
|
property.setDiffuse(0.7);
|
|
124
125
|
property.setSpecular(0.3);
|
|
125
126
|
property.setSpecularPower(8.0);
|
|
126
|
-
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ----------------------------------------------------------------------------
|
|
127
130
|
// vtkVolumeRepresentationProxy methods
|
|
128
131
|
// ----------------------------------------------------------------------------
|
|
129
132
|
|
|
130
|
-
|
|
131
133
|
function vtkVolumeRepresentationProxy(publicAPI, model) {
|
|
132
134
|
// Set our className
|
|
133
|
-
model.classHierarchy.push('vtkVolumeRepresentationProxy');
|
|
135
|
+
model.classHierarchy.push('vtkVolumeRepresentationProxy');
|
|
134
136
|
|
|
137
|
+
// Volume
|
|
135
138
|
model.mapper = vtkVolumeMapper.newInstance();
|
|
136
139
|
model.volume = vtkVolume.newInstance();
|
|
137
140
|
model.property = model.volume.getProperty();
|
|
138
141
|
model.cropFilter = vtkImageCropFilter.newInstance();
|
|
139
142
|
model.mapper.setInputConnection(model.cropFilter.getOutputPort());
|
|
140
|
-
model.sourceDependencies.push(model.cropFilter);
|
|
143
|
+
model.sourceDependencies.push(model.cropFilter);
|
|
141
144
|
|
|
145
|
+
// Slices
|
|
142
146
|
model.mapperX = vtkImageMapper.newInstance({
|
|
143
147
|
slicingMode: vtkImageMapper.SlicingMode.X
|
|
144
148
|
});
|
|
@@ -162,81 +166,68 @@ function vtkVolumeRepresentationProxy(publicAPI, model) {
|
|
|
162
166
|
});
|
|
163
167
|
model.mapperX.setInputConnection(model.cropFilter.getOutputPort());
|
|
164
168
|
model.mapperY.setInputConnection(model.cropFilter.getOutputPort());
|
|
165
|
-
model.mapperZ.setInputConnection(model.cropFilter.getOutputPort());
|
|
169
|
+
model.mapperZ.setInputConnection(model.cropFilter.getOutputPort());
|
|
170
|
+
// model.sourceDependencies.push(model.mapperX);
|
|
166
171
|
// model.sourceDependencies.push(model.mapperY);
|
|
167
172
|
// model.sourceDependencies.push(model.mapperZ);
|
|
168
|
-
// connect rendering pipeline
|
|
169
173
|
|
|
174
|
+
// connect rendering pipeline
|
|
170
175
|
model.volume.setMapper(model.mapper);
|
|
171
|
-
model.volumes.push(model.volume);
|
|
176
|
+
model.volumes.push(model.volume);
|
|
172
177
|
|
|
178
|
+
// Connect slice pipeline
|
|
173
179
|
model.actorX.setMapper(model.mapperX);
|
|
174
180
|
model.actors.push(model.actorX);
|
|
175
181
|
model.actorY.setMapper(model.mapperY);
|
|
176
182
|
model.actors.push(model.actorY);
|
|
177
183
|
model.actorZ.setMapper(model.mapperZ);
|
|
178
184
|
model.actors.push(model.actorZ);
|
|
179
|
-
|
|
180
185
|
function setInputData(inputDataset) {
|
|
181
|
-
|
|
182
|
-
_publicAPI$getColorBy2 = _slicedToArray(_publicAPI$getColorBy, 2),
|
|
183
|
-
name = _publicAPI$getColorBy2[0],
|
|
184
|
-
location = _publicAPI$getColorBy2[1];
|
|
185
|
-
|
|
186
|
+
const [name, location] = publicAPI.getColorBy();
|
|
186
187
|
publicAPI.rescaleTransferFunctionToDataRange(name, location);
|
|
187
|
-
|
|
188
|
-
|
|
188
|
+
const lutProxy = publicAPI.getLookupTableProxy(name);
|
|
189
|
+
const pwfProxy = publicAPI.getPiecewiseFunctionProxy(name);
|
|
189
190
|
model.property.setRGBTransferFunction(0, lutProxy.getLookupTable());
|
|
190
191
|
model.property.setScalarOpacity(0, pwfProxy.getPiecewiseFunction());
|
|
191
192
|
updateConfiguration(inputDataset, publicAPI.getDataArray(), model);
|
|
192
|
-
|
|
193
193
|
if (model.sampleDistance < 0 || model.sampleDistance > 1) {
|
|
194
194
|
publicAPI.setSampleDistance();
|
|
195
195
|
}
|
|
196
|
-
|
|
197
196
|
if (model.edgeGradient < 0 || model.edgeGradient > 1) {
|
|
198
197
|
publicAPI.setEdgeGradient();
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
var state = updateDomains(inputDataset, publicAPI.getDataArray(), model, publicAPI.updateProxyProperty);
|
|
203
|
-
publicAPI.set(state); // Check for 2D volumes
|
|
198
|
+
}
|
|
204
199
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
200
|
+
// Update domains
|
|
201
|
+
const state = updateDomains(inputDataset, publicAPI.getDataArray(), model, publicAPI.updateProxyProperty);
|
|
202
|
+
publicAPI.set(state);
|
|
208
203
|
|
|
204
|
+
// Check for 2D volumes
|
|
205
|
+
const numberOfDimensions = inputDataset.getDimensions().reduce((number, dimension) => number + (dimension > 1 ? 1 : 0), 0);
|
|
209
206
|
if (numberOfDimensions === 2) {
|
|
210
207
|
publicAPI.setIs2DVolume(true);
|
|
211
208
|
}
|
|
212
209
|
}
|
|
213
|
-
|
|
214
210
|
model.sourceDependencies.push({
|
|
215
|
-
setInputData
|
|
216
|
-
});
|
|
211
|
+
setInputData
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
// API ----------------------------------------------------------------------
|
|
217
215
|
|
|
218
216
|
/**
|
|
219
217
|
* Choose whether the input volume should be treated as a 2D volume
|
|
220
218
|
* (no volume rendering).
|
|
221
219
|
*/
|
|
222
|
-
|
|
223
|
-
publicAPI.setIs2DVolume = function (is2D) {
|
|
220
|
+
publicAPI.setIs2DVolume = is2D => {
|
|
224
221
|
model.is2DVolume = is2D;
|
|
225
|
-
|
|
226
222
|
if (is2D) {
|
|
227
223
|
if (publicAPI.getVisibility()) {
|
|
228
224
|
publicAPI.setSliceVisibility(true);
|
|
229
225
|
}
|
|
230
|
-
|
|
231
226
|
model.volume.setVisibility(false);
|
|
232
227
|
}
|
|
233
228
|
};
|
|
234
|
-
|
|
235
|
-
publicAPI.
|
|
236
|
-
return model.volume.getVisibility();
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
publicAPI.setVisibility = function (isVisible) {
|
|
229
|
+
publicAPI.isVisible = () => model.volume.getVisibility();
|
|
230
|
+
publicAPI.setVisibility = isVisible => {
|
|
240
231
|
if (isVisible) {
|
|
241
232
|
if (model.is2DVolume) {
|
|
242
233
|
publicAPI.setSliceVisibility(true);
|
|
@@ -249,108 +240,88 @@ function vtkVolumeRepresentationProxy(publicAPI, model) {
|
|
|
249
240
|
publicAPI.setSliceVisibility(false);
|
|
250
241
|
}
|
|
251
242
|
};
|
|
252
|
-
|
|
253
|
-
publicAPI.getVisibility = function () {
|
|
254
|
-
return model.volume.getVisibility() || publicAPI.getSliceVisibility();
|
|
255
|
-
};
|
|
256
|
-
|
|
243
|
+
publicAPI.getVisibility = () => model.volume.getVisibility() || publicAPI.getSliceVisibility();
|
|
257
244
|
publicAPI.isVisible = publicAPI.getVisibility;
|
|
258
|
-
|
|
259
|
-
publicAPI.setSliceVisibility = function (isVisible) {
|
|
245
|
+
publicAPI.setSliceVisibility = isVisible => {
|
|
260
246
|
if (isVisible && model.is2DVolume) {
|
|
261
|
-
|
|
262
|
-
|
|
247
|
+
const normalAxis = publicAPI.getInputDataSet().getDimensions().indexOf(1);
|
|
263
248
|
if (model.actors[normalAxis]) {
|
|
264
249
|
model.actors[normalAxis].setVisibility(true);
|
|
265
250
|
}
|
|
266
251
|
} else {
|
|
267
|
-
model.actors.forEach(
|
|
268
|
-
return actor.setVisibility(isVisible);
|
|
269
|
-
});
|
|
252
|
+
model.actors.forEach(actor => actor.setVisibility(isVisible));
|
|
270
253
|
}
|
|
271
254
|
};
|
|
272
|
-
|
|
273
|
-
publicAPI.getSliceVisibility = function () {
|
|
274
|
-
return model.actorX.getVisibility() || model.actorY.getVisibility() || model.actorZ.getVisibility();
|
|
275
|
-
};
|
|
276
|
-
|
|
255
|
+
publicAPI.getSliceVisibility = () => model.actorX.getVisibility() || model.actorY.getVisibility() || model.actorZ.getVisibility();
|
|
277
256
|
publicAPI.setSampleDistance = function () {
|
|
278
|
-
|
|
279
|
-
|
|
257
|
+
let distance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.4;
|
|
280
258
|
if (model.sampleDistance !== distance) {
|
|
281
259
|
model.sampleDistance = distance;
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
}).reduce(function (a, b) {
|
|
286
|
-
return a + b;
|
|
287
|
-
}, 0));
|
|
288
|
-
model.mapper.setSampleDistance(sampleDistance * Math.pow(2, distance * 3.0 - 1.5));
|
|
260
|
+
const sourceDS = publicAPI.getInputDataSet();
|
|
261
|
+
const sampleDistance = 0.7 * Math.sqrt(sourceDS.getSpacing().map(v => v * v).reduce((a, b) => a + b, 0));
|
|
262
|
+
model.mapper.setSampleDistance(sampleDistance * 2 ** (distance * 3.0 - 1.5));
|
|
289
263
|
publicAPI.modified();
|
|
290
264
|
}
|
|
291
265
|
};
|
|
292
|
-
|
|
293
266
|
publicAPI.setEdgeGradient = function () {
|
|
294
|
-
|
|
295
|
-
|
|
267
|
+
let edgeGradient = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.2;
|
|
296
268
|
if (model.edgeGradient !== edgeGradient) {
|
|
297
269
|
model.edgeGradient = edgeGradient;
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
270
|
+
const dataArray = publicAPI.getDataArray();
|
|
271
|
+
const numberOfComponents = dataArray.getNumberOfComponents();
|
|
301
272
|
if (edgeGradient === 0) {
|
|
302
|
-
for (
|
|
273
|
+
for (let component = 0; component < numberOfComponents; component++) {
|
|
303
274
|
model.volume.getProperty().setUseGradientOpacity(component, false);
|
|
304
275
|
}
|
|
305
276
|
} else {
|
|
306
|
-
for (
|
|
307
|
-
|
|
308
|
-
model.volume.getProperty().setUseGradientOpacity(
|
|
309
|
-
|
|
310
|
-
|
|
277
|
+
for (let component = 0; component < numberOfComponents; component++) {
|
|
278
|
+
const dataRange = dataArray.getRange(component);
|
|
279
|
+
model.volume.getProperty().setUseGradientOpacity(component, true);
|
|
280
|
+
const minV = Math.max(0.0, edgeGradient - 0.3) / 0.7;
|
|
311
281
|
if (minV > 0.0) {
|
|
312
|
-
model.volume.getProperty().setGradientOpacityMinimumValue(
|
|
282
|
+
model.volume.getProperty().setGradientOpacityMinimumValue(component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 0.2) * minV * minV));
|
|
313
283
|
} else {
|
|
314
|
-
model.volume.getProperty().setGradientOpacityMinimumValue(
|
|
284
|
+
model.volume.getProperty().setGradientOpacityMinimumValue(component, 0.0);
|
|
315
285
|
}
|
|
316
|
-
|
|
317
|
-
model.volume.getProperty().setGradientOpacityMaximumValue(_component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 1.0) * edgeGradient * edgeGradient));
|
|
286
|
+
model.volume.getProperty().setGradientOpacityMaximumValue(component, Math.exp(Math.log((dataRange[1] - dataRange[0]) * 1.0) * edgeGradient * edgeGradient));
|
|
318
287
|
}
|
|
319
288
|
}
|
|
320
|
-
|
|
321
289
|
publicAPI.modified();
|
|
322
290
|
}
|
|
323
291
|
};
|
|
324
|
-
|
|
325
|
-
var parentSetColorBy = publicAPI.setColorBy;
|
|
326
|
-
|
|
292
|
+
const parentSetColorBy = publicAPI.setColorBy;
|
|
327
293
|
publicAPI.setColorBy = function (arrayName, arrayLocation) {
|
|
328
|
-
|
|
294
|
+
let componentIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
|
329
295
|
parentSetColorBy(arrayName, arrayLocation, componentIndex);
|
|
330
|
-
|
|
331
|
-
|
|
296
|
+
const lutProxy = publicAPI.getLookupTableProxy(arrayName);
|
|
297
|
+
const pwfProxy = publicAPI.getPiecewiseFunctionProxy(arrayName);
|
|
332
298
|
model.property.setRGBTransferFunction(0, lutProxy.getLookupTable());
|
|
333
299
|
model.property.setScalarOpacity(0, pwfProxy.getPiecewiseFunction());
|
|
334
300
|
};
|
|
335
|
-
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// ----------------------------------------------------------------------------
|
|
336
304
|
// Object factory
|
|
337
305
|
// ----------------------------------------------------------------------------
|
|
338
306
|
|
|
339
|
-
|
|
340
|
-
var DEFAULT_VALUES = {
|
|
307
|
+
const DEFAULT_VALUES = {
|
|
341
308
|
sampleDistance: -1,
|
|
342
309
|
edgeGradient: -1,
|
|
343
310
|
disableSolidColor: true,
|
|
344
311
|
is2DVolume: false
|
|
345
|
-
};
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// ----------------------------------------------------------------------------
|
|
346
315
|
|
|
347
316
|
function extend(publicAPI, model) {
|
|
348
|
-
|
|
349
|
-
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
317
|
+
let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
318
|
+
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
350
319
|
|
|
320
|
+
// Object methods
|
|
351
321
|
vtkAbstractRepresentationProxy.extend(publicAPI, model, initialValues);
|
|
352
|
-
macro.get(publicAPI, model, ['sampleDistance', 'edgeGradient', 'cropFilter', 'is2DVolume']);
|
|
322
|
+
macro.get(publicAPI, model, ['sampleDistance', 'edgeGradient', 'cropFilter', 'is2DVolume']);
|
|
353
323
|
|
|
324
|
+
// Object specific methods
|
|
354
325
|
vtkVolumeRepresentationProxy(publicAPI, model);
|
|
355
326
|
macro.proxyPropertyMapping(publicAPI, model, {
|
|
356
327
|
xSlice: {
|
|
@@ -398,14 +369,18 @@ function extend(publicAPI, model) {
|
|
|
398
369
|
property: 'croppingPlanes'
|
|
399
370
|
}
|
|
400
371
|
});
|
|
401
|
-
}
|
|
372
|
+
}
|
|
402
373
|
|
|
403
|
-
|
|
374
|
+
// ----------------------------------------------------------------------------
|
|
375
|
+
|
|
376
|
+
const newInstance = macro.newInstance(extend, 'vtkVolumeRepresentationProxy');
|
|
377
|
+
|
|
378
|
+
// ----------------------------------------------------------------------------
|
|
404
379
|
|
|
405
380
|
var vtkVolumeRepresentationProxy$1 = {
|
|
406
|
-
newInstance
|
|
407
|
-
extend
|
|
408
|
-
updateConfiguration
|
|
381
|
+
newInstance,
|
|
382
|
+
extend,
|
|
383
|
+
updateConfiguration
|
|
409
384
|
};
|
|
410
385
|
|
|
411
386
|
export { vtkVolumeRepresentationProxy$1 as default, extend, newInstance };
|
package/Proxy/Representations.js
CHANGED
|
@@ -7,13 +7,13 @@ import vtkSlicedGeometryRepresentationProxy from './Representations/SlicedGeomet
|
|
|
7
7
|
import vtkVolumeRepresentationProxy from './Representations/VolumeRepresentationProxy.js';
|
|
8
8
|
|
|
9
9
|
var Representations = {
|
|
10
|
-
vtkGeometryRepresentationProxy
|
|
11
|
-
vtkGlyphRepresentationProxy
|
|
12
|
-
vtkMoleculeRepresentationProxy
|
|
13
|
-
vtkSkyboxRepresentationProxy
|
|
14
|
-
vtkSliceRepresentationProxy
|
|
15
|
-
vtkSlicedGeometryRepresentationProxy
|
|
16
|
-
vtkVolumeRepresentationProxy
|
|
10
|
+
vtkGeometryRepresentationProxy,
|
|
11
|
+
vtkGlyphRepresentationProxy,
|
|
12
|
+
vtkMoleculeRepresentationProxy,
|
|
13
|
+
vtkSkyboxRepresentationProxy,
|
|
14
|
+
vtkSliceRepresentationProxy,
|
|
15
|
+
vtkSlicedGeometryRepresentationProxy,
|
|
16
|
+
vtkVolumeRepresentationProxy
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
export { Representations as default };
|
package/Proxy/index.js
CHANGED
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ vtk.js aims to be a subset of VTK and provide 3D rendering using WebGL (+WebGPU)
|
|
|
35
35
|
VTK.js is a complete rewrite of VTK/C++ using plain JavaScript (ES6).
|
|
36
36
|
The focus of the rewrite, so far, has been the rendering pipeline for ImageData and PolyData, the pipeline infrastructure, and frequently used readers (obj, stl, vtp, vti). Some filters are also provided as demonstrations. We are not aiming for vtk.js to provide the same set of filters that is available in VTK/C++, but vtk.js does provide the infrastructure needed to define pipelines and filters.
|
|
37
37
|
|
|
38
|
-
We have also started to explore a path where you can compile some bits of VTK/C++ into WebAssembly and to enable them to interact with vtk.js. With such interaction, you can pick and choose what you need to extract from VTK and enable it inside your web application. VTK/C++ WebAssembly can even be used for rendering, and examples can be found in [VTK repository](https://github.com/Kitware/VTK/tree/master/Examples/Emscripten/Cxx). Additionally [itk
|
|
38
|
+
We have also started to explore a path where you can compile some bits of VTK/C++ into WebAssembly and to enable them to interact with vtk.js. With such interaction, you can pick and choose what you need to extract from VTK and enable it inside your web application. VTK/C++ WebAssembly can even be used for rendering, and examples can be found in [VTK repository](https://github.com/Kitware/VTK/tree/master/Examples/Emscripten/Cxx). Additionally [itk-wasm](https://github.com/InsightSoftwareConsortium/itk-wasm) (which is ITK via WebAssembly) also provides proven implementations for several image filters and data readers. There are, however, some additional costs in terms of the size of the WebAssembly file that will have to be downloaded when visiting a VTK or ITK WebAssembly webpage; and we still have some work to do to streamline the vtk.js + VTK WebAssembly integrations.
|
|
39
39
|
|
|
40
40
|
In general if you want to stay in the pure JavaScript land, then vtk.js is perhaps the ideal solution for you. We welcome your feedback, including your contributions for new visualization filters, bug fixes, and examples.
|
|
41
41
|
|
|
@@ -9,50 +9,47 @@ import vtkPlane from '../../../Common/DataModel/Plane.js';
|
|
|
9
9
|
* @param {Vector3} p2
|
|
10
10
|
* @param {vtkImageMapper|vtkImageArrayMapper} mapper
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
12
|
function doPicking(p1, p2, mapper) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
const imageData = mapper.getCurrentImage();
|
|
14
|
+
const extent = imageData.getExtent();
|
|
15
|
+
|
|
16
|
+
// Slice origin
|
|
17
|
+
const ijk = [extent[0], extent[2], extent[4]];
|
|
18
|
+
const {
|
|
19
|
+
ijkMode
|
|
20
|
+
} = mapper.getClosestIJKAxis();
|
|
21
|
+
let nSlice = mapper.isA('vtkImageArrayMapper') ? mapper.getSubSlice() : mapper.getSlice();
|
|
24
22
|
if (ijkMode !== mapper.getSlicingMode()) {
|
|
25
23
|
// If not IJK slicing, get the IJK slice from the XYZ position/slice
|
|
26
24
|
nSlice = mapper.getSliceAtPosition(nSlice);
|
|
27
25
|
}
|
|
28
|
-
|
|
29
26
|
ijk[ijkMode] += nSlice;
|
|
30
|
-
|
|
31
|
-
imageData.indexToWorld(ijk, worldOrigin);
|
|
27
|
+
const worldOrigin = [0, 0, 0];
|
|
28
|
+
imageData.indexToWorld(ijk, worldOrigin);
|
|
32
29
|
|
|
30
|
+
// Normal computation
|
|
33
31
|
ijk[ijkMode] += 1;
|
|
34
|
-
|
|
32
|
+
const worldNormal = [0, 0, 0];
|
|
35
33
|
imageData.indexToWorld(ijk, worldNormal);
|
|
36
34
|
worldNormal[0] -= worldOrigin[0];
|
|
37
35
|
worldNormal[1] -= worldOrigin[1];
|
|
38
36
|
worldNormal[2] -= worldOrigin[2];
|
|
39
37
|
vec3.normalize(worldNormal, worldNormal);
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
const intersect = vtkPlane.intersectWithLine(p1, p2, worldOrigin, worldNormal);
|
|
42
39
|
if (intersect.intersection) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
imageData.worldToIndex(point, absoluteIJK);
|
|
40
|
+
const point = intersect.x;
|
|
41
|
+
const absoluteIJK = [0, 0, 0];
|
|
42
|
+
imageData.worldToIndex(point, absoluteIJK);
|
|
43
|
+
// `t` is the parametric position along the line
|
|
46
44
|
// defined in Plane.intersectWithLine
|
|
47
|
-
|
|
48
45
|
return {
|
|
49
46
|
t: intersect.t,
|
|
50
|
-
absoluteIJK
|
|
47
|
+
absoluteIJK
|
|
51
48
|
};
|
|
52
49
|
}
|
|
53
|
-
|
|
54
50
|
return null;
|
|
55
51
|
}
|
|
52
|
+
|
|
56
53
|
/**
|
|
57
54
|
* Implement point picking for image plane.
|
|
58
55
|
* The plane is defined by the imageData and current slice number,
|
|
@@ -62,30 +59,28 @@ function doPicking(p1, p2, mapper) {
|
|
|
62
59
|
* @param {Vector3} p2
|
|
63
60
|
* @param {vtkImageMapper|vtkImageArrayMapper} mapper
|
|
64
61
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
62
|
function intersectWithLineForPointPicking(p1, p2, mapper) {
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
const pickingData = doPicking(p1, p2, mapper);
|
|
70
64
|
if (pickingData) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
// NB: point picking means closest slice, means rounding
|
|
65
|
+
const imageData = mapper.getCurrentImage();
|
|
66
|
+
const extent = imageData.getExtent();
|
|
74
67
|
|
|
75
|
-
|
|
68
|
+
// Get closer integer ijk
|
|
69
|
+
// NB: point picking means closest slice, means rounding
|
|
70
|
+
const ijk = [Math.round(pickingData.absoluteIJK[0]), Math.round(pickingData.absoluteIJK[1]), Math.round(pickingData.absoluteIJK[2])];
|
|
76
71
|
|
|
72
|
+
// Are we outside our actual extent
|
|
77
73
|
if (ijk[0] < extent[0] || ijk[0] > extent[1] || ijk[1] < extent[2] || ijk[1] > extent[3] || ijk[2] < extent[4] || ijk[2] > extent[5]) {
|
|
78
74
|
return null;
|
|
79
75
|
}
|
|
80
|
-
|
|
81
76
|
return {
|
|
82
77
|
t: pickingData.t,
|
|
83
|
-
ijk
|
|
78
|
+
ijk
|
|
84
79
|
};
|
|
85
80
|
}
|
|
86
|
-
|
|
87
81
|
return null;
|
|
88
82
|
}
|
|
83
|
+
|
|
89
84
|
/**
|
|
90
85
|
* Implement cell picking for image plane.
|
|
91
86
|
* The plane is defined by the imageData and current slice number,
|
|
@@ -95,32 +90,32 @@ function intersectWithLineForPointPicking(p1, p2, mapper) {
|
|
|
95
90
|
* @param {Vector3} p2
|
|
96
91
|
* @param {vtkImageMapper|vtkImageArrayMapper} mapper
|
|
97
92
|
*/
|
|
98
|
-
|
|
99
93
|
function intersectWithLineForCellPicking(p1, p2, mapper) {
|
|
100
|
-
|
|
101
|
-
|
|
94
|
+
const pickingData = doPicking(p1, p2, mapper);
|
|
102
95
|
if (pickingData) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// NB: cell picking means closest voxel, means flooring
|
|
96
|
+
const imageData = mapper.getCurrentImage();
|
|
97
|
+
const extent = imageData.getExtent();
|
|
98
|
+
const absIJK = pickingData.absoluteIJK;
|
|
107
99
|
|
|
108
|
-
|
|
100
|
+
// Get closer integer ijk
|
|
101
|
+
// NB: cell picking means closest voxel, means flooring
|
|
102
|
+
const ijk = [Math.floor(absIJK[0]), Math.floor(absIJK[1]), Math.floor(absIJK[2])];
|
|
109
103
|
|
|
110
|
-
|
|
104
|
+
// Are we outside our actual extent
|
|
105
|
+
if (ijk[0] < extent[0] || ijk[0] > extent[1] - 1 || ijk[1] < extent[2] || ijk[1] > extent[3] - 1 || ijk[2] < extent[4] ||
|
|
106
|
+
// handle single-slice images
|
|
111
107
|
ijk[2] > (extent[5] ? extent[5] - 1 : extent[5])) {
|
|
112
108
|
return null;
|
|
113
|
-
}
|
|
114
|
-
|
|
109
|
+
}
|
|
115
110
|
|
|
116
|
-
|
|
111
|
+
// Parametric coordinates within cell
|
|
112
|
+
const pCoords = [absIJK[0] - ijk[0], absIJK[1] - ijk[1], absIJK[2] - ijk[2]];
|
|
117
113
|
return {
|
|
118
114
|
t: pickingData.t,
|
|
119
|
-
ijk
|
|
120
|
-
pCoords
|
|
115
|
+
ijk,
|
|
116
|
+
pCoords
|
|
121
117
|
};
|
|
122
118
|
}
|
|
123
|
-
|
|
124
119
|
return null;
|
|
125
120
|
}
|
|
126
121
|
|