@plastic-software/three 0.167.4 → 0.174.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 +1 -1
- package/build/three.cjs +36217 -23964
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46744
- package/build/three.module.min.js +2 -3
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50671
- package/build/three.webgpu.min.js +2 -3
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- 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/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- 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 +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- 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 +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- 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/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- 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 +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- 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 +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- 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/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -2,23 +2,73 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { CubicBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector3 } from '../../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 3D Cubic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* @augments Curve
|
|
9
|
+
*/
|
|
5
10
|
class CubicBezierCurve3 extends Curve {
|
|
6
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new Cubic Bezier curve.
|
|
14
|
+
*
|
|
15
|
+
* @param {Vector3} [v0] - The start point.
|
|
16
|
+
* @param {Vector3} [v1] - The first control point.
|
|
17
|
+
* @param {Vector3} [v2] - The second control point.
|
|
18
|
+
* @param {Vector3} [v3] - The end point.
|
|
19
|
+
*/
|
|
7
20
|
constructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {
|
|
8
21
|
|
|
9
22
|
super();
|
|
10
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
11
31
|
this.isCubicBezierCurve3 = true;
|
|
12
32
|
|
|
13
33
|
this.type = 'CubicBezierCurve3';
|
|
14
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The start point.
|
|
37
|
+
*
|
|
38
|
+
* @type {Vector3}
|
|
39
|
+
*/
|
|
15
40
|
this.v0 = v0;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The first control point.
|
|
44
|
+
*
|
|
45
|
+
* @type {Vector3}
|
|
46
|
+
*/
|
|
16
47
|
this.v1 = v1;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The second control point.
|
|
51
|
+
*
|
|
52
|
+
* @type {Vector3}
|
|
53
|
+
*/
|
|
17
54
|
this.v2 = v2;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The end point.
|
|
58
|
+
*
|
|
59
|
+
* @type {Vector3}
|
|
60
|
+
*/
|
|
18
61
|
this.v3 = v3;
|
|
19
62
|
|
|
20
63
|
}
|
|
21
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Returns a point on the curve.
|
|
67
|
+
*
|
|
68
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
69
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
70
|
+
* @return {Vector3} The position on the curve.
|
|
71
|
+
*/
|
|
22
72
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
23
73
|
|
|
24
74
|
const point = optionalTarget;
|
|
@@ -1,31 +1,133 @@
|
|
|
1
1
|
import { Curve } from '../core/Curve.js';
|
|
2
2
|
import { Vector2 } from '../../math/Vector2.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A curve representing an ellipse.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const curve = new THREE.EllipseCurve(
|
|
9
|
+
* 0, 0,
|
|
10
|
+
* 10, 10,
|
|
11
|
+
* 0, 2 * Math.PI,
|
|
12
|
+
* false,
|
|
13
|
+
* 0
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* const points = curve.getPoints( 50 );
|
|
17
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
18
|
+
*
|
|
19
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
20
|
+
*
|
|
21
|
+
* // Create the final object to add to the scene
|
|
22
|
+
* const ellipse = new THREE.Line( geometry, material );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Curve
|
|
26
|
+
*/
|
|
4
27
|
class EllipseCurve extends Curve {
|
|
5
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new ellipse curve.
|
|
31
|
+
*
|
|
32
|
+
* @param {number} [aX=0] - The X center of the ellipse.
|
|
33
|
+
* @param {number} [aY=0] - The Y center of the ellipse.
|
|
34
|
+
* @param {number} [xRadius=1] - The radius of the ellipse in the x direction.
|
|
35
|
+
* @param {number} [yRadius=1] - The radius of the ellipse in the y direction.
|
|
36
|
+
* @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.
|
|
37
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.
|
|
38
|
+
* @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.
|
|
39
|
+
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
40
|
+
*/
|
|
6
41
|
constructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {
|
|
7
42
|
|
|
8
43
|
super();
|
|
9
44
|
|
|
45
|
+
/**
|
|
46
|
+
* This flag can be used for type testing.
|
|
47
|
+
*
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
* @readonly
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
10
52
|
this.isEllipseCurve = true;
|
|
11
53
|
|
|
12
54
|
this.type = 'EllipseCurve';
|
|
13
55
|
|
|
56
|
+
/**
|
|
57
|
+
* The X center of the ellipse.
|
|
58
|
+
*
|
|
59
|
+
* @type {number}
|
|
60
|
+
* @default 0
|
|
61
|
+
*/
|
|
14
62
|
this.aX = aX;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The Y center of the ellipse.
|
|
66
|
+
*
|
|
67
|
+
* @type {number}
|
|
68
|
+
* @default 0
|
|
69
|
+
*/
|
|
15
70
|
this.aY = aY;
|
|
16
71
|
|
|
72
|
+
/**
|
|
73
|
+
* The radius of the ellipse in the x direction.
|
|
74
|
+
* Setting the this value equal to the {@link EllipseCurve#yRadius} will result in a circle.
|
|
75
|
+
*
|
|
76
|
+
* @type {number}
|
|
77
|
+
* @default 1
|
|
78
|
+
*/
|
|
17
79
|
this.xRadius = xRadius;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The radius of the ellipse in the y direction.
|
|
83
|
+
* Setting the this value equal to the {@link EllipseCurve#xRadius} will result in a circle.
|
|
84
|
+
*
|
|
85
|
+
* @type {number}
|
|
86
|
+
* @default 1
|
|
87
|
+
*/
|
|
18
88
|
this.yRadius = yRadius;
|
|
19
89
|
|
|
90
|
+
/**
|
|
91
|
+
* The start angle of the curve in radians starting from the positive X axis.
|
|
92
|
+
*
|
|
93
|
+
* @type {number}
|
|
94
|
+
* @default 0
|
|
95
|
+
*/
|
|
20
96
|
this.aStartAngle = aStartAngle;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The end angle of the curve in radians starting from the positive X axis.
|
|
100
|
+
*
|
|
101
|
+
* @type {number}
|
|
102
|
+
* @default Math.PI*2
|
|
103
|
+
*/
|
|
21
104
|
this.aEndAngle = aEndAngle;
|
|
22
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Whether the ellipse is drawn clockwise or not.
|
|
108
|
+
*
|
|
109
|
+
* @type {boolean}
|
|
110
|
+
* @default false
|
|
111
|
+
*/
|
|
23
112
|
this.aClockwise = aClockwise;
|
|
24
113
|
|
|
114
|
+
/**
|
|
115
|
+
* The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
116
|
+
*
|
|
117
|
+
* @type {number}
|
|
118
|
+
* @default 0
|
|
119
|
+
*/
|
|
25
120
|
this.aRotation = aRotation;
|
|
26
121
|
|
|
27
122
|
}
|
|
28
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Returns a point on the curve.
|
|
126
|
+
*
|
|
127
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
128
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
129
|
+
* @return {Vector2} The position on the curve.
|
|
130
|
+
*/
|
|
29
131
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
30
132
|
|
|
31
133
|
const point = optionalTarget;
|
|
@@ -1,21 +1,57 @@
|
|
|
1
1
|
import { Vector2 } from '../../math/Vector2.js';
|
|
2
2
|
import { Curve } from '../core/Curve.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A curve representing a 2D line segment.
|
|
6
|
+
*
|
|
7
|
+
* @augments Curve
|
|
8
|
+
*/
|
|
4
9
|
class LineCurve extends Curve {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new line curve.
|
|
13
|
+
*
|
|
14
|
+
* @param {Vector2} [v1] - The start point.
|
|
15
|
+
* @param {Vector2} [v2] - The end point.
|
|
16
|
+
*/
|
|
6
17
|
constructor( v1 = new Vector2(), v2 = new Vector2() ) {
|
|
7
18
|
|
|
8
19
|
super();
|
|
9
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
10
28
|
this.isLineCurve = true;
|
|
11
29
|
|
|
12
30
|
this.type = 'LineCurve';
|
|
13
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The start point.
|
|
34
|
+
*
|
|
35
|
+
* @type {Vector2}
|
|
36
|
+
*/
|
|
14
37
|
this.v1 = v1;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The end point.
|
|
41
|
+
*
|
|
42
|
+
* @type {Vector2}
|
|
43
|
+
*/
|
|
15
44
|
this.v2 = v2;
|
|
16
45
|
|
|
17
46
|
}
|
|
18
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Returns a point on the line.
|
|
50
|
+
*
|
|
51
|
+
* @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.
|
|
52
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
53
|
+
* @return {Vector2} The position on the line.
|
|
54
|
+
*/
|
|
19
55
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
20
56
|
|
|
21
57
|
const point = optionalTarget;
|
|
@@ -1,21 +1,57 @@
|
|
|
1
1
|
import { Vector3 } from '../../math/Vector3.js';
|
|
2
2
|
import { Curve } from '../core/Curve.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A curve representing a 3D line segment.
|
|
6
|
+
*
|
|
7
|
+
* @augments Curve
|
|
8
|
+
*/
|
|
4
9
|
class LineCurve3 extends Curve {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new line curve.
|
|
13
|
+
*
|
|
14
|
+
* @param {Vector3} [v1] - The start point.
|
|
15
|
+
* @param {Vector3} [v2] - The end point.
|
|
16
|
+
*/
|
|
6
17
|
constructor( v1 = new Vector3(), v2 = new Vector3() ) {
|
|
7
18
|
|
|
8
19
|
super();
|
|
9
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
10
28
|
this.isLineCurve3 = true;
|
|
11
29
|
|
|
12
30
|
this.type = 'LineCurve3';
|
|
13
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The start point.
|
|
34
|
+
*
|
|
35
|
+
* @type {Vector3}
|
|
36
|
+
*/
|
|
14
37
|
this.v1 = v1;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The end point.
|
|
41
|
+
*
|
|
42
|
+
* @type {Vector2}
|
|
43
|
+
*/
|
|
15
44
|
this.v2 = v2;
|
|
16
45
|
|
|
17
46
|
}
|
|
18
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Returns a point on the line.
|
|
50
|
+
*
|
|
51
|
+
* @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.
|
|
52
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
53
|
+
* @return {Vector3} The position on the line.
|
|
54
|
+
*/
|
|
19
55
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
20
56
|
|
|
21
57
|
const point = optionalTarget;
|
|
@@ -2,22 +2,81 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { QuadraticBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector2 } from '../../math/Vector2.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 2D Quadratic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const curve = new THREE.QuadraticBezierCurve(
|
|
10
|
+
* new THREE.Vector2( - 10, 0 ),
|
|
11
|
+
* new THREE.Vector2( 20, 15 ),
|
|
12
|
+
* new THREE.Vector2( 10, 0 )
|
|
13
|
+
* )
|
|
14
|
+
*
|
|
15
|
+
* const points = curve.getPoints( 50 );
|
|
16
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
17
|
+
*
|
|
18
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
19
|
+
*
|
|
20
|
+
* // Create the final object to add to the scene
|
|
21
|
+
* const curveObject = new THREE.Line( geometry, material );
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @augments Curve
|
|
25
|
+
*/
|
|
5
26
|
class QuadraticBezierCurve extends Curve {
|
|
6
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new Quadratic Bezier curve.
|
|
30
|
+
*
|
|
31
|
+
* @param {Vector2} [v0] - The start point.
|
|
32
|
+
* @param {Vector2} [v1] - The control point.
|
|
33
|
+
* @param {Vector2} [v2] - The end point.
|
|
34
|
+
*/
|
|
7
35
|
constructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {
|
|
8
36
|
|
|
9
37
|
super();
|
|
10
38
|
|
|
39
|
+
/**
|
|
40
|
+
* This flag can be used for type testing.
|
|
41
|
+
*
|
|
42
|
+
* @type {boolean}
|
|
43
|
+
* @readonly
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
11
46
|
this.isQuadraticBezierCurve = true;
|
|
12
47
|
|
|
13
48
|
this.type = 'QuadraticBezierCurve';
|
|
14
49
|
|
|
50
|
+
/**
|
|
51
|
+
* The start point.
|
|
52
|
+
*
|
|
53
|
+
* @type {Vector2}
|
|
54
|
+
*/
|
|
15
55
|
this.v0 = v0;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The control point.
|
|
59
|
+
*
|
|
60
|
+
* @type {Vector2}
|
|
61
|
+
*/
|
|
16
62
|
this.v1 = v1;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The end point.
|
|
66
|
+
*
|
|
67
|
+
* @type {Vector2}
|
|
68
|
+
*/
|
|
17
69
|
this.v2 = v2;
|
|
18
70
|
|
|
19
71
|
}
|
|
20
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Returns a point on the curve.
|
|
75
|
+
*
|
|
76
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
77
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
78
|
+
* @return {Vector2} The position on the curve.
|
|
79
|
+
*/
|
|
21
80
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
22
81
|
|
|
23
82
|
const point = optionalTarget;
|
|
@@ -2,22 +2,65 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { QuadraticBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector3 } from '../../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 3D Quadratic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* @augments Curve
|
|
9
|
+
*/
|
|
5
10
|
class QuadraticBezierCurve3 extends Curve {
|
|
6
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new Quadratic Bezier curve.
|
|
14
|
+
*
|
|
15
|
+
* @param {Vector3} [v0] - The start point.
|
|
16
|
+
* @param {Vector3} [v1] - The control point.
|
|
17
|
+
* @param {Vector3} [v2] - The end point.
|
|
18
|
+
*/
|
|
7
19
|
constructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {
|
|
8
20
|
|
|
9
21
|
super();
|
|
10
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
11
30
|
this.isQuadraticBezierCurve3 = true;
|
|
12
31
|
|
|
13
32
|
this.type = 'QuadraticBezierCurve3';
|
|
14
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The start point.
|
|
36
|
+
*
|
|
37
|
+
* @type {Vector3}
|
|
38
|
+
*/
|
|
15
39
|
this.v0 = v0;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The control point.
|
|
43
|
+
*
|
|
44
|
+
* @type {Vector3}
|
|
45
|
+
*/
|
|
16
46
|
this.v1 = v1;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The end point.
|
|
50
|
+
*
|
|
51
|
+
* @type {Vector3}
|
|
52
|
+
*/
|
|
17
53
|
this.v2 = v2;
|
|
18
54
|
|
|
19
55
|
}
|
|
20
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Returns a point on the curve.
|
|
59
|
+
*
|
|
60
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
61
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
62
|
+
* @return {Vector3} The position on the curve.
|
|
63
|
+
*/
|
|
21
64
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
22
65
|
|
|
23
66
|
const point = optionalTarget;
|
|
@@ -2,20 +2,68 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { CatmullRom } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector2 } from '../../math/Vector2.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 2D spline curve.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* // Create a sine-like wave
|
|
10
|
+
* const curve = new THREE.SplineCurve( [
|
|
11
|
+
* new THREE.Vector2( -10, 0 ),
|
|
12
|
+
* new THREE.Vector2( -5, 5 ),
|
|
13
|
+
* new THREE.Vector2( 0, 0 ),
|
|
14
|
+
* new THREE.Vector2( 5, -5 ),
|
|
15
|
+
* new THREE.Vector2( 10, 0 )
|
|
16
|
+
* ] );
|
|
17
|
+
*
|
|
18
|
+
* const points = curve.getPoints( 50 );
|
|
19
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
20
|
+
*
|
|
21
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
22
|
+
*
|
|
23
|
+
* // Create the final object to add to the scene
|
|
24
|
+
* const splineObject = new THREE.Line( geometry, material );
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @augments Curve
|
|
28
|
+
*/
|
|
5
29
|
class SplineCurve extends Curve {
|
|
6
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a new 2D spline curve.
|
|
33
|
+
*
|
|
34
|
+
* @param {Array<Vector2>} [points] - An array of 2D points defining the curve.
|
|
35
|
+
*/
|
|
7
36
|
constructor( points = [] ) {
|
|
8
37
|
|
|
9
38
|
super();
|
|
10
39
|
|
|
40
|
+
/**
|
|
41
|
+
* This flag can be used for type testing.
|
|
42
|
+
*
|
|
43
|
+
* @type {boolean}
|
|
44
|
+
* @readonly
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
11
47
|
this.isSplineCurve = true;
|
|
12
48
|
|
|
13
49
|
this.type = 'SplineCurve';
|
|
14
50
|
|
|
51
|
+
/**
|
|
52
|
+
* An array of 2D points defining the curve.
|
|
53
|
+
*
|
|
54
|
+
* @type {Array<Vector2>}
|
|
55
|
+
*/
|
|
15
56
|
this.points = points;
|
|
16
57
|
|
|
17
58
|
}
|
|
18
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Returns a point on the curve.
|
|
62
|
+
*
|
|
63
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
64
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
65
|
+
* @return {Vector2} The position on the curve.
|
|
66
|
+
*/
|
|
19
67
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
20
68
|
|
|
21
69
|
const point = optionalTarget;
|
|
@@ -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 geometry class for a rectangular cuboid with a given width, height, and depth.
|
|
7
|
+
* On creation, the cuboid is centred on the origin, with each edge parallel to one
|
|
8
|
+
* of the axes.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
|
12
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
13
|
+
* const cube = new THREE.Mesh( geometry, material );
|
|
14
|
+
* scene.add( cube );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments BufferGeometry
|
|
18
|
+
*/
|
|
5
19
|
class BoxGeometry extends BufferGeometry {
|
|
6
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new box geometry.
|
|
23
|
+
*
|
|
24
|
+
* @param {number} [width=1] - The width. That is, the length of the edges parallel to the X axis.
|
|
25
|
+
* @param {number} [height=1] - The height. That is, the length of the edges parallel to the Y axis.
|
|
26
|
+
* @param {number} [depth=1] - The depth. That is, the length of the edges parallel to the Z axis.
|
|
27
|
+
* @param {number} [widthSegments=1] - Number of segmented rectangular faces along the width of the sides.
|
|
28
|
+
* @param {number} [heightSegments=1] - Number of segmented rectangular faces along the height of the sides.
|
|
29
|
+
* @param {number} [depthSegments=1] - Number of segmented rectangular faces along the depth of the sides.
|
|
30
|
+
*/
|
|
7
31
|
constructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {
|
|
8
32
|
|
|
9
33
|
super();
|
|
10
34
|
|
|
11
35
|
this.type = 'BoxGeometry';
|
|
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
|
width: width,
|
|
15
46
|
height: height,
|
|
@@ -169,6 +200,13 @@ class BoxGeometry extends BufferGeometry {
|
|
|
169
200
|
|
|
170
201
|
}
|
|
171
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Factory method for creating an instance of this class from the given
|
|
205
|
+
* JSON object.
|
|
206
|
+
*
|
|
207
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
208
|
+
* @return {BoxGeometry} A new instance.
|
|
209
|
+
*/
|
|
172
210
|
static fromJSON( data ) {
|
|
173
211
|
|
|
174
212
|
return new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import { Path } from '../extras/core/Path.js';
|
|
2
2
|
import { LatheGeometry } from './LatheGeometry.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A geometry class for a capsule with given radii and height. It is constructed using a lathe.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8 );
|
|
9
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
10
|
+
* const capsule = new THREE.Mesh( geometry, material );
|
|
11
|
+
* scene.add( capsule );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments LatheGeometry
|
|
15
|
+
*/
|
|
4
16
|
class CapsuleGeometry extends LatheGeometry {
|
|
5
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new capsule geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [radius=1] - Radius of the capsule.
|
|
22
|
+
* @param {number} [length=1] - Length of the middle section.
|
|
23
|
+
* @param {number} [capSegments=4] - Number of curve segments used to build the caps.
|
|
24
|
+
* @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule.
|
|
25
|
+
*/
|
|
6
26
|
constructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {
|
|
7
27
|
|
|
8
28
|
const path = new Path();
|
|
@@ -13,6 +33,13 @@ class CapsuleGeometry extends LatheGeometry {
|
|
|
13
33
|
|
|
14
34
|
this.type = 'CapsuleGeometry';
|
|
15
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Holds the constructor parameters that have been
|
|
38
|
+
* used to generate the geometry. Any modification
|
|
39
|
+
* after instantiation does not change the geometry.
|
|
40
|
+
*
|
|
41
|
+
* @type {Object}
|
|
42
|
+
*/
|
|
16
43
|
this.parameters = {
|
|
17
44
|
radius: radius,
|
|
18
45
|
length: length,
|
|
@@ -22,6 +49,13 @@ class CapsuleGeometry extends LatheGeometry {
|
|
|
22
49
|
|
|
23
50
|
}
|
|
24
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 {CapsuleGeometry} A new instance.
|
|
58
|
+
*/
|
|
25
59
|
static fromJSON( data ) {
|
|
26
60
|
|
|
27
61
|
return new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );
|