@plastic-software/three 0.174.0 → 0.175.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/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- 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 +1429 -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 +53 -0
- 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/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- 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
|
@@ -10,45 +10,147 @@ import {
|
|
|
10
10
|
import { MD2Loader } from '../loaders/MD2Loader.js';
|
|
11
11
|
import { MorphBlendMesh } from '../misc/MorphBlendMesh.js';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* This class represents a management component for animated MD2
|
|
15
|
+
* character assets. It provides a larger API compared to {@link MD2Character}.
|
|
16
|
+
*/
|
|
13
17
|
class MD2CharacterComplex {
|
|
14
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new MD2 character.
|
|
21
|
+
*/
|
|
15
22
|
constructor() {
|
|
16
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The mesh scale.
|
|
26
|
+
*
|
|
27
|
+
* @type {number}
|
|
28
|
+
* @default 1
|
|
29
|
+
*/
|
|
17
30
|
this.scale = 1;
|
|
18
31
|
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
/**
|
|
33
|
+
* The FPS
|
|
34
|
+
*
|
|
35
|
+
* @type {number}
|
|
36
|
+
* @default 6
|
|
37
|
+
*/
|
|
21
38
|
this.animationFPS = 6;
|
|
22
|
-
this.transitionFrames = 15;
|
|
23
39
|
|
|
24
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The transition frames.
|
|
42
|
+
*
|
|
43
|
+
* @type {number}
|
|
44
|
+
* @default 15
|
|
45
|
+
*/
|
|
46
|
+
this.transitionFrames = 15;
|
|
25
47
|
|
|
48
|
+
/**
|
|
49
|
+
* The character's maximum speed.
|
|
50
|
+
*
|
|
51
|
+
* @type {number}
|
|
52
|
+
* @default 275
|
|
53
|
+
*/
|
|
26
54
|
this.maxSpeed = 275;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The character's maximum reverse speed.
|
|
58
|
+
*
|
|
59
|
+
* @type {number}
|
|
60
|
+
* @default - 275
|
|
61
|
+
*/
|
|
27
62
|
this.maxReverseSpeed = - 275;
|
|
28
63
|
|
|
64
|
+
/**
|
|
65
|
+
* The character's front acceleration.
|
|
66
|
+
*
|
|
67
|
+
* @type {number}
|
|
68
|
+
* @default 600
|
|
69
|
+
*/
|
|
29
70
|
this.frontAcceleration = 600;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The character's back acceleration.
|
|
74
|
+
*
|
|
75
|
+
* @type {number}
|
|
76
|
+
* @default 600
|
|
77
|
+
*/
|
|
30
78
|
this.backAcceleration = 600;
|
|
31
79
|
|
|
80
|
+
/**
|
|
81
|
+
* The character's front decceleration.
|
|
82
|
+
*
|
|
83
|
+
* @type {number}
|
|
84
|
+
* @default 600
|
|
85
|
+
*/
|
|
32
86
|
this.frontDecceleration = 600;
|
|
33
87
|
|
|
88
|
+
/**
|
|
89
|
+
* The character's angular speed.
|
|
90
|
+
*
|
|
91
|
+
* @type {number}
|
|
92
|
+
* @default 2.5
|
|
93
|
+
*/
|
|
34
94
|
this.angularSpeed = 2.5;
|
|
35
95
|
|
|
36
|
-
|
|
37
|
-
|
|
96
|
+
/**
|
|
97
|
+
* The root 3D object
|
|
98
|
+
*
|
|
99
|
+
* @type {Object3D}
|
|
100
|
+
*/
|
|
38
101
|
this.root = new Object3D();
|
|
39
102
|
|
|
103
|
+
/**
|
|
104
|
+
* The body mesh.
|
|
105
|
+
*
|
|
106
|
+
* @type {?Mesh}
|
|
107
|
+
* @default null
|
|
108
|
+
*/
|
|
40
109
|
this.meshBody = null;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The weapon mesh.
|
|
113
|
+
*
|
|
114
|
+
* @type {?Mesh}
|
|
115
|
+
* @default null
|
|
116
|
+
*/
|
|
41
117
|
this.meshWeapon = null;
|
|
42
118
|
|
|
119
|
+
/**
|
|
120
|
+
* The movement controls.
|
|
121
|
+
*
|
|
122
|
+
* @type {Object}
|
|
123
|
+
* @default null
|
|
124
|
+
*/
|
|
43
125
|
this.controls = null;
|
|
44
126
|
|
|
45
|
-
|
|
46
|
-
|
|
127
|
+
/**
|
|
128
|
+
* The body skins.
|
|
129
|
+
*
|
|
130
|
+
* @type {Array<Texture>}
|
|
131
|
+
*/
|
|
47
132
|
this.skinsBody = [];
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* The weapon skins.
|
|
136
|
+
*
|
|
137
|
+
* @type {Array<Texture>}
|
|
138
|
+
*/
|
|
48
139
|
this.skinsWeapon = [];
|
|
49
140
|
|
|
141
|
+
/**
|
|
142
|
+
* The weapon meshes.
|
|
143
|
+
*
|
|
144
|
+
* @type {Array<Mesh>}
|
|
145
|
+
*/
|
|
50
146
|
this.weapons = [];
|
|
51
147
|
|
|
148
|
+
/**
|
|
149
|
+
* The current skin.
|
|
150
|
+
*
|
|
151
|
+
* @type {Texture}
|
|
152
|
+
* @default undefined
|
|
153
|
+
*/
|
|
52
154
|
this.currentSkin = undefined;
|
|
53
155
|
|
|
54
156
|
//
|
|
@@ -79,6 +181,11 @@ class MD2CharacterComplex {
|
|
|
79
181
|
|
|
80
182
|
}
|
|
81
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Toggles shadow casting and receiving on the character's meshes.
|
|
186
|
+
*
|
|
187
|
+
* @param {boolean} enable - Whether to enable shadows or not.
|
|
188
|
+
*/
|
|
82
189
|
enableShadows( enable ) {
|
|
83
190
|
|
|
84
191
|
for ( let i = 0; i < this.meshes.length; i ++ ) {
|
|
@@ -90,6 +197,11 @@ class MD2CharacterComplex {
|
|
|
90
197
|
|
|
91
198
|
}
|
|
92
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Toggles visibility on the character's meshes.
|
|
202
|
+
*
|
|
203
|
+
* @param {boolean} enable - Whether the character is visible or not.
|
|
204
|
+
*/
|
|
93
205
|
setVisible( enable ) {
|
|
94
206
|
|
|
95
207
|
for ( let i = 0; i < this.meshes.length; i ++ ) {
|
|
@@ -101,6 +213,11 @@ class MD2CharacterComplex {
|
|
|
101
213
|
|
|
102
214
|
}
|
|
103
215
|
|
|
216
|
+
/**
|
|
217
|
+
* Shares certain resources from a different character model.
|
|
218
|
+
*
|
|
219
|
+
* @param {MD2CharacterComplex} original - The original MD2 character.
|
|
220
|
+
*/
|
|
104
221
|
shareParts( original ) {
|
|
105
222
|
|
|
106
223
|
this.animations = original.animations;
|
|
@@ -143,6 +260,11 @@ class MD2CharacterComplex {
|
|
|
143
260
|
|
|
144
261
|
}
|
|
145
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Loads the character model for the given config.
|
|
265
|
+
*
|
|
266
|
+
* @param {Object} config - The config which defines the model and textures paths.
|
|
267
|
+
*/
|
|
146
268
|
loadParts( config ) {
|
|
147
269
|
|
|
148
270
|
const scope = this;
|
|
@@ -241,6 +363,11 @@ class MD2CharacterComplex {
|
|
|
241
363
|
|
|
242
364
|
}
|
|
243
365
|
|
|
366
|
+
/**
|
|
367
|
+
* Sets the animation playback rate.
|
|
368
|
+
*
|
|
369
|
+
* @param {number} rate - The playback rate to set.
|
|
370
|
+
*/
|
|
244
371
|
setPlaybackRate( rate ) {
|
|
245
372
|
|
|
246
373
|
if ( this.meshBody ) this.meshBody.duration = this.meshBody.baseDuration / rate;
|
|
@@ -248,6 +375,11 @@ class MD2CharacterComplex {
|
|
|
248
375
|
|
|
249
376
|
}
|
|
250
377
|
|
|
378
|
+
/**
|
|
379
|
+
* Sets the wireframe material flag.
|
|
380
|
+
*
|
|
381
|
+
* @param {boolean} wireframeEnabled - Whether to enable wireframe rendering or not.
|
|
382
|
+
*/
|
|
251
383
|
setWireframe( wireframeEnabled ) {
|
|
252
384
|
|
|
253
385
|
if ( wireframeEnabled ) {
|
|
@@ -264,6 +396,12 @@ class MD2CharacterComplex {
|
|
|
264
396
|
|
|
265
397
|
}
|
|
266
398
|
|
|
399
|
+
/**
|
|
400
|
+
* Sets the skin defined by the given skin index. This will result in a different texture
|
|
401
|
+
* for the body mesh.
|
|
402
|
+
*
|
|
403
|
+
* @param {number} index - The skin index.
|
|
404
|
+
*/
|
|
267
405
|
setSkin( index ) {
|
|
268
406
|
|
|
269
407
|
if ( this.meshBody && this.meshBody.material.wireframe === false ) {
|
|
@@ -275,6 +413,12 @@ class MD2CharacterComplex {
|
|
|
275
413
|
|
|
276
414
|
}
|
|
277
415
|
|
|
416
|
+
/**
|
|
417
|
+
* Sets the weapon defined by the given weapon index. This will result in a different weapon
|
|
418
|
+
* hold by the character.
|
|
419
|
+
*
|
|
420
|
+
* @param {number} index - The weapon index.
|
|
421
|
+
*/
|
|
278
422
|
setWeapon( index ) {
|
|
279
423
|
|
|
280
424
|
for ( let i = 0; i < this.weapons.length; i ++ ) this.weapons[ i ].visible = false;
|
|
@@ -297,6 +441,11 @@ class MD2CharacterComplex {
|
|
|
297
441
|
|
|
298
442
|
}
|
|
299
443
|
|
|
444
|
+
/**
|
|
445
|
+
* Sets the defined animation clip as the active animation.
|
|
446
|
+
*
|
|
447
|
+
* @param {string} animationName - The name of the animation clip.
|
|
448
|
+
*/
|
|
300
449
|
setAnimation( animationName ) {
|
|
301
450
|
|
|
302
451
|
if ( animationName === this.activeAnimation || ! animationName ) return;
|
|
@@ -336,6 +485,11 @@ class MD2CharacterComplex {
|
|
|
336
485
|
|
|
337
486
|
}
|
|
338
487
|
|
|
488
|
+
/**
|
|
489
|
+
* Updates the animations of the mesh. Must be called inside the animation loop.
|
|
490
|
+
*
|
|
491
|
+
* @param {number} delta - The delta time in seconds.
|
|
492
|
+
*/
|
|
339
493
|
updateAnimations( delta ) {
|
|
340
494
|
|
|
341
495
|
let mix = 1;
|
|
@@ -367,6 +521,9 @@ class MD2CharacterComplex {
|
|
|
367
521
|
|
|
368
522
|
}
|
|
369
523
|
|
|
524
|
+
/**
|
|
525
|
+
* Updates the animation state based on the control inputs.
|
|
526
|
+
*/
|
|
370
527
|
updateBehaviors() {
|
|
371
528
|
|
|
372
529
|
const controls = this.controls;
|
|
@@ -476,6 +633,11 @@ class MD2CharacterComplex {
|
|
|
476
633
|
|
|
477
634
|
}
|
|
478
635
|
|
|
636
|
+
/**
|
|
637
|
+
* Transforms the character model based on the control input.
|
|
638
|
+
*
|
|
639
|
+
* @param {number} delta - The delta time in seconds.
|
|
640
|
+
*/
|
|
479
641
|
updateMovementModel( delta ) {
|
|
480
642
|
|
|
481
643
|
function exponentialEaseOut( k ) {
|
|
@@ -4,31 +4,69 @@ import {
|
|
|
4
4
|
Mesh
|
|
5
5
|
} from 'three';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* A special type of an animated mesh with a simple interface
|
|
9
|
+
* for animation playback. It allows to playback just one animation
|
|
10
|
+
* without any transitions or fading between animation changes.
|
|
11
|
+
*
|
|
12
|
+
* @augments Mesh
|
|
13
|
+
*/
|
|
7
14
|
class MorphAnimMesh extends Mesh {
|
|
8
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new morph anim mesh.
|
|
18
|
+
*
|
|
19
|
+
* @param {BufferGeometry} [geometry] - The mesh geometry.
|
|
20
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
21
|
+
*/
|
|
9
22
|
constructor( geometry, material ) {
|
|
10
23
|
|
|
11
24
|
super( geometry, material );
|
|
12
25
|
|
|
13
26
|
this.type = 'MorphAnimMesh';
|
|
14
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The internal animation mixer.
|
|
30
|
+
*
|
|
31
|
+
* @type {AnimationMixer}
|
|
32
|
+
*/
|
|
15
33
|
this.mixer = new AnimationMixer( this );
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The current active animation action.
|
|
37
|
+
*
|
|
38
|
+
* @type {?AnimationAction}
|
|
39
|
+
* @default null
|
|
40
|
+
*/
|
|
16
41
|
this.activeAction = null;
|
|
17
42
|
|
|
18
43
|
}
|
|
19
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Sets the animation playback direction to "forward".
|
|
47
|
+
*/
|
|
20
48
|
setDirectionForward() {
|
|
21
49
|
|
|
22
50
|
this.mixer.timeScale = 1.0;
|
|
23
51
|
|
|
24
52
|
}
|
|
25
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Sets the animation playback direction to "backward".
|
|
56
|
+
*/
|
|
26
57
|
setDirectionBackward() {
|
|
27
58
|
|
|
28
59
|
this.mixer.timeScale = - 1.0;
|
|
29
60
|
|
|
30
61
|
}
|
|
31
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Plays the defined animation clip. The implementation assumes the animation
|
|
65
|
+
* clips are stored in {@link Object3D#animations} or the geometry.
|
|
66
|
+
*
|
|
67
|
+
* @param {string} label - The name of the animation clip.
|
|
68
|
+
* @param {number} fps - The FPS of the animation clip.
|
|
69
|
+
*/
|
|
32
70
|
playAnimation( label, fps ) {
|
|
33
71
|
|
|
34
72
|
if ( this.activeAction ) {
|
|
@@ -54,6 +92,11 @@ class MorphAnimMesh extends Mesh {
|
|
|
54
92
|
|
|
55
93
|
}
|
|
56
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Updates the animations of the mesh. Must be called inside the animation loop.
|
|
97
|
+
*
|
|
98
|
+
* @param {number} delta - The delta time in seconds.
|
|
99
|
+
*/
|
|
57
100
|
updateAnimation( delta ) {
|
|
58
101
|
|
|
59
102
|
this.mixer.update( delta );
|
|
@@ -3,13 +3,38 @@ import {
|
|
|
3
3
|
Mesh
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A special type of an animated mesh with a more advanced interface
|
|
8
|
+
* for animation playback. Unlike {@link MorphAnimMesh}. It allows to
|
|
9
|
+
* playback more than one morph animation at the same time but without
|
|
10
|
+
* fading options.
|
|
11
|
+
*
|
|
12
|
+
* @augments Mesh
|
|
13
|
+
*/
|
|
6
14
|
class MorphBlendMesh extends Mesh {
|
|
7
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new morph blend mesh.
|
|
18
|
+
*
|
|
19
|
+
* @param {BufferGeometry} [geometry] - The mesh geometry.
|
|
20
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
21
|
+
*/
|
|
8
22
|
constructor( geometry, material ) {
|
|
9
23
|
|
|
10
24
|
super( geometry, material );
|
|
11
25
|
|
|
26
|
+
/**
|
|
27
|
+
* A dictionary of animations.
|
|
28
|
+
*
|
|
29
|
+
* @type {Object<string,Object>}
|
|
30
|
+
*/
|
|
12
31
|
this.animationsMap = {};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A list of animations.
|
|
35
|
+
*
|
|
36
|
+
* @type {Array<Object>}
|
|
37
|
+
*/
|
|
13
38
|
this.animationsList = [];
|
|
14
39
|
|
|
15
40
|
// prepare default animation
|
|
@@ -29,6 +54,14 @@ class MorphBlendMesh extends Mesh {
|
|
|
29
54
|
|
|
30
55
|
}
|
|
31
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Creates a new animation.
|
|
59
|
+
*
|
|
60
|
+
* @param {string} name - The animation name.
|
|
61
|
+
* @param {number} start - The start time.
|
|
62
|
+
* @param {number} end - The end time.
|
|
63
|
+
* @param {number} fps - The FPS.
|
|
64
|
+
*/
|
|
32
65
|
createAnimation( name, start, end, fps ) {
|
|
33
66
|
|
|
34
67
|
const animation = {
|
|
@@ -60,6 +93,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
60
93
|
|
|
61
94
|
}
|
|
62
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Automatically creates animations based on the values in
|
|
98
|
+
* {@link Mesh#morphTargetDictionary}.
|
|
99
|
+
*
|
|
100
|
+
* @param {number} fps - The FPS of all animations.
|
|
101
|
+
*/
|
|
63
102
|
autoCreateAnimations( fps ) {
|
|
64
103
|
|
|
65
104
|
const pattern = /([a-z]+)_?(\d+)/i;
|
|
@@ -104,6 +143,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
104
143
|
|
|
105
144
|
}
|
|
106
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Sets the animation playback direction to "forward" for the
|
|
148
|
+
* defined animation.
|
|
149
|
+
*
|
|
150
|
+
* @param {string} name - The animation name.
|
|
151
|
+
*/
|
|
107
152
|
setAnimationDirectionForward( name ) {
|
|
108
153
|
|
|
109
154
|
const animation = this.animationsMap[ name ];
|
|
@@ -117,6 +162,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
117
162
|
|
|
118
163
|
}
|
|
119
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Sets the animation playback direction to "backward" for the
|
|
167
|
+
* defined animation.
|
|
168
|
+
*
|
|
169
|
+
* @param {string} name - The animation name.
|
|
170
|
+
*/
|
|
120
171
|
setAnimationDirectionBackward( name ) {
|
|
121
172
|
|
|
122
173
|
const animation = this.animationsMap[ name ];
|
|
@@ -130,6 +181,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
130
181
|
|
|
131
182
|
}
|
|
132
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Sets the FPS to the given value for the defined animation.
|
|
186
|
+
*
|
|
187
|
+
* @param {string} name - The animation name.
|
|
188
|
+
* @param {number} fps - The FPS to set.
|
|
189
|
+
*/
|
|
133
190
|
setAnimationFPS( name, fps ) {
|
|
134
191
|
|
|
135
192
|
const animation = this.animationsMap[ name ];
|
|
@@ -143,6 +200,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
143
200
|
|
|
144
201
|
}
|
|
145
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Sets the duration to the given value for the defined animation.
|
|
205
|
+
*
|
|
206
|
+
* @param {string} name - The animation name.
|
|
207
|
+
* @param {number} duration - The duration to set.
|
|
208
|
+
*/
|
|
146
209
|
setAnimationDuration( name, duration ) {
|
|
147
210
|
|
|
148
211
|
const animation = this.animationsMap[ name ];
|
|
@@ -156,6 +219,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
156
219
|
|
|
157
220
|
}
|
|
158
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Sets the weight to the given value for the defined animation.
|
|
224
|
+
*
|
|
225
|
+
* @param {string} name - The animation name.
|
|
226
|
+
* @param {number} weight - The weight to set.
|
|
227
|
+
*/
|
|
159
228
|
setAnimationWeight( name, weight ) {
|
|
160
229
|
|
|
161
230
|
const animation = this.animationsMap[ name ];
|
|
@@ -168,6 +237,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
168
237
|
|
|
169
238
|
}
|
|
170
239
|
|
|
240
|
+
/**
|
|
241
|
+
* Sets the time to the given value for the defined animation.
|
|
242
|
+
*
|
|
243
|
+
* @param {string} name - The animation name.
|
|
244
|
+
* @param {number} time - The time to set.
|
|
245
|
+
*/
|
|
171
246
|
setAnimationTime( name, time ) {
|
|
172
247
|
|
|
173
248
|
const animation = this.animationsMap[ name ];
|
|
@@ -180,6 +255,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
180
255
|
|
|
181
256
|
}
|
|
182
257
|
|
|
258
|
+
/**
|
|
259
|
+
* Returns the time for the defined animation.
|
|
260
|
+
*
|
|
261
|
+
* @param {string} name - The animation name.
|
|
262
|
+
* @return {number} The time.
|
|
263
|
+
*/
|
|
183
264
|
getAnimationTime( name ) {
|
|
184
265
|
|
|
185
266
|
let time = 0;
|
|
@@ -196,6 +277,12 @@ class MorphBlendMesh extends Mesh {
|
|
|
196
277
|
|
|
197
278
|
}
|
|
198
279
|
|
|
280
|
+
/**
|
|
281
|
+
* Returns the duration for the defined animation.
|
|
282
|
+
*
|
|
283
|
+
* @param {string} name - The animation name.
|
|
284
|
+
* @return {number} The duration.
|
|
285
|
+
*/
|
|
199
286
|
getAnimationDuration( name ) {
|
|
200
287
|
|
|
201
288
|
let duration = - 1;
|
|
@@ -212,6 +299,11 @@ class MorphBlendMesh extends Mesh {
|
|
|
212
299
|
|
|
213
300
|
}
|
|
214
301
|
|
|
302
|
+
/**
|
|
303
|
+
* Plays the defined animation.
|
|
304
|
+
*
|
|
305
|
+
* @param {string} name - The animation name.
|
|
306
|
+
*/
|
|
215
307
|
playAnimation( name ) {
|
|
216
308
|
|
|
217
309
|
const animation = this.animationsMap[ name ];
|
|
@@ -229,6 +321,11 @@ class MorphBlendMesh extends Mesh {
|
|
|
229
321
|
|
|
230
322
|
}
|
|
231
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Stops the defined animation.
|
|
326
|
+
*
|
|
327
|
+
* @param {string} name - The animation name.
|
|
328
|
+
*/
|
|
232
329
|
stopAnimation( name ) {
|
|
233
330
|
|
|
234
331
|
const animation = this.animationsMap[ name ];
|
|
@@ -241,6 +338,11 @@ class MorphBlendMesh extends Mesh {
|
|
|
241
338
|
|
|
242
339
|
}
|
|
243
340
|
|
|
341
|
+
/**
|
|
342
|
+
* Updates the animations of the mesh.
|
|
343
|
+
*
|
|
344
|
+
* @param {number} delta - The delta time in seconds.
|
|
345
|
+
*/
|
|
244
346
|
update( delta ) {
|
|
245
347
|
|
|
246
348
|
for ( let i = 0, il = this.animationsList.length; i < il; i ++ ) {
|
|
@@ -2,7 +2,7 @@ import { DoubleSide, FloatType, HalfFloatType, Mesh, MeshBasicMaterial, MeshPhon
|
|
|
2
2
|
import { potpack } from '../libs/potpack.module.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Progressive Light Map Accumulator, by [zalo]
|
|
5
|
+
* Progressive Light Map Accumulator, by [zalo]{@link https://github.com/zalo/}.
|
|
6
6
|
*
|
|
7
7
|
* To use, simply construct a `ProgressiveLightMap` object,
|
|
8
8
|
* `plmap.addObjectsToLightMap(object)` an array of semi-static
|
|
@@ -13,17 +13,37 @@ import { potpack } from '../libs/potpack.module.js';
|
|
|
13
13
|
* This should begin accumulating lightmaps which apply to
|
|
14
14
|
* your objects, so you can start jittering lighting to achieve
|
|
15
15
|
* the texture-space effect you're looking for.
|
|
16
|
+
*
|
|
17
|
+
* This class can only be used with {@link WebGLRenderer}.
|
|
18
|
+
* When using {@link WebGPURenderer}, import from `ProgressiveLightMapGPU.js`.
|
|
16
19
|
*/
|
|
17
20
|
class ProgressiveLightMap {
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
|
-
*
|
|
21
|
-
|
|
23
|
+
* Constructs a new progressive light map.
|
|
24
|
+
*
|
|
25
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
26
|
+
* @param {number} [res=1024] - The side-long dimension of the total lightmap.
|
|
22
27
|
*/
|
|
23
28
|
constructor( renderer, res = 1024 ) {
|
|
24
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The renderer.
|
|
32
|
+
*
|
|
33
|
+
* @type {WebGLRenderer}
|
|
34
|
+
*/
|
|
25
35
|
this.renderer = renderer;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The side-long dimension of the total lightmap.
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
* @default 1024
|
|
42
|
+
*/
|
|
26
43
|
this.res = res;
|
|
44
|
+
|
|
45
|
+
// internals
|
|
46
|
+
|
|
27
47
|
this.lightMapContainers = [];
|
|
28
48
|
this.scene = new Scene();
|
|
29
49
|
this.buffer1Active = false;
|
|
@@ -76,7 +96,8 @@ class ProgressiveLightMap {
|
|
|
76
96
|
|
|
77
97
|
/**
|
|
78
98
|
* Sets these objects' materials' lightmaps and modifies their uv1's.
|
|
79
|
-
*
|
|
99
|
+
*
|
|
100
|
+
* @param {Array<Object3D>} objects - An array of objects and lights to set up your lightmap.
|
|
80
101
|
*/
|
|
81
102
|
addObjectsToLightMap( objects ) {
|
|
82
103
|
|
|
@@ -142,10 +163,11 @@ class ProgressiveLightMap {
|
|
|
142
163
|
}
|
|
143
164
|
|
|
144
165
|
/**
|
|
145
|
-
* This function renders each mesh one at a time into their respective surface maps
|
|
146
|
-
*
|
|
147
|
-
* @param {
|
|
148
|
-
* @param {
|
|
166
|
+
* This function renders each mesh one at a time into their respective surface maps.
|
|
167
|
+
*
|
|
168
|
+
* @param {Camera} camera - The camera the scene is rendered with.
|
|
169
|
+
* @param {number} [blendWindow=100] - When >1, samples will accumulate over time.
|
|
170
|
+
* @param {boolean} [blurEdges=true] - Whether to fix UV Edges via blurring.
|
|
149
171
|
*/
|
|
150
172
|
update( camera, blendWindow = 100, blurEdges = true ) {
|
|
151
173
|
|
|
@@ -215,10 +237,11 @@ class ProgressiveLightMap {
|
|
|
215
237
|
|
|
216
238
|
}
|
|
217
239
|
|
|
218
|
-
/**
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* @param {
|
|
240
|
+
/**
|
|
241
|
+
* Draws the lightmap in the main scene. Call this after adding the objects to it.
|
|
242
|
+
*
|
|
243
|
+
* @param {boolean} visible - Whether the debug plane should be visible
|
|
244
|
+
* @param {Vector3} [position] - Where the debug plane should be drawn
|
|
222
245
|
*/
|
|
223
246
|
showDebugLightmap( visible, position = undefined ) {
|
|
224
247
|
|
|
@@ -251,9 +274,11 @@ class ProgressiveLightMap {
|
|
|
251
274
|
}
|
|
252
275
|
|
|
253
276
|
/**
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* @
|
|
277
|
+
* Creates the Blurring Plane.
|
|
278
|
+
*
|
|
279
|
+
* @private
|
|
280
|
+
* @param {number} res - The square resolution of this object's lightMap.
|
|
281
|
+
* @param {WebGLRenderTarget} [lightMap] - The lightmap to initialize the plane with.
|
|
257
282
|
*/
|
|
258
283
|
_initializeBlurPlane( res, lightMap = null ) {
|
|
259
284
|
|