@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
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates extruded geometry from a path shape.
|
|
3
|
-
*
|
|
4
|
-
* parameters = {
|
|
5
|
-
*
|
|
6
|
-
* curveSegments: <int>, // number of points on the curves
|
|
7
|
-
* steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too
|
|
8
|
-
* depth: <float>, // Depth to extrude the shape
|
|
9
|
-
*
|
|
10
|
-
* bevelEnabled: <bool>, // turn on bevel
|
|
11
|
-
* bevelThickness: <float>, // how deep into the original shape bevel goes
|
|
12
|
-
* bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel
|
|
13
|
-
* bevelOffset: <float>, // how far from shape outline does bevel start
|
|
14
|
-
* bevelSegments: <int>, // number of bevel layers
|
|
15
|
-
*
|
|
16
|
-
* extrudePath: <THREE.Curve> // curve to extrude shape along
|
|
17
|
-
*
|
|
18
|
-
* UVGenerator: <Object> // object that provides UV generator functions
|
|
19
|
-
*
|
|
20
|
-
* }
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
1
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
24
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
25
3
|
import * as Curves from '../extras/curves/Curves.js';
|
|
@@ -27,15 +5,51 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
27
5
|
import { Vector3 } from '../math/Vector3.js';
|
|
28
6
|
import { Shape } from '../extras/core/Shape.js';
|
|
29
7
|
import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
8
|
+
import { error } from '../utils.js';
|
|
30
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Creates extruded geometry from a path shape.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const length = 12, width = 8;
|
|
15
|
+
*
|
|
16
|
+
* const shape = new THREE.Shape();
|
|
17
|
+
* shape.moveTo( 0,0 );
|
|
18
|
+
* shape.lineTo( 0, width );
|
|
19
|
+
* shape.lineTo( length, width );
|
|
20
|
+
* shape.lineTo( length, 0 );
|
|
21
|
+
* shape.lineTo( 0, 0 );
|
|
22
|
+
*
|
|
23
|
+
* const geometry = new THREE.ExtrudeGeometry( shape );
|
|
24
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
25
|
+
* const mesh = new THREE.Mesh( geometry, material ) ;
|
|
26
|
+
* scene.add( mesh );
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @augments BufferGeometry
|
|
30
|
+
* @demo scenes/geometry-browser.html#ExtrudeGeometry
|
|
31
|
+
*/
|
|
31
32
|
class ExtrudeGeometry extends BufferGeometry {
|
|
32
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new extrude geometry.
|
|
36
|
+
*
|
|
37
|
+
* @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
|
|
38
|
+
* @param {ExtrudeGeometry~Options} [options] - The extrude settings.
|
|
39
|
+
*/
|
|
33
40
|
constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {
|
|
34
41
|
|
|
35
42
|
super();
|
|
36
43
|
|
|
37
44
|
this.type = 'ExtrudeGeometry';
|
|
38
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Holds the constructor parameters that have been
|
|
48
|
+
* used to generate the geometry. Any modification
|
|
49
|
+
* after instantiation does not change the geometry.
|
|
50
|
+
*
|
|
51
|
+
* @type {Object}
|
|
52
|
+
*/
|
|
39
53
|
this.parameters = {
|
|
40
54
|
shapes: shapes,
|
|
41
55
|
options: options
|
|
@@ -98,11 +112,11 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
98
112
|
|
|
99
113
|
// SETUP TNB variables
|
|
100
114
|
|
|
101
|
-
|
|
115
|
+
const isClosed = extrudePath.isCatmullRomCurve3 ? extrudePath.closed : false;
|
|
102
116
|
|
|
103
|
-
splineTube = extrudePath.computeFrenetFrames( steps,
|
|
117
|
+
splineTube = extrudePath.computeFrenetFrames( steps, isClosed );
|
|
104
118
|
|
|
105
|
-
//
|
|
119
|
+
// log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
|
|
106
120
|
|
|
107
121
|
binormal = new Vector3();
|
|
108
122
|
normal = new Vector3();
|
|
@@ -150,14 +164,53 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
150
164
|
|
|
151
165
|
}
|
|
152
166
|
|
|
167
|
+
/**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates.
|
|
168
|
+
* @param {Array<Vector2>} points
|
|
169
|
+
*/
|
|
170
|
+
function mergeOverlappingPoints( points ) {
|
|
171
|
+
|
|
172
|
+
const THRESHOLD = 1e-10;
|
|
173
|
+
const THRESHOLD_SQ = THRESHOLD * THRESHOLD;
|
|
174
|
+
let prevPos = points[ 0 ];
|
|
175
|
+
for ( let i = 1; i <= points.length; i ++ ) {
|
|
176
|
+
|
|
177
|
+
const currentIndex = i % points.length;
|
|
178
|
+
const currentPos = points[ currentIndex ];
|
|
179
|
+
const dx = currentPos.x - prevPos.x;
|
|
180
|
+
const dy = currentPos.y - prevPos.y;
|
|
181
|
+
const distSq = dx * dx + dy * dy;
|
|
182
|
+
|
|
183
|
+
const scalingFactorSqrt = Math.max(
|
|
184
|
+
Math.abs( currentPos.x ),
|
|
185
|
+
Math.abs( currentPos.y ),
|
|
186
|
+
Math.abs( prevPos.x ),
|
|
187
|
+
Math.abs( prevPos.y )
|
|
188
|
+
);
|
|
189
|
+
const thresholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;
|
|
190
|
+
if ( distSq <= thresholdSqScaled ) {
|
|
191
|
+
|
|
192
|
+
points.splice( currentIndex, 1 );
|
|
193
|
+
i --;
|
|
194
|
+
continue;
|
|
153
195
|
|
|
154
|
-
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
prevPos = currentPos;
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
mergeOverlappingPoints( vertices );
|
|
205
|
+
holes.forEach( mergeOverlappingPoints );
|
|
206
|
+
|
|
207
|
+
const numHoles = holes.length;
|
|
155
208
|
|
|
156
209
|
/* Vertices */
|
|
157
210
|
|
|
158
211
|
const contour = vertices; // vertices has all points but contour has only points of circumference
|
|
159
212
|
|
|
160
|
-
for ( let h = 0
|
|
213
|
+
for ( let h = 0; h < numHoles; h ++ ) {
|
|
161
214
|
|
|
162
215
|
const ahole = holes[ h ];
|
|
163
216
|
|
|
@@ -168,13 +221,13 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
168
221
|
|
|
169
222
|
function scalePt2( pt, vec, size ) {
|
|
170
223
|
|
|
171
|
-
if ( ! vec )
|
|
224
|
+
if ( ! vec ) error( 'ExtrudeGeometry: vec does not exist' );
|
|
172
225
|
|
|
173
226
|
return pt.clone().addScaledVector( vec, size );
|
|
174
227
|
|
|
175
228
|
}
|
|
176
229
|
|
|
177
|
-
const vlen = vertices.length
|
|
230
|
+
const vlen = vertices.length;
|
|
178
231
|
|
|
179
232
|
|
|
180
233
|
// Find directions for point movement
|
|
@@ -283,14 +336,14 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
283
336
|
|
|
284
337
|
if ( direction_eq ) {
|
|
285
338
|
|
|
286
|
-
//
|
|
339
|
+
// log("Warning: lines are a straight sequence");
|
|
287
340
|
v_trans_x = - v_prev_y;
|
|
288
341
|
v_trans_y = v_prev_x;
|
|
289
342
|
shrink_by = Math.sqrt( v_prev_lensq );
|
|
290
343
|
|
|
291
344
|
} else {
|
|
292
345
|
|
|
293
|
-
//
|
|
346
|
+
// log("Warning: lines are a straight spike");
|
|
294
347
|
v_trans_x = v_prev_x;
|
|
295
348
|
v_trans_y = v_prev_y;
|
|
296
349
|
shrink_by = Math.sqrt( v_prev_lensq / 2 );
|
|
@@ -312,7 +365,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
312
365
|
if ( k === il ) k = 0;
|
|
313
366
|
|
|
314
367
|
// (j)---(i)---(k)
|
|
315
|
-
//
|
|
368
|
+
// log('i,j,k', i, j , k)
|
|
316
369
|
|
|
317
370
|
contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );
|
|
318
371
|
|
|
@@ -321,7 +374,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
321
374
|
const holesMovements = [];
|
|
322
375
|
let oneHoleMovements, verticesMovements = contourMovements.concat();
|
|
323
376
|
|
|
324
|
-
for ( let h = 0, hl =
|
|
377
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
325
378
|
|
|
326
379
|
const ahole = holes[ h ];
|
|
327
380
|
|
|
@@ -342,46 +395,66 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
342
395
|
|
|
343
396
|
}
|
|
344
397
|
|
|
398
|
+
let faces;
|
|
345
399
|
|
|
346
|
-
|
|
400
|
+
if ( bevelSegments === 0 ) {
|
|
347
401
|
|
|
348
|
-
|
|
402
|
+
faces = ShapeUtils.triangulateShape( contour, holes );
|
|
349
403
|
|
|
350
|
-
|
|
404
|
+
} else {
|
|
351
405
|
|
|
352
|
-
const
|
|
353
|
-
const
|
|
354
|
-
const bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;
|
|
406
|
+
const contractedContourVertices = [];
|
|
407
|
+
const expandedHoleVertices = [];
|
|
355
408
|
|
|
356
|
-
//
|
|
409
|
+
// Loop bevelSegments, 1 for the front, 1 for the back
|
|
357
410
|
|
|
358
|
-
for ( let
|
|
411
|
+
for ( let b = 0; b < bevelSegments; b ++ ) {
|
|
359
412
|
|
|
360
|
-
|
|
413
|
+
//for ( b = bevelSegments; b > 0; b -- ) {
|
|
361
414
|
|
|
362
|
-
|
|
415
|
+
const t = b / bevelSegments;
|
|
416
|
+
const z = bevelThickness * Math.cos( t * Math.PI / 2 );
|
|
417
|
+
const bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;
|
|
363
418
|
|
|
364
|
-
|
|
419
|
+
// contract shape
|
|
365
420
|
|
|
366
|
-
|
|
421
|
+
for ( let i = 0, il = contour.length; i < il; i ++ ) {
|
|
367
422
|
|
|
368
|
-
|
|
423
|
+
const vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
|
|
369
424
|
|
|
370
|
-
|
|
371
|
-
|
|
425
|
+
v( vert.x, vert.y, - z );
|
|
426
|
+
if ( t === 0 ) contractedContourVertices.push( vert );
|
|
372
427
|
|
|
373
|
-
|
|
428
|
+
}
|
|
374
429
|
|
|
375
|
-
|
|
430
|
+
// expand holes
|
|
376
431
|
|
|
377
|
-
|
|
432
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
433
|
+
|
|
434
|
+
const ahole = holes[ h ];
|
|
435
|
+
oneHoleMovements = holesMovements[ h ];
|
|
436
|
+
const oneHoleVertices = [];
|
|
437
|
+
for ( let i = 0, il = ahole.length; i < il; i ++ ) {
|
|
438
|
+
|
|
439
|
+
const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
|
|
440
|
+
|
|
441
|
+
v( vert.x, vert.y, - z );
|
|
442
|
+
if ( t === 0 ) oneHoleVertices.push( vert );
|
|
443
|
+
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
if ( t === 0 ) expandedHoleVertices.push( oneHoleVertices );
|
|
378
447
|
|
|
379
448
|
}
|
|
380
449
|
|
|
381
450
|
}
|
|
382
451
|
|
|
452
|
+
faces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );
|
|
453
|
+
|
|
383
454
|
}
|
|
384
455
|
|
|
456
|
+
const flen = faces.length;
|
|
457
|
+
|
|
385
458
|
const bs = bevelSize + bevelOffset;
|
|
386
459
|
|
|
387
460
|
// Back facing vertices
|
|
@@ -589,7 +662,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
589
662
|
let k = i - 1;
|
|
590
663
|
if ( k < 0 ) k = contour.length - 1;
|
|
591
664
|
|
|
592
|
-
//
|
|
665
|
+
//log('b', i,j, i-1, k,vertices.length);
|
|
593
666
|
|
|
594
667
|
for ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {
|
|
595
668
|
|
|
@@ -698,6 +771,14 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
698
771
|
|
|
699
772
|
}
|
|
700
773
|
|
|
774
|
+
/**
|
|
775
|
+
* Factory method for creating an instance of this class from the given
|
|
776
|
+
* JSON object.
|
|
777
|
+
*
|
|
778
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
779
|
+
* @param {Array<Shape>} shapes - An array of shapes.
|
|
780
|
+
* @return {ExtrudeGeometry} A new instance.
|
|
781
|
+
*/
|
|
701
782
|
static fromJSON( data, shapes ) {
|
|
702
783
|
|
|
703
784
|
const geometryShapes = [];
|
|
@@ -810,5 +891,20 @@ function toJSON( shapes, options, data ) {
|
|
|
810
891
|
|
|
811
892
|
}
|
|
812
893
|
|
|
894
|
+
/**
|
|
895
|
+
* Represents the `options` type of the geometry's constructor.
|
|
896
|
+
*
|
|
897
|
+
* @typedef {Object} ExtrudeGeometry~Options
|
|
898
|
+
* @property {number} [curveSegments=12] - Number of points on the curves.
|
|
899
|
+
* @property {number} [steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
|
|
900
|
+
* @property {number} [depth=1] - Depth to extrude the shape.
|
|
901
|
+
* @property {boolean} [bevelEnabled=true] - Whether to beveling to the shape or not.
|
|
902
|
+
* @property {number} [bevelThickness=0.2] - How deep into the original shape the bevel goes.
|
|
903
|
+
* @property {number} [bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
|
|
904
|
+
* @property {number} [bevelOffset=0] - Distance from the shape outline that the bevel starts.
|
|
905
|
+
* @property {number} [bevelSegments=3] - Number of bevel layers.
|
|
906
|
+
* @property {?Curve} [extrudePath=null] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
|
|
907
|
+
* @property {Object} [UVGenerator] - An object that provides UV generator functions for custom UV generation.
|
|
908
|
+
**/
|
|
813
909
|
|
|
814
910
|
export { ExtrudeGeometry };
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing an icosahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.IcosahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const icosahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( icosahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
* @demo scenes/geometry-browser.html#IcosahedronGeometry
|
|
15
|
+
*/
|
|
3
16
|
class IcosahedronGeometry extends PolyhedronGeometry {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new icosahedron geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [radius=1] - Radius of the icosahedron.
|
|
22
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.
|
|
23
|
+
*/
|
|
5
24
|
constructor( radius = 1, detail = 0 ) {
|
|
6
25
|
|
|
7
26
|
const t = ( 1 + Math.sqrt( 5 ) ) / 2;
|
|
@@ -23,6 +42,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
|
|
|
23
42
|
|
|
24
43
|
this.type = 'IcosahedronGeometry';
|
|
25
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Holds the constructor parameters that have been
|
|
47
|
+
* used to generate the geometry. Any modification
|
|
48
|
+
* after instantiation does not change the geometry.
|
|
49
|
+
*
|
|
50
|
+
* @type {Object}
|
|
51
|
+
*/
|
|
26
52
|
this.parameters = {
|
|
27
53
|
radius: radius,
|
|
28
54
|
detail: detail
|
|
@@ -30,6 +56,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
|
|
|
30
56
|
|
|
31
57
|
}
|
|
32
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Factory method for creating an instance of this class from the given
|
|
61
|
+
* JSON object.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
64
|
+
* @return {IcosahedronGeometry} A new instance.
|
|
65
|
+
*/
|
|
33
66
|
static fromJSON( data ) {
|
|
34
67
|
|
|
35
68
|
return new IcosahedronGeometry( data.radius, data.detail );
|
|
@@ -2,16 +2,50 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
2
2
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
import { Vector2 } from '../math/Vector2.js';
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import { clamp } from '../math/MathUtils.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const points = [];
|
|
12
|
+
* for ( let i = 0; i < 10; i ++ ) {
|
|
13
|
+
* points.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );
|
|
14
|
+
* }
|
|
15
|
+
* const geometry = new THREE.LatheGeometry( points );
|
|
16
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
17
|
+
* const lathe = new THREE.Mesh( geometry, material );
|
|
18
|
+
* scene.add( lathe );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments BufferGeometry
|
|
22
|
+
* @demo scenes/geometry-browser.html#LatheGeometry
|
|
23
|
+
*/
|
|
7
24
|
class LatheGeometry extends BufferGeometry {
|
|
8
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new lathe geometry.
|
|
28
|
+
*
|
|
29
|
+
* @param {Array<Vector2|Vector3>} [points] - An array of points in 2D space. The x-coordinate of each point
|
|
30
|
+
* must be greater than zero.
|
|
31
|
+
* @param {number} [segments=12] - The number of circumference segments to generate.
|
|
32
|
+
* @param {number} [phiStart=0] - The starting angle in radians.
|
|
33
|
+
* @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a
|
|
34
|
+
* closed lathe, less than 2PI is a portion.
|
|
35
|
+
*/
|
|
9
36
|
constructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {
|
|
10
37
|
|
|
11
38
|
super();
|
|
12
39
|
|
|
13
40
|
this.type = 'LatheGeometry';
|
|
14
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Holds the constructor parameters that have been
|
|
44
|
+
* used to generate the geometry. Any modification
|
|
45
|
+
* after instantiation does not change the geometry.
|
|
46
|
+
*
|
|
47
|
+
* @type {Object}
|
|
48
|
+
*/
|
|
15
49
|
this.parameters = {
|
|
16
50
|
points: points,
|
|
17
51
|
segments: segments,
|
|
@@ -23,7 +57,7 @@ class LatheGeometry extends BufferGeometry {
|
|
|
23
57
|
|
|
24
58
|
// clamp phiLength so it's in range of [ 0, 2PI ]
|
|
25
59
|
|
|
26
|
-
phiLength =
|
|
60
|
+
phiLength = clamp( phiLength, 0, Math.PI * 2 );
|
|
27
61
|
|
|
28
62
|
// buffers
|
|
29
63
|
|
|
@@ -177,6 +211,13 @@ class LatheGeometry extends BufferGeometry {
|
|
|
177
211
|
|
|
178
212
|
}
|
|
179
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Factory method for creating an instance of this class from the given
|
|
216
|
+
* JSON object.
|
|
217
|
+
*
|
|
218
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
219
|
+
* @return {LatheGeometry} A new instance.
|
|
220
|
+
*/
|
|
180
221
|
static fromJSON( data ) {
|
|
181
222
|
|
|
182
223
|
return new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing an octahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.OctahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const octahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( octahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
* @demo scenes/geometry-browser.html#OctahedronGeometry
|
|
15
|
+
*/
|
|
3
16
|
class OctahedronGeometry extends PolyhedronGeometry {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new octahedron geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [radius=1] - Radius of the octahedron.
|
|
22
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.
|
|
23
|
+
*/
|
|
5
24
|
constructor( radius = 1, detail = 0 ) {
|
|
6
25
|
|
|
7
26
|
const vertices = [
|
|
@@ -19,6 +38,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
|
|
|
19
38
|
|
|
20
39
|
this.type = 'OctahedronGeometry';
|
|
21
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Holds the constructor parameters that have been
|
|
43
|
+
* used to generate the geometry. Any modification
|
|
44
|
+
* after instantiation does not change the geometry.
|
|
45
|
+
*
|
|
46
|
+
* @type {Object}
|
|
47
|
+
*/
|
|
22
48
|
this.parameters = {
|
|
23
49
|
radius: radius,
|
|
24
50
|
detail: detail
|
|
@@ -26,6 +52,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
|
|
|
26
52
|
|
|
27
53
|
}
|
|
28
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Factory method for creating an instance of this class from the given
|
|
57
|
+
* JSON object.
|
|
58
|
+
*
|
|
59
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
60
|
+
* @return {OctahedronGeometry} A new instance.
|
|
61
|
+
*/
|
|
29
62
|
static fromJSON( data ) {
|
|
30
63
|
|
|
31
64
|
return new OctahedronGeometry( data.radius, data.detail );
|
|
@@ -1,14 +1,42 @@
|
|
|
1
1
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A geometry class for representing a plane.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const geometry = new THREE.PlaneGeometry( 1, 1 );
|
|
9
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );
|
|
10
|
+
* const plane = new THREE.Mesh( geometry, material );
|
|
11
|
+
* scene.add( plane );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments BufferGeometry
|
|
15
|
+
* @demo scenes/geometry-browser.html#PlaneGeometry
|
|
16
|
+
*/
|
|
4
17
|
class PlaneGeometry extends BufferGeometry {
|
|
5
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new plane geometry.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} [width=1] - The width along the X axis.
|
|
23
|
+
* @param {number} [height=1] - The height along the Y axis
|
|
24
|
+
* @param {number} [widthSegments=1] - The number of segments along the X axis.
|
|
25
|
+
* @param {number} [heightSegments=1] - The number of segments along the Y axis.
|
|
26
|
+
*/
|
|
6
27
|
constructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {
|
|
7
28
|
|
|
8
29
|
super();
|
|
9
30
|
|
|
10
31
|
this.type = 'PlaneGeometry';
|
|
11
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Holds the constructor parameters that have been
|
|
35
|
+
* used to generate the geometry. Any modification
|
|
36
|
+
* after instantiation does not change the geometry.
|
|
37
|
+
*
|
|
38
|
+
* @type {Object}
|
|
39
|
+
*/
|
|
12
40
|
this.parameters = {
|
|
13
41
|
width: width,
|
|
14
42
|
height: height,
|
|
@@ -87,6 +115,13 @@ class PlaneGeometry extends BufferGeometry {
|
|
|
87
115
|
|
|
88
116
|
}
|
|
89
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Factory method for creating an instance of this class from the given
|
|
120
|
+
* JSON object.
|
|
121
|
+
*
|
|
122
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
123
|
+
* @return {PlaneGeometry} A new instance.
|
|
124
|
+
*/
|
|
90
125
|
static fromJSON( data ) {
|
|
91
126
|
|
|
92
127
|
return new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );
|
|
@@ -3,14 +3,36 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
import { Vector2 } from '../math/Vector2.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A polyhedron is a solid in three dimensions with flat faces. This class
|
|
8
|
+
* will take an array of vertices, project them onto a sphere, and then
|
|
9
|
+
* divide them up to the desired level of detail.
|
|
10
|
+
*
|
|
11
|
+
* @augments BufferGeometry
|
|
12
|
+
*/
|
|
6
13
|
class PolyhedronGeometry extends BufferGeometry {
|
|
7
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new polyhedron geometry.
|
|
17
|
+
*
|
|
18
|
+
* @param {Array<number>} [vertices] - A flat array of vertices describing the base shape.
|
|
19
|
+
* @param {Array<number>} [indices] - A flat array of indices describing the base shape.
|
|
20
|
+
* @param {number} [radius=1] - The radius of the shape.
|
|
21
|
+
* @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape.
|
|
22
|
+
*/
|
|
8
23
|
constructor( vertices = [], indices = [], radius = 1, detail = 0 ) {
|
|
9
24
|
|
|
10
25
|
super();
|
|
11
26
|
|
|
12
27
|
this.type = 'PolyhedronGeometry';
|
|
13
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Holds the constructor parameters that have been
|
|
31
|
+
* used to generate the geometry. Any modification
|
|
32
|
+
* after instantiation does not change the geometry.
|
|
33
|
+
*
|
|
34
|
+
* @type {Object}
|
|
35
|
+
*/
|
|
14
36
|
this.parameters = {
|
|
15
37
|
vertices: vertices,
|
|
16
38
|
indices: indices,
|
|
@@ -308,9 +330,16 @@ class PolyhedronGeometry extends BufferGeometry {
|
|
|
308
330
|
|
|
309
331
|
}
|
|
310
332
|
|
|
333
|
+
/**
|
|
334
|
+
* Factory method for creating an instance of this class from the given
|
|
335
|
+
* JSON object.
|
|
336
|
+
*
|
|
337
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
338
|
+
* @return {PolyhedronGeometry} A new instance.
|
|
339
|
+
*/
|
|
311
340
|
static fromJSON( data ) {
|
|
312
341
|
|
|
313
|
-
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.
|
|
342
|
+
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.detail );
|
|
314
343
|
|
|
315
344
|
}
|
|
316
345
|
|
|
@@ -3,14 +3,44 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
3
3
|
import { Vector2 } from '../math/Vector2.js';
|
|
4
4
|
import { Vector3 } from '../math/Vector3.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A class for generating a two-dimensional ring geometry.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const geometry = new THREE.RingGeometry( 1, 5, 32 );
|
|
11
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );
|
|
12
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
13
|
+
* scene.add( mesh );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments BufferGeometry
|
|
17
|
+
* @demo scenes/geometry-browser.html#RingGeometry
|
|
18
|
+
*/
|
|
6
19
|
class RingGeometry extends BufferGeometry {
|
|
7
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new ring geometry.
|
|
23
|
+
*
|
|
24
|
+
* @param {number} [innerRadius=0.5] - The inner radius of the ring.
|
|
25
|
+
* @param {number} [outerRadius=1] - The outer radius of the ring.
|
|
26
|
+
* @param {number} [thetaSegments=32] - Number of segments. A higher number means the ring will be more round. Minimum is `3`.
|
|
27
|
+
* @param {number} [phiSegments=1] - Number of segments per ring segment. Minimum is `1`.
|
|
28
|
+
* @param {number} [thetaStart=0] - Starting angle in radians.
|
|
29
|
+
* @param {number} [thetaLength=Math.PI*2] - Central angle in radians.
|
|
30
|
+
*/
|
|
8
31
|
constructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
9
32
|
|
|
10
33
|
super();
|
|
11
34
|
|
|
12
35
|
this.type = 'RingGeometry';
|
|
13
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
|
+
*/
|
|
14
44
|
this.parameters = {
|
|
15
45
|
innerRadius: innerRadius,
|
|
16
46
|
outerRadius: outerRadius,
|
|
@@ -116,6 +146,13 @@ class RingGeometry extends BufferGeometry {
|
|
|
116
146
|
|
|
117
147
|
}
|
|
118
148
|
|
|
149
|
+
/**
|
|
150
|
+
* Factory method for creating an instance of this class from the given
|
|
151
|
+
* JSON object.
|
|
152
|
+
*
|
|
153
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
154
|
+
* @return {RingGeometry} A new instance.
|
|
155
|
+
*/
|
|
119
156
|
static fromJSON( data ) {
|
|
120
157
|
|
|
121
158
|
return new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );
|