@needle-tools/three 0.169.20-experimental.0 → 0.183.2-canary.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/LICENSE +1 -1
- package/README.md +5 -6
- package/build/three.cjs +54184 -56703
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73000
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +648 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +53912 -51652
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53888 -51806
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +5 -15
- package/examples/jsm/animation/AnimationClipCreator.js +58 -6
- package/examples/jsm/animation/CCDIKSolver.js +152 -45
- package/examples/jsm/capabilities/WebGL.js +28 -29
- package/examples/jsm/capabilities/WebGPU.js +19 -17
- package/examples/jsm/controls/ArcballControls.js +474 -178
- package/examples/jsm/controls/DragControls.js +100 -58
- package/examples/jsm/controls/FirstPersonControls.js +116 -6
- package/examples/jsm/controls/FlyControls.js +50 -2
- package/examples/jsm/controls/MapControls.js +96 -8
- package/examples/jsm/controls/OrbitControls.js +496 -57
- package/examples/jsm/controls/PointerLockControls.js +115 -22
- package/examples/jsm/controls/TrackballControls.js +166 -14
- package/examples/jsm/controls/TransformControls.js +336 -26
- package/examples/jsm/csm/CSM.js +232 -18
- package/examples/jsm/csm/CSMFrustum.js +61 -4
- package/examples/jsm/csm/CSMHelper.js +50 -0
- package/examples/jsm/csm/CSMShader.js +13 -1
- package/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/examples/jsm/curves/CurveExtras.js +303 -31
- package/examples/jsm/curves/NURBSCurve.js +91 -16
- package/examples/jsm/curves/NURBSSurface.js +52 -6
- package/examples/jsm/curves/NURBSUtils.js +102 -112
- package/examples/jsm/curves/NURBSVolume.js +24 -4
- package/examples/jsm/effects/AnaglyphEffect.js +134 -7
- package/examples/jsm/effects/AsciiEffect.js +69 -22
- package/examples/jsm/effects/OutlineEffect.js +61 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +30 -0
- package/examples/jsm/effects/StereoEffect.js +31 -0
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/examples/jsm/environments/RoomEnvironment.js +83 -42
- package/examples/jsm/exporters/DRACOExporter.js +56 -14
- package/examples/jsm/exporters/EXRExporter.js +40 -9
- package/examples/jsm/exporters/GLTFExporter.js +502 -169
- package/examples/jsm/exporters/OBJExporter.js +21 -1
- package/examples/jsm/exporters/PLYExporter.js +44 -12
- package/examples/jsm/exporters/STLExporter.js +27 -5
- package/examples/jsm/exporters/USDZExporter.js +781 -291
- package/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/examples/jsm/geometries/DecalGeometry.js +91 -30
- package/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/examples/jsm/geometries/TextGeometry.js +48 -29
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelper.js +36 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +38 -1
- package/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/examples/jsm/helpers/TextureHelper.js +28 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/examples/jsm/helpers/ViewHelper.js +181 -9
- package/examples/jsm/inspector/Inspector.js +487 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Parameters.js +348 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +1975 -0
- package/examples/jsm/inspector/ui/Style.js +1613 -0
- package/examples/jsm/inspector/ui/Tab.js +233 -0
- package/examples/jsm/inspector/ui/Values.js +439 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +43 -12
- package/examples/jsm/interactive/InteractiveGroup.js +170 -52
- package/examples/jsm/interactive/SelectionBox.js +106 -9
- package/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +76 -58
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +42 -0
- package/examples/jsm/lights/LightProbeGenerator.js +44 -7
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +50 -14
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +16 -0
- package/examples/jsm/lines/Line2.js +41 -4
- package/examples/jsm/lines/LineGeometry.js +80 -2
- package/examples/jsm/lines/LineMaterial.js +105 -5
- package/examples/jsm/lines/LineSegments2.js +54 -4
- package/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/examples/jsm/lines/Wireframe.js +41 -4
- package/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/examples/jsm/lines/webgpu/Line2.js +28 -2
- package/examples/jsm/lines/webgpu/LineSegments2.js +59 -24
- package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/examples/jsm/loaders/3DMLoader.js +78 -6
- package/examples/jsm/loaders/3MFLoader.js +148 -7
- package/examples/jsm/loaders/AMFLoader.js +34 -14
- package/examples/jsm/loaders/BVHLoader.js +59 -12
- package/examples/jsm/loaders/ColladaLoader.js +61 -4027
- package/examples/jsm/loaders/DDSLoader.js +68 -1
- package/examples/jsm/loaders/DRACOLoader.js +146 -22
- package/examples/jsm/loaders/EXRLoader.js +255 -34
- package/examples/jsm/loaders/FBXLoader.js +80 -42
- package/examples/jsm/loaders/FontLoader.js +83 -6
- package/examples/jsm/loaders/GCodeLoader.js +71 -14
- package/examples/jsm/loaders/GLTFLoader.js +381 -263
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/IESLoader.js +42 -0
- package/examples/jsm/loaders/KMZLoader.js +39 -6
- package/examples/jsm/loaders/KTX2Loader.js +124 -48
- package/examples/jsm/loaders/KTXLoader.js +31 -10
- package/examples/jsm/loaders/LDrawLoader.js +192 -145
- package/examples/jsm/loaders/LUT3dlLoader.js +47 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +46 -9
- package/examples/jsm/loaders/LUTImageLoader.js +79 -38
- package/examples/jsm/loaders/LWOLoader.js +54 -59
- package/examples/jsm/loaders/LottieLoader.js +54 -1
- package/examples/jsm/loaders/MD2Loader.js +37 -1
- package/examples/jsm/loaders/MDDLoader.js +57 -12
- package/examples/jsm/loaders/MTLLoader.js +60 -35
- package/examples/jsm/loaders/MaterialXLoader.js +268 -34
- package/examples/jsm/loaders/NRRDLoader.js +40 -8
- package/examples/jsm/loaders/OBJLoader.js +51 -2
- package/examples/jsm/loaders/PCDLoader.js +173 -21
- package/examples/jsm/loaders/PDBLoader.js +41 -2
- package/examples/jsm/loaders/PLYLoader.js +70 -39
- package/examples/jsm/loaders/PVRLoader.js +25 -6
- package/examples/jsm/loaders/RGBELoader.js +6 -438
- package/examples/jsm/loaders/STLLoader.js +48 -38
- package/examples/jsm/loaders/SVGLoader.js +119 -25
- package/examples/jsm/loaders/TDSLoader.js +92 -74
- package/examples/jsm/loaders/TGALoader.js +23 -2
- package/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/examples/jsm/loaders/TTFLoader.js +50 -3
- package/examples/jsm/loaders/USDLoader.js +279 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -858
- package/examples/jsm/loaders/UltraHDRLoader.js +338 -166
- package/examples/jsm/loaders/VOXLoader.js +688 -87
- package/examples/jsm/loaders/VRMLLoader.js +121 -12
- package/examples/jsm/loaders/VTKLoader.js +77 -25
- package/examples/jsm/loaders/XYZLoader.js +36 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +77 -77
- package/examples/jsm/loaders/usd/USDAParser.js +822 -0
- package/examples/jsm/loaders/usd/USDCParser.js +1852 -0
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/Capsule.js +91 -14
- package/examples/jsm/math/ColorConverter.js +22 -0
- package/examples/jsm/math/ColorSpaces.js +74 -2
- package/examples/jsm/math/ConvexHull.js +517 -93
- package/examples/jsm/math/ImprovedNoise.js +32 -15
- package/examples/jsm/math/Lut.js +113 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/examples/jsm/math/OBB.js +141 -29
- package/examples/jsm/math/Octree.js +283 -7
- package/examples/jsm/math/SimplexNoise.js +68 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +96 -20
- package/examples/jsm/misc/Gyroscope.js +12 -0
- package/examples/jsm/misc/MD2Character.js +117 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +100 -54
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/examples/jsm/misc/RollerCoaster.js +57 -0
- package/examples/jsm/misc/TubePainter.js +437 -40
- package/examples/jsm/misc/Volume.js +123 -76
- package/examples/jsm/misc/VolumeSlice.js +95 -49
- package/examples/jsm/modifiers/CurveModifier.js +66 -38
- package/examples/jsm/modifiers/CurveModifierGPU.js +42 -19
- package/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +24 -10
- package/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/examples/jsm/objects/Lensflare.js +94 -2
- package/examples/jsm/objects/LensflareMesh.js +64 -10
- package/examples/jsm/objects/MarchingCubes.js +90 -5
- package/examples/jsm/objects/Reflector.js +76 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/examples/jsm/objects/Refractor.js +62 -0
- package/examples/jsm/objects/ShadowMesh.js +54 -4
- package/examples/jsm/objects/Sky.js +106 -16
- package/examples/jsm/objects/SkyMesh.js +211 -38
- package/examples/jsm/objects/Water.js +49 -8
- package/examples/jsm/objects/Water2.js +49 -7
- package/examples/jsm/objects/Water2Mesh.js +50 -9
- package/examples/jsm/objects/WaterMesh.js +136 -43
- package/examples/jsm/physics/AmmoPhysics.js +60 -7
- package/examples/jsm/physics/JoltPhysics.js +65 -12
- package/examples/jsm/physics/RapierPhysics.js +217 -21
- package/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/examples/jsm/postprocessing/EffectComposer.js +140 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/examples/jsm/postprocessing/GlitchPass.js +86 -34
- package/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/examples/jsm/postprocessing/LUTPass.js +38 -8
- package/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/examples/jsm/postprocessing/OutlinePass.js +272 -135
- package/examples/jsm/postprocessing/OutputPass.js +65 -14
- package/examples/jsm/postprocessing/Pass.js +100 -4
- package/examples/jsm/postprocessing/RenderPass.js +94 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +120 -21
- package/examples/jsm/postprocessing/SAOPass.js +128 -55
- package/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/examples/jsm/postprocessing/SSAARenderPass.js +118 -35
- package/examples/jsm/postprocessing/SSAOPass.js +173 -60
- package/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/examples/jsm/postprocessing/SavePass.js +69 -16
- package/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +168 -59
- package/examples/jsm/renderers/CSS2DRenderer.js +98 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +111 -7
- package/examples/jsm/renderers/Projector.js +288 -32
- package/examples/jsm/renderers/SVGRenderer.js +323 -61
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +5 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/examples/jsm/shaders/BasicShader.js +8 -1
- package/examples/jsm/shaders/BleachBypassShader.js +10 -3
- package/examples/jsm/shaders/BlendShader.js +8 -1
- package/examples/jsm/shaders/BokehShader.js +9 -3
- package/examples/jsm/shaders/BokehShader2.js +11 -4
- package/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/examples/jsm/shaders/ColorifyShader.js +8 -1
- package/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/examples/jsm/shaders/CopyShader.js +8 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/examples/jsm/shaders/ExposureShader.js +8 -1
- package/examples/jsm/shaders/FXAAShader.js +233 -221
- package/examples/jsm/shaders/FilmShader.js +13 -0
- package/examples/jsm/shaders/FocusShader.js +8 -3
- package/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/examples/jsm/shaders/GTAOShader.js +55 -45
- package/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/examples/jsm/shaders/HalftoneShader.js +24 -4
- package/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +8 -4
- package/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/examples/jsm/shaders/MirrorShader.js +10 -4
- package/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/examples/jsm/shaders/OutputShader.js +19 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +30 -17
- package/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/examples/jsm/shaders/SAOShader.js +27 -5
- package/examples/jsm/shaders/SMAAShader.js +24 -1
- package/examples/jsm/shaders/SSAOShader.js +37 -6
- package/examples/jsm/shaders/SSRShader.js +32 -6
- package/examples/jsm/shaders/SepiaShader.js +8 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/examples/jsm/shaders/ToonShader.js +29 -6
- package/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -6
- package/examples/jsm/shaders/VelocityShader.js +8 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/examples/jsm/shaders/VignetteShader.js +8 -3
- package/examples/jsm/shaders/VolumeShader.js +11 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/examples/jsm/textures/FlakesTexture.js +14 -0
- package/examples/jsm/transpiler/AST.js +436 -31
- package/examples/jsm/transpiler/GLSLDecoder.js +380 -135
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -1
- package/examples/jsm/transpiler/TSLEncoder.js +363 -97
- package/examples/jsm/transpiler/Transpiler.js +50 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +11 -4
- package/examples/jsm/tsl/display/BloomNode.js +534 -0
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/examples/jsm/tsl/display/GTAONode.js +571 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +389 -0
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +120 -49
- package/examples/jsm/tsl/display/SSGINode.js +642 -0
- package/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +9 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +61 -19
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
- package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +48 -12
- package/examples/jsm/tsl/display/TRAANode.js +726 -0
- package/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/examples/jsm/tsl/math/Bayer.js +73 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +91 -29
- package/examples/jsm/utils/CameraUtils.js +15 -6
- package/examples/jsm/utils/GeometryCompressionUtils.js +23 -30
- package/examples/jsm/utils/GeometryUtils.js +32 -27
- package/examples/jsm/utils/LDrawUtils.js +14 -5
- package/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/examples/jsm/utils/SceneUtils.js +53 -3
- package/examples/jsm/utils/ShadowMapViewer.js +72 -33
- package/examples/jsm/utils/ShadowMapViewerGPU.js +61 -29
- package/examples/jsm/utils/SkeletonUtils.js +48 -0
- package/examples/jsm/utils/SortUtils.js +17 -5
- package/examples/jsm/utils/UVsDebug.js +12 -4
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +16 -0
- package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +20 -2
- package/examples/jsm/utils/WorkerPool.js +67 -2
- package/examples/jsm/webxr/ARButton.js +19 -0
- package/examples/jsm/webxr/OculusHandModel.js +84 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/examples/jsm/webxr/Text2D.js +20 -6
- package/examples/jsm/webxr/VRButton.js +31 -0
- package/examples/jsm/webxr/XRButton.js +23 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +94 -3
- package/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +96 -6
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/examples/jsm/webxr/XRPlanes.js +18 -0
- package/package.json +29 -37
- package/src/Three.Core.js +198 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +641 -0
- package/src/Three.WebGPU.Nodes.js +14 -186
- package/src/Three.WebGPU.js +16 -186
- package/src/Three.js +2 -197
- package/src/animation/AnimationAction.js +263 -31
- package/src/animation/AnimationClip.js +162 -7
- package/src/animation/AnimationMixer.js +105 -15
- package/src/animation/AnimationObjectGroup.js +45 -21
- package/src/animation/AnimationUtils.js +163 -24
- package/src/animation/KeyframeTrack.js +191 -17
- package/src/animation/PropertyBinding.js +91 -16
- 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/Audio.js +386 -8
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +94 -13
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +37 -0
- package/src/cameras/Camera.js +61 -0
- package/src/cameras/CubeCamera.js +86 -0
- package/src/cameras/OrthographicCamera.js +110 -1
- package/src/cameras/PerspectiveCamera.js +174 -35
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +1546 -11
- package/src/core/BufferAttribute.js +417 -3
- package/src/core/BufferGeometry.js +407 -22
- package/src/core/Clock.js +69 -8
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/GLBufferAttribute.js +113 -2
- 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 +141 -7
- package/src/core/InterleavedBufferAttribute.js +200 -2
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +673 -26
- package/src/core/Raycaster.js +136 -2
- package/src/core/RenderTarget.js +256 -27
- package/src/core/RenderTarget3D.js +48 -0
- package/src/core/Timer.js +184 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +89 -1
- package/src/extras/DataUtils.js +50 -9
- package/src/extras/Earcut.js +18 -779
- package/src/extras/ImageUtils.js +22 -14
- package/src/extras/PMREMGenerator.js +316 -67
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +101 -15
- package/src/extras/core/Curve.js +156 -55
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +34 -2
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +80 -4
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +39 -0
- package/src/geometries/CapsuleGeometry.js +196 -11
- package/src/geometries/CircleGeometry.js +41 -0
- package/src/geometries/ConeGeometry.js +39 -0
- package/src/geometries/CylinderGeometry.js +42 -2
- package/src/geometries/DodecahedronGeometry.js +33 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +148 -52
- package/src/geometries/IcosahedronGeometry.js +33 -0
- package/src/geometries/LatheGeometry.js +44 -3
- package/src/geometries/OctahedronGeometry.js +33 -0
- package/src/geometries/PlaneGeometry.js +35 -0
- package/src/geometries/PolyhedronGeometry.js +30 -1
- package/src/geometries/RingGeometry.js +37 -0
- package/src/geometries/ShapeGeometry.js +38 -0
- package/src/geometries/SphereGeometry.js +38 -0
- package/src/geometries/TetrahedronGeometry.js +33 -0
- package/src/geometries/TorusGeometry.js +44 -3
- package/src/geometries/TorusKnotGeometry.js +39 -0
- package/src/geometries/TubeGeometry.js +50 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +62 -5
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +103 -27
- package/src/helpers/DirectionalLightHelper.js +55 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +42 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -24
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +73 -7
- package/src/helpers/SpotLightHelper.js +43 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +70 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +42 -0
- package/src/lights/Light.js +37 -11
- package/src/lights/LightProbe.js +37 -9
- package/src/lights/LightShadow.js +202 -7
- package/src/lights/PointLight.js +74 -0
- package/src/lights/PointLightShadow.js +15 -80
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +124 -1
- package/src/lights/SpotLightShadow.js +33 -3
- package/src/lights/webgpu/IESSpotLight.js +22 -0
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/AnimationLoader.js +34 -2
- package/src/loaders/AudioLoader.js +34 -2
- package/src/loaders/BufferGeometryLoader.js +38 -13
- package/src/loaders/Cache.js +75 -2
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +45 -4
- package/src/loaders/FileLoader.js +85 -5
- package/src/loaders/ImageBitmapLoader.js +113 -11
- package/src/loaders/ImageLoader.js +85 -8
- package/src/loaders/Loader.js +150 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +187 -0
- package/src/loaders/MaterialLoader.js +62 -3
- package/src/loaders/ObjectLoader.js +131 -31
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +68 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -1
- package/src/materials/Material.js +502 -8
- package/src/materials/MeshBasicMaterial.js +168 -2
- package/src/materials/MeshDepthMaterial.js +94 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +283 -0
- package/src/materials/MeshMatcapMaterial.js +164 -0
- package/src/materials/MeshNormalMaterial.js +114 -0
- package/src/materials/MeshPhongMaterial.js +298 -0
- package/src/materials/MeshPhysicalMaterial.js +296 -4
- package/src/materials/MeshStandardMaterial.js +300 -2
- package/src/materials/MeshToonMaterial.js +219 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +234 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +158 -53
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +81 -6
- package/src/materials/nodes/MeshBasicNodeMaterial.js +59 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +23 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +27 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +276 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +98 -10
- package/src/materials/nodes/MeshStandardNodeMaterial.js +83 -4
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +789 -74
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +180 -11
- package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +86 -23
- package/src/materials/nodes/VolumeNodeMaterial.js +57 -84
- package/src/materials/nodes/manager/NodeMaterialObserver.js +329 -12
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +271 -0
- package/src/math/Color.js +355 -11
- package/src/math/ColorManagement.js +158 -92
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +139 -5
- package/src/math/Frustum.js +108 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +221 -2
- package/src/math/MathUtils.js +408 -20
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +489 -94
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +322 -90
- package/src/math/Ray.js +162 -0
- package/src/math/Sphere.js +175 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -15
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +91 -88
- package/src/nodes/TSL.js +32 -38
- package/src/nodes/accessors/AccessorsUtils.js +37 -9
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +49 -14
- package/src/nodes/accessors/Bitangent.js +82 -13
- package/src/nodes/accessors/BufferAttributeNode.js +269 -8
- package/src/nodes/accessors/BufferNode.js +91 -2
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +400 -10
- package/src/nodes/accessors/ClippingNode.js +149 -45
- package/src/nodes/accessors/CubeTextureNode.js +137 -7
- package/src/nodes/accessors/InstanceNode.js +245 -40
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +88 -0
- package/src/nodes/accessors/MaterialNode.js +355 -13
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +52 -14
- package/src/nodes/accessors/ModelNode.js +117 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -39
- package/src/nodes/accessors/MorphNode.js +73 -26
- package/src/nodes/accessors/Normal.js +174 -19
- package/src/nodes/accessors/Object3DNode.js +146 -12
- package/src/nodes/accessors/PointUVNode.js +25 -0
- package/src/nodes/accessors/Position.js +119 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +190 -4
- package/src/nodes/accessors/ReferenceNode.js +223 -8
- package/src/nodes/accessors/ReflectVector.js +29 -3
- package/src/nodes/accessors/RendererReferenceNode.js +45 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +180 -43
- package/src/nodes/accessors/StorageBufferNode.js +278 -26
- package/src/nodes/accessors/StorageTextureNode.js +205 -12
- package/src/nodes/accessors/Tangent.js +48 -10
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +104 -11
- package/src/nodes/accessors/TextureBicubic.js +31 -4
- package/src/nodes/accessors/TextureNode.js +564 -52
- package/src/nodes/accessors/TextureSizeNode.js +42 -1
- package/src/nodes/accessors/UV.js +9 -1
- package/src/nodes/accessors/UniformArrayNode.js +226 -34
- package/src/nodes/accessors/UserDataNode.js +46 -2
- package/src/nodes/accessors/VelocityNode.js +93 -3
- package/src/nodes/accessors/VertexColorNode.js +39 -4
- package/src/nodes/code/CodeNode.js +101 -8
- package/src/nodes/code/ExpressionNode.js +29 -2
- package/src/nodes/code/FunctionCallNode.js +98 -10
- package/src/nodes/code/FunctionNode.js +69 -2
- package/src/nodes/core/ArrayNode.js +174 -0
- package/src/nodes/core/AssignNode.js +80 -9
- package/src/nodes/core/AttributeNode.js +47 -4
- package/src/nodes/core/BypassNode.js +47 -3
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +220 -14
- package/src/nodes/core/IndexNode.js +72 -7
- package/src/nodes/core/InputNode.js +50 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/IsolateNode.js +133 -0
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +113 -2
- package/src/nodes/core/Node.js +595 -36
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1840 -121
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +153 -24
- package/src/nodes/core/NodeFunction.js +48 -1
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +13 -1
- package/src/nodes/core/NodeUniform.js +53 -1
- package/src/nodes/core/NodeUtils.js +201 -51
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +47 -1
- package/src/nodes/core/OutputStructNode.js +54 -12
- package/src/nodes/core/ParameterNode.js +60 -2
- package/src/nodes/core/PropertyNode.js +286 -7
- package/src/nodes/core/StackNode.js +337 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +134 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +126 -6
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +85 -7
- package/src/nodes/core/UniformNode.js +163 -16
- package/src/nodes/core/VarNode.js +317 -10
- package/src/nodes/core/VaryingNode.js +115 -13
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +171 -0
- package/src/nodes/display/BumpMapNode.js +38 -2
- package/src/nodes/display/ColorAdjustment.js +118 -6
- package/src/nodes/display/ColorSpaceFunctions.js +22 -6
- package/src/nodes/display/ColorSpaceNode.js +97 -47
- package/src/nodes/display/FrontFacingNode.js +64 -7
- package/src/nodes/display/NormalMapNode.js +101 -54
- package/src/nodes/display/PassNode.js +690 -33
- package/src/nodes/display/RenderOutputNode.js +94 -4
- package/src/nodes/display/ScreenNode.js +138 -27
- package/src/nodes/display/ToneMappingFunctions.js +62 -10
- package/src/nodes/display/ToneMappingNode.js +88 -8
- package/src/nodes/display/ToonOutlinePassNode.js +84 -4
- package/src/nodes/display/ViewportDepthNode.js +227 -10
- package/src/nodes/display/ViewportDepthTextureNode.js +39 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +35 -1
- package/src/nodes/display/ViewportTextureNode.js +171 -7
- package/src/nodes/fog/Fog.js +97 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/BasicLightingModel.js +28 -6
- package/src/nodes/functions/PhongLightingModel.js +36 -6
- package/src/nodes/functions/PhysicalLightingModel.js +336 -91
- package/src/nodes/functions/ShadowMaskModel.js +30 -3
- package/src/nodes/functions/ToonLightingModel.js +21 -2
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/geometry/RangeNode.js +97 -8
- package/src/nodes/gpgpu/AtomicFunctionNode.js +198 -23
- package/src/nodes/gpgpu/BarrierNode.js +52 -3
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +135 -6
- package/src/nodes/gpgpu/ComputeNode.js +212 -16
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +143 -9
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +186 -399
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +12 -11
- package/src/nodes/lighting/EnvironmentNode.js +59 -19
- package/src/nodes/lighting/HemisphereLightNode.js +33 -2
- package/src/nodes/lighting/IESSpotLightNode.js +13 -1
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +11 -3
- package/src/nodes/lighting/LightingContextNode.js +52 -4
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +238 -35
- package/src/nodes/lighting/PointLightNode.js +60 -25
- package/src/nodes/lighting/PointShadowNode.js +325 -0
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/RectAreaLightNode.js +50 -14
- package/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/src/nodes/lighting/ShadowFilterNode.js +264 -0
- package/src/nodes/lighting/ShadowNode.js +867 -0
- package/src/nodes/lighting/SpotLightNode.js +99 -18
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +110 -21
- package/src/nodes/math/Hash.js +8 -0
- package/src/nodes/math/MathNode.js +820 -97
- package/src/nodes/math/MathUtils.js +47 -1
- package/src/nodes/math/OperatorNode.js +517 -84
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/TriNoise3D.js +17 -7
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +180 -23
- package/src/nodes/pmrem/PMREMUtils.js +114 -5
- package/src/nodes/procedural/Checker.js +8 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +10 -4
- package/src/nodes/tsl/TSLCore.js +732 -160
- package/src/nodes/utils/ArrayElementNode.js +55 -4
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +79 -2
- package/src/nodes/utils/DebugNode.js +83 -0
- package/src/nodes/utils/Discard.js +18 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +118 -0
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +91 -22
- package/src/nodes/utils/JoinNode.js +57 -4
- package/src/nodes/utils/LoopNode.js +193 -55
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -1
- package/src/nodes/utils/MemberNode.js +120 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +30 -1
- package/src/nodes/utils/PostProcessingUtils.js +154 -0
- package/src/nodes/utils/RTTNode.js +165 -9
- package/src/nodes/utils/ReflectorNode.js +407 -21
- package/src/nodes/utils/RemapNode.js +81 -2
- package/src/nodes/utils/RotateNode.js +41 -1
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +66 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/SpriteUtils.js +16 -0
- package/src/nodes/utils/StorageArrayElementNode.js +56 -3
- package/src/nodes/utils/Timer.js +26 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/nodes/utils/UVUtils.js +48 -0
- package/src/nodes/utils/ViewportUtils.js +12 -0
- package/src/objects/BatchedMesh.js +798 -309
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +131 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +90 -7
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +20 -1
- package/src/objects/Mesh.js +84 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +120 -5
- package/src/objects/SkinnedMesh.js +102 -6
- package/src/objects/Sprite.js +65 -1
- package/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/src/renderers/WebGLCubeRenderTarget.js +41 -5
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +1016 -278
- package/src/renderers/common/Animation.js +123 -14
- package/src/renderers/common/Attributes.js +41 -1
- package/src/renderers/common/Backend.js +623 -44
- package/src/renderers/common/Background.js +99 -16
- package/src/renderers/common/BindGroup.js +37 -2
- package/src/renderers/common/Binding.js +46 -0
- package/src/renderers/common/Bindings.js +211 -20
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +89 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +73 -10
- package/src/renderers/common/ClippingContext.js +172 -87
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +77 -7
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +163 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +81 -36
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Lighting.js +57 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +150 -7
- package/src/renderers/common/PostProcessing.js +22 -84
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +63 -6
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +40 -10
- package/src/renderers/common/RenderContext.js +219 -4
- package/src/renderers/common/RenderContexts.js +54 -17
- package/src/renderers/common/RenderList.js +233 -24
- package/src/renderers/common/RenderLists.js +46 -6
- package/src/renderers/common/RenderObject.js +548 -46
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +133 -15
- package/src/renderers/common/RenderPipeline.js +216 -6
- package/src/renderers/common/Renderer.js +2155 -332
- package/src/renderers/common/RendererUtils.js +200 -0
- package/src/renderers/common/SampledTexture.js +99 -39
- package/src/renderers/common/Sampler.js +148 -1
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageBuffer.js +38 -2
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +65 -0
- package/src/renderers/common/Textures.js +273 -57
- package/src/renderers/common/TimestampQueryPool.js +163 -0
- package/src/renderers/common/Uniform.js +233 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +235 -26
- package/src/renderers/common/XRManager.js +1677 -0
- package/src/renderers/common/XRRenderTarget.js +91 -0
- package/src/renderers/common/extras/PMREMGenerator.js +371 -108
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +95 -17
- package/src/renderers/common/nodes/NodeManager.js +852 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +84 -8
- package/src/renderers/common/nodes/NodeSampler.js +41 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +48 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +81 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +154 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +230 -181
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +14 -2
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -5
- package/src/renderers/shaders/UniformsLib.js +2 -7
- package/src/renderers/shaders/UniformsUtils.js +21 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLBackground.js +30 -5
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +7 -14
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -35
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +87 -148
- package/src/renderers/webgl/WebGLPrograms.js +53 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +204 -28
- package/src/renderers/webgl/WebGLState.js +88 -56
- package/src/renderers/webgl/WebGLTextures.js +293 -59
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +7 -5
- package/src/renderers/webgl-fallback/WebGLBackend.js +1416 -293
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +785 -92
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +62 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +3 -3
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +584 -20
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +468 -80
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +72 -24
- package/src/renderers/webgpu/WebGPUBackend.js +1517 -428
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +31 -4
- package/src/renderers/webgpu/WebGPURenderer.js +55 -4
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +23 -16
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +37 -42
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +1335 -241
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +32 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +144 -20
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +460 -116
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -4
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +283 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +225 -178
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +583 -191
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +150 -28
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +52 -7
- package/src/renderers/webxr/WebXRManager.js +275 -15
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- 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/CubeDepthTexture.js +76 -0
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +79 -2
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -11
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +106 -4
- package/src/textures/Texture.js +488 -6
- package/src/textures/VideoFrameTexture.js +72 -0
- package/src/textures/VideoTexture.js +78 -6
- package/src/utils.js +322 -3
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -153
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +0 -729
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/RGBMLoader.js +0 -1081
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -432
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -144
- package/examples/jsm/misc/Timer.js +0 -128
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/GodRaysShader.js +0 -321
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/accessors/SceneNode.js +0 -55
- package/src/nodes/code/ScriptableNode.js +0 -505
- package/src/nodes/code/ScriptableValueNode.js +0 -170
- package/src/nodes/core/CacheNode.js +0 -50
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -158
- package/src/nodes/display/AnaglyphPassNode.js +0 -67
- package/src/nodes/display/AnamorphicNode.js +0 -151
- package/src/nodes/display/BlendMode.js +0 -54
- package/src/nodes/display/BloomNode.js +0 -341
- package/src/nodes/display/DenoiseNode.js +0 -204
- package/src/nodes/display/DepthOfFieldNode.js +0 -124
- package/src/nodes/display/DotScreenNode.js +0 -66
- package/src/nodes/display/FXAANode.js +0 -332
- package/src/nodes/display/FilmNode.js +0 -56
- package/src/nodes/display/GTAONode.js +0 -331
- package/src/nodes/display/GaussianBlurNode.js +0 -213
- package/src/nodes/display/Lut3DNode.js +0 -57
- package/src/nodes/display/MotionBlur.js +0 -25
- package/src/nodes/display/ParallaxBarrierPassNode.js +0 -58
- package/src/nodes/display/PixelationPassNode.js +0 -213
- package/src/nodes/display/PosterizeNode.js +0 -33
- package/src/nodes/display/RGBShiftNode.js +0 -53
- package/src/nodes/display/StereoCompositePassNode.js +0 -110
- package/src/nodes/display/TransitionNode.js +0 -80
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/EquirectUVNode.js +0 -36
- package/src/nodes/utils/MatcapUVNode.js +0 -33
- package/src/nodes/utils/OscNode.js +0 -85
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -45
- package/src/nodes/utils/TimerNode.js +0 -97
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -64
- package/src/renderers/common/nodes/Nodes.js +0 -534
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -136
package/src/objects/Line.js
CHANGED
|
@@ -6,6 +6,7 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
6
6
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
7
7
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
8
8
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
9
|
+
import { warn } from '../utils.js';
|
|
9
10
|
|
|
10
11
|
const _vStart = /*@__PURE__*/ new Vector3();
|
|
11
12
|
const _vEnd = /*@__PURE__*/ new Vector3();
|
|
@@ -17,19 +18,84 @@ const _sphere = /*@__PURE__*/ new Sphere();
|
|
|
17
18
|
const _intersectPointOnRay = /*@__PURE__*/ new Vector3();
|
|
18
19
|
const _intersectPointOnSegment = /*@__PURE__*/ new Vector3();
|
|
19
20
|
|
|
21
|
+
/**
|
|
22
|
+
* A continuous line. The line are rendered by connecting consecutive
|
|
23
|
+
* vertices with straight lines.
|
|
24
|
+
*
|
|
25
|
+
* ```js
|
|
26
|
+
* const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );
|
|
27
|
+
*
|
|
28
|
+
* const points = [];
|
|
29
|
+
* points.push( new THREE.Vector3( - 10, 0, 0 ) );
|
|
30
|
+
* points.push( new THREE.Vector3( 0, 10, 0 ) );
|
|
31
|
+
* points.push( new THREE.Vector3( 10, 0, 0 ) );
|
|
32
|
+
*
|
|
33
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
34
|
+
*
|
|
35
|
+
* const line = new THREE.Line( geometry, material );
|
|
36
|
+
* scene.add( line );
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @augments Object3D
|
|
40
|
+
*/
|
|
20
41
|
class Line extends Object3D {
|
|
21
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Constructs a new line.
|
|
45
|
+
*
|
|
46
|
+
* @param {BufferGeometry} [geometry] - The line geometry.
|
|
47
|
+
* @param {Material|Array<Material>} [material] - The line material.
|
|
48
|
+
*/
|
|
22
49
|
constructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {
|
|
23
50
|
|
|
24
51
|
super();
|
|
25
52
|
|
|
53
|
+
/**
|
|
54
|
+
* This flag can be used for type testing.
|
|
55
|
+
*
|
|
56
|
+
* @type {boolean}
|
|
57
|
+
* @readonly
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
26
60
|
this.isLine = true;
|
|
27
61
|
|
|
28
62
|
this.type = 'Line';
|
|
29
63
|
|
|
64
|
+
/**
|
|
65
|
+
* The line geometry.
|
|
66
|
+
*
|
|
67
|
+
* @type {BufferGeometry}
|
|
68
|
+
*/
|
|
30
69
|
this.geometry = geometry;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The line material.
|
|
73
|
+
*
|
|
74
|
+
* @type {Material|Array<Material>}
|
|
75
|
+
* @default LineBasicMaterial
|
|
76
|
+
*/
|
|
31
77
|
this.material = material;
|
|
32
78
|
|
|
79
|
+
/**
|
|
80
|
+
* A dictionary representing the morph targets in the geometry. The key is the
|
|
81
|
+
* morph targets name, the value its attribute index. This member is `undefined`
|
|
82
|
+
* by default and only set when morph targets are detected in the geometry.
|
|
83
|
+
*
|
|
84
|
+
* @type {Object<string,number>|undefined}
|
|
85
|
+
* @default undefined
|
|
86
|
+
*/
|
|
87
|
+
this.morphTargetDictionary = undefined;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* An array of weights typically in the range `[0,1]` that specify how much of the morph
|
|
91
|
+
* is applied. This member is `undefined` by default and only set when morph targets are
|
|
92
|
+
* detected in the geometry.
|
|
93
|
+
*
|
|
94
|
+
* @type {Array<number>|undefined}
|
|
95
|
+
* @default undefined
|
|
96
|
+
*/
|
|
97
|
+
this.morphTargetInfluences = undefined;
|
|
98
|
+
|
|
33
99
|
this.updateMorphTargets();
|
|
34
100
|
|
|
35
101
|
}
|
|
@@ -45,6 +111,13 @@ class Line extends Object3D {
|
|
|
45
111
|
|
|
46
112
|
}
|
|
47
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Computes an array of distance values which are necessary for rendering dashed lines.
|
|
116
|
+
* For each vertex in the geometry, the method calculates the cumulative length from the
|
|
117
|
+
* current point to the very beginning of the line.
|
|
118
|
+
*
|
|
119
|
+
* @return {Line} A reference to this line.
|
|
120
|
+
*/
|
|
48
121
|
computeLineDistances() {
|
|
49
122
|
|
|
50
123
|
const geometry = this.geometry;
|
|
@@ -70,7 +143,7 @@ class Line extends Object3D {
|
|
|
70
143
|
|
|
71
144
|
} else {
|
|
72
145
|
|
|
73
|
-
|
|
146
|
+
warn( 'Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
|
|
74
147
|
|
|
75
148
|
}
|
|
76
149
|
|
|
@@ -78,6 +151,12 @@ class Line extends Object3D {
|
|
|
78
151
|
|
|
79
152
|
}
|
|
80
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Computes intersection points between a casted ray and this line.
|
|
156
|
+
*
|
|
157
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
158
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
159
|
+
*/
|
|
81
160
|
raycast( raycaster, intersects ) {
|
|
82
161
|
|
|
83
162
|
const geometry = this.geometry;
|
|
@@ -119,7 +198,7 @@ class Line extends Object3D {
|
|
|
119
198
|
const a = index.getX( i );
|
|
120
199
|
const b = index.getX( i + 1 );
|
|
121
200
|
|
|
122
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b );
|
|
201
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b, i );
|
|
123
202
|
|
|
124
203
|
if ( intersect ) {
|
|
125
204
|
|
|
@@ -134,7 +213,7 @@ class Line extends Object3D {
|
|
|
134
213
|
const a = index.getX( end - 1 );
|
|
135
214
|
const b = index.getX( start );
|
|
136
215
|
|
|
137
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b );
|
|
216
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b, end - 1 );
|
|
138
217
|
|
|
139
218
|
if ( intersect ) {
|
|
140
219
|
|
|
@@ -151,7 +230,7 @@ class Line extends Object3D {
|
|
|
151
230
|
|
|
152
231
|
for ( let i = start, l = end - 1; i < l; i += step ) {
|
|
153
232
|
|
|
154
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, i, i + 1 );
|
|
233
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, i, i + 1, i );
|
|
155
234
|
|
|
156
235
|
if ( intersect ) {
|
|
157
236
|
|
|
@@ -163,7 +242,7 @@ class Line extends Object3D {
|
|
|
163
242
|
|
|
164
243
|
if ( this.isLineLoop ) {
|
|
165
244
|
|
|
166
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, end - 1, start );
|
|
245
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, end - 1, start, end - 1 );
|
|
167
246
|
|
|
168
247
|
if ( intersect ) {
|
|
169
248
|
|
|
@@ -177,6 +256,10 @@ class Line extends Object3D {
|
|
|
177
256
|
|
|
178
257
|
}
|
|
179
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences}
|
|
261
|
+
* to make sure existing morph targets can influence this 3D object.
|
|
262
|
+
*/
|
|
180
263
|
updateMorphTargets() {
|
|
181
264
|
|
|
182
265
|
const geometry = this.geometry;
|
|
@@ -210,7 +293,7 @@ class Line extends Object3D {
|
|
|
210
293
|
|
|
211
294
|
}
|
|
212
295
|
|
|
213
|
-
function checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {
|
|
296
|
+
function checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) {
|
|
214
297
|
|
|
215
298
|
const positionAttribute = object.geometry.attributes.position;
|
|
216
299
|
|
|
@@ -233,7 +316,7 @@ function checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {
|
|
|
233
316
|
// What do we want? intersection point on the ray or on the segment??
|
|
234
317
|
// point: raycaster.ray.at( distance ),
|
|
235
318
|
point: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),
|
|
236
|
-
index:
|
|
319
|
+
index: i,
|
|
237
320
|
face: null,
|
|
238
321
|
faceIndex: null,
|
|
239
322
|
barycoord: null,
|
package/src/objects/LineLoop.js
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { Line } from './Line.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A continuous line. This is nearly the same as {@link Line} the only difference
|
|
5
|
+
* is that the last vertex is connected with the first vertex in order to close
|
|
6
|
+
* the line to form a loop.
|
|
7
|
+
*
|
|
8
|
+
* @augments Line
|
|
9
|
+
*/
|
|
3
10
|
class LineLoop extends Line {
|
|
4
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new line loop.
|
|
14
|
+
*
|
|
15
|
+
* @param {BufferGeometry} [geometry] - The line geometry.
|
|
16
|
+
* @param {Material|Array<Material>} [material] - The line material.
|
|
17
|
+
*/
|
|
5
18
|
constructor( geometry, material ) {
|
|
6
19
|
|
|
7
20
|
super( geometry, material );
|
|
8
21
|
|
|
22
|
+
/**
|
|
23
|
+
* This flag can be used for type testing.
|
|
24
|
+
*
|
|
25
|
+
* @type {boolean}
|
|
26
|
+
* @readonly
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
9
29
|
this.isLineLoop = true;
|
|
10
30
|
|
|
11
31
|
this.type = 'LineLoop';
|
|
@@ -1,16 +1,35 @@
|
|
|
1
1
|
import { Line } from './Line.js';
|
|
2
2
|
import { Vector3 } from '../math/Vector3.js';
|
|
3
3
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
4
|
+
import { warn } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
const _start = /*@__PURE__*/ new Vector3();
|
|
6
7
|
const _end = /*@__PURE__*/ new Vector3();
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* A series of lines drawn between pairs of vertices.
|
|
11
|
+
*
|
|
12
|
+
* @augments Line
|
|
13
|
+
*/
|
|
8
14
|
class LineSegments extends Line {
|
|
9
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new line segments.
|
|
18
|
+
*
|
|
19
|
+
* @param {BufferGeometry} [geometry] - The line geometry.
|
|
20
|
+
* @param {Material|Array<Material>} [material] - The line material.
|
|
21
|
+
*/
|
|
10
22
|
constructor( geometry, material ) {
|
|
11
23
|
|
|
12
24
|
super( geometry, material );
|
|
13
25
|
|
|
26
|
+
/**
|
|
27
|
+
* This flag can be used for type testing.
|
|
28
|
+
*
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
* @readonly
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
14
33
|
this.isLineSegments = true;
|
|
15
34
|
|
|
16
35
|
this.type = 'LineSegments';
|
|
@@ -42,7 +61,7 @@ class LineSegments extends Line {
|
|
|
42
61
|
|
|
43
62
|
} else {
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
warn( 'LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
|
|
46
65
|
|
|
47
66
|
}
|
|
48
67
|
|
package/src/objects/Mesh.js
CHANGED
|
@@ -24,19 +24,85 @@ const _morphA = /*@__PURE__*/ new Vector3();
|
|
|
24
24
|
const _intersectionPoint = /*@__PURE__*/ new Vector3();
|
|
25
25
|
const _intersectionPointWorld = /*@__PURE__*/ new Vector3();
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Class representing triangular polygon mesh based objects.
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* const geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
|
32
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
33
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
34
|
+
* scene.add( mesh );
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @augments Object3D
|
|
38
|
+
*/
|
|
27
39
|
class Mesh extends Object3D {
|
|
28
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Constructs a new mesh.
|
|
43
|
+
*
|
|
44
|
+
* @param {BufferGeometry} [geometry] - The mesh geometry.
|
|
45
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
46
|
+
*/
|
|
29
47
|
constructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {
|
|
30
48
|
|
|
31
49
|
super();
|
|
32
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This flag can be used for type testing.
|
|
53
|
+
*
|
|
54
|
+
* @type {boolean}
|
|
55
|
+
* @readonly
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
33
58
|
this.isMesh = true;
|
|
34
59
|
|
|
35
60
|
this.type = 'Mesh';
|
|
36
61
|
|
|
62
|
+
/**
|
|
63
|
+
* The mesh geometry.
|
|
64
|
+
*
|
|
65
|
+
* @type {BufferGeometry}
|
|
66
|
+
*/
|
|
37
67
|
this.geometry = geometry;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The mesh material.
|
|
71
|
+
*
|
|
72
|
+
* @type {Material|Array<Material>}
|
|
73
|
+
* @default MeshBasicMaterial
|
|
74
|
+
*/
|
|
38
75
|
this.material = material;
|
|
39
76
|
|
|
77
|
+
/**
|
|
78
|
+
* A dictionary representing the morph targets in the geometry. The key is the
|
|
79
|
+
* morph targets name, the value its attribute index. This member is `undefined`
|
|
80
|
+
* by default and only set when morph targets are detected in the geometry.
|
|
81
|
+
*
|
|
82
|
+
* @type {Object<string,number>|undefined}
|
|
83
|
+
* @default undefined
|
|
84
|
+
*/
|
|
85
|
+
this.morphTargetDictionary = undefined;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* An array of weights typically in the range `[0,1]` that specify how much of the morph
|
|
89
|
+
* is applied. This member is `undefined` by default and only set when morph targets are
|
|
90
|
+
* detected in the geometry.
|
|
91
|
+
*
|
|
92
|
+
* @type {Array<number>|undefined}
|
|
93
|
+
* @default undefined
|
|
94
|
+
*/
|
|
95
|
+
this.morphTargetInfluences = undefined;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* The number of instances of this mesh.
|
|
99
|
+
* Can only be used with {@link WebGPURenderer}.
|
|
100
|
+
*
|
|
101
|
+
* @type {number}
|
|
102
|
+
* @default 1
|
|
103
|
+
*/
|
|
104
|
+
this.count = 1;
|
|
105
|
+
|
|
40
106
|
this.updateMorphTargets();
|
|
41
107
|
|
|
42
108
|
}
|
|
@@ -64,6 +130,10 @@ class Mesh extends Object3D {
|
|
|
64
130
|
|
|
65
131
|
}
|
|
66
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences}
|
|
135
|
+
* to make sure existing morph targets can influence this 3D object.
|
|
136
|
+
*/
|
|
67
137
|
updateMorphTargets() {
|
|
68
138
|
|
|
69
139
|
const geometry = this.geometry;
|
|
@@ -95,6 +165,14 @@ class Mesh extends Object3D {
|
|
|
95
165
|
|
|
96
166
|
}
|
|
97
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Returns the local-space position of the vertex at the given index, taking into
|
|
170
|
+
* account the current animation state of both morph targets and skinning.
|
|
171
|
+
*
|
|
172
|
+
* @param {number} index - The vertex index.
|
|
173
|
+
* @param {Vector3} target - The target object that is used to store the method's result.
|
|
174
|
+
* @return {Vector3} The vertex position in local space.
|
|
175
|
+
*/
|
|
98
176
|
getVertexPosition( index, target ) {
|
|
99
177
|
|
|
100
178
|
const geometry = this.geometry;
|
|
@@ -139,6 +217,12 @@ class Mesh extends Object3D {
|
|
|
139
217
|
|
|
140
218
|
}
|
|
141
219
|
|
|
220
|
+
/**
|
|
221
|
+
* Computes intersection points between a casted ray and this line.
|
|
222
|
+
*
|
|
223
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
224
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
225
|
+
*/
|
|
142
226
|
raycast( raycaster, intersects ) {
|
|
143
227
|
|
|
144
228
|
const geometry = this.geometry;
|
package/src/objects/Points.js
CHANGED
|
@@ -11,19 +11,69 @@ const _ray = /*@__PURE__*/ new Ray();
|
|
|
11
11
|
const _sphere = /*@__PURE__*/ new Sphere();
|
|
12
12
|
const _position = /*@__PURE__*/ new Vector3();
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* A class for displaying points or point clouds.
|
|
16
|
+
*
|
|
17
|
+
* @augments Object3D
|
|
18
|
+
*/
|
|
14
19
|
class Points extends Object3D {
|
|
15
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new point cloud.
|
|
23
|
+
*
|
|
24
|
+
* @param {BufferGeometry} [geometry] - The points geometry.
|
|
25
|
+
* @param {Material|Array<Material>} [material] - The points material.
|
|
26
|
+
*/
|
|
16
27
|
constructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {
|
|
17
28
|
|
|
18
29
|
super();
|
|
19
30
|
|
|
31
|
+
/**
|
|
32
|
+
* This flag can be used for type testing.
|
|
33
|
+
*
|
|
34
|
+
* @type {boolean}
|
|
35
|
+
* @readonly
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
20
38
|
this.isPoints = true;
|
|
21
39
|
|
|
22
40
|
this.type = 'Points';
|
|
23
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The points geometry.
|
|
44
|
+
*
|
|
45
|
+
* @type {BufferGeometry}
|
|
46
|
+
*/
|
|
24
47
|
this.geometry = geometry;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The line material.
|
|
51
|
+
*
|
|
52
|
+
* @type {Material|Array<Material>}
|
|
53
|
+
* @default PointsMaterial
|
|
54
|
+
*/
|
|
25
55
|
this.material = material;
|
|
26
56
|
|
|
57
|
+
/**
|
|
58
|
+
* A dictionary representing the morph targets in the geometry. The key is the
|
|
59
|
+
* morph targets name, the value its attribute index. This member is `undefined`
|
|
60
|
+
* by default and only set when morph targets are detected in the geometry.
|
|
61
|
+
*
|
|
62
|
+
* @type {Object<string,number>|undefined}
|
|
63
|
+
* @default undefined
|
|
64
|
+
*/
|
|
65
|
+
this.morphTargetDictionary = undefined;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* An array of weights typically in the range `[0,1]` that specify how much of the morph
|
|
69
|
+
* is applied. This member is `undefined` by default and only set when morph targets are
|
|
70
|
+
* detected in the geometry.
|
|
71
|
+
*
|
|
72
|
+
* @type {Array<number>|undefined}
|
|
73
|
+
* @default undefined
|
|
74
|
+
*/
|
|
75
|
+
this.morphTargetInfluences = undefined;
|
|
76
|
+
|
|
27
77
|
this.updateMorphTargets();
|
|
28
78
|
|
|
29
79
|
}
|
|
@@ -39,6 +89,12 @@ class Points extends Object3D {
|
|
|
39
89
|
|
|
40
90
|
}
|
|
41
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Computes intersection points between a casted ray and this point cloud.
|
|
94
|
+
*
|
|
95
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
96
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
97
|
+
*/
|
|
42
98
|
raycast( raycaster, intersects ) {
|
|
43
99
|
|
|
44
100
|
const geometry = this.geometry;
|
|
@@ -100,6 +156,10 @@ class Points extends Object3D {
|
|
|
100
156
|
|
|
101
157
|
}
|
|
102
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences}
|
|
161
|
+
* to make sure existing morph targets can influence this 3D object.
|
|
162
|
+
*/
|
|
103
163
|
updateMorphTargets() {
|
|
104
164
|
|
|
105
165
|
const geometry = this.geometry;
|
package/src/objects/Skeleton.js
CHANGED
|
@@ -5,27 +5,98 @@ import {
|
|
|
5
5
|
import { Bone } from './Bone.js';
|
|
6
6
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
7
7
|
import { DataTexture } from '../textures/DataTexture.js';
|
|
8
|
-
import
|
|
8
|
+
import { generateUUID } from '../math/MathUtils.js';
|
|
9
|
+
import { warn } from '../utils.js';
|
|
9
10
|
|
|
10
11
|
const _offsetMatrix = /*@__PURE__*/ new Matrix4();
|
|
11
12
|
const _identityMatrix = /*@__PURE__*/ new Matrix4();
|
|
12
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Class for representing the armatures in `three.js`. The skeleton
|
|
16
|
+
* is defined by a hierarchy of bones.
|
|
17
|
+
*
|
|
18
|
+
* ```js
|
|
19
|
+
* const bones = [];
|
|
20
|
+
*
|
|
21
|
+
* const shoulder = new THREE.Bone();
|
|
22
|
+
* const elbow = new THREE.Bone();
|
|
23
|
+
* const hand = new THREE.Bone();
|
|
24
|
+
*
|
|
25
|
+
* shoulder.add( elbow );
|
|
26
|
+
* elbow.add( hand );
|
|
27
|
+
*
|
|
28
|
+
* bones.push( shoulder , elbow, hand);
|
|
29
|
+
*
|
|
30
|
+
* shoulder.position.y = -5;
|
|
31
|
+
* elbow.position.y = 0;
|
|
32
|
+
* hand.position.y = 5;
|
|
33
|
+
*
|
|
34
|
+
* const armSkeleton = new THREE.Skeleton( bones );
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
13
37
|
class Skeleton {
|
|
14
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Constructs a new skeleton.
|
|
41
|
+
*
|
|
42
|
+
* @param {Array<Bone>} [bones] - An array of bones.
|
|
43
|
+
* @param {Array<Matrix4>} [boneInverses] - An array of bone inverse matrices.
|
|
44
|
+
* If not provided, these matrices will be computed automatically via {@link Skeleton#calculateInverses}.
|
|
45
|
+
*/
|
|
15
46
|
constructor( bones = [], boneInverses = [] ) {
|
|
16
47
|
|
|
17
|
-
this.uuid =
|
|
48
|
+
this.uuid = generateUUID();
|
|
18
49
|
|
|
50
|
+
/**
|
|
51
|
+
* An array of bones defining the skeleton.
|
|
52
|
+
*
|
|
53
|
+
* @type {Array<Bone>}
|
|
54
|
+
*/
|
|
19
55
|
this.bones = bones.slice( 0 );
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* An array of bone inverse matrices.
|
|
59
|
+
*
|
|
60
|
+
* @type {Array<Matrix4>}
|
|
61
|
+
*/
|
|
20
62
|
this.boneInverses = boneInverses;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* An array buffer holding the bone data.
|
|
66
|
+
* Input data for {@link Skeleton#boneTexture}.
|
|
67
|
+
*
|
|
68
|
+
* @type {?Float32Array}
|
|
69
|
+
* @default null
|
|
70
|
+
*/
|
|
21
71
|
this.boneMatrices = null;
|
|
22
72
|
|
|
73
|
+
/**
|
|
74
|
+
* An array buffer holding the bone data of the previous frame.
|
|
75
|
+
* Required for computing velocity. Maintained in {@link SkinningNode}.
|
|
76
|
+
*
|
|
77
|
+
* @type {?Float32Array}
|
|
78
|
+
* @default null
|
|
79
|
+
*/
|
|
80
|
+
this.previousBoneMatrices = null;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* A texture holding the bone data for use
|
|
84
|
+
* in the vertex shader.
|
|
85
|
+
*
|
|
86
|
+
* @type {?DataTexture}
|
|
87
|
+
* @default null
|
|
88
|
+
*/
|
|
23
89
|
this.boneTexture = null;
|
|
24
90
|
|
|
25
91
|
this.init();
|
|
26
92
|
|
|
27
93
|
}
|
|
28
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Initializes the skeleton. This method gets automatically called by the constructor
|
|
97
|
+
* but depending on how the skeleton is created it might be necessary to call this method
|
|
98
|
+
* manually.
|
|
99
|
+
*/
|
|
29
100
|
init() {
|
|
30
101
|
|
|
31
102
|
const bones = this.bones;
|
|
@@ -45,7 +116,7 @@ class Skeleton {
|
|
|
45
116
|
|
|
46
117
|
if ( bones.length !== boneInverses.length ) {
|
|
47
118
|
|
|
48
|
-
|
|
119
|
+
warn( 'Skeleton: Number of inverse bone matrices does not match amount of bones.' );
|
|
49
120
|
|
|
50
121
|
this.boneInverses = [];
|
|
51
122
|
|
|
@@ -61,6 +132,10 @@ class Skeleton {
|
|
|
61
132
|
|
|
62
133
|
}
|
|
63
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Computes the bone inverse matrices. This method resets {@link Skeleton#boneInverses}
|
|
137
|
+
* and fills it with new matrices.
|
|
138
|
+
*/
|
|
64
139
|
calculateInverses() {
|
|
65
140
|
|
|
66
141
|
this.boneInverses.length = 0;
|
|
@@ -81,6 +156,9 @@ class Skeleton {
|
|
|
81
156
|
|
|
82
157
|
}
|
|
83
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Resets the skeleton to the base pose.
|
|
161
|
+
*/
|
|
84
162
|
pose() {
|
|
85
163
|
|
|
86
164
|
// recover the bind-time world matrices
|
|
@@ -124,6 +202,9 @@ class Skeleton {
|
|
|
124
202
|
|
|
125
203
|
}
|
|
126
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Resets the skeleton to the base pose.
|
|
207
|
+
*/
|
|
127
208
|
update() {
|
|
128
209
|
|
|
129
210
|
const bones = this.bones;
|
|
@@ -152,12 +233,22 @@ class Skeleton {
|
|
|
152
233
|
|
|
153
234
|
}
|
|
154
235
|
|
|
236
|
+
/**
|
|
237
|
+
* Returns a new skeleton with copied values from this instance.
|
|
238
|
+
*
|
|
239
|
+
* @return {Skeleton} A clone of this instance.
|
|
240
|
+
*/
|
|
155
241
|
clone() {
|
|
156
242
|
|
|
157
243
|
return new Skeleton( this.bones, this.boneInverses );
|
|
158
244
|
|
|
159
245
|
}
|
|
160
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Computes a data texture for passing bone data to the vertex shader.
|
|
249
|
+
*
|
|
250
|
+
* @return {Skeleton} A reference of this instance.
|
|
251
|
+
*/
|
|
161
252
|
computeBoneTexture() {
|
|
162
253
|
|
|
163
254
|
// layout (1 matrix = 4 pixels)
|
|
@@ -184,6 +275,13 @@ class Skeleton {
|
|
|
184
275
|
|
|
185
276
|
}
|
|
186
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Searches through the skeleton's bone array and returns the first with a
|
|
280
|
+
* matching name.
|
|
281
|
+
*
|
|
282
|
+
* @param {string} name - The name of the bone.
|
|
283
|
+
* @return {Bone|undefined} The found bone. `undefined` if no bone has been found.
|
|
284
|
+
*/
|
|
187
285
|
getBoneByName( name ) {
|
|
188
286
|
|
|
189
287
|
for ( let i = 0, il = this.bones.length; i < il; i ++ ) {
|
|
@@ -202,6 +300,10 @@ class Skeleton {
|
|
|
202
300
|
|
|
203
301
|
}
|
|
204
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
305
|
+
* method whenever this instance is no longer used in your app.
|
|
306
|
+
*/
|
|
205
307
|
dispose( ) {
|
|
206
308
|
|
|
207
309
|
if ( this.boneTexture !== null ) {
|
|
@@ -214,6 +316,13 @@ class Skeleton {
|
|
|
214
316
|
|
|
215
317
|
}
|
|
216
318
|
|
|
319
|
+
/**
|
|
320
|
+
* Setups the skeleton by the given JSON and bones.
|
|
321
|
+
*
|
|
322
|
+
* @param {Object} json - The skeleton as serialized JSON.
|
|
323
|
+
* @param {Object<string, Bone>} bones - An array of bones.
|
|
324
|
+
* @return {Skeleton} A reference of this instance.
|
|
325
|
+
*/
|
|
217
326
|
fromJSON( json, bones ) {
|
|
218
327
|
|
|
219
328
|
this.uuid = json.uuid;
|
|
@@ -225,7 +334,7 @@ class Skeleton {
|
|
|
225
334
|
|
|
226
335
|
if ( bone === undefined ) {
|
|
227
336
|
|
|
228
|
-
|
|
337
|
+
warn( 'Skeleton: No bone found with UUID:', uuid );
|
|
229
338
|
bone = new Bone();
|
|
230
339
|
|
|
231
340
|
}
|
|
@@ -241,11 +350,17 @@ class Skeleton {
|
|
|
241
350
|
|
|
242
351
|
}
|
|
243
352
|
|
|
353
|
+
/**
|
|
354
|
+
* Serializes the skeleton into JSON.
|
|
355
|
+
*
|
|
356
|
+
* @return {Object} A JSON object representing the serialized skeleton.
|
|
357
|
+
* @see {@link ObjectLoader#parse}
|
|
358
|
+
*/
|
|
244
359
|
toJSON() {
|
|
245
360
|
|
|
246
361
|
const data = {
|
|
247
362
|
metadata: {
|
|
248
|
-
version: 4.
|
|
363
|
+
version: 4.7,
|
|
249
364
|
type: 'Skeleton',
|
|
250
365
|
generator: 'Skeleton.toJSON'
|
|
251
366
|
},
|