@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
|
@@ -3,14 +3,47 @@ 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 simple shape of Euclidean geometry. It is constructed from a
|
|
8
|
+
* number of triangular segments that are oriented around a central point and
|
|
9
|
+
* extend as far out as a given radius. It is built counter-clockwise from a
|
|
10
|
+
* start angle and a given central angle. It can also be used to create
|
|
11
|
+
* regular polygons, where the number of segments determines the number of
|
|
12
|
+
* sides.
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* const geometry = new THREE.CircleGeometry( 5, 32 );
|
|
16
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
17
|
+
* const circle = new THREE.Mesh( geometry, material );
|
|
18
|
+
* scene.add( circle )
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments BufferGeometry
|
|
22
|
+
*/
|
|
6
23
|
class CircleGeometry extends BufferGeometry {
|
|
7
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new circle geometry.
|
|
27
|
+
*
|
|
28
|
+
* @param {number} [radius=1] - Radius of the circle.
|
|
29
|
+
* @param {number} [segments=32] - Number of segments (triangles), minimum = `3`.
|
|
30
|
+
* @param {number} [thetaStart=0] - Start angle for first segment in radians.
|
|
31
|
+
* @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta,
|
|
32
|
+
* of the circular sector in radians. The default value results in a complete circle.
|
|
33
|
+
*/
|
|
8
34
|
constructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
9
35
|
|
|
10
36
|
super();
|
|
11
37
|
|
|
12
38
|
this.type = 'CircleGeometry';
|
|
13
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Holds the constructor parameters that have been
|
|
42
|
+
* used to generate the geometry. Any modification
|
|
43
|
+
* after instantiation does not change the geometry.
|
|
44
|
+
*
|
|
45
|
+
* @type {Object}
|
|
46
|
+
*/
|
|
14
47
|
this.parameters = {
|
|
15
48
|
radius: radius,
|
|
16
49
|
segments: segments,
|
|
@@ -89,6 +122,13 @@ class CircleGeometry extends BufferGeometry {
|
|
|
89
122
|
|
|
90
123
|
}
|
|
91
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Factory method for creating an instance of this class from the given
|
|
127
|
+
* JSON object.
|
|
128
|
+
*
|
|
129
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
130
|
+
* @return {CircleGeometry} A new instance.
|
|
131
|
+
*/
|
|
92
132
|
static fromJSON( data ) {
|
|
93
133
|
|
|
94
134
|
return new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );
|
|
@@ -1,13 +1,44 @@
|
|
|
1
1
|
import { CylinderGeometry } from './CylinderGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing a cone.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.ConeGeometry( 5, 20, 32 );
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const cone = new THREE.Mesh(geometry, material );
|
|
10
|
+
* scene.add( cone );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments CylinderGeometry
|
|
14
|
+
*/
|
|
3
15
|
class ConeGeometry extends CylinderGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new cone geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the cone base.
|
|
21
|
+
* @param {number} [height=1] - Height of the cone.
|
|
22
|
+
* @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone.
|
|
23
|
+
* @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone.
|
|
24
|
+
* @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped.
|
|
25
|
+
* @param {boolean} [thetaStart=0] - Start angle for first segment, in radians.
|
|
26
|
+
* @param {boolean} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.
|
|
27
|
+
* The default value results in a complete cone.
|
|
28
|
+
*/
|
|
5
29
|
constructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
6
30
|
|
|
7
31
|
super( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );
|
|
8
32
|
|
|
9
33
|
this.type = 'ConeGeometry';
|
|
10
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Holds the constructor parameters that have been
|
|
37
|
+
* used to generate the geometry. Any modification
|
|
38
|
+
* after instantiation does not change the geometry.
|
|
39
|
+
*
|
|
40
|
+
* @type {Object}
|
|
41
|
+
*/
|
|
11
42
|
this.parameters = {
|
|
12
43
|
radius: radius,
|
|
13
44
|
height: height,
|
|
@@ -20,6 +51,13 @@ class ConeGeometry extends CylinderGeometry {
|
|
|
20
51
|
|
|
21
52
|
}
|
|
22
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Factory method for creating an instance of this class from the given
|
|
56
|
+
* JSON object.
|
|
57
|
+
*
|
|
58
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
59
|
+
* @return {ConeGeometry} A new instance.
|
|
60
|
+
*/
|
|
23
61
|
static fromJSON( data ) {
|
|
24
62
|
|
|
25
63
|
return new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );
|
|
@@ -3,14 +3,46 @@ 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 geometry class for representing a cylinder.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );
|
|
11
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
12
|
+
* const cylinder = new THREE.Mesh( geometry, material );
|
|
13
|
+
* scene.add( cylinder );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments BufferGeometry
|
|
17
|
+
*/
|
|
6
18
|
class CylinderGeometry extends BufferGeometry {
|
|
7
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new cylinder geometry.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [radiusTop=1] - Radius of the cylinder at the top.
|
|
24
|
+
* @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom.
|
|
25
|
+
* @param {number} [height=1] - Height of the cylinder.
|
|
26
|
+
* @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder.
|
|
27
|
+
* @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder.
|
|
28
|
+
* @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped.
|
|
29
|
+
* @param {boolean} [thetaStart=0] - Start angle for first segment, in radians.
|
|
30
|
+
* @param {boolean} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.
|
|
31
|
+
* The default value results in a complete cylinder.
|
|
32
|
+
*/
|
|
8
33
|
constructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
9
34
|
|
|
10
35
|
super();
|
|
11
36
|
|
|
12
37
|
this.type = 'CylinderGeometry';
|
|
13
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Holds the constructor parameters that have been
|
|
41
|
+
* used to generate the geometry. Any modification
|
|
42
|
+
* after instantiation does not change the geometry.
|
|
43
|
+
*
|
|
44
|
+
* @type {Object}
|
|
45
|
+
*/
|
|
14
46
|
this.parameters = {
|
|
15
47
|
radiusTop: radiusTop,
|
|
16
48
|
radiusBottom: radiusBottom,
|
|
@@ -133,12 +165,19 @@ class CylinderGeometry extends BufferGeometry {
|
|
|
133
165
|
|
|
134
166
|
// faces
|
|
135
167
|
|
|
136
|
-
|
|
137
|
-
indices.push( b, c, d );
|
|
168
|
+
if ( radiusTop > 0 || y !== 0 ) {
|
|
138
169
|
|
|
139
|
-
|
|
170
|
+
indices.push( a, b, d );
|
|
171
|
+
groupCount += 3;
|
|
140
172
|
|
|
141
|
-
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if ( radiusBottom > 0 || y !== heightSegments - 1 ) {
|
|
176
|
+
|
|
177
|
+
indices.push( b, c, d );
|
|
178
|
+
groupCount += 3;
|
|
179
|
+
|
|
180
|
+
}
|
|
142
181
|
|
|
143
182
|
}
|
|
144
183
|
|
|
@@ -274,6 +313,13 @@ class CylinderGeometry extends BufferGeometry {
|
|
|
274
313
|
|
|
275
314
|
}
|
|
276
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Factory method for creating an instance of this class from the given
|
|
318
|
+
* JSON object.
|
|
319
|
+
*
|
|
320
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
321
|
+
* @return {CylinderGeometry} A new instance.
|
|
322
|
+
*/
|
|
277
323
|
static fromJSON( data ) {
|
|
278
324
|
|
|
279
325
|
return new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing a dodecahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.DodecahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const dodecahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( dodecahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
*/
|
|
3
15
|
class DodecahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new dodecahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the dodecahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const t = ( 1 + Math.sqrt( 5 ) ) / 2;
|
|
@@ -47,6 +65,13 @@ class DodecahedronGeometry extends PolyhedronGeometry {
|
|
|
47
65
|
|
|
48
66
|
this.type = 'DodecahedronGeometry';
|
|
49
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Holds the constructor parameters that have been
|
|
70
|
+
* used to generate the geometry. Any modification
|
|
71
|
+
* after instantiation does not change the geometry.
|
|
72
|
+
*
|
|
73
|
+
* @type {Object}
|
|
74
|
+
*/
|
|
50
75
|
this.parameters = {
|
|
51
76
|
radius: radius,
|
|
52
77
|
detail: detail
|
|
@@ -54,6 +79,13 @@ class DodecahedronGeometry extends PolyhedronGeometry {
|
|
|
54
79
|
|
|
55
80
|
}
|
|
56
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Factory method for creating an instance of this class from the given
|
|
84
|
+
* JSON object.
|
|
85
|
+
*
|
|
86
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
87
|
+
* @return {DodecahedronGeometry} A new instance.
|
|
88
|
+
*/
|
|
57
89
|
static fromJSON( data ) {
|
|
58
90
|
|
|
59
91
|
return new DodecahedronGeometry( data.radius, data.detail );
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
|
-
import
|
|
3
|
+
import { DEG2RAD } from '../math/MathUtils.js';
|
|
4
4
|
import { Triangle } from '../math/Triangle.js';
|
|
5
5
|
import { Vector3 } from '../math/Vector3.js';
|
|
6
6
|
|
|
@@ -9,14 +9,42 @@ const _v1 = /*@__PURE__*/ new Vector3();
|
|
|
9
9
|
const _normal = /*@__PURE__*/ new Vector3();
|
|
10
10
|
const _triangle = /*@__PURE__*/ new Triangle();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Can be used as a helper object to view the edges of a geometry.
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const geometry = new THREE.BoxGeometry();
|
|
17
|
+
* const edges = new THREE.EdgesGeometry( geometry );
|
|
18
|
+
* const line = new THREE.LineSegments( edges );
|
|
19
|
+
* scene.add( line );
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Note: It is not yet possible to serialize/deserialize instances of this class.
|
|
23
|
+
*
|
|
24
|
+
* @augments BufferGeometry
|
|
25
|
+
*/
|
|
12
26
|
class EdgesGeometry extends BufferGeometry {
|
|
13
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new edges geometry.
|
|
30
|
+
*
|
|
31
|
+
* @param {?BufferGeometry} [geometry=null] - The geometry.
|
|
32
|
+
* @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees)
|
|
33
|
+
* between the face normals of the adjoining faces exceeds this value.
|
|
34
|
+
*/
|
|
14
35
|
constructor( geometry = null, thresholdAngle = 1 ) {
|
|
15
36
|
|
|
16
37
|
super();
|
|
17
38
|
|
|
18
39
|
this.type = 'EdgesGeometry';
|
|
19
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
|
+
*/
|
|
20
48
|
this.parameters = {
|
|
21
49
|
geometry: geometry,
|
|
22
50
|
thresholdAngle: thresholdAngle
|
|
@@ -26,7 +54,7 @@ class EdgesGeometry extends BufferGeometry {
|
|
|
26
54
|
|
|
27
55
|
const precisionPoints = 4;
|
|
28
56
|
const precision = Math.pow( 10, precisionPoints );
|
|
29
|
-
const thresholdDot = Math.cos(
|
|
57
|
+
const thresholdDot = Math.cos( DEG2RAD * thresholdAngle );
|
|
30
58
|
|
|
31
59
|
const indexAttr = geometry.getIndex();
|
|
32
60
|
const positionAttr = geometry.getAttribute( 'position' );
|
|
@@ -28,14 +28,58 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
28
28
|
import { Shape } from '../extras/core/Shape.js';
|
|
29
29
|
import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Creates extruded geometry from a path shape.
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const length = 12, width = 8;
|
|
36
|
+
*
|
|
37
|
+
* const shape = new THREE.Shape();
|
|
38
|
+
* shape.moveTo( 0,0 );
|
|
39
|
+
* shape.lineTo( 0, width );
|
|
40
|
+
* shape.lineTo( length, width );
|
|
41
|
+
* shape.lineTo( length, 0 );
|
|
42
|
+
* shape.lineTo( 0, 0 );
|
|
43
|
+
*
|
|
44
|
+
* const geometry = new THREE.ExtrudeGeometry( shape );
|
|
45
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
46
|
+
* const mesh = new THREE.Mesh( geometry, material ) ;
|
|
47
|
+
* scene.add( mesh );
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @augments BufferGeometry
|
|
51
|
+
*/
|
|
31
52
|
class ExtrudeGeometry extends BufferGeometry {
|
|
32
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Constructs a new extrude geometry.
|
|
56
|
+
*
|
|
57
|
+
* @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
|
|
58
|
+
* @param {Object} [options={}] - The extrude settings.
|
|
59
|
+
* @param {number} [options.curveSegments=12] - Number of points on the curves.
|
|
60
|
+
* @param {number} [options.steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
|
|
61
|
+
* @param {number} [options.depth=1] - Depth to extrude the shape.
|
|
62
|
+
* @param {boolean} [options.bevelEnabled=true] - Whether to beveling to the shape or not.
|
|
63
|
+
* @param {number} [options.bevelThickness=0.2] - How deep into the original shape the bevel goes.
|
|
64
|
+
* @param {number} [options.bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
|
|
65
|
+
* @param {number} [options.bevelOffset=0] - Distance from the shape outline that the bevel starts.
|
|
66
|
+
* @param {number} [options.bevelSegments=3] - Number of bevel layers.
|
|
67
|
+
* @param {Curve} [options.extrudePath=3] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
|
|
68
|
+
* @param {Object} [options.UVGenerator] - An object that provides UV generator functions for custom UV generation.
|
|
69
|
+
*/
|
|
33
70
|
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
71
|
|
|
35
72
|
super();
|
|
36
73
|
|
|
37
74
|
this.type = 'ExtrudeGeometry';
|
|
38
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Holds the constructor parameters that have been
|
|
78
|
+
* used to generate the geometry. Any modification
|
|
79
|
+
* after instantiation does not change the geometry.
|
|
80
|
+
*
|
|
81
|
+
* @type {Object}
|
|
82
|
+
*/
|
|
39
83
|
this.parameters = {
|
|
40
84
|
shapes: shapes,
|
|
41
85
|
options: options
|
|
@@ -698,6 +742,14 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
698
742
|
|
|
699
743
|
}
|
|
700
744
|
|
|
745
|
+
/**
|
|
746
|
+
* Factory method for creating an instance of this class from the given
|
|
747
|
+
* JSON object.
|
|
748
|
+
*
|
|
749
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
750
|
+
* @param {Array<Shape>} shapes - An array of shapes.
|
|
751
|
+
* @return {ExtrudeGeometry} A new instance.
|
|
752
|
+
*/
|
|
701
753
|
static fromJSON( data, shapes ) {
|
|
702
754
|
|
|
703
755
|
const geometryShapes = [];
|
|
@@ -1,7 +1,25 @@
|
|
|
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
|
+
*/
|
|
3
15
|
class IcosahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new icosahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the icosahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const t = ( 1 + Math.sqrt( 5 ) ) / 2;
|
|
@@ -23,6 +41,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
|
|
|
23
41
|
|
|
24
42
|
this.type = 'IcosahedronGeometry';
|
|
25
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Holds the constructor parameters that have been
|
|
46
|
+
* used to generate the geometry. Any modification
|
|
47
|
+
* after instantiation does not change the geometry.
|
|
48
|
+
*
|
|
49
|
+
* @type {Object}
|
|
50
|
+
*/
|
|
26
51
|
this.parameters = {
|
|
27
52
|
radius: radius,
|
|
28
53
|
detail: detail
|
|
@@ -30,6 +55,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
|
|
|
30
55
|
|
|
31
56
|
}
|
|
32
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Factory method for creating an instance of this class from the given
|
|
60
|
+
* JSON object.
|
|
61
|
+
*
|
|
62
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
63
|
+
* @return {IcosahedronGeometry} A new instance.
|
|
64
|
+
*/
|
|
33
65
|
static fromJSON( data ) {
|
|
34
66
|
|
|
35
67
|
return new IcosahedronGeometry( data.radius, data.detail );
|
|
@@ -2,16 +2,49 @@ 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
|
+
*/
|
|
7
23
|
class LatheGeometry extends BufferGeometry {
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new lathe geometry.
|
|
27
|
+
*
|
|
28
|
+
* @param {Array<Vector2>} [points] - An array of points in 2D space. The x-coordinate of each point
|
|
29
|
+
* must be greater than zero.
|
|
30
|
+
* @param {number} [segments=12] - The number of circumference segments to generate.
|
|
31
|
+
* @param {number} [phiStart=0] - The starting angle in radians.
|
|
32
|
+
* @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a
|
|
33
|
+
* closed lathe, less than 2PI is a portion.
|
|
34
|
+
*/
|
|
9
35
|
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
36
|
|
|
11
37
|
super();
|
|
12
38
|
|
|
13
39
|
this.type = 'LatheGeometry';
|
|
14
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
|
+
*/
|
|
15
48
|
this.parameters = {
|
|
16
49
|
points: points,
|
|
17
50
|
segments: segments,
|
|
@@ -23,7 +56,7 @@ class LatheGeometry extends BufferGeometry {
|
|
|
23
56
|
|
|
24
57
|
// clamp phiLength so it's in range of [ 0, 2PI ]
|
|
25
58
|
|
|
26
|
-
phiLength =
|
|
59
|
+
phiLength = clamp( phiLength, 0, Math.PI * 2 );
|
|
27
60
|
|
|
28
61
|
// buffers
|
|
29
62
|
|
|
@@ -177,6 +210,13 @@ class LatheGeometry extends BufferGeometry {
|
|
|
177
210
|
|
|
178
211
|
}
|
|
179
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Factory method for creating an instance of this class from the given
|
|
215
|
+
* JSON object.
|
|
216
|
+
*
|
|
217
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
218
|
+
* @return {LatheGeometry} A new instance.
|
|
219
|
+
*/
|
|
180
220
|
static fromJSON( data ) {
|
|
181
221
|
|
|
182
222
|
return new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );
|
|
@@ -1,7 +1,25 @@
|
|
|
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
|
+
*/
|
|
3
15
|
class OctahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new octahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the octahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const vertices = [
|
|
@@ -19,6 +37,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
|
|
|
19
37
|
|
|
20
38
|
this.type = 'OctahedronGeometry';
|
|
21
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Holds the constructor parameters that have been
|
|
42
|
+
* used to generate the geometry. Any modification
|
|
43
|
+
* after instantiation does not change the geometry.
|
|
44
|
+
*
|
|
45
|
+
* @type {Object}
|
|
46
|
+
*/
|
|
22
47
|
this.parameters = {
|
|
23
48
|
radius: radius,
|
|
24
49
|
detail: detail
|
|
@@ -26,6 +51,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
|
|
|
26
51
|
|
|
27
52
|
}
|
|
28
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Factory method for creating an instance of this class from the given
|
|
56
|
+
* JSON object.
|
|
57
|
+
*
|
|
58
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
59
|
+
* @return {OctahedronGeometry} A new instance.
|
|
60
|
+
*/
|
|
29
61
|
static fromJSON( data ) {
|
|
30
62
|
|
|
31
63
|
return new OctahedronGeometry( data.radius, data.detail );
|
|
@@ -1,14 +1,41 @@
|
|
|
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
|
+
*/
|
|
4
16
|
class PlaneGeometry extends BufferGeometry {
|
|
5
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new plane geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [width=1] - The width along the X axis.
|
|
22
|
+
* @param {number} [height=1] - The height along the Y axis
|
|
23
|
+
* @param {number} [widthSegments=1] - The number of segments along the X axis.
|
|
24
|
+
* @param {number} [heightSegments=1] - The number of segments along the Y axis.
|
|
25
|
+
*/
|
|
6
26
|
constructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {
|
|
7
27
|
|
|
8
28
|
super();
|
|
9
29
|
|
|
10
30
|
this.type = 'PlaneGeometry';
|
|
11
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Holds the constructor parameters that have been
|
|
34
|
+
* used to generate the geometry. Any modification
|
|
35
|
+
* after instantiation does not change the geometry.
|
|
36
|
+
*
|
|
37
|
+
* @type {Object}
|
|
38
|
+
*/
|
|
12
39
|
this.parameters = {
|
|
13
40
|
width: width,
|
|
14
41
|
height: height,
|
|
@@ -87,6 +114,13 @@ class PlaneGeometry extends BufferGeometry {
|
|
|
87
114
|
|
|
88
115
|
}
|
|
89
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Factory method for creating an instance of this class from the given
|
|
119
|
+
* JSON object.
|
|
120
|
+
*
|
|
121
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
122
|
+
* @return {PlaneGeometry} A new instance.
|
|
123
|
+
*/
|
|
90
124
|
static fromJSON( data ) {
|
|
91
125
|
|
|
92
126
|
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,6 +330,13 @@ 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
342
|
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );
|