@plastic-software/three 0.174.0 → 0.175.0
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 +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- 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 +1429 -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 +53 -0
- 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/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- 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
|
@@ -13,10 +13,20 @@ import {
|
|
|
13
13
|
* https://prideout.net/blog/old/blog/index.html@p=44.html
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* A Granny Knot curve.
|
|
18
|
+
*
|
|
19
|
+
* @augments Curve
|
|
20
|
+
*/
|
|
18
21
|
class GrannyKnot extends Curve {
|
|
19
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
25
|
+
*
|
|
26
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
27
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
28
|
+
* @return {Vector3} The position on the curve.
|
|
29
|
+
*/
|
|
20
30
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
21
31
|
|
|
22
32
|
const point = optionalTarget;
|
|
@@ -33,18 +43,39 @@ class GrannyKnot extends Curve {
|
|
|
33
43
|
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
|
|
37
|
-
|
|
46
|
+
/**
|
|
47
|
+
* A heart curve.
|
|
48
|
+
*
|
|
49
|
+
* @augments Curve
|
|
50
|
+
*/
|
|
38
51
|
class HeartCurve extends Curve {
|
|
39
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Constructs a new heart curve.
|
|
55
|
+
*
|
|
56
|
+
* @param {number} [scale=5] - The curve's scale.
|
|
57
|
+
*/
|
|
40
58
|
constructor( scale = 5 ) {
|
|
41
59
|
|
|
42
60
|
super();
|
|
43
61
|
|
|
62
|
+
/**
|
|
63
|
+
* The curve's scale.
|
|
64
|
+
*
|
|
65
|
+
* @type {number}
|
|
66
|
+
* @default 5
|
|
67
|
+
*/
|
|
44
68
|
this.scale = scale;
|
|
45
69
|
|
|
46
70
|
}
|
|
47
71
|
|
|
72
|
+
/**
|
|
73
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
74
|
+
*
|
|
75
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
76
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
77
|
+
* @return {Vector3} The position on the curve.
|
|
78
|
+
*/
|
|
48
79
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
49
80
|
|
|
50
81
|
const point = optionalTarget;
|
|
@@ -61,18 +92,39 @@ class HeartCurve extends Curve {
|
|
|
61
92
|
|
|
62
93
|
}
|
|
63
94
|
|
|
64
|
-
|
|
65
|
-
|
|
95
|
+
/**
|
|
96
|
+
* A Viviani curve.
|
|
97
|
+
*
|
|
98
|
+
* @augments Curve
|
|
99
|
+
*/
|
|
66
100
|
class VivianiCurve extends Curve {
|
|
67
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Constructs a new Viviani curve.
|
|
104
|
+
*
|
|
105
|
+
* @param {number} [scale=70] - The curve's scale.
|
|
106
|
+
*/
|
|
68
107
|
constructor( scale = 70 ) {
|
|
69
108
|
|
|
70
109
|
super();
|
|
71
110
|
|
|
111
|
+
/**
|
|
112
|
+
* The curve's scale.
|
|
113
|
+
*
|
|
114
|
+
* @type {number}
|
|
115
|
+
* @default 70
|
|
116
|
+
*/
|
|
72
117
|
this.scale = scale;
|
|
73
118
|
|
|
74
119
|
}
|
|
75
120
|
|
|
121
|
+
/**
|
|
122
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
123
|
+
*
|
|
124
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
125
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
126
|
+
* @return {Vector3} The position on the curve.
|
|
127
|
+
*/
|
|
76
128
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
77
129
|
|
|
78
130
|
const point = optionalTarget;
|
|
@@ -90,10 +142,20 @@ class VivianiCurve extends Curve {
|
|
|
90
142
|
|
|
91
143
|
}
|
|
92
144
|
|
|
93
|
-
|
|
94
|
-
|
|
145
|
+
/**
|
|
146
|
+
* A knot curve.
|
|
147
|
+
*
|
|
148
|
+
* @augments Curve
|
|
149
|
+
*/
|
|
95
150
|
class KnotCurve extends Curve {
|
|
96
151
|
|
|
152
|
+
/**
|
|
153
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
154
|
+
*
|
|
155
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
156
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
157
|
+
* @return {Vector3} The position on the curve.
|
|
158
|
+
*/
|
|
97
159
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
98
160
|
|
|
99
161
|
const point = optionalTarget;
|
|
@@ -113,11 +175,20 @@ class KnotCurve extends Curve {
|
|
|
113
175
|
|
|
114
176
|
}
|
|
115
177
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
178
|
+
/**
|
|
179
|
+
* A helix curve.
|
|
180
|
+
*
|
|
181
|
+
* @augments Curve
|
|
182
|
+
*/
|
|
119
183
|
class HelixCurve extends Curve {
|
|
120
184
|
|
|
185
|
+
/**
|
|
186
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
187
|
+
*
|
|
188
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
189
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
190
|
+
* @return {Vector3} The position on the curve.
|
|
191
|
+
*/
|
|
121
192
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
122
193
|
|
|
123
194
|
const point = optionalTarget;
|
|
@@ -137,18 +208,39 @@ class HelixCurve extends Curve {
|
|
|
137
208
|
|
|
138
209
|
}
|
|
139
210
|
|
|
140
|
-
|
|
141
|
-
|
|
211
|
+
/**
|
|
212
|
+
* A Trefoil Knot.
|
|
213
|
+
*
|
|
214
|
+
* @augments Curve
|
|
215
|
+
*/
|
|
142
216
|
class TrefoilKnot extends Curve {
|
|
143
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Constructs a new Trefoil Knot.
|
|
220
|
+
*
|
|
221
|
+
* @param {number} [scale=10] - The curve's scale.
|
|
222
|
+
*/
|
|
144
223
|
constructor( scale = 10 ) {
|
|
145
224
|
|
|
146
225
|
super();
|
|
147
226
|
|
|
227
|
+
/**
|
|
228
|
+
* The curve's scale.
|
|
229
|
+
*
|
|
230
|
+
* @type {number}
|
|
231
|
+
* @default 10
|
|
232
|
+
*/
|
|
148
233
|
this.scale = scale;
|
|
149
234
|
|
|
150
235
|
}
|
|
151
236
|
|
|
237
|
+
/**
|
|
238
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
239
|
+
*
|
|
240
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
241
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
242
|
+
* @return {Vector3} The position on the curve.
|
|
243
|
+
*/
|
|
152
244
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
153
245
|
|
|
154
246
|
const point = optionalTarget;
|
|
@@ -165,18 +257,39 @@ class TrefoilKnot extends Curve {
|
|
|
165
257
|
|
|
166
258
|
}
|
|
167
259
|
|
|
168
|
-
|
|
169
|
-
|
|
260
|
+
/**
|
|
261
|
+
* A torus knot.
|
|
262
|
+
*
|
|
263
|
+
* @augments Curve
|
|
264
|
+
*/
|
|
170
265
|
class TorusKnot extends Curve {
|
|
171
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Constructs a new torus knot.
|
|
269
|
+
*
|
|
270
|
+
* @param {number} [scale=10] - The curve's scale.
|
|
271
|
+
*/
|
|
172
272
|
constructor( scale = 10 ) {
|
|
173
273
|
|
|
174
274
|
super();
|
|
175
275
|
|
|
276
|
+
/**
|
|
277
|
+
* The curve's scale.
|
|
278
|
+
*
|
|
279
|
+
* @type {number}
|
|
280
|
+
* @default 10
|
|
281
|
+
*/
|
|
176
282
|
this.scale = scale;
|
|
177
283
|
|
|
178
284
|
}
|
|
179
285
|
|
|
286
|
+
/**
|
|
287
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
288
|
+
*
|
|
289
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
290
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
291
|
+
* @return {Vector3} The position on the curve.
|
|
292
|
+
*/
|
|
180
293
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
181
294
|
|
|
182
295
|
const point = optionalTarget;
|
|
@@ -196,18 +309,39 @@ class TorusKnot extends Curve {
|
|
|
196
309
|
|
|
197
310
|
}
|
|
198
311
|
|
|
199
|
-
|
|
200
|
-
|
|
312
|
+
/**
|
|
313
|
+
* A Cinquefoil Knot.
|
|
314
|
+
*
|
|
315
|
+
* @augments Curve
|
|
316
|
+
*/
|
|
201
317
|
class CinquefoilKnot extends Curve {
|
|
202
318
|
|
|
319
|
+
/**
|
|
320
|
+
* Constructs a new Cinquefoil Knot.
|
|
321
|
+
*
|
|
322
|
+
* @param {number} [scale=10] - The curve's scale.
|
|
323
|
+
*/
|
|
203
324
|
constructor( scale = 10 ) {
|
|
204
325
|
|
|
205
326
|
super();
|
|
206
327
|
|
|
328
|
+
/**
|
|
329
|
+
* The curve's scale.
|
|
330
|
+
*
|
|
331
|
+
* @type {number}
|
|
332
|
+
* @default 10
|
|
333
|
+
*/
|
|
207
334
|
this.scale = scale;
|
|
208
335
|
|
|
209
336
|
}
|
|
210
337
|
|
|
338
|
+
/**
|
|
339
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
340
|
+
*
|
|
341
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
342
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
343
|
+
* @return {Vector3} The position on the curve.
|
|
344
|
+
*/
|
|
211
345
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
212
346
|
|
|
213
347
|
const point = optionalTarget;
|
|
@@ -227,19 +361,39 @@ class CinquefoilKnot extends Curve {
|
|
|
227
361
|
|
|
228
362
|
}
|
|
229
363
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
364
|
+
/**
|
|
365
|
+
* A Trefoil Polynomial Knot.
|
|
366
|
+
*
|
|
367
|
+
* @augments Curve
|
|
368
|
+
*/
|
|
233
369
|
class TrefoilPolynomialKnot extends Curve {
|
|
234
370
|
|
|
371
|
+
/**
|
|
372
|
+
* Constructs a new Trefoil Polynomial Knot.
|
|
373
|
+
*
|
|
374
|
+
* @param {number} [scale=10] - The curve's scale.
|
|
375
|
+
*/
|
|
235
376
|
constructor( scale = 10 ) {
|
|
236
377
|
|
|
237
378
|
super();
|
|
238
379
|
|
|
380
|
+
/**
|
|
381
|
+
* The curve's scale.
|
|
382
|
+
*
|
|
383
|
+
* @type {number}
|
|
384
|
+
* @default 10
|
|
385
|
+
*/
|
|
239
386
|
this.scale = scale;
|
|
240
387
|
|
|
241
388
|
}
|
|
242
389
|
|
|
390
|
+
/**
|
|
391
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
392
|
+
*
|
|
393
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
394
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
395
|
+
* @return {Vector3} The position on the curve.
|
|
396
|
+
*/
|
|
243
397
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
244
398
|
|
|
245
399
|
const point = optionalTarget;
|
|
@@ -263,18 +417,39 @@ function scaleTo( x, y, t ) {
|
|
|
263
417
|
|
|
264
418
|
}
|
|
265
419
|
|
|
266
|
-
|
|
267
|
-
|
|
420
|
+
/**
|
|
421
|
+
* A Figure Eight Polynomial Knot.
|
|
422
|
+
*
|
|
423
|
+
* @augments Curve
|
|
424
|
+
*/
|
|
268
425
|
class FigureEightPolynomialKnot extends Curve {
|
|
269
426
|
|
|
427
|
+
/**
|
|
428
|
+
* Constructs a new Figure Eight Polynomial Knot.
|
|
429
|
+
*
|
|
430
|
+
* @param {number} [scale=1] - The curve's scale.
|
|
431
|
+
*/
|
|
270
432
|
constructor( scale = 1 ) {
|
|
271
433
|
|
|
272
434
|
super();
|
|
273
435
|
|
|
436
|
+
/**
|
|
437
|
+
* The curve's scale.
|
|
438
|
+
*
|
|
439
|
+
* @type {number}
|
|
440
|
+
* @default 1
|
|
441
|
+
*/
|
|
274
442
|
this.scale = scale;
|
|
275
443
|
|
|
276
444
|
}
|
|
277
445
|
|
|
446
|
+
/**
|
|
447
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
448
|
+
*
|
|
449
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
450
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
451
|
+
* @return {Vector3} The position on the curve.
|
|
452
|
+
*/
|
|
278
453
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
279
454
|
|
|
280
455
|
const point = optionalTarget;
|
|
@@ -291,18 +466,39 @@ class FigureEightPolynomialKnot extends Curve {
|
|
|
291
466
|
|
|
292
467
|
}
|
|
293
468
|
|
|
294
|
-
|
|
295
|
-
|
|
469
|
+
/**
|
|
470
|
+
* A Decorated Torus Knot 4a.
|
|
471
|
+
*
|
|
472
|
+
* @augments Curve
|
|
473
|
+
*/
|
|
296
474
|
class DecoratedTorusKnot4a extends Curve {
|
|
297
475
|
|
|
476
|
+
/**
|
|
477
|
+
* Constructs a new Decorated Torus Knot 4a.
|
|
478
|
+
*
|
|
479
|
+
* @param {number} [scale=1] - The curve's scale.
|
|
480
|
+
*/
|
|
298
481
|
constructor( scale = 40 ) {
|
|
299
482
|
|
|
300
483
|
super();
|
|
301
484
|
|
|
485
|
+
/**
|
|
486
|
+
* The curve's scale.
|
|
487
|
+
*
|
|
488
|
+
* @type {number}
|
|
489
|
+
* @default 40
|
|
490
|
+
*/
|
|
302
491
|
this.scale = scale;
|
|
303
492
|
|
|
304
493
|
}
|
|
305
494
|
|
|
495
|
+
/**
|
|
496
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
497
|
+
*
|
|
498
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
499
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
500
|
+
* @return {Vector3} The position on the curve.
|
|
501
|
+
*/
|
|
306
502
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
307
503
|
|
|
308
504
|
const point = optionalTarget;
|
|
@@ -319,18 +515,39 @@ class DecoratedTorusKnot4a extends Curve {
|
|
|
319
515
|
|
|
320
516
|
}
|
|
321
517
|
|
|
322
|
-
|
|
323
|
-
|
|
518
|
+
/**
|
|
519
|
+
* A Decorated Torus Knot 4b.
|
|
520
|
+
*
|
|
521
|
+
* @augments Curve
|
|
522
|
+
*/
|
|
324
523
|
class DecoratedTorusKnot4b extends Curve {
|
|
325
524
|
|
|
525
|
+
/**
|
|
526
|
+
* Constructs a new Decorated Torus Knot 4b.
|
|
527
|
+
*
|
|
528
|
+
* @param {number} [scale=1] - The curve's scale.
|
|
529
|
+
*/
|
|
326
530
|
constructor( scale = 40 ) {
|
|
327
531
|
|
|
328
532
|
super();
|
|
329
533
|
|
|
534
|
+
/**
|
|
535
|
+
* The curve's scale.
|
|
536
|
+
*
|
|
537
|
+
* @type {number}
|
|
538
|
+
* @default 40
|
|
539
|
+
*/
|
|
330
540
|
this.scale = scale;
|
|
331
541
|
|
|
332
542
|
}
|
|
333
543
|
|
|
544
|
+
/**
|
|
545
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
546
|
+
*
|
|
547
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
548
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
549
|
+
* @return {Vector3} The position on the curve.
|
|
550
|
+
*/
|
|
334
551
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
335
552
|
|
|
336
553
|
const point = optionalTarget;
|
|
@@ -347,19 +564,39 @@ class DecoratedTorusKnot4b extends Curve {
|
|
|
347
564
|
|
|
348
565
|
}
|
|
349
566
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
567
|
+
/**
|
|
568
|
+
* A Decorated Torus Knot 5a.
|
|
569
|
+
*
|
|
570
|
+
* @augments Curve
|
|
571
|
+
*/
|
|
353
572
|
class DecoratedTorusKnot5a extends Curve {
|
|
354
573
|
|
|
574
|
+
/**
|
|
575
|
+
* Constructs a new Decorated Torus Knot 5a.
|
|
576
|
+
*
|
|
577
|
+
* @param {number} [scale=1] - The curve's scale.
|
|
578
|
+
*/
|
|
355
579
|
constructor( scale = 40 ) {
|
|
356
580
|
|
|
357
581
|
super();
|
|
358
582
|
|
|
583
|
+
/**
|
|
584
|
+
* The curve's scale.
|
|
585
|
+
*
|
|
586
|
+
* @type {number}
|
|
587
|
+
* @default 40
|
|
588
|
+
*/
|
|
359
589
|
this.scale = scale;
|
|
360
590
|
|
|
361
591
|
}
|
|
362
592
|
|
|
593
|
+
/**
|
|
594
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
595
|
+
*
|
|
596
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
597
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
598
|
+
* @return {Vector3} The position on the curve.
|
|
599
|
+
*/
|
|
363
600
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
364
601
|
|
|
365
602
|
const point = optionalTarget;
|
|
@@ -376,18 +613,39 @@ class DecoratedTorusKnot5a extends Curve {
|
|
|
376
613
|
|
|
377
614
|
}
|
|
378
615
|
|
|
379
|
-
|
|
380
|
-
|
|
616
|
+
/**
|
|
617
|
+
* A Decorated Torus Knot 5c.
|
|
618
|
+
*
|
|
619
|
+
* @augments Curve
|
|
620
|
+
*/
|
|
381
621
|
class DecoratedTorusKnot5c extends Curve {
|
|
382
622
|
|
|
623
|
+
/**
|
|
624
|
+
* Constructs a new Decorated Torus Knot 5c.
|
|
625
|
+
*
|
|
626
|
+
* @param {number} [scale=1] - The curve's scale.
|
|
627
|
+
*/
|
|
383
628
|
constructor( scale = 40 ) {
|
|
384
629
|
|
|
385
630
|
super();
|
|
386
631
|
|
|
632
|
+
/**
|
|
633
|
+
* The curve's scale.
|
|
634
|
+
*
|
|
635
|
+
* @type {number}
|
|
636
|
+
* @default 40
|
|
637
|
+
*/
|
|
387
638
|
this.scale = scale;
|
|
388
639
|
|
|
389
640
|
}
|
|
390
641
|
|
|
642
|
+
/**
|
|
643
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
644
|
+
*
|
|
645
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
646
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
647
|
+
* @return {Vector3} The position on the curve.
|
|
648
|
+
*/
|
|
391
649
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
392
650
|
|
|
393
651
|
const point = optionalTarget;
|
|
@@ -6,34 +6,63 @@ import {
|
|
|
6
6
|
import * as NURBSUtils from '../curves/NURBSUtils.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* NURBS curve
|
|
9
|
+
* This class represents a NURBS curve.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* Implementation is based on `(x, y [, z=0 [, w=1]])` control points with `w=weight`.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
**/
|
|
16
|
-
|
|
13
|
+
* @augments Curve
|
|
14
|
+
*/
|
|
17
15
|
class NURBSCurve extends Curve {
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new NURBS curve.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} degree - The NURBS degree.
|
|
21
|
+
* @param {Array<number>} knots - The knots as a flat array of numbers.
|
|
22
|
+
* @param {Array<Vector2|Vector3|Vector4>} controlPoints - An array holding control points.
|
|
23
|
+
* @param {number} [startKnot] - Index of the start knot into the `knots` array.
|
|
24
|
+
* @param {number} [endKnot] - Index of the end knot into the `knots` array.
|
|
25
|
+
*/
|
|
26
|
+
constructor( degree, knots, controlPoints, startKnot, endKnot ) {
|
|
26
27
|
|
|
27
28
|
super();
|
|
28
29
|
|
|
29
30
|
const knotsLength = knots ? knots.length - 1 : 0;
|
|
30
31
|
const pointsLength = controlPoints ? controlPoints.length : 0;
|
|
31
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The NURBS degree.
|
|
35
|
+
*
|
|
36
|
+
* @type {number}
|
|
37
|
+
*/
|
|
32
38
|
this.degree = degree;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The knots as a flat array of numbers.
|
|
42
|
+
*
|
|
43
|
+
* @type {Array<number>}
|
|
44
|
+
*/
|
|
33
45
|
this.knots = knots;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* An array of control points.
|
|
49
|
+
*
|
|
50
|
+
* @type {Array<Vector4>}
|
|
51
|
+
*/
|
|
34
52
|
this.controlPoints = [];
|
|
35
|
-
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Index of the start knot into the `knots` array.
|
|
56
|
+
*
|
|
57
|
+
* @type {number}
|
|
58
|
+
*/
|
|
36
59
|
this.startKnot = startKnot || 0;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Index of the end knot into the `knots` array.
|
|
63
|
+
*
|
|
64
|
+
* @type {number}
|
|
65
|
+
*/
|
|
37
66
|
this.endKnot = endKnot || knotsLength;
|
|
38
67
|
|
|
39
68
|
for ( let i = 0; i < pointsLength; ++ i ) {
|
|
@@ -46,6 +75,13 @@ class NURBSCurve extends Curve {
|
|
|
46
75
|
|
|
47
76
|
}
|
|
48
77
|
|
|
78
|
+
/**
|
|
79
|
+
* This method returns a vector in 3D space for the given interpolation factor.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
82
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
83
|
+
* @return {Vector3} The position on the curve.
|
|
84
|
+
*/
|
|
49
85
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
50
86
|
|
|
51
87
|
const point = optionalTarget;
|
|
@@ -66,6 +102,13 @@ class NURBSCurve extends Curve {
|
|
|
66
102
|
|
|
67
103
|
}
|
|
68
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Returns a unit vector tangent for the given interpolation factor.
|
|
107
|
+
*
|
|
108
|
+
* @param {number} t - The interpolation factor.
|
|
109
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
110
|
+
* @return {Vector3} The tangent vector.
|
|
111
|
+
*/
|
|
69
112
|
getTangent( t, optionalTarget = new Vector3() ) {
|
|
70
113
|
|
|
71
114
|
const tangent = optionalTarget;
|
|
@@ -4,19 +4,56 @@ import {
|
|
|
4
4
|
import * as NURBSUtils from '../curves/NURBSUtils.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* NURBS surface
|
|
7
|
+
* This class represents a NURBS surface.
|
|
8
8
|
*
|
|
9
|
-
* Implementation is based on (x, y [, z=0 [, 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 NURBSSurface {
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
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 {Array<number>} knots1 - The first knots as a flat array of numbers.
|
|
19
|
+
* @param {Array<number>} knots2 - The second knots as a flat array of numbers.
|
|
20
|
+
* @param {Array<Array<Vector2|Vector3|Vector4>>} controlPoints - An array^2 holding control points.
|
|
21
|
+
*/
|
|
22
|
+
constructor( degree1, degree2, knots1, knots2, controlPoints ) {
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The first NURBS degree.
|
|
26
|
+
*
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
16
29
|
this.degree1 = degree1;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The second NURBS degree.
|
|
33
|
+
*
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
17
36
|
this.degree2 = degree2;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The first knots as a flat array of numbers.
|
|
40
|
+
*
|
|
41
|
+
* @type {Array<number>}
|
|
42
|
+
*/
|
|
18
43
|
this.knots1 = knots1;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The second knots as a flat array of numbers.
|
|
47
|
+
*
|
|
48
|
+
* @type {Array<number>}
|
|
49
|
+
*/
|
|
19
50
|
this.knots2 = knots2;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* An array holding arrays of control points.
|
|
54
|
+
*
|
|
55
|
+
* @type {Array<Array<Vector2|Vector3|Vector4>>}
|
|
56
|
+
*/
|
|
20
57
|
this.controlPoints = [];
|
|
21
58
|
|
|
22
59
|
const len1 = knots1.length - degree1 - 1;
|
|
@@ -38,6 +75,13 @@ class NURBSSurface {
|
|
|
38
75
|
|
|
39
76
|
}
|
|
40
77
|
|
|
78
|
+
/**
|
|
79
|
+
* This method returns a vector in 3D space for the given interpolation factor. This vector lies on the NURBS surface.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} t1 - The first interpolation factor representing the `u` position on the surface. Must be in the range `[0,1]`.
|
|
82
|
+
* @param {number} t2 - The second interpolation factor representing the `v` position on the surface. Must be in the range `[0,1]`.
|
|
83
|
+
* @param {Vector3} target - The target vector the result is written to.
|
|
84
|
+
*/
|
|
41
85
|
getPoint( t1, t2, target ) {
|
|
42
86
|
|
|
43
87
|
const u = this.knots1[ 0 ] + t1 * ( this.knots1[ this.knots1.length - 1 ] - this.knots1[ 0 ] ); // linear mapping t1->u
|