@needle-tools/three 0.169.20 → 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 +54178 -56709
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73012
- 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 +53905 -51657
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53884 -51814
- 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 -34
- 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 +99 -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 +144 -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
|
@@ -4,14 +4,44 @@ import { Shape } from '../extras/core/Shape.js';
|
|
|
4
4
|
import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
5
5
|
import { Vector2 } from '../math/Vector2.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Creates an one-sided polygonal geometry from one or more path shapes.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const arcShape = new THREE.Shape()
|
|
12
|
+
* .moveTo( 5, 1 )
|
|
13
|
+
* .absarc( 1, 1, 4, 0, Math.PI * 2, false );
|
|
14
|
+
*
|
|
15
|
+
* const geometry = new THREE.ShapeGeometry( arcShape );
|
|
16
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.DoubleSide } );
|
|
17
|
+
* const mesh = new THREE.Mesh( geometry, material ) ;
|
|
18
|
+
* scene.add( mesh );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments BufferGeometry
|
|
22
|
+
* @demo scenes/geometry-browser.html#ShapeGeometry
|
|
23
|
+
*/
|
|
7
24
|
class ShapeGeometry extends BufferGeometry {
|
|
8
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new shape geometry.
|
|
28
|
+
*
|
|
29
|
+
* @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
|
|
30
|
+
* @param {number} [curveSegments=12] - Number of segments per shape.
|
|
31
|
+
*/
|
|
9
32
|
constructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {
|
|
10
33
|
|
|
11
34
|
super();
|
|
12
35
|
|
|
13
36
|
this.type = 'ShapeGeometry';
|
|
14
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Holds the constructor parameters that have been
|
|
40
|
+
* used to generate the geometry. Any modification
|
|
41
|
+
* after instantiation does not change the geometry.
|
|
42
|
+
*
|
|
43
|
+
* @type {Object}
|
|
44
|
+
*/
|
|
15
45
|
this.parameters = {
|
|
16
46
|
shapes: shapes,
|
|
17
47
|
curveSegments: curveSegments
|
|
@@ -150,6 +180,14 @@ class ShapeGeometry extends BufferGeometry {
|
|
|
150
180
|
|
|
151
181
|
}
|
|
152
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Factory method for creating an instance of this class from the given
|
|
185
|
+
* JSON object.
|
|
186
|
+
*
|
|
187
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
188
|
+
* @param {Array<Shape>} shapes - An array of shapes.
|
|
189
|
+
* @return {ShapeGeometry} A new instance.
|
|
190
|
+
*/
|
|
153
191
|
static fromJSON( data, shapes ) {
|
|
154
192
|
|
|
155
193
|
const geometryShapes = [];
|
|
@@ -2,14 +2,45 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A class for generating a sphere geometry.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const geometry = new THREE.SphereGeometry( 15, 32, 16 );
|
|
10
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
11
|
+
* const sphere = new THREE.Mesh( geometry, material );
|
|
12
|
+
* scene.add( sphere );
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments BufferGeometry
|
|
16
|
+
* @demo scenes/geometry-browser.html#SphereGeometry
|
|
17
|
+
*/
|
|
5
18
|
class SphereGeometry extends BufferGeometry {
|
|
6
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new sphere geometry.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [radius=1] - The sphere radius.
|
|
24
|
+
* @param {number} [widthSegments=32] - The number of horizontal segments. Minimum value is `3`.
|
|
25
|
+
* @param {number} [heightSegments=16] - The number of vertical segments. Minimum value is `2`.
|
|
26
|
+
* @param {number} [phiStart=0] - The horizontal starting angle in radians.
|
|
27
|
+
* @param {number} [phiLength=Math.PI*2] - The horizontal sweep angle size.
|
|
28
|
+
* @param {number} [thetaStart=0] - The vertical starting angle in radians.
|
|
29
|
+
* @param {number} [thetaLength=Math.PI] - The vertical sweep angle size.
|
|
30
|
+
*/
|
|
7
31
|
constructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {
|
|
8
32
|
|
|
9
33
|
super();
|
|
10
34
|
|
|
11
35
|
this.type = 'SphereGeometry';
|
|
12
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Holds the constructor parameters that have been
|
|
39
|
+
* used to generate the geometry. Any modification
|
|
40
|
+
* after instantiation does not change the geometry.
|
|
41
|
+
*
|
|
42
|
+
* @type {Object}
|
|
43
|
+
*/
|
|
13
44
|
this.parameters = {
|
|
14
45
|
radius: radius,
|
|
15
46
|
widthSegments: widthSegments,
|
|
@@ -126,6 +157,13 @@ class SphereGeometry extends BufferGeometry {
|
|
|
126
157
|
|
|
127
158
|
}
|
|
128
159
|
|
|
160
|
+
/**
|
|
161
|
+
* Factory method for creating an instance of this class from the given
|
|
162
|
+
* JSON object.
|
|
163
|
+
*
|
|
164
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
165
|
+
* @return {SphereGeometry} A new instance.
|
|
166
|
+
*/
|
|
129
167
|
static fromJSON( data ) {
|
|
130
168
|
|
|
131
169
|
return new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing an tetrahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.TetrahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const tetrahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( tetrahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
* @demo scenes/geometry-browser.html#TetrahedronGeometry
|
|
15
|
+
*/
|
|
3
16
|
class TetrahedronGeometry extends PolyhedronGeometry {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new tetrahedron geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [radius=1] - Radius of the tetrahedron.
|
|
22
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a tetrahedron.
|
|
23
|
+
*/
|
|
5
24
|
constructor( radius = 1, detail = 0 ) {
|
|
6
25
|
|
|
7
26
|
const vertices = [
|
|
@@ -16,6 +35,13 @@ class TetrahedronGeometry extends PolyhedronGeometry {
|
|
|
16
35
|
|
|
17
36
|
this.type = 'TetrahedronGeometry';
|
|
18
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Holds the constructor parameters that have been
|
|
40
|
+
* used to generate the geometry. Any modification
|
|
41
|
+
* after instantiation does not change the geometry.
|
|
42
|
+
*
|
|
43
|
+
* @type {Object}
|
|
44
|
+
*/
|
|
19
45
|
this.parameters = {
|
|
20
46
|
radius: radius,
|
|
21
47
|
detail: detail
|
|
@@ -23,6 +49,13 @@ class TetrahedronGeometry extends PolyhedronGeometry {
|
|
|
23
49
|
|
|
24
50
|
}
|
|
25
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Factory method for creating an instance of this class from the given
|
|
54
|
+
* JSON object.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
57
|
+
* @return {TetrahedronGeometry} A new instance.
|
|
58
|
+
*/
|
|
26
59
|
static fromJSON( data ) {
|
|
27
60
|
|
|
28
61
|
return new TetrahedronGeometry( data.radius, data.detail );
|
|
@@ -2,20 +2,53 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A geometry class for representing an torus.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );
|
|
10
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
11
|
+
* const torus = new THREE.Mesh( geometry, material );
|
|
12
|
+
* scene.add( torus );
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments BufferGeometry
|
|
16
|
+
* @demo scenes/geometry-browser.html#TorusGeometry
|
|
17
|
+
*/
|
|
5
18
|
class TorusGeometry extends BufferGeometry {
|
|
6
19
|
|
|
7
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new torus geometry.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [radius=1] - Radius of the torus, from the center of the torus to the center of the tube.
|
|
24
|
+
* @param {number} [tube=0.4] - Radius of the tube. Must be smaller than `radius`.
|
|
25
|
+
* @param {number} [radialSegments=12] - The number of radial segments.
|
|
26
|
+
* @param {number} [tubularSegments=48] - The number of tubular segments.
|
|
27
|
+
* @param {number} [arc=Math.PI*2] - Central angle in radians.
|
|
28
|
+
* @param {number} [thetaStart=0] - Start of the tubular sweep in radians.
|
|
29
|
+
* @param {number} [thetaLength=Math.PI*2] - Length of the tubular sweep in radians.
|
|
30
|
+
*/
|
|
31
|
+
constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
8
32
|
|
|
9
33
|
super();
|
|
10
34
|
|
|
11
35
|
this.type = 'TorusGeometry';
|
|
12
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Holds the constructor parameters that have been
|
|
39
|
+
* used to generate the geometry. Any modification
|
|
40
|
+
* after instantiation does not change the geometry.
|
|
41
|
+
*
|
|
42
|
+
* @type {Object}
|
|
43
|
+
*/
|
|
13
44
|
this.parameters = {
|
|
14
45
|
radius: radius,
|
|
15
46
|
tube: tube,
|
|
16
47
|
radialSegments: radialSegments,
|
|
17
48
|
tubularSegments: tubularSegments,
|
|
18
|
-
arc: arc
|
|
49
|
+
arc: arc,
|
|
50
|
+
thetaStart: thetaStart,
|
|
51
|
+
thetaLength: thetaLength,
|
|
19
52
|
};
|
|
20
53
|
|
|
21
54
|
radialSegments = Math.floor( radialSegments );
|
|
@@ -38,10 +71,11 @@ class TorusGeometry extends BufferGeometry {
|
|
|
38
71
|
|
|
39
72
|
for ( let j = 0; j <= radialSegments; j ++ ) {
|
|
40
73
|
|
|
74
|
+
const v = thetaStart + ( j / radialSegments ) * thetaLength;
|
|
75
|
+
|
|
41
76
|
for ( let i = 0; i <= tubularSegments; i ++ ) {
|
|
42
77
|
|
|
43
78
|
const u = i / tubularSegments * arc;
|
|
44
|
-
const v = j / radialSegments * Math.PI * 2;
|
|
45
79
|
|
|
46
80
|
// vertex
|
|
47
81
|
|
|
@@ -109,6 +143,13 @@ class TorusGeometry extends BufferGeometry {
|
|
|
109
143
|
|
|
110
144
|
}
|
|
111
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Factory method for creating an instance of this class from the given
|
|
148
|
+
* JSON object.
|
|
149
|
+
*
|
|
150
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
151
|
+
* @return {TorusGeometry} A new instance.
|
|
152
|
+
*/
|
|
112
153
|
static fromJSON( data ) {
|
|
113
154
|
|
|
114
155
|
return new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );
|
|
@@ -2,14 +2,46 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Creates a torus knot, the particular shape of which is defined by a pair
|
|
7
|
+
* of coprime integers, p and q. If p and q are not coprime, the result will
|
|
8
|
+
* be a torus link.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 );
|
|
12
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
13
|
+
* const torusKnot = new THREE.Mesh( geometry, material );
|
|
14
|
+
* scene.add( torusKnot );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments BufferGeometry
|
|
18
|
+
* @demo scenes/geometry-browser.html#TorusKnotGeometry
|
|
19
|
+
*/
|
|
5
20
|
class TorusKnotGeometry extends BufferGeometry {
|
|
6
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new torus knot geometry.
|
|
24
|
+
*
|
|
25
|
+
* @param {number} [radius=1] - Radius of the torus knot.
|
|
26
|
+
* @param {number} [tube=0.4] - Radius of the tube.
|
|
27
|
+
* @param {number} [tubularSegments=64] - The number of tubular segments.
|
|
28
|
+
* @param {number} [radialSegments=8] - The number of radial segments.
|
|
29
|
+
* @param {number} [p=2] - This value determines, how many times the geometry winds around its axis of rotational symmetry.
|
|
30
|
+
* @param {number} [q=3] - This value determines, how many times the geometry winds around a circle in the interior of the torus.
|
|
31
|
+
*/
|
|
7
32
|
constructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {
|
|
8
33
|
|
|
9
34
|
super();
|
|
10
35
|
|
|
11
36
|
this.type = 'TorusKnotGeometry';
|
|
12
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Holds the constructor parameters that have been
|
|
40
|
+
* used to generate the geometry. Any modification
|
|
41
|
+
* after instantiation does not change the geometry.
|
|
42
|
+
*
|
|
43
|
+
* @type {Object}
|
|
44
|
+
*/
|
|
13
45
|
this.parameters = {
|
|
14
46
|
radius: radius,
|
|
15
47
|
tube: tube,
|
|
@@ -156,6 +188,13 @@ class TorusKnotGeometry extends BufferGeometry {
|
|
|
156
188
|
|
|
157
189
|
}
|
|
158
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Factory method for creating an instance of this class from the given
|
|
193
|
+
* JSON object.
|
|
194
|
+
*
|
|
195
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
196
|
+
* @return {TorusKnotGeometry} A new instance.
|
|
197
|
+
*/
|
|
159
198
|
static fromJSON( data ) {
|
|
160
199
|
|
|
161
200
|
return new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );
|
|
@@ -4,14 +4,57 @@ import * as Curves from '../extras/curves/Curves.js';
|
|
|
4
4
|
import { Vector2 } from '../math/Vector2.js';
|
|
5
5
|
import { Vector3 } from '../math/Vector3.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Creates a tube that extrudes along a 3D curve.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* class CustomSinCurve extends THREE.Curve {
|
|
12
|
+
*
|
|
13
|
+
* getPoint( t, optionalTarget = new THREE.Vector3() ) {
|
|
14
|
+
*
|
|
15
|
+
* const tx = t * 3 - 1.5;
|
|
16
|
+
* const ty = Math.sin( 2 * Math.PI * t );
|
|
17
|
+
* const tz = 0;
|
|
18
|
+
*
|
|
19
|
+
* return optionalTarget.set( tx, ty, tz );
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* const path = new CustomSinCurve( 10 );
|
|
25
|
+
* const geometry = new THREE.TubeGeometry( path, 20, 2, 8, false );
|
|
26
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
27
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
28
|
+
* scene.add( mesh );
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @augments BufferGeometry
|
|
32
|
+
* @demo scenes/geometry-browser.html#TubeGeometry
|
|
33
|
+
*/
|
|
7
34
|
class TubeGeometry extends BufferGeometry {
|
|
8
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Constructs a new tube geometry.
|
|
38
|
+
*
|
|
39
|
+
* @param {Curve} [path=QuadraticBezierCurve3] - A 3D curve defining the path of the tube.
|
|
40
|
+
* @param {number} [tubularSegments=64] - The number of segments that make up the tube.
|
|
41
|
+
* @param {number} [radius=1] -The radius of the tube.
|
|
42
|
+
* @param {number} [radialSegments=8] - The number of segments that make up the cross-section.
|
|
43
|
+
* @param {boolean} [closed=false] - Whether the tube is closed or not.
|
|
44
|
+
*/
|
|
9
45
|
constructor( path = new Curves[ 'QuadraticBezierCurve3' ]( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {
|
|
10
46
|
|
|
11
47
|
super();
|
|
12
48
|
|
|
13
49
|
this.type = 'TubeGeometry';
|
|
14
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Holds the constructor parameters that have been
|
|
53
|
+
* used to generate the geometry. Any modification
|
|
54
|
+
* after instantiation does not change the geometry.
|
|
55
|
+
*
|
|
56
|
+
* @type {Object}
|
|
57
|
+
*/
|
|
15
58
|
this.parameters = {
|
|
16
59
|
path: path,
|
|
17
60
|
tubularSegments: tubularSegments,
|
|
@@ -183,6 +226,13 @@ class TubeGeometry extends BufferGeometry {
|
|
|
183
226
|
|
|
184
227
|
}
|
|
185
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Factory method for creating an instance of this class from the given
|
|
231
|
+
* JSON object.
|
|
232
|
+
*
|
|
233
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
234
|
+
* @return {TubeGeometry} A new instance.
|
|
235
|
+
*/
|
|
186
236
|
static fromJSON( data ) {
|
|
187
237
|
|
|
188
238
|
// This only works for built-in curves (e.g. CatmullRomCurve3).
|
|
@@ -2,14 +2,46 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Can be used as a helper object to visualize a geometry as a wireframe.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const geometry = new THREE.SphereGeometry();
|
|
10
|
+
*
|
|
11
|
+
* const wireframe = new THREE.WireframeGeometry( geometry );
|
|
12
|
+
*
|
|
13
|
+
* const line = new THREE.LineSegments( wireframe );
|
|
14
|
+
* line.material.depthWrite = false;
|
|
15
|
+
* line.material.opacity = 0.25;
|
|
16
|
+
* line.material.transparent = true;
|
|
17
|
+
*
|
|
18
|
+
* scene.add( line );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Note: It is not yet possible to serialize/deserialize instances of this class.
|
|
22
|
+
*
|
|
23
|
+
* @augments BufferGeometry
|
|
24
|
+
*/
|
|
5
25
|
class WireframeGeometry extends BufferGeometry {
|
|
6
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new wireframe geometry.
|
|
29
|
+
*
|
|
30
|
+
* @param {?BufferGeometry} [geometry=null] - The geometry.
|
|
31
|
+
*/
|
|
7
32
|
constructor( geometry = null ) {
|
|
8
33
|
|
|
9
34
|
super();
|
|
10
35
|
|
|
11
36
|
this.type = 'WireframeGeometry';
|
|
12
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Holds the constructor parameters that have been
|
|
40
|
+
* used to generate the geometry. Any modification
|
|
41
|
+
* after instantiation does not change the geometry.
|
|
42
|
+
*
|
|
43
|
+
* @type {Object}
|
|
44
|
+
*/
|
|
13
45
|
this.parameters = {
|
|
14
46
|
geometry: geometry
|
|
15
47
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
2
2
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ConeGeometry } from '../geometries/ConeGeometry.js';
|
|
5
5
|
import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
|
|
6
6
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
7
7
|
import { Mesh } from '../objects/Mesh.js';
|
|
@@ -11,10 +11,37 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
11
11
|
const _axis = /*@__PURE__*/ new Vector3();
|
|
12
12
|
let _lineGeometry, _coneGeometry;
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* An 3D arrow object for visualizing directions.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const dir = new THREE.Vector3( 1, 2, 0 );
|
|
19
|
+
*
|
|
20
|
+
* //normalize the direction vector (convert to vector of length 1)
|
|
21
|
+
* dir.normalize();
|
|
22
|
+
*
|
|
23
|
+
* const origin = new THREE.Vector3( 0, 0, 0 );
|
|
24
|
+
* const length = 1;
|
|
25
|
+
* const hex = 0xffff00;
|
|
26
|
+
*
|
|
27
|
+
* const arrowHelper = new THREE.ArrowHelper( dir, origin, length, hex );
|
|
28
|
+
* scene.add( arrowHelper );
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @augments Object3D
|
|
32
|
+
*/
|
|
14
33
|
class ArrowHelper extends Object3D {
|
|
15
34
|
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Constructs a new arrow helper.
|
|
37
|
+
*
|
|
38
|
+
* @param {Vector3} [dir=(0, 0, 1)] - The (normalized) direction vector.
|
|
39
|
+
* @param {Vector3} [origin=(0, 0, 0)] - Point at which the arrow starts.
|
|
40
|
+
* @param {number} [length=1] - Length of the arrow in world units.
|
|
41
|
+
* @param {(number|Color|string)} [color=0xffff00] - Color of the arrow.
|
|
42
|
+
* @param {number} [headLength=length*0.2] - The length of the head of the arrow.
|
|
43
|
+
* @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.
|
|
44
|
+
*/
|
|
18
45
|
constructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {
|
|
19
46
|
|
|
20
47
|
super();
|
|
@@ -26,17 +53,27 @@ class ArrowHelper extends Object3D {
|
|
|
26
53
|
_lineGeometry = new BufferGeometry();
|
|
27
54
|
_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );
|
|
28
55
|
|
|
29
|
-
_coneGeometry = new
|
|
56
|
+
_coneGeometry = new ConeGeometry( 0.5, 1, 5, 1 );
|
|
30
57
|
_coneGeometry.translate( 0, - 0.5, 0 );
|
|
31
58
|
|
|
32
59
|
}
|
|
33
60
|
|
|
34
61
|
this.position.copy( origin );
|
|
35
62
|
|
|
63
|
+
/**
|
|
64
|
+
* The line part of the arrow helper.
|
|
65
|
+
*
|
|
66
|
+
* @type {Line}
|
|
67
|
+
*/
|
|
36
68
|
this.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );
|
|
37
69
|
this.line.matrixAutoUpdate = false;
|
|
38
70
|
this.add( this.line );
|
|
39
71
|
|
|
72
|
+
/**
|
|
73
|
+
* The cone part of the arrow helper.
|
|
74
|
+
*
|
|
75
|
+
* @type {Mesh}
|
|
76
|
+
*/
|
|
40
77
|
this.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );
|
|
41
78
|
this.cone.matrixAutoUpdate = false;
|
|
42
79
|
this.add( this.cone );
|
|
@@ -46,6 +83,11 @@ class ArrowHelper extends Object3D {
|
|
|
46
83
|
|
|
47
84
|
}
|
|
48
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Sets the direction of the helper.
|
|
88
|
+
*
|
|
89
|
+
* @param {Vector3} dir - The normalized direction vector.
|
|
90
|
+
*/
|
|
49
91
|
setDirection( dir ) {
|
|
50
92
|
|
|
51
93
|
// dir is assumed to be normalized
|
|
@@ -70,6 +112,13 @@ class ArrowHelper extends Object3D {
|
|
|
70
112
|
|
|
71
113
|
}
|
|
72
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Sets the length of the helper.
|
|
117
|
+
*
|
|
118
|
+
* @param {number} length - Length of the arrow in world units.
|
|
119
|
+
* @param {number} [headLength=length*0.2] - The length of the head of the arrow.
|
|
120
|
+
* @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.
|
|
121
|
+
*/
|
|
73
122
|
setLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {
|
|
74
123
|
|
|
75
124
|
this.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458
|
|
@@ -81,6 +130,11 @@ class ArrowHelper extends Object3D {
|
|
|
81
130
|
|
|
82
131
|
}
|
|
83
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Sets the color of the helper.
|
|
135
|
+
*
|
|
136
|
+
* @param {number|Color|string} color - The color to set.
|
|
137
|
+
*/
|
|
84
138
|
setColor( color ) {
|
|
85
139
|
|
|
86
140
|
this.line.material.color.set( color );
|
|
@@ -99,6 +153,10 @@ class ArrowHelper extends Object3D {
|
|
|
99
153
|
|
|
100
154
|
}
|
|
101
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
158
|
+
* method whenever this instance is no longer used in your app.
|
|
159
|
+
*/
|
|
102
160
|
dispose() {
|
|
103
161
|
|
|
104
162
|
this.line.geometry.dispose();
|
|
@@ -110,5 +168,4 @@ class ArrowHelper extends Object3D {
|
|
|
110
168
|
|
|
111
169
|
}
|
|
112
170
|
|
|
113
|
-
|
|
114
171
|
export { ArrowHelper };
|
|
@@ -4,8 +4,24 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
4
4
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
5
5
|
import { Color } from '../math/Color.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* An axis object to visualize the 3 axes in a simple way.
|
|
9
|
+
* The X axis is red. The Y axis is green. The Z axis is blue.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const axesHelper = new THREE.AxesHelper( 5 );
|
|
13
|
+
* scene.add( axesHelper );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments LineSegments
|
|
17
|
+
*/
|
|
7
18
|
class AxesHelper extends LineSegments {
|
|
8
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new axes helper.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [size=1] - Size of the lines representing the axes.
|
|
24
|
+
*/
|
|
9
25
|
constructor( size = 1 ) {
|
|
10
26
|
|
|
11
27
|
const vertices = [
|
|
@@ -32,6 +48,14 @@ class AxesHelper extends LineSegments {
|
|
|
32
48
|
|
|
33
49
|
}
|
|
34
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Defines the colors of the axes helper.
|
|
53
|
+
*
|
|
54
|
+
* @param {number|Color|string} xAxisColor - The color for the x axis.
|
|
55
|
+
* @param {number|Color|string} yAxisColor - The color for the y axis.
|
|
56
|
+
* @param {number|Color|string} zAxisColor - The color for the z axis.
|
|
57
|
+
* @return {AxesHelper} A reference to this axes helper.
|
|
58
|
+
*/
|
|
35
59
|
setColors( xAxisColor, yAxisColor, zAxisColor ) {
|
|
36
60
|
|
|
37
61
|
const color = new Color();
|
|
@@ -55,6 +79,10 @@ class AxesHelper extends LineSegments {
|
|
|
55
79
|
|
|
56
80
|
}
|
|
57
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
84
|
+
* method whenever this instance is no longer used in your app.
|
|
85
|
+
*/
|
|
58
86
|
dispose() {
|
|
59
87
|
|
|
60
88
|
this.geometry.dispose();
|
|
@@ -3,8 +3,27 @@ import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
|
3
3
|
import { BufferAttribute, Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
4
4
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A helper object to visualize an instance of {@link Box3}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const box = new THREE.Box3();
|
|
11
|
+
* box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) );
|
|
12
|
+
*
|
|
13
|
+
* const helper = new THREE.Box3Helper( box, 0xffff00 );
|
|
14
|
+
* scene.add( helper )
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments LineSegments
|
|
18
|
+
*/
|
|
6
19
|
class Box3Helper extends LineSegments {
|
|
7
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new box3 helper.
|
|
23
|
+
*
|
|
24
|
+
* @param {Box3} box - The box to visualize.
|
|
25
|
+
* @param {number|Color|string} [color=0xffff00] - The box's color.
|
|
26
|
+
*/
|
|
8
27
|
constructor( box, color = 0xffff00 ) {
|
|
9
28
|
|
|
10
29
|
const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );
|
|
@@ -19,6 +38,11 @@ class Box3Helper extends LineSegments {
|
|
|
19
38
|
|
|
20
39
|
super( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );
|
|
21
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The box being visualized.
|
|
43
|
+
*
|
|
44
|
+
* @type {Box3}
|
|
45
|
+
*/
|
|
22
46
|
this.box = box;
|
|
23
47
|
|
|
24
48
|
this.type = 'Box3Helper';
|
|
@@ -43,6 +67,10 @@ class Box3Helper extends LineSegments {
|
|
|
43
67
|
|
|
44
68
|
}
|
|
45
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
72
|
+
* method whenever this instance is no longer used in your app.
|
|
73
|
+
*/
|
|
46
74
|
dispose() {
|
|
47
75
|
|
|
48
76
|
this.geometry.dispose();
|