@plastic-software/three 0.167.3 → 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 +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- 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/points.glsl.js +2 -0
- 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
package/src/helpers/BoxHelper.js
CHANGED
|
@@ -6,8 +6,31 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
6
6
|
|
|
7
7
|
const _box = /*@__PURE__*/ new Box3();
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Helper object to graphically show the world-axis-aligned bounding box
|
|
11
|
+
* around an object. The actual bounding box is handled with {@link Box3},
|
|
12
|
+
* this is just a visual helper for debugging. It can be automatically
|
|
13
|
+
* resized with {@link BoxHelper#update} when the object it's created from
|
|
14
|
+
* is transformed. Note that the object must have a geometry for this to work,
|
|
15
|
+
* so it won't work with sprites.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const sphere = new THREE.SphereGeometry();
|
|
19
|
+
* const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );
|
|
20
|
+
* const box = new THREE.BoxHelper( object, 0xffff00 );
|
|
21
|
+
* scene.add( box );
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @augments LineSegments
|
|
25
|
+
*/
|
|
9
26
|
class BoxHelper extends LineSegments {
|
|
10
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new box helper.
|
|
30
|
+
*
|
|
31
|
+
* @param {Object3D} [object] - The 3D object to show the world-axis-aligned bounding box.
|
|
32
|
+
* @param {number|Color|string} [color=0xffff00] - The box's color.
|
|
33
|
+
*/
|
|
11
34
|
constructor( object, color = 0xffff00 ) {
|
|
12
35
|
|
|
13
36
|
const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );
|
|
@@ -19,6 +42,11 @@ class BoxHelper extends LineSegments {
|
|
|
19
42
|
|
|
20
43
|
super( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );
|
|
21
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The 3D object being visualized.
|
|
47
|
+
*
|
|
48
|
+
* @type {Object3D}
|
|
49
|
+
*/
|
|
22
50
|
this.object = object;
|
|
23
51
|
this.type = 'BoxHelper';
|
|
24
52
|
|
|
@@ -28,13 +56,11 @@ class BoxHelper extends LineSegments {
|
|
|
28
56
|
|
|
29
57
|
}
|
|
30
58
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
59
|
+
/**
|
|
60
|
+
* Updates the helper's geometry to match the dimensions of the object,
|
|
61
|
+
* including any children.
|
|
62
|
+
*/
|
|
63
|
+
update() {
|
|
38
64
|
|
|
39
65
|
if ( this.object !== undefined ) {
|
|
40
66
|
|
|
@@ -81,6 +107,12 @@ class BoxHelper extends LineSegments {
|
|
|
81
107
|
|
|
82
108
|
}
|
|
83
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Updates the wireframe box for the passed object.
|
|
112
|
+
*
|
|
113
|
+
* @param {Object3D} object - The 3D object to create the helper for.
|
|
114
|
+
* @return {BoxHelper} A reference to this instance.
|
|
115
|
+
*/
|
|
84
116
|
setFromObject( object ) {
|
|
85
117
|
|
|
86
118
|
this.object = object;
|
|
@@ -100,6 +132,10 @@ class BoxHelper extends LineSegments {
|
|
|
100
132
|
|
|
101
133
|
}
|
|
102
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
137
|
+
* method whenever this instance is no longer used in your app.
|
|
138
|
+
*/
|
|
103
139
|
dispose() {
|
|
104
140
|
|
|
105
141
|
this.geometry.dispose();
|
|
@@ -5,19 +5,34 @@ import { Color } from '../math/Color.js';
|
|
|
5
5
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
6
6
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
7
7
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
8
|
+
import { WebGLCoordinateSystem } from '../constants.js';
|
|
8
9
|
|
|
9
10
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
10
11
|
const _camera = /*@__PURE__*/ new Camera();
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* This helps with visualizing what a camera contains in its frustum. It
|
|
15
|
+
* visualizes the frustum of a camera using a line segments.
|
|
16
|
+
*
|
|
17
|
+
* Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.
|
|
18
|
+
*
|
|
19
|
+
* `CameraHelper` must be a child of the scene.
|
|
20
|
+
*
|
|
21
|
+
* ```js
|
|
22
|
+
* const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
|
|
23
|
+
* const helper = new THREE.CameraHelper( camera );
|
|
24
|
+
* scene.add( helper );
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @augments LineSegments
|
|
17
28
|
*/
|
|
18
|
-
|
|
19
29
|
class CameraHelper extends LineSegments {
|
|
20
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a new arrow helper.
|
|
33
|
+
*
|
|
34
|
+
* @param {Camera} camera - The camera to visualize.
|
|
35
|
+
*/
|
|
21
36
|
constructor( camera ) {
|
|
22
37
|
|
|
23
38
|
const geometry = new BufferGeometry();
|
|
@@ -104,12 +119,22 @@ class CameraHelper extends LineSegments {
|
|
|
104
119
|
|
|
105
120
|
this.type = 'CameraHelper';
|
|
106
121
|
|
|
122
|
+
/**
|
|
123
|
+
* The camera being visualized.
|
|
124
|
+
*
|
|
125
|
+
* @type {Camera}
|
|
126
|
+
*/
|
|
107
127
|
this.camera = camera;
|
|
108
128
|
if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();
|
|
109
129
|
|
|
110
130
|
this.matrix = camera.matrixWorld;
|
|
111
131
|
this.matrixAutoUpdate = false;
|
|
112
132
|
|
|
133
|
+
/**
|
|
134
|
+
* This contains the points used to visualize the camera.
|
|
135
|
+
*
|
|
136
|
+
* @type {Object<string,Array<number>>}
|
|
137
|
+
*/
|
|
113
138
|
this.pointMap = pointMap;
|
|
114
139
|
|
|
115
140
|
this.update();
|
|
@@ -126,6 +151,15 @@ class CameraHelper extends LineSegments {
|
|
|
126
151
|
|
|
127
152
|
}
|
|
128
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Defines the colors of the helper.
|
|
156
|
+
*
|
|
157
|
+
* @param {Color} frustum - The frustum line color.
|
|
158
|
+
* @param {Color} cone - The cone line color.
|
|
159
|
+
* @param {Color} up - The up line color.
|
|
160
|
+
* @param {Color} target - The target line color.
|
|
161
|
+
* @param {Color} cross - The cross line color.
|
|
162
|
+
*/
|
|
129
163
|
setColors( frustum, cone, up, target, cross ) {
|
|
130
164
|
|
|
131
165
|
const geometry = this.geometry;
|
|
@@ -183,6 +217,9 @@ class CameraHelper extends LineSegments {
|
|
|
183
217
|
|
|
184
218
|
}
|
|
185
219
|
|
|
220
|
+
/**
|
|
221
|
+
* Updates the helper based on the projection matrix of the camera.
|
|
222
|
+
*/
|
|
186
223
|
update() {
|
|
187
224
|
|
|
188
225
|
const geometry = this.geometry;
|
|
@@ -195,17 +232,19 @@ class CameraHelper extends LineSegments {
|
|
|
195
232
|
|
|
196
233
|
_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
|
|
197
234
|
|
|
198
|
-
//
|
|
235
|
+
// Adjust z values based on coordinate system
|
|
236
|
+
const nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? - 1 : 0;
|
|
199
237
|
|
|
200
|
-
|
|
238
|
+
// center / target
|
|
239
|
+
setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
|
|
201
240
|
setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );
|
|
202
241
|
|
|
203
242
|
// near
|
|
204
243
|
|
|
205
|
-
setPoint( 'n1', pointMap, geometry, _camera, - w, - h,
|
|
206
|
-
setPoint( 'n2', pointMap, geometry, _camera, w, - h,
|
|
207
|
-
setPoint( 'n3', pointMap, geometry, _camera, - w, h,
|
|
208
|
-
setPoint( 'n4', pointMap, geometry, _camera, w, h,
|
|
244
|
+
setPoint( 'n1', pointMap, geometry, _camera, - w, - h, nearZ );
|
|
245
|
+
setPoint( 'n2', pointMap, geometry, _camera, w, - h, nearZ );
|
|
246
|
+
setPoint( 'n3', pointMap, geometry, _camera, - w, h, nearZ );
|
|
247
|
+
setPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );
|
|
209
248
|
|
|
210
249
|
// far
|
|
211
250
|
|
|
@@ -216,9 +255,9 @@ class CameraHelper extends LineSegments {
|
|
|
216
255
|
|
|
217
256
|
// up
|
|
218
257
|
|
|
219
|
-
setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1,
|
|
220
|
-
setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1,
|
|
221
|
-
setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2,
|
|
258
|
+
setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );
|
|
259
|
+
setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, nearZ );
|
|
260
|
+
setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );
|
|
222
261
|
|
|
223
262
|
// cross
|
|
224
263
|
|
|
@@ -227,15 +266,19 @@ class CameraHelper extends LineSegments {
|
|
|
227
266
|
setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );
|
|
228
267
|
setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );
|
|
229
268
|
|
|
230
|
-
setPoint( 'cn1', pointMap, geometry, _camera, - w, 0,
|
|
231
|
-
setPoint( 'cn2', pointMap, geometry, _camera, w, 0,
|
|
232
|
-
setPoint( 'cn3', pointMap, geometry, _camera, 0, - h,
|
|
233
|
-
setPoint( 'cn4', pointMap, geometry, _camera, 0, h,
|
|
269
|
+
setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
|
|
270
|
+
setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
|
|
271
|
+
setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, nearZ );
|
|
272
|
+
setPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );
|
|
234
273
|
|
|
235
274
|
geometry.getAttribute( 'position' ).needsUpdate = true;
|
|
236
275
|
|
|
237
276
|
}
|
|
238
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
280
|
+
* method whenever this instance is no longer used in your app.
|
|
281
|
+
*/
|
|
239
282
|
dispose() {
|
|
240
283
|
|
|
241
284
|
this.geometry.dispose();
|
|
@@ -9,17 +9,51 @@ const _v1 = /*@__PURE__*/ new Vector3();
|
|
|
9
9
|
const _v2 = /*@__PURE__*/ new Vector3();
|
|
10
10
|
const _v3 = /*@__PURE__*/ new Vector3();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Helper object to assist with visualizing a {@link DirectionalLight}'s
|
|
14
|
+
* effect on the scene. This consists of plane and a line representing the
|
|
15
|
+
* light's position and direction.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const light = new THREE.DirectionalLight( 0xFFFFFF );
|
|
19
|
+
* scene.add( light );
|
|
20
|
+
*
|
|
21
|
+
* const helper = new THREE.DirectionalLightHelper( light, 5 );
|
|
22
|
+
* scene.add( helper );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Object3D
|
|
26
|
+
*/
|
|
12
27
|
class DirectionalLightHelper extends Object3D {
|
|
13
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new directional light helper.
|
|
31
|
+
*
|
|
32
|
+
* @param {DirectionalLight} light - The light to be visualized.
|
|
33
|
+
* @param {number} [size=1] - The dimensions of the plane.
|
|
34
|
+
* @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
|
|
35
|
+
* the color of the light.
|
|
36
|
+
*/
|
|
14
37
|
constructor( light, size, color ) {
|
|
15
38
|
|
|
16
39
|
super();
|
|
17
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The light being visualized.
|
|
43
|
+
*
|
|
44
|
+
* @type {DirectionalLight}
|
|
45
|
+
*/
|
|
18
46
|
this.light = light;
|
|
19
47
|
|
|
20
48
|
this.matrix = light.matrixWorld;
|
|
21
49
|
this.matrixAutoUpdate = false;
|
|
22
50
|
|
|
51
|
+
/**
|
|
52
|
+
* The color parameter passed in the constructor.
|
|
53
|
+
* If not set, the helper will take the color of the light.
|
|
54
|
+
*
|
|
55
|
+
* @type {number|Color|string}
|
|
56
|
+
*/
|
|
23
57
|
this.color = color;
|
|
24
58
|
|
|
25
59
|
this.type = 'DirectionalLightHelper';
|
|
@@ -37,12 +71,22 @@ class DirectionalLightHelper extends Object3D {
|
|
|
37
71
|
|
|
38
72
|
const material = new LineBasicMaterial( { fog: false, toneMapped: false } );
|
|
39
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Contains the line showing the location of the directional light.
|
|
76
|
+
*
|
|
77
|
+
* @type {Line}
|
|
78
|
+
*/
|
|
40
79
|
this.lightPlane = new Line( geometry, material );
|
|
41
80
|
this.add( this.lightPlane );
|
|
42
81
|
|
|
43
82
|
geometry = new BufferGeometry();
|
|
44
83
|
geometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );
|
|
45
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Represents the target line of the directional light.
|
|
87
|
+
*
|
|
88
|
+
* @type {Line}
|
|
89
|
+
*/
|
|
46
90
|
this.targetLine = new Line( geometry, material );
|
|
47
91
|
this.add( this.targetLine );
|
|
48
92
|
|
|
@@ -50,6 +94,10 @@ class DirectionalLightHelper extends Object3D {
|
|
|
50
94
|
|
|
51
95
|
}
|
|
52
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
99
|
+
* method whenever this instance is no longer used in your app.
|
|
100
|
+
*/
|
|
53
101
|
dispose() {
|
|
54
102
|
|
|
55
103
|
this.lightPlane.geometry.dispose();
|
|
@@ -59,6 +107,10 @@ class DirectionalLightHelper extends Object3D {
|
|
|
59
107
|
|
|
60
108
|
}
|
|
61
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Updates the helper to match the position and direction of the
|
|
112
|
+
* light being visualized.
|
|
113
|
+
*/
|
|
62
114
|
update() {
|
|
63
115
|
|
|
64
116
|
this.light.updateWorldMatrix( true, false );
|
|
@@ -4,8 +4,30 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
4
4
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
5
5
|
import { Color } from '../math/Color.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* The helper is an object to define grids. Grids are two-dimensional
|
|
9
|
+
* arrays of lines.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const size = 10;
|
|
13
|
+
* const divisions = 10;
|
|
14
|
+
*
|
|
15
|
+
* const gridHelper = new THREE.GridHelper( size, divisions );
|
|
16
|
+
* scene.add( gridHelper );
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @augments LineSegments
|
|
20
|
+
*/
|
|
7
21
|
class GridHelper extends LineSegments {
|
|
8
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new grid helper.
|
|
25
|
+
*
|
|
26
|
+
* @param {number} [size=10] - The size of the grid.
|
|
27
|
+
* @param {number} [divisions=10] - The number of divisions across the grid.
|
|
28
|
+
* @param {number|Color|string} [color1=0x444444] - The color of the center line.
|
|
29
|
+
* @param {number|Color|string} [color2=0x888888] - The color of the lines of the grid.
|
|
30
|
+
*/
|
|
9
31
|
constructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {
|
|
10
32
|
|
|
11
33
|
color1 = new Color( color1 );
|
|
@@ -43,6 +65,10 @@ class GridHelper extends LineSegments {
|
|
|
43
65
|
|
|
44
66
|
}
|
|
45
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
70
|
+
* method whenever this instance is no longer used in your app.
|
|
71
|
+
*/
|
|
46
72
|
dispose() {
|
|
47
73
|
|
|
48
74
|
this.geometry.dispose();
|
|
@@ -10,17 +10,48 @@ const _vector = /*@__PURE__*/ new Vector3();
|
|
|
10
10
|
const _color1 = /*@__PURE__*/ new Color();
|
|
11
11
|
const _color2 = /*@__PURE__*/ new Color();
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Creates a visual aid consisting of a spherical mesh for a
|
|
15
|
+
* given {@link HemisphereLight}.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
|
|
19
|
+
* const helper = new THREE.HemisphereLightHelper( light, 5 );
|
|
20
|
+
* scene.add( helper );
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @augments Object3D
|
|
24
|
+
*/
|
|
13
25
|
class HemisphereLightHelper extends Object3D {
|
|
14
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new hemisphere light helper.
|
|
29
|
+
*
|
|
30
|
+
* @param {HemisphereLight} light - The light to be visualized.
|
|
31
|
+
* @param {number} [size=1] - The size of the mesh used to visualize the light.
|
|
32
|
+
* @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
|
|
33
|
+
* the color of the light.
|
|
34
|
+
*/
|
|
15
35
|
constructor( light, size, color ) {
|
|
16
36
|
|
|
17
37
|
super();
|
|
18
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The light being visualized.
|
|
41
|
+
*
|
|
42
|
+
* @type {HemisphereLight}
|
|
43
|
+
*/
|
|
19
44
|
this.light = light;
|
|
20
45
|
|
|
21
46
|
this.matrix = light.matrixWorld;
|
|
22
47
|
this.matrixAutoUpdate = false;
|
|
23
48
|
|
|
49
|
+
/**
|
|
50
|
+
* The color parameter passed in the constructor.
|
|
51
|
+
* If not set, the helper will take the color of the light.
|
|
52
|
+
*
|
|
53
|
+
* @type {number|Color|string}
|
|
54
|
+
*/
|
|
24
55
|
this.color = color;
|
|
25
56
|
|
|
26
57
|
this.type = 'HemisphereLightHelper';
|
|
@@ -42,6 +73,10 @@ class HemisphereLightHelper extends Object3D {
|
|
|
42
73
|
|
|
43
74
|
}
|
|
44
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
78
|
+
* method whenever this instance is no longer used in your app.
|
|
79
|
+
*/
|
|
45
80
|
dispose() {
|
|
46
81
|
|
|
47
82
|
this.children[ 0 ].geometry.dispose();
|
|
@@ -49,6 +84,10 @@ class HemisphereLightHelper extends Object3D {
|
|
|
49
84
|
|
|
50
85
|
}
|
|
51
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Updates the helper to match the position and direction of the
|
|
89
|
+
* light being visualized.
|
|
90
|
+
*/
|
|
52
91
|
update() {
|
|
53
92
|
|
|
54
93
|
const mesh = this.children[ 0 ];
|
|
@@ -5,8 +5,26 @@ import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
|
|
|
5
5
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
6
6
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* A helper object to visualize an instance of {@link Plane}.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 );
|
|
13
|
+
* const helper = new THREE.PlaneHelper( plane, 1, 0xffff00 );
|
|
14
|
+
* scene.add( helper );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments Line
|
|
18
|
+
*/
|
|
8
19
|
class PlaneHelper extends Line {
|
|
9
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new plane helper.
|
|
23
|
+
*
|
|
24
|
+
* @param {Plane} plane - The plane to be visualized.
|
|
25
|
+
* @param {number} [size=1] - The side length of plane helper.
|
|
26
|
+
* @param {number|Color|string} [hex=0xffff00] - The helper's color.
|
|
27
|
+
*/
|
|
10
28
|
constructor( plane, size = 1, hex = 0xffff00 ) {
|
|
11
29
|
|
|
12
30
|
const color = hex;
|
|
@@ -21,8 +39,19 @@ class PlaneHelper extends Line {
|
|
|
21
39
|
|
|
22
40
|
this.type = 'PlaneHelper';
|
|
23
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The plane being visualized.
|
|
44
|
+
*
|
|
45
|
+
* @type {Plane}
|
|
46
|
+
*/
|
|
24
47
|
this.plane = plane;
|
|
25
48
|
|
|
49
|
+
/**
|
|
50
|
+
* The side length of plane helper.
|
|
51
|
+
*
|
|
52
|
+
* @type {number}
|
|
53
|
+
* @default 1
|
|
54
|
+
*/
|
|
26
55
|
this.size = size;
|
|
27
56
|
|
|
28
57
|
const positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];
|
|
@@ -49,6 +78,10 @@ class PlaneHelper extends Line {
|
|
|
49
78
|
|
|
50
79
|
}
|
|
51
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Updates the helper to match the position and direction of the
|
|
83
|
+
* light being visualized.
|
|
84
|
+
*/
|
|
52
85
|
dispose() {
|
|
53
86
|
|
|
54
87
|
this.geometry.dispose();
|
|
@@ -2,8 +2,32 @@ import { Mesh } from '../objects/Mesh.js';
|
|
|
2
2
|
import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
|
|
3
3
|
import { SphereGeometry } from '../geometries/SphereGeometry.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* This displays a helper object consisting of a spherical mesh for
|
|
7
|
+
* visualizing an instance of {@link PointLight}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const pointLight = new THREE.PointLight( 0xff0000, 1, 100 );
|
|
11
|
+
* pointLight.position.set( 10, 10, 10 );
|
|
12
|
+
* scene.add( pointLight );
|
|
13
|
+
*
|
|
14
|
+
* const sphereSize = 1;
|
|
15
|
+
* const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );
|
|
16
|
+
* scene.add( pointLightHelper );
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @augments Mesh
|
|
20
|
+
*/
|
|
5
21
|
class PointLightHelper extends Mesh {
|
|
6
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new point light helper.
|
|
25
|
+
*
|
|
26
|
+
* @param {PointLight} light - The light to be visualized.
|
|
27
|
+
* @param {number} [sphereSize=1] - The size of the sphere helper.
|
|
28
|
+
* @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
|
|
29
|
+
* the color of the light.
|
|
30
|
+
*/
|
|
7
31
|
constructor( light, sphereSize, color ) {
|
|
8
32
|
|
|
9
33
|
const geometry = new SphereGeometry( sphereSize, 4, 2 );
|
|
@@ -11,8 +35,19 @@ class PointLightHelper extends Mesh {
|
|
|
11
35
|
|
|
12
36
|
super( geometry, material );
|
|
13
37
|
|
|
38
|
+
/**
|
|
39
|
+
* The light being visualized.
|
|
40
|
+
*
|
|
41
|
+
* @type {HemisphereLight}
|
|
42
|
+
*/
|
|
14
43
|
this.light = light;
|
|
15
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The color parameter passed in the constructor.
|
|
47
|
+
* If not set, the helper will take the color of the light.
|
|
48
|
+
*
|
|
49
|
+
* @type {number|Color|string}
|
|
50
|
+
*/
|
|
16
51
|
this.color = color;
|
|
17
52
|
|
|
18
53
|
this.type = 'PointLightHelper';
|
|
@@ -48,6 +83,10 @@ class PointLightHelper extends Mesh {
|
|
|
48
83
|
|
|
49
84
|
}
|
|
50
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
88
|
+
* method whenever this instance is no longer used in your app.
|
|
89
|
+
*/
|
|
51
90
|
dispose() {
|
|
52
91
|
|
|
53
92
|
this.geometry.dispose();
|
|
@@ -55,6 +94,10 @@ class PointLightHelper extends Mesh {
|
|
|
55
94
|
|
|
56
95
|
}
|
|
57
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Updates the helper to match the position of the
|
|
99
|
+
* light being visualized.
|
|
100
|
+
*/
|
|
58
101
|
update() {
|
|
59
102
|
|
|
60
103
|
this.light.updateWorldMatrix( true, false );
|
|
@@ -4,8 +4,34 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
4
4
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
5
5
|
import { Color } from '../math/Color.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* This helper is an object to define polar grids. Grids are
|
|
9
|
+
* two-dimensional arrays of lines.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const radius = 10;
|
|
13
|
+
* const sectors = 16;
|
|
14
|
+
* const rings = 8;
|
|
15
|
+
* const divisions = 64;
|
|
16
|
+
*
|
|
17
|
+
* const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions );
|
|
18
|
+
* scene.add( helper );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments LineSegments
|
|
22
|
+
*/
|
|
7
23
|
class PolarGridHelper extends LineSegments {
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new polar grid helper.
|
|
27
|
+
*
|
|
28
|
+
* @param {number} [radius=10] - The radius of the polar grid. This can be any positive number.
|
|
29
|
+
* @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer.
|
|
30
|
+
* @param {number} [rings=16] - The number of rings. This can be any positive integer.
|
|
31
|
+
* @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer.
|
|
32
|
+
* @param {number|Color|string} [color1=0x444444] - The first color used for grid elements.
|
|
33
|
+
* @param {number|Color|string} [color2=0x888888] - The second color used for grid elements.
|
|
34
|
+
*/
|
|
9
35
|
constructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {
|
|
10
36
|
|
|
11
37
|
color1 = new Color( color1 );
|
|
@@ -83,6 +109,10 @@ class PolarGridHelper extends LineSegments {
|
|
|
83
109
|
|
|
84
110
|
}
|
|
85
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
114
|
+
* method whenever this instance is no longer used in your app.
|
|
115
|
+
*/
|
|
86
116
|
dispose() {
|
|
87
117
|
|
|
88
118
|
this.geometry.dispose();
|
|
@@ -10,9 +10,24 @@ const _vector = /*@__PURE__*/ new Vector3();
|
|
|
10
10
|
const _boneMatrix = /*@__PURE__*/ new Matrix4();
|
|
11
11
|
const _matrixWorldInv = /*@__PURE__*/ new Matrix4();
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* A helper object to assist with visualizing a {@link Skeleton}.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const helper = new THREE.SkeletonHelper( skinnedMesh );
|
|
18
|
+
* scene.add( helper );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments LineSegments
|
|
22
|
+
*/
|
|
14
23
|
class SkeletonHelper extends LineSegments {
|
|
15
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new hemisphere light helper.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object
|
|
29
|
+
* can be used if it represents a hierarchy of bones (see {@link Bone}).
|
|
30
|
+
*/
|
|
16
31
|
constructor( object ) {
|
|
17
32
|
|
|
18
33
|
const bones = getBoneList( object );
|
|
@@ -47,11 +62,29 @@ class SkeletonHelper extends LineSegments {
|
|
|
47
62
|
|
|
48
63
|
super( geometry, material );
|
|
49
64
|
|
|
65
|
+
/**
|
|
66
|
+
* This flag can be used for type testing.
|
|
67
|
+
*
|
|
68
|
+
* @type {boolean}
|
|
69
|
+
* @readonly
|
|
70
|
+
* @default true
|
|
71
|
+
*/
|
|
50
72
|
this.isSkeletonHelper = true;
|
|
51
73
|
|
|
52
74
|
this.type = 'SkeletonHelper';
|
|
53
75
|
|
|
76
|
+
/**
|
|
77
|
+
* The object being visualized.
|
|
78
|
+
*
|
|
79
|
+
* @type {Object3D}
|
|
80
|
+
*/
|
|
54
81
|
this.root = object;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* he list of bones that the helper visualizes.
|
|
85
|
+
*
|
|
86
|
+
* @type {Array<Bone>}
|
|
87
|
+
*/
|
|
55
88
|
this.bones = bones;
|
|
56
89
|
|
|
57
90
|
this.matrix = object.matrixWorld;
|
|
@@ -94,6 +127,10 @@ class SkeletonHelper extends LineSegments {
|
|
|
94
127
|
|
|
95
128
|
}
|
|
96
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
132
|
+
* method whenever this instance is no longer used in your app.
|
|
133
|
+
*/
|
|
97
134
|
dispose() {
|
|
98
135
|
|
|
99
136
|
this.geometry.dispose();
|
|
@@ -116,7 +153,7 @@ function getBoneList( object ) {
|
|
|
116
153
|
|
|
117
154
|
for ( let i = 0; i < object.children.length; i ++ ) {
|
|
118
155
|
|
|
119
|
-
boneList.push
|
|
156
|
+
boneList.push( ...getBoneList( object.children[ i ] ) );
|
|
120
157
|
|
|
121
158
|
}
|
|
122
159
|
|