@plastic-software/three 0.174.0 → 0.175.1
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/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
package/examples/jsm/Addons.js
CHANGED
|
@@ -46,7 +46,7 @@ export * from './exporters/USDZExporter.js';
|
|
|
46
46
|
export * from './geometries/BoxLineGeometry.js';
|
|
47
47
|
export * from './geometries/ConvexGeometry.js';
|
|
48
48
|
export * from './geometries/DecalGeometry.js';
|
|
49
|
-
export * from './geometries/
|
|
49
|
+
export * from './geometries/ParametricFunctions.js';
|
|
50
50
|
export * from './geometries/ParametricGeometry.js';
|
|
51
51
|
export * from './geometries/RoundedBoxGeometry.js';
|
|
52
52
|
export * from './geometries/TeapotGeometry.js';
|
|
@@ -7,8 +7,21 @@ import {
|
|
|
7
7
|
VectorKeyframeTrack
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A utility class with factory methods for creating basic animation clips.
|
|
12
|
+
*
|
|
13
|
+
* @hideconstructor
|
|
14
|
+
*/
|
|
10
15
|
class AnimationClipCreator {
|
|
11
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Creates an animation clip that rotates a 3D object 360 degrees
|
|
19
|
+
* in the given period of time around the given axis.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} period - The duration of the animation.
|
|
22
|
+
* @param {('x'|'y'|'z')} [axis='x'] - The axis of rotation.
|
|
23
|
+
* @return {AnimationClip} The created animation clip.
|
|
24
|
+
*/
|
|
12
25
|
static CreateRotationAnimation( period, axis = 'x' ) {
|
|
13
26
|
|
|
14
27
|
const times = [ 0, period ], values = [ 0, 360 ];
|
|
@@ -17,10 +30,18 @@ class AnimationClipCreator {
|
|
|
17
30
|
|
|
18
31
|
const track = new NumberKeyframeTrack( trackName, times, values );
|
|
19
32
|
|
|
20
|
-
return new AnimationClip(
|
|
33
|
+
return new AnimationClip( '', period, [ track ] );
|
|
21
34
|
|
|
22
35
|
}
|
|
23
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Creates an animation clip that scales a 3D object from `0` to `1`
|
|
39
|
+
* in the given period of time along the given axis.
|
|
40
|
+
*
|
|
41
|
+
* @param {number} period - The duration of the animation.
|
|
42
|
+
* @param {('x'|'y'|'z')} [axis='x'] - The axis to scale the 3D object along.
|
|
43
|
+
* @return {AnimationClip} The created animation clip.
|
|
44
|
+
*/
|
|
24
45
|
static CreateScaleAxisAnimation( period, axis = 'x' ) {
|
|
25
46
|
|
|
26
47
|
const times = [ 0, period ], values = [ 0, 1 ];
|
|
@@ -29,10 +50,18 @@ class AnimationClipCreator {
|
|
|
29
50
|
|
|
30
51
|
const track = new NumberKeyframeTrack( trackName, times, values );
|
|
31
52
|
|
|
32
|
-
return new AnimationClip(
|
|
53
|
+
return new AnimationClip( '', period, [ track ] );
|
|
33
54
|
|
|
34
55
|
}
|
|
35
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Creates an animation clip that translates a 3D object in a shake pattern
|
|
59
|
+
* in the given period.
|
|
60
|
+
*
|
|
61
|
+
* @param {number} duration - The duration of the animation.
|
|
62
|
+
* @param {Vector3} shakeScale - The scale of the shake.
|
|
63
|
+
* @return {AnimationClip} The created animation clip.
|
|
64
|
+
*/
|
|
36
65
|
static CreateShakeAnimation( duration, shakeScale ) {
|
|
37
66
|
|
|
38
67
|
const times = [], values = [], tmp = new Vector3();
|
|
@@ -51,10 +80,18 @@ class AnimationClipCreator {
|
|
|
51
80
|
|
|
52
81
|
const track = new VectorKeyframeTrack( trackName, times, values );
|
|
53
82
|
|
|
54
|
-
return new AnimationClip(
|
|
83
|
+
return new AnimationClip( '', duration, [ track ] );
|
|
55
84
|
|
|
56
85
|
}
|
|
57
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Creates an animation clip that scales a 3D object in a pulse pattern
|
|
89
|
+
* in the given period.
|
|
90
|
+
*
|
|
91
|
+
* @param {number} duration - The duration of the animation.
|
|
92
|
+
* @param {number} pulseScale - The scale of the pulse.
|
|
93
|
+
* @return {AnimationClip} The created animation clip.
|
|
94
|
+
*/
|
|
58
95
|
static CreatePulsationAnimation( duration, pulseScale ) {
|
|
59
96
|
|
|
60
97
|
const times = [], values = [], tmp = new Vector3();
|
|
@@ -73,10 +110,16 @@ class AnimationClipCreator {
|
|
|
73
110
|
|
|
74
111
|
const track = new VectorKeyframeTrack( trackName, times, values );
|
|
75
112
|
|
|
76
|
-
return new AnimationClip(
|
|
113
|
+
return new AnimationClip( '', duration, [ track ] );
|
|
77
114
|
|
|
78
115
|
}
|
|
79
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Creates an animation clip that toggles the visibility of a 3D object.
|
|
119
|
+
*
|
|
120
|
+
* @param {number} duration - The duration of the animation.
|
|
121
|
+
* @return {AnimationClip} The created animation clip.
|
|
122
|
+
*/
|
|
80
123
|
static CreateVisibilityAnimation( duration ) {
|
|
81
124
|
|
|
82
125
|
const times = [ 0, duration / 2, duration ], values = [ true, false, true ];
|
|
@@ -85,10 +128,18 @@ class AnimationClipCreator {
|
|
|
85
128
|
|
|
86
129
|
const track = new BooleanKeyframeTrack( trackName, times, values );
|
|
87
130
|
|
|
88
|
-
return new AnimationClip(
|
|
131
|
+
return new AnimationClip( '', duration, [ track ] );
|
|
89
132
|
|
|
90
133
|
}
|
|
91
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Creates an animation clip that animates the `color` property of a 3D object's
|
|
137
|
+
* material.
|
|
138
|
+
*
|
|
139
|
+
* @param {number} duration - The duration of the animation.
|
|
140
|
+
* @param {Array<Color>} colors - An array of colors that should be sequentially animated.
|
|
141
|
+
* @return {AnimationClip} The created animation clip.
|
|
142
|
+
*/
|
|
92
143
|
static CreateMaterialColorAnimation( duration, colors ) {
|
|
93
144
|
|
|
94
145
|
const times = [], values = [],
|
|
@@ -107,7 +158,7 @@ class AnimationClipCreator {
|
|
|
107
158
|
|
|
108
159
|
const track = new ColorKeyframeTrack( trackName, times, values );
|
|
109
160
|
|
|
110
|
-
return new AnimationClip(
|
|
161
|
+
return new AnimationClip( '', duration, [ track ] );
|
|
111
162
|
|
|
112
163
|
}
|
|
113
164
|
|
|
@@ -25,36 +25,31 @@ const _axis = new Vector3();
|
|
|
25
25
|
const _vector = new Vector3();
|
|
26
26
|
const _matrix = new Matrix4();
|
|
27
27
|
|
|
28
|
-
|
|
29
28
|
/**
|
|
30
|
-
* CCD Algorithm
|
|
31
|
-
* - https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm
|
|
29
|
+
* This class solves the Inverse Kinematics Problem with a [CCD Algorithm]{@link https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm}.
|
|
32
30
|
*
|
|
33
|
-
*
|
|
34
|
-
* //
|
|
35
|
-
* // target, effector, index in links are bone index in skeleton.bones.
|
|
36
|
-
* // the bones relation should be
|
|
37
|
-
* // <-- parent child -->
|
|
38
|
-
* // links[ n ], links[ n - 1 ], ..., links[ 0 ], effector
|
|
39
|
-
* iks = [ {
|
|
40
|
-
* target: 1,
|
|
41
|
-
* effector: 2,
|
|
42
|
-
* links: [ { index: 5, limitation: new Vector3( 1, 0, 0 ) }, { index: 4, enabled: false }, { index : 3 } ],
|
|
43
|
-
* iteration: 10,
|
|
44
|
-
* minAngle: 0.0,
|
|
45
|
-
* maxAngle: 1.0,
|
|
46
|
-
* } ];
|
|
31
|
+
* `CCDIKSolver` is designed to work with instances of {@link SkinnedMesh}.
|
|
47
32
|
*/
|
|
48
|
-
|
|
49
33
|
class CCDIKSolver {
|
|
50
34
|
|
|
51
35
|
/**
|
|
52
|
-
* @param {
|
|
53
|
-
* @param {Array<
|
|
36
|
+
* @param {SkinnedMesh} mesh - The skinned mesh.
|
|
37
|
+
* @param {Array<CCDIKSolver~IK>} [iks=[]] - The IK objects.
|
|
54
38
|
*/
|
|
55
39
|
constructor( mesh, iks = [] ) {
|
|
56
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The skinned mesh.
|
|
43
|
+
*
|
|
44
|
+
* @type {SkinnedMesh}
|
|
45
|
+
*/
|
|
57
46
|
this.mesh = mesh;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The IK objects.
|
|
50
|
+
*
|
|
51
|
+
* @type {SkinnedMesh}
|
|
52
|
+
*/
|
|
58
53
|
this.iks = iks;
|
|
59
54
|
|
|
60
55
|
this._initialQuaternions = [];
|
|
@@ -78,10 +73,10 @@ class CCDIKSolver {
|
|
|
78
73
|
}
|
|
79
74
|
|
|
80
75
|
/**
|
|
81
|
-
*
|
|
76
|
+
* Updates all IK bones by solving the CCD algorithm.
|
|
82
77
|
*
|
|
83
78
|
* @param {number} [globalBlendFactor=1.0] - Blend factor applied if an IK chain doesn't have its own .blendFactor.
|
|
84
|
-
* @return {CCDIKSolver}
|
|
79
|
+
* @return {CCDIKSolver} A reference to this instance.
|
|
85
80
|
*/
|
|
86
81
|
update( globalBlendFactor = 1.0 ) {
|
|
87
82
|
|
|
@@ -98,11 +93,11 @@ class CCDIKSolver {
|
|
|
98
93
|
}
|
|
99
94
|
|
|
100
95
|
/**
|
|
101
|
-
*
|
|
96
|
+
* Updates one IK bone solving the CCD algorithm.
|
|
102
97
|
*
|
|
103
|
-
* @param {
|
|
104
|
-
* @param {number} [overrideBlend=1.0] - If the
|
|
105
|
-
* @return {CCDIKSolver}
|
|
98
|
+
* @param {CCDIKSolver~IK} ik - The IK to update.
|
|
99
|
+
* @param {number} [overrideBlend=1.0] - If the IK object does not define `blendFactor`, this value is used.
|
|
100
|
+
* @return {CCDIKSolver} A reference to this instance.
|
|
106
101
|
*/
|
|
107
102
|
updateOne( ik, overrideBlend = 1.0 ) {
|
|
108
103
|
|
|
@@ -258,10 +253,10 @@ class CCDIKSolver {
|
|
|
258
253
|
}
|
|
259
254
|
|
|
260
255
|
/**
|
|
261
|
-
* Creates
|
|
256
|
+
* Creates a helper for visualizing the CCDIK.
|
|
262
257
|
*
|
|
263
|
-
* @param {number} sphereSize
|
|
264
|
-
* @return {CCDIKHelper}
|
|
258
|
+
* @param {number} sphereSize - The sphere size.
|
|
259
|
+
* @return {CCDIKHelper} The created helper.
|
|
265
260
|
*/
|
|
266
261
|
createHelper( sphereSize ) {
|
|
267
262
|
|
|
@@ -324,27 +319,50 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
|
|
|
324
319
|
}
|
|
325
320
|
|
|
326
321
|
/**
|
|
327
|
-
*
|
|
322
|
+
* Helper for visualizing IK bones.
|
|
323
|
+
*
|
|
324
|
+
* @augments Object3D
|
|
328
325
|
*/
|
|
329
326
|
class CCDIKHelper extends Object3D {
|
|
330
327
|
|
|
331
328
|
/**
|
|
332
|
-
* @param {SkinnedMesh} mesh
|
|
333
|
-
* @param {Array<
|
|
334
|
-
* @param {number} [sphereSize=0.25]
|
|
329
|
+
* @param {SkinnedMesh} mesh - The skinned mesh.
|
|
330
|
+
* @param {Array<CCDIKSolver~IK>} [iks=[]] - The IK objects.
|
|
331
|
+
* @param {number} [sphereSize=0.25] - The sphere size.
|
|
335
332
|
*/
|
|
336
333
|
constructor( mesh, iks = [], sphereSize = 0.25 ) {
|
|
337
334
|
|
|
338
335
|
super();
|
|
339
336
|
|
|
337
|
+
/**
|
|
338
|
+
* The skinned mesh this helper refers to.
|
|
339
|
+
*
|
|
340
|
+
* @type {SkinnedMesh}
|
|
341
|
+
*/
|
|
340
342
|
this.root = mesh;
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* The IK objects.
|
|
346
|
+
*
|
|
347
|
+
* @type {Array<CCDIKSolver~IK>}
|
|
348
|
+
*/
|
|
341
349
|
this.iks = iks;
|
|
342
350
|
|
|
343
351
|
this.matrix.copy( mesh.matrixWorld );
|
|
344
352
|
this.matrixAutoUpdate = false;
|
|
345
353
|
|
|
354
|
+
/**
|
|
355
|
+
* The helpers sphere geometry.
|
|
356
|
+
*
|
|
357
|
+
* @type {SkinnedMesh}
|
|
358
|
+
*/
|
|
346
359
|
this.sphereGeometry = new SphereGeometry( sphereSize, 16, 8 );
|
|
347
360
|
|
|
361
|
+
/**
|
|
362
|
+
* The material for the target spheres.
|
|
363
|
+
*
|
|
364
|
+
* @type {MeshBasicMaterial}
|
|
365
|
+
*/
|
|
348
366
|
this.targetSphereMaterial = new MeshBasicMaterial( {
|
|
349
367
|
color: new Color( 0xff8888 ),
|
|
350
368
|
depthTest: false,
|
|
@@ -352,6 +370,11 @@ class CCDIKHelper extends Object3D {
|
|
|
352
370
|
transparent: true
|
|
353
371
|
} );
|
|
354
372
|
|
|
373
|
+
/**
|
|
374
|
+
* The material for the effector spheres.
|
|
375
|
+
*
|
|
376
|
+
* @type {MeshBasicMaterial}
|
|
377
|
+
*/
|
|
355
378
|
this.effectorSphereMaterial = new MeshBasicMaterial( {
|
|
356
379
|
color: new Color( 0x88ff88 ),
|
|
357
380
|
depthTest: false,
|
|
@@ -359,6 +382,11 @@ class CCDIKHelper extends Object3D {
|
|
|
359
382
|
transparent: true
|
|
360
383
|
} );
|
|
361
384
|
|
|
385
|
+
/**
|
|
386
|
+
* The material for the link spheres.
|
|
387
|
+
*
|
|
388
|
+
* @type {MeshBasicMaterial}
|
|
389
|
+
*/
|
|
362
390
|
this.linkSphereMaterial = new MeshBasicMaterial( {
|
|
363
391
|
color: new Color( 0x8888ff ),
|
|
364
392
|
depthTest: false,
|
|
@@ -366,6 +394,11 @@ class CCDIKHelper extends Object3D {
|
|
|
366
394
|
transparent: true
|
|
367
395
|
} );
|
|
368
396
|
|
|
397
|
+
/**
|
|
398
|
+
* A global line material.
|
|
399
|
+
*
|
|
400
|
+
* @type {LineBasicMaterial}
|
|
401
|
+
*/
|
|
369
402
|
this.lineMaterial = new LineBasicMaterial( {
|
|
370
403
|
color: new Color( 0xff0000 ),
|
|
371
404
|
depthTest: false,
|
|
@@ -377,11 +410,6 @@ class CCDIKHelper extends Object3D {
|
|
|
377
410
|
|
|
378
411
|
}
|
|
379
412
|
|
|
380
|
-
/**
|
|
381
|
-
* Updates IK bones visualization.
|
|
382
|
-
*
|
|
383
|
-
* @param {boolean} force
|
|
384
|
-
*/
|
|
385
413
|
updateMatrixWorld( force ) {
|
|
386
414
|
|
|
387
415
|
const mesh = this.root;
|
|
@@ -446,7 +474,8 @@ class CCDIKHelper extends Object3D {
|
|
|
446
474
|
}
|
|
447
475
|
|
|
448
476
|
/**
|
|
449
|
-
* Frees the GPU-related resources allocated by this instance.
|
|
477
|
+
* Frees the GPU-related resources allocated by this instance.
|
|
478
|
+
* Call this method whenever this instance is no longer used in your app.
|
|
450
479
|
*/
|
|
451
480
|
dispose() {
|
|
452
481
|
|
|
@@ -531,4 +560,29 @@ class CCDIKHelper extends Object3D {
|
|
|
531
560
|
|
|
532
561
|
}
|
|
533
562
|
|
|
563
|
+
/**
|
|
564
|
+
* This type represents IK configuration objects.
|
|
565
|
+
*
|
|
566
|
+
* @typedef {Object} CCDIKSolver~IK
|
|
567
|
+
* @property {number} target - The target bone index which refers to a bone in the `Skeleton.bones` array.
|
|
568
|
+
* @property {number} effector - The effector bone index which refers to a bone in the `Skeleton.bones` array.
|
|
569
|
+
* @property {Array<CCDIKSolver~BoneLink>} links - An array of bone links.
|
|
570
|
+
* @property {number} [iteration=1] - Iteration number of calculation. Smaller is faster but less precise.
|
|
571
|
+
* @property {number} [minAngle] - Minimum rotation angle in a step in radians.
|
|
572
|
+
* @property {number} [maxAngle] - Minimum rotation angle in a step in radians.
|
|
573
|
+
* @property {number} [blendFactor] - The blend factor.
|
|
574
|
+
**/
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* This type represents bone links.
|
|
578
|
+
*
|
|
579
|
+
* @typedef {Object} CCDIKSolver~BoneLink
|
|
580
|
+
* @property {number} index - The index of a linked bone which refers to a bone in the `Skeleton.bones` array.
|
|
581
|
+
* @property {number} [limitation] - Rotation axis.
|
|
582
|
+
* @property {number} [rotationMin] - Rotation minimum limit.
|
|
583
|
+
* @property {number} [rotationMax] - Rotation maximum limit.
|
|
584
|
+
* @property {boolean} [enabled=true] - Whether the link is enabled or not.
|
|
585
|
+
**/
|
|
586
|
+
|
|
587
|
+
|
|
534
588
|
export { CCDIKSolver, CCDIKHelper };
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A utility module with basic WebGL 2 capability testing.
|
|
3
|
+
*
|
|
4
|
+
* @hideconstructor
|
|
5
|
+
*/
|
|
1
6
|
class WebGL {
|
|
2
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Returns `true` if WebGL 2 is available.
|
|
10
|
+
*
|
|
11
|
+
* @return {boolean} Whether WebGL 2 is available or not.
|
|
12
|
+
*/
|
|
3
13
|
static isWebGL2Available() {
|
|
4
14
|
|
|
5
15
|
try {
|
|
@@ -15,6 +25,13 @@ class WebGL {
|
|
|
15
25
|
|
|
16
26
|
}
|
|
17
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Returns `true` if the given color space is available. This method can only be used
|
|
30
|
+
* if WebGL 2 is supported.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} colorSpace - The color space to test.
|
|
33
|
+
* @return {boolean} Whether the given color space is available or not.
|
|
34
|
+
*/
|
|
18
35
|
static isColorSpaceAvailable( colorSpace ) {
|
|
19
36
|
|
|
20
37
|
try {
|
|
@@ -32,13 +49,21 @@ class WebGL {
|
|
|
32
49
|
|
|
33
50
|
}
|
|
34
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Returns a `div` element representing a formatted error message that can be appended in
|
|
54
|
+
* web sites if WebGL 2 isn't supported.
|
|
55
|
+
*
|
|
56
|
+
* @return {HTMLDivElement} A `div` element representing a formatted error message that WebGL 2 isn't supported.
|
|
57
|
+
*/
|
|
35
58
|
static getWebGL2ErrorMessage() {
|
|
36
59
|
|
|
37
|
-
return this.
|
|
60
|
+
return this._getErrorMessage( 2 );
|
|
38
61
|
|
|
39
62
|
}
|
|
40
63
|
|
|
41
|
-
|
|
64
|
+
// private
|
|
65
|
+
|
|
66
|
+
static _getErrorMessage( version ) {
|
|
42
67
|
|
|
43
68
|
const names = {
|
|
44
69
|
1: 'WebGL',
|
|
@@ -105,7 +130,7 @@ class WebGL {
|
|
|
105
130
|
|
|
106
131
|
console.warn( 'getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead.' );
|
|
107
132
|
|
|
108
|
-
return this.
|
|
133
|
+
return this._getErrorMessage( 1 );
|
|
109
134
|
|
|
110
135
|
}
|
|
111
136
|
|
|
@@ -6,20 +6,30 @@ if ( typeof window !== 'undefined' && isAvailable ) {
|
|
|
6
6
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* A utility module with basic WebGPU capability testing.
|
|
11
|
+
*
|
|
12
|
+
* @hideconstructor
|
|
13
|
+
*/
|
|
9
14
|
class WebGPU {
|
|
10
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Returns `true` if WebGPU is available.
|
|
18
|
+
*
|
|
19
|
+
* @return {boolean} Whether WebGPU is available or not.
|
|
20
|
+
*/
|
|
11
21
|
static isAvailable() {
|
|
12
22
|
|
|
13
23
|
return Boolean( isAvailable );
|
|
14
24
|
|
|
15
25
|
}
|
|
16
26
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Returns a `div` element representing a formatted error message that can be appended in
|
|
29
|
+
* web sites if WebGPU isn't supported.
|
|
30
|
+
*
|
|
31
|
+
* @return {HTMLDivElement} A `div` element representing a formatted error message that WebGPU isn't supported.
|
|
32
|
+
*/
|
|
23
33
|
static getErrorMessage() {
|
|
24
34
|
|
|
25
35
|
const message = 'Your browser does not support <a href="https://gpuweb.github.io/gpuweb/" style="color:blue">WebGPU</a> yet';
|