@plastic-software/three 0.174.0 → 0.175.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/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -3,26 +3,16 @@ import {
|
|
|
3
3
|
Vector4
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/** @module NURBSUtils */
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* Finds knot vector span.
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* NURBS Utils
|
|
15
|
-
**************************************************************/
|
|
16
|
-
|
|
17
|
-
/*
|
|
18
|
-
Finds knot vector span.
|
|
19
|
-
|
|
20
|
-
p : degree
|
|
21
|
-
u : parametric value
|
|
22
|
-
U : knot vector
|
|
23
|
-
|
|
24
|
-
returns the span
|
|
25
|
-
*/
|
|
11
|
+
* @param {number} p - The degree.
|
|
12
|
+
* @param {number} u - The parametric value.
|
|
13
|
+
* @param {Array<number>} U - The knot vector.
|
|
14
|
+
* @return {number} The span.
|
|
15
|
+
*/
|
|
26
16
|
function findSpan( p, u, U ) {
|
|
27
17
|
|
|
28
18
|
const n = U.length - p - 1;
|
|
@@ -63,17 +53,15 @@ function findSpan( p, u, U ) {
|
|
|
63
53
|
|
|
64
54
|
}
|
|
65
55
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
returns array[p+1] with basis functions values.
|
|
76
|
-
*/
|
|
56
|
+
/**
|
|
57
|
+
* Calculates basis functions. See The NURBS Book, page 70, algorithm A2.2.
|
|
58
|
+
*
|
|
59
|
+
* @param {number} span - The span in which `u` lies.
|
|
60
|
+
* @param {number} u - The parametric value.
|
|
61
|
+
* @param {number} p - The degree.
|
|
62
|
+
* @param {Array<number>} U - The knot vector.
|
|
63
|
+
* @return {Array<number>} Array[p+1] with basis functions values.
|
|
64
|
+
*/
|
|
77
65
|
function calcBasisFunctions( span, u, p, U ) {
|
|
78
66
|
|
|
79
67
|
const N = [];
|
|
@@ -106,17 +94,15 @@ function calcBasisFunctions( span, u, p, U ) {
|
|
|
106
94
|
|
|
107
95
|
}
|
|
108
96
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
returns point for given u
|
|
119
|
-
*/
|
|
97
|
+
/**
|
|
98
|
+
* Calculates B-Spline curve points. See The NURBS Book, page 82, algorithm A3.1.
|
|
99
|
+
*
|
|
100
|
+
* @param {number} p - The degree of the B-Spline.
|
|
101
|
+
* @param {Array<number>} U - The knot vector.
|
|
102
|
+
* @param {Array<Vector4>} P - The control points
|
|
103
|
+
* @param {number} u - The parametric point.
|
|
104
|
+
* @return {Vector4} The point for given `u`.
|
|
105
|
+
*/
|
|
120
106
|
function calcBSplinePoint( p, U, P, u ) {
|
|
121
107
|
|
|
122
108
|
const span = findSpan( p, u, U );
|
|
@@ -139,18 +125,16 @@ function calcBSplinePoint( p, U, P, u ) {
|
|
|
139
125
|
|
|
140
126
|
}
|
|
141
127
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
returns array[n+1][p+1] with basis functions derivatives
|
|
153
|
-
*/
|
|
128
|
+
/**
|
|
129
|
+
* Calculates basis functions derivatives. See The NURBS Book, page 72, algorithm A2.3.
|
|
130
|
+
*
|
|
131
|
+
* @param {number} span - The span in which `u` lies.
|
|
132
|
+
* @param {number} u - The parametric point.
|
|
133
|
+
* @param {number} p - The degree.
|
|
134
|
+
* @param {number} n - number of derivatives to calculate
|
|
135
|
+
* @param {Array<number>} U - The knot vector.
|
|
136
|
+
* @return {Array<Array<number>>} An array[n+1][p+1] with basis functions derivatives.
|
|
137
|
+
*/
|
|
154
138
|
function calcBasisFunctionDerivatives( span, u, p, n, U ) {
|
|
155
139
|
|
|
156
140
|
const zeroArr = [];
|
|
@@ -273,18 +257,16 @@ function calcBasisFunctionDerivatives( span, u, p, n, U ) {
|
|
|
273
257
|
|
|
274
258
|
}
|
|
275
259
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
returns array[d+1] with derivatives
|
|
287
|
-
*/
|
|
260
|
+
/**
|
|
261
|
+
* Calculates derivatives of a B-Spline. See The NURBS Book, page 93, algorithm A3.2.
|
|
262
|
+
*
|
|
263
|
+
* @param {number} p - The degree.
|
|
264
|
+
* @param {Array<number>} U - The knot vector.
|
|
265
|
+
* @param {Array<Vector4>} P - The control points
|
|
266
|
+
* @param {number} u - The parametric point.
|
|
267
|
+
* @param {number} nd - The number of derivatives.
|
|
268
|
+
* @return {Array<Vector4>} An array[d+1] with derivatives.
|
|
269
|
+
*/
|
|
288
270
|
function calcBSplineDerivatives( p, U, P, u, nd ) {
|
|
289
271
|
|
|
290
272
|
const du = nd < p ? nd : p;
|
|
@@ -330,12 +312,13 @@ function calcBSplineDerivatives( p, U, P, u, nd ) {
|
|
|
330
312
|
|
|
331
313
|
}
|
|
332
314
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
315
|
+
/**
|
|
316
|
+
* Calculates "K over I".
|
|
317
|
+
*
|
|
318
|
+
* @param {number} k - The K value.
|
|
319
|
+
* @param {number} i - The I value.
|
|
320
|
+
* @return {number} k!/(i!(k-i)!)
|
|
321
|
+
*/
|
|
339
322
|
function calcKoverI( k, i ) {
|
|
340
323
|
|
|
341
324
|
let nom = 1;
|
|
@@ -364,14 +347,12 @@ function calcKoverI( k, i ) {
|
|
|
364
347
|
|
|
365
348
|
}
|
|
366
349
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
returns array with derivatives for rational curve.
|
|
374
|
-
*/
|
|
350
|
+
/**
|
|
351
|
+
* Calculates derivatives (0-nd) of rational curve. See The NURBS Book, page 127, algorithm A4.2.
|
|
352
|
+
*
|
|
353
|
+
* @param {Array<Vector4>} Pders - Array with derivatives.
|
|
354
|
+
* @return {Array<Vector3>} An array with derivatives for rational curve.
|
|
355
|
+
*/
|
|
375
356
|
function calcRationalCurveDerivatives( Pders ) {
|
|
376
357
|
|
|
377
358
|
const nd = Pders.length;
|
|
@@ -406,18 +387,16 @@ function calcRationalCurveDerivatives( Pders ) {
|
|
|
406
387
|
|
|
407
388
|
}
|
|
408
389
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
returns array with derivatives.
|
|
420
|
-
*/
|
|
390
|
+
/**
|
|
391
|
+
* Calculates NURBS curve derivatives. See The NURBS Book, page 127, algorithm A4.2.
|
|
392
|
+
*
|
|
393
|
+
* @param {number} p - The degree.
|
|
394
|
+
* @param {Array<number>} U - The knot vector.
|
|
395
|
+
* @param {Array<Vector4>} P - The control points in homogeneous space.
|
|
396
|
+
* @param {number} u - The parametric point.
|
|
397
|
+
* @param {number} nd - The number of derivatives.
|
|
398
|
+
* @return {Array<Vector3>} array with derivatives for rational curve.
|
|
399
|
+
*/
|
|
421
400
|
function calcNURBSDerivatives( p, U, P, u, nd ) {
|
|
422
401
|
|
|
423
402
|
const Pders = calcBSplineDerivatives( p, U, P, u, nd );
|
|
@@ -425,17 +404,18 @@ function calcNURBSDerivatives( p, U, P, u, nd ) {
|
|
|
425
404
|
|
|
426
405
|
}
|
|
427
406
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
U
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
407
|
+
/**
|
|
408
|
+
* Calculates a rational B-Spline surface point. See The NURBS Book, page 134, algorithm A4.3.
|
|
409
|
+
*
|
|
410
|
+
* @param {number} p - The first degree of B-Spline surface.
|
|
411
|
+
* @param {number} q - The second degree of B-Spline surface.
|
|
412
|
+
* @param {Array<number>} U - The first knot vector.
|
|
413
|
+
* @param {Array<number>} V - The second knot vector.
|
|
414
|
+
* @param {Array<Array<Vector4>>} P - The control points in homogeneous space.
|
|
415
|
+
* @param {number} u - The first parametric point.
|
|
416
|
+
* @param {number} v - The second parametric point.
|
|
417
|
+
* @param {Vector3} target - The target vector.
|
|
418
|
+
*/
|
|
439
419
|
function calcSurfacePoint( p, q, U, V, P, u, v, target ) {
|
|
440
420
|
|
|
441
421
|
const uspan = findSpan( p, u, U );
|
|
@@ -472,16 +452,21 @@ function calcSurfacePoint( p, q, U, V, P, u, v, target ) {
|
|
|
472
452
|
|
|
473
453
|
}
|
|
474
454
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
p
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
455
|
+
/**
|
|
456
|
+
* Calculates a rational B-Spline volume point. See The NURBS Book, page 134, algorithm A4.3.
|
|
457
|
+
*
|
|
458
|
+
* @param {number} p - The first degree of B-Spline surface.
|
|
459
|
+
* @param {number} q - The second degree of B-Spline surface.
|
|
460
|
+
* @param {number} r - The third degree of B-Spline surface.
|
|
461
|
+
* @param {Array<number>} U - The first knot vector.
|
|
462
|
+
* @param {Array<number>} V - The second knot vector.
|
|
463
|
+
* @param {Array<number>} W - The third knot vector.
|
|
464
|
+
* @param {Array<Array<Array<Vector4>>>} P - The control points in homogeneous space.
|
|
465
|
+
* @param {number} u - The first parametric point.
|
|
466
|
+
* @param {number} v - The second parametric point.
|
|
467
|
+
* @param {number} w - The third parametric point.
|
|
468
|
+
* @param {Vector3} target - The target vector.
|
|
469
|
+
*/
|
|
485
470
|
function calcVolumePoint( p, q, r, U, V, W, P, u, v, w, target ) {
|
|
486
471
|
|
|
487
472
|
const uspan = findSpan( p, u, U );
|
|
@@ -530,7 +515,6 @@ function calcVolumePoint( p, q, r, U, V, W, P, u, v, w, target ) {
|
|
|
530
515
|
|
|
531
516
|
}
|
|
532
517
|
|
|
533
|
-
|
|
534
518
|
export {
|
|
535
519
|
findSpan,
|
|
536
520
|
calcBasisFunctions,
|
|
@@ -4,13 +4,23 @@ import {
|
|
|
4
4
|
import * as NURBSUtils from '../curves/NURBSUtils.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* NURBS volume
|
|
7
|
+
* This class represents a NURBS volume.
|
|
8
8
|
*
|
|
9
|
-
* Implementation is based on (x, y, z [, w=1]]) control points with w=weight
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
* Implementation is based on `(x, y [, z=0 [, w=1]])` control points with `w=weight`.
|
|
10
|
+
*/
|
|
12
11
|
class NURBSVolume {
|
|
13
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new NURBS surface.
|
|
15
|
+
*
|
|
16
|
+
* @param {number} degree1 - The first NURBS degree.
|
|
17
|
+
* @param {number} degree2 - The second NURBS degree.
|
|
18
|
+
* @param {number} degree3 - The third NURBS degree.
|
|
19
|
+
* @param {Array<number>} knots1 - The first knots as a flat array of numbers.
|
|
20
|
+
* @param {Array<number>} knots2 - The second knots as a flat array of numbers.
|
|
21
|
+
* @param {Array<number>} knots3 - The third knots as a flat array of numbers.
|
|
22
|
+
* @param {Array<Array<Array<Vector2|Vector3|Vector4>>>} controlPoints - An array^3 holding control points.
|
|
23
|
+
*/
|
|
14
24
|
constructor( degree1, degree2, degree3, knots1, knots2, knots3 /* arrays of reals */, controlPoints /* array^3 of Vector(2|3|4) */ ) {
|
|
15
25
|
|
|
16
26
|
this.degree1 = degree1;
|
|
@@ -47,6 +57,14 @@ class NURBSVolume {
|
|
|
47
57
|
|
|
48
58
|
}
|
|
49
59
|
|
|
60
|
+
/**
|
|
61
|
+
* This method returns a vector in 3D space for the given interpolation factor. This vector lies within the NURBS volume.
|
|
62
|
+
*
|
|
63
|
+
* @param {number} t1 - The first interpolation factor representing the `u` position within the volume. Must be in the range `[0,1]`.
|
|
64
|
+
* @param {number} t2 - The second interpolation factor representing the `v` position within the volume. Must be in the range `[0,1]`.
|
|
65
|
+
* @param {number} t3 - The third interpolation factor representing the `w` position within the volume. Must be in the range `[0,1]`.
|
|
66
|
+
* @param {Vector3} target - The target vector the result is written to.
|
|
67
|
+
*/
|
|
50
68
|
getPoint( t1, t2, t3, target ) {
|
|
51
69
|
|
|
52
70
|
const u = this.knots1[ 0 ] + t1 * ( this.knots1[ this.knots1.length - 1 ] - this.knots1[ 0 ] ); // linear mapping t1->u
|
|
@@ -9,8 +9,21 @@ import {
|
|
|
9
9
|
} from 'three';
|
|
10
10
|
import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* A class that creates an anaglyph effect.
|
|
14
|
+
*
|
|
15
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
16
|
+
* When using {@link WebGPURenderer}, use {@link AnaglyphPassNode}.
|
|
17
|
+
*/
|
|
12
18
|
class AnaglyphEffect {
|
|
13
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new anaglyph effect.
|
|
22
|
+
*
|
|
23
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
24
|
+
* @param {number} width - The width of the effect in physical pixels.
|
|
25
|
+
* @param {number} height - The height of the effect in physical pixels.
|
|
26
|
+
*/
|
|
14
27
|
constructor( renderer, width = 512, height = 512 ) {
|
|
15
28
|
|
|
16
29
|
// Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4
|
|
@@ -94,6 +107,12 @@ class AnaglyphEffect {
|
|
|
94
107
|
|
|
95
108
|
const _quad = new FullScreenQuad( _material );
|
|
96
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Resizes the effect.
|
|
112
|
+
*
|
|
113
|
+
* @param {number} width - The width of the effect in logical pixels.
|
|
114
|
+
* @param {number} height - The height of the effect in logical pixels.
|
|
115
|
+
*/
|
|
97
116
|
this.setSize = function ( width, height ) {
|
|
98
117
|
|
|
99
118
|
renderer.setSize( width, height );
|
|
@@ -105,6 +124,13 @@ class AnaglyphEffect {
|
|
|
105
124
|
|
|
106
125
|
};
|
|
107
126
|
|
|
127
|
+
/**
|
|
128
|
+
* When using this effect, this method should be called instead of the
|
|
129
|
+
* default {@link WebGLRenderer#render}.
|
|
130
|
+
*
|
|
131
|
+
* @param {Object3D} scene - The scene to render.
|
|
132
|
+
* @param {Camera} camera - The camera.
|
|
133
|
+
*/
|
|
108
134
|
this.render = function ( scene, camera ) {
|
|
109
135
|
|
|
110
136
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
@@ -130,6 +156,10 @@ class AnaglyphEffect {
|
|
|
130
156
|
|
|
131
157
|
};
|
|
132
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Frees internal resources. This method should be called
|
|
161
|
+
* when the effect is no longer required.
|
|
162
|
+
*/
|
|
133
163
|
this.dispose = function () {
|
|
134
164
|
|
|
135
165
|
_renderTargetL.dispose();
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* A class that creates an ASCII effect.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* The ASCII generation is based on [jsascii]{@link https://github.com/hassadee/jsascii/blob/master/jsascii.js}.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
6
|
class AsciiEffect {
|
|
8
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Constructs a new ASCII effect.
|
|
10
|
+
*
|
|
11
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
12
|
+
* @param {string} [charSet=' .:-=+*#%@'] - The char set.
|
|
13
|
+
* @param {AsciiEffect~Options} [options] - The configuration parameter.
|
|
14
|
+
*/
|
|
9
15
|
constructor( renderer, charSet = ' .:-=+*#%@', options = {} ) {
|
|
10
16
|
|
|
11
17
|
// ' .,:;=|iI+hHOE#`$';
|
|
@@ -14,12 +20,12 @@ class AsciiEffect {
|
|
|
14
20
|
|
|
15
21
|
// Some ASCII settings
|
|
16
22
|
|
|
17
|
-
const fResolution = options[ 'resolution' ] || 0.15;
|
|
23
|
+
const fResolution = options[ 'resolution' ] || 0.15;
|
|
18
24
|
const iScale = options[ 'scale' ] || 1;
|
|
19
|
-
const bColor = options[ 'color' ] || false;
|
|
20
|
-
const bAlpha = options[ 'alpha' ] || false;
|
|
21
|
-
const bBlock = options[ 'block' ] || false;
|
|
22
|
-
const bInvert = options[ 'invert' ] || false;
|
|
25
|
+
const bColor = options[ 'color' ] || false;
|
|
26
|
+
const bAlpha = options[ 'alpha' ] || false;
|
|
27
|
+
const bBlock = options[ 'block' ] || false;
|
|
28
|
+
const bInvert = options[ 'invert' ] || false;
|
|
23
29
|
const strResolution = options[ 'strResolution' ] || 'low';
|
|
24
30
|
|
|
25
31
|
let width, height;
|
|
@@ -33,6 +39,12 @@ class AsciiEffect {
|
|
|
33
39
|
let iWidth, iHeight;
|
|
34
40
|
let oImg;
|
|
35
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Resizes the effect.
|
|
44
|
+
*
|
|
45
|
+
* @param {number} w - The width of the effect in logical pixels.
|
|
46
|
+
* @param {number} h - The height of the effect in logical pixels.
|
|
47
|
+
*/
|
|
36
48
|
this.setSize = function ( w, h ) {
|
|
37
49
|
|
|
38
50
|
width = w;
|
|
@@ -44,7 +56,13 @@ class AsciiEffect {
|
|
|
44
56
|
|
|
45
57
|
};
|
|
46
58
|
|
|
47
|
-
|
|
59
|
+
/**
|
|
60
|
+
* When using this effect, this method should be called instead of the
|
|
61
|
+
* default {@link WebGLRenderer#render}.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object3D} scene - The scene to render.
|
|
64
|
+
* @param {Camera} camera - The camera.
|
|
65
|
+
*/
|
|
48
66
|
this.render = function ( scene, camera ) {
|
|
49
67
|
|
|
50
68
|
renderer.render( scene, camera );
|
|
@@ -52,6 +70,12 @@ class AsciiEffect {
|
|
|
52
70
|
|
|
53
71
|
};
|
|
54
72
|
|
|
73
|
+
/**
|
|
74
|
+
* The DOM element of the effect. This element must be used instead of the
|
|
75
|
+
* default {@link WebGLRenderer#domElement}.
|
|
76
|
+
*
|
|
77
|
+
* @type {HTMLDivElement}
|
|
78
|
+
*/
|
|
55
79
|
this.domElement = domElement;
|
|
56
80
|
|
|
57
81
|
|
|
@@ -77,8 +101,8 @@ class AsciiEffect {
|
|
|
77
101
|
|
|
78
102
|
}
|
|
79
103
|
|
|
80
|
-
oAscii.cellSpacing = 0;
|
|
81
|
-
oAscii.cellPadding = 0;
|
|
104
|
+
oAscii.cellSpacing = '0';
|
|
105
|
+
oAscii.cellPadding = '0';
|
|
82
106
|
|
|
83
107
|
const oStyle = oAscii.style;
|
|
84
108
|
oStyle.whiteSpace = 'pre';
|
|
@@ -94,8 +118,6 @@ class AsciiEffect {
|
|
|
94
118
|
}
|
|
95
119
|
|
|
96
120
|
|
|
97
|
-
const aDefaultCharList = ( ' .,:;i1tfLCG08@' ).split( '' );
|
|
98
|
-
const aDefaultColorCharList = ( ' CGO08@' ).split( '' );
|
|
99
121
|
const strFont = 'courier new, monospace';
|
|
100
122
|
|
|
101
123
|
const oCanvasImg = renderer.domElement;
|
|
@@ -114,9 +136,19 @@ class AsciiEffect {
|
|
|
114
136
|
|
|
115
137
|
}
|
|
116
138
|
|
|
117
|
-
let aCharList
|
|
139
|
+
let aCharList;
|
|
140
|
+
if ( charSet ) {
|
|
141
|
+
|
|
142
|
+
aCharList = ( charSet ).split( '' );
|
|
143
|
+
|
|
144
|
+
} else {
|
|
145
|
+
|
|
146
|
+
const aDefaultCharList = ( ' .,:;i1tfLCG08@' ).split( '' );
|
|
147
|
+
const aDefaultColorCharList = ( ' CGO08@' ).split( '' );
|
|
148
|
+
aCharList = ( bColor ? aDefaultColorCharList : aDefaultCharList );
|
|
149
|
+
|
|
150
|
+
}
|
|
118
151
|
|
|
119
|
-
if ( charSet ) aCharList = charSet;
|
|
120
152
|
|
|
121
153
|
// Setup dom
|
|
122
154
|
|
|
@@ -260,4 +292,17 @@ class AsciiEffect {
|
|
|
260
292
|
|
|
261
293
|
}
|
|
262
294
|
|
|
295
|
+
/**
|
|
296
|
+
* This type represents configuration settings of `AsciiEffect`.
|
|
297
|
+
*
|
|
298
|
+
* @typedef {Object} AsciiEffect~Options
|
|
299
|
+
* @property {number} [resolution=0.15] - A higher value leads to more details.
|
|
300
|
+
* @property {number} [scale=1] - The scale of the effect.
|
|
301
|
+
* @property {boolean} [color=false] - Whether colors should be enabled or not. Better quality but slows down rendering.
|
|
302
|
+
* @property {boolean} [alpha=false] - Whether transparency should be enabled or not.
|
|
303
|
+
* @property {boolean} [block=false] - Whether blocked characters should be enabled or not.
|
|
304
|
+
* @property {boolean} [invert=false] - Whether colors should be inverted or not.
|
|
305
|
+
* @property {('low'|'medium'|'high')} [strResolution='low'] - The string resolution.
|
|
306
|
+
**/
|
|
307
|
+
|
|
263
308
|
export { AsciiEffect };
|