@needle-tools/three 0.145.4 → 0.146.2
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/README.md +1 -1
- package/build/three.cjs +32586 -35951
- package/build/three.js +32600 -35965
- package/build/three.min.js +6 -7
- package/build/three.module.js +1547 -1154
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +38 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +14 -18
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +234 -168
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +75 -19
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +10 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
this.IFF = IFFParser;
|
|
8
8
|
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
parseBlock() {
|
|
12
11
|
|
|
13
12
|
this.IFF.debugger.offset = this.IFF.reader.offset;
|
|
@@ -16,35 +15,34 @@
|
|
|
16
15
|
const length = this.IFF.reader.getUint32(); // size of data in bytes
|
|
17
16
|
|
|
18
17
|
this.IFF.debugger.dataOffset = this.IFF.reader.offset;
|
|
19
|
-
this.IFF.debugger.length = length;
|
|
18
|
+
this.IFF.debugger.length = length;
|
|
20
19
|
|
|
20
|
+
// Data types may be found in either LWO2 OR LWO3 spec
|
|
21
21
|
switch ( blockID ) {
|
|
22
22
|
|
|
23
23
|
case 'FORM':
|
|
24
24
|
// form blocks may consist of sub -chunks or sub-forms
|
|
25
25
|
this.IFF.parseForm( length );
|
|
26
26
|
break;
|
|
27
|
+
|
|
27
28
|
// SKIPPED CHUNKS
|
|
28
29
|
// MISC skipped
|
|
29
|
-
|
|
30
30
|
case 'ICON': // Thumbnail Icon Image
|
|
31
|
-
|
|
32
31
|
case 'VMPA': // Vertex Map Parameter
|
|
33
|
-
|
|
34
32
|
case 'BBOX': // bounding box
|
|
35
33
|
// case 'VMMD':
|
|
36
34
|
// case 'VTYP':
|
|
37
|
-
// normal maps can be specified, normally on models imported from other applications. Currently ignored
|
|
38
35
|
|
|
39
|
-
|
|
36
|
+
// normal maps can be specified, normally on models imported from other applications. Currently ignored
|
|
37
|
+
case 'NORM':
|
|
40
38
|
|
|
39
|
+
// ENVL FORM skipped
|
|
41
40
|
case 'PRE ': // Pre-loop behavior for the keyframe
|
|
42
|
-
|
|
43
41
|
case 'POST': // Post-loop behavior for the keyframe
|
|
44
|
-
|
|
45
42
|
case 'KEY ':
|
|
46
|
-
case 'SPAN':
|
|
43
|
+
case 'SPAN':
|
|
47
44
|
|
|
45
|
+
// CLIP FORM skipped
|
|
48
46
|
case 'TIME':
|
|
49
47
|
case 'CLRS':
|
|
50
48
|
case 'CLRA':
|
|
@@ -57,32 +55,36 @@
|
|
|
57
55
|
case 'GAMM':
|
|
58
56
|
case 'NEGA':
|
|
59
57
|
case 'IFLT':
|
|
60
|
-
case 'PFLT':
|
|
58
|
+
case 'PFLT':
|
|
61
59
|
|
|
60
|
+
// Image Map Layer skipped
|
|
62
61
|
case 'PROJ':
|
|
63
62
|
case 'AXIS':
|
|
64
63
|
case 'AAST':
|
|
65
64
|
case 'PIXB':
|
|
66
|
-
case 'STCK':
|
|
65
|
+
case 'STCK':
|
|
67
66
|
|
|
68
|
-
|
|
67
|
+
// Procedural Textures skipped
|
|
68
|
+
case 'VALU':
|
|
69
69
|
|
|
70
|
+
// Gradient Textures skipped
|
|
70
71
|
case 'PNAM':
|
|
71
72
|
case 'INAM':
|
|
72
73
|
case 'GRST':
|
|
73
74
|
case 'GREN':
|
|
74
75
|
case 'GRPT':
|
|
75
76
|
case 'FKEY':
|
|
76
|
-
case 'IKEY':
|
|
77
|
+
case 'IKEY':
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
// Texture Mapping Form skipped
|
|
80
|
+
case 'CSYS':
|
|
79
81
|
|
|
82
|
+
// Surface CHUNKs skipped
|
|
80
83
|
case 'OPAQ': // top level 'opacity' checkbox
|
|
81
|
-
|
|
82
84
|
case 'CMAP': // clip map
|
|
85
|
+
|
|
83
86
|
// Surface node CHUNKS skipped
|
|
84
87
|
// These mainly specify the node editor setup in LW
|
|
85
|
-
|
|
86
88
|
case 'NLOC':
|
|
87
89
|
case 'NZOM':
|
|
88
90
|
case 'NVER':
|
|
@@ -94,8 +96,9 @@
|
|
|
94
96
|
case 'NPLA':
|
|
95
97
|
case 'VERS':
|
|
96
98
|
case 'ENUM':
|
|
97
|
-
case 'TAG ':
|
|
99
|
+
case 'TAG ':
|
|
98
100
|
|
|
101
|
+
// Car Material CHUNKS
|
|
99
102
|
case 'CGMD':
|
|
100
103
|
case 'CGTY':
|
|
101
104
|
case 'CGST':
|
|
@@ -124,26 +127,17 @@
|
|
|
124
127
|
this.IFF.debugger.skipped = true;
|
|
125
128
|
this.IFF.reader.skip( length );
|
|
126
129
|
break;
|
|
127
|
-
// Texture node chunks (not in spec)
|
|
128
130
|
|
|
131
|
+
// Texture node chunks (not in spec)
|
|
129
132
|
case 'IPIX': // usePixelBlending
|
|
130
|
-
|
|
131
133
|
case 'IMIP': // useMipMaps
|
|
132
|
-
|
|
133
134
|
case 'IMOD': // imageBlendingMode
|
|
134
|
-
|
|
135
135
|
case 'AMOD': // unknown
|
|
136
|
-
|
|
137
136
|
case 'IINV': // imageInvertAlpha
|
|
138
|
-
|
|
139
137
|
case 'INCR': // imageInvertColor
|
|
140
|
-
|
|
141
138
|
case 'IAXS': // imageAxis ( for non-UV maps)
|
|
142
|
-
|
|
143
139
|
case 'IFOT': // imageFallofType
|
|
144
|
-
|
|
145
140
|
case 'ITIM': // timing for animated textures
|
|
146
|
-
|
|
147
141
|
case 'IWRL':
|
|
148
142
|
case 'IUTI':
|
|
149
143
|
case 'IINX':
|
|
@@ -153,227 +147,191 @@
|
|
|
153
147
|
// possibly a VX for reused texture nodes
|
|
154
148
|
if ( length === 4 ) this.IFF.currentNode[ blockID ] = this.IFF.reader.getInt32(); else this.IFF.reader.skip( length );
|
|
155
149
|
break;
|
|
156
|
-
|
|
157
150
|
case 'OTAG':
|
|
158
151
|
this.IFF.parseObjectTag();
|
|
159
152
|
break;
|
|
160
|
-
|
|
161
153
|
case 'LAYR':
|
|
162
154
|
this.IFF.parseLayer( length );
|
|
163
155
|
break;
|
|
164
|
-
|
|
165
156
|
case 'PNTS':
|
|
166
157
|
this.IFF.parsePoints( length );
|
|
167
158
|
break;
|
|
168
|
-
|
|
169
159
|
case 'VMAP':
|
|
170
160
|
this.IFF.parseVertexMapping( length );
|
|
171
161
|
break;
|
|
172
|
-
|
|
173
162
|
case 'POLS':
|
|
174
163
|
this.IFF.parsePolygonList( length );
|
|
175
164
|
break;
|
|
176
|
-
|
|
177
165
|
case 'TAGS':
|
|
178
166
|
this.IFF.parseTagStrings( length );
|
|
179
167
|
break;
|
|
180
|
-
|
|
181
168
|
case 'PTAG':
|
|
182
169
|
this.IFF.parsePolygonTagMapping( length );
|
|
183
170
|
break;
|
|
184
|
-
|
|
185
171
|
case 'VMAD':
|
|
186
172
|
this.IFF.parseVertexMapping( length, true );
|
|
187
173
|
break;
|
|
188
|
-
// Misc CHUNKS
|
|
189
174
|
|
|
175
|
+
// Misc CHUNKS
|
|
190
176
|
case 'DESC':
|
|
191
177
|
// Description Line
|
|
192
178
|
this.IFF.currentForm.description = this.IFF.reader.getString();
|
|
193
179
|
break;
|
|
194
|
-
|
|
195
180
|
case 'TEXT':
|
|
196
181
|
case 'CMNT':
|
|
197
182
|
case 'NCOM':
|
|
198
183
|
this.IFF.currentForm.comment = this.IFF.reader.getString();
|
|
199
184
|
break;
|
|
200
|
-
// Envelope Form
|
|
201
185
|
|
|
186
|
+
// Envelope Form
|
|
202
187
|
case 'NAME':
|
|
203
188
|
this.IFF.currentForm.channelName = this.IFF.reader.getString();
|
|
204
189
|
break;
|
|
205
|
-
// Image Map Layer
|
|
206
190
|
|
|
191
|
+
// Image Map Layer
|
|
207
192
|
case 'WRAP':
|
|
208
193
|
this.IFF.currentForm.wrap = {
|
|
209
194
|
w: this.IFF.reader.getUint16(),
|
|
210
195
|
h: this.IFF.reader.getUint16()
|
|
211
196
|
};
|
|
212
197
|
break;
|
|
213
|
-
|
|
214
198
|
case 'IMAG':
|
|
215
199
|
const index = this.IFF.reader.getVariableLengthIndex();
|
|
216
200
|
this.IFF.currentForm.imageIndex = index;
|
|
217
201
|
break;
|
|
218
|
-
// Texture Mapping Form
|
|
219
202
|
|
|
203
|
+
// Texture Mapping Form
|
|
220
204
|
case 'OREF':
|
|
221
205
|
this.IFF.currentForm.referenceObject = this.IFF.reader.getString();
|
|
222
206
|
break;
|
|
223
|
-
|
|
224
207
|
case 'ROID':
|
|
225
208
|
this.IFF.currentForm.referenceObjectID = this.IFF.reader.getUint32();
|
|
226
209
|
break;
|
|
227
|
-
// Surface Blocks
|
|
228
210
|
|
|
211
|
+
// Surface Blocks
|
|
229
212
|
case 'SSHN':
|
|
230
213
|
this.IFF.currentSurface.surfaceShaderName = this.IFF.reader.getString();
|
|
231
214
|
break;
|
|
232
|
-
|
|
233
215
|
case 'AOVN':
|
|
234
216
|
this.IFF.currentSurface.surfaceCustomAOVName = this.IFF.reader.getString();
|
|
235
217
|
break;
|
|
236
|
-
// Nodal Blocks
|
|
237
218
|
|
|
219
|
+
// Nodal Blocks
|
|
238
220
|
case 'NSTA':
|
|
239
221
|
this.IFF.currentForm.disabled = this.IFF.reader.getUint16();
|
|
240
222
|
break;
|
|
241
|
-
|
|
242
223
|
case 'NRNM':
|
|
243
224
|
this.IFF.currentForm.realName = this.IFF.reader.getString();
|
|
244
225
|
break;
|
|
245
|
-
|
|
246
226
|
case 'NNME':
|
|
247
227
|
this.IFF.currentForm.refName = this.IFF.reader.getString();
|
|
248
228
|
this.IFF.currentSurface.nodes[ this.IFF.currentForm.refName ] = this.IFF.currentForm;
|
|
249
229
|
break;
|
|
250
|
-
// Nodal Blocks : connections
|
|
251
230
|
|
|
231
|
+
// Nodal Blocks : connections
|
|
252
232
|
case 'INME':
|
|
253
233
|
if ( ! this.IFF.currentForm.nodeName ) this.IFF.currentForm.nodeName = [];
|
|
254
234
|
this.IFF.currentForm.nodeName.push( this.IFF.reader.getString() );
|
|
255
235
|
break;
|
|
256
|
-
|
|
257
236
|
case 'IINN':
|
|
258
237
|
if ( ! this.IFF.currentForm.inputNodeName ) this.IFF.currentForm.inputNodeName = [];
|
|
259
238
|
this.IFF.currentForm.inputNodeName.push( this.IFF.reader.getString() );
|
|
260
239
|
break;
|
|
261
|
-
|
|
262
240
|
case 'IINM':
|
|
263
241
|
if ( ! this.IFF.currentForm.inputName ) this.IFF.currentForm.inputName = [];
|
|
264
242
|
this.IFF.currentForm.inputName.push( this.IFF.reader.getString() );
|
|
265
243
|
break;
|
|
266
|
-
|
|
267
244
|
case 'IONM':
|
|
268
245
|
if ( ! this.IFF.currentForm.inputOutputName ) this.IFF.currentForm.inputOutputName = [];
|
|
269
246
|
this.IFF.currentForm.inputOutputName.push( this.IFF.reader.getString() );
|
|
270
247
|
break;
|
|
271
|
-
|
|
272
248
|
case 'FNAM':
|
|
273
249
|
this.IFF.currentForm.fileName = this.IFF.reader.getString();
|
|
274
250
|
break;
|
|
275
|
-
|
|
276
251
|
case 'CHAN':
|
|
277
252
|
// NOTE: ENVL Forms may also have CHAN chunk, however ENVL is currently ignored
|
|
278
253
|
if ( length === 4 ) this.IFF.currentForm.textureChannel = this.IFF.reader.getIDTag(); else this.IFF.reader.skip( length );
|
|
279
254
|
break;
|
|
280
|
-
// LWO2 Spec chunks: these are needed since the SURF FORMs are often in LWO2 format
|
|
281
255
|
|
|
256
|
+
// LWO2 Spec chunks: these are needed since the SURF FORMs are often in LWO2 format
|
|
282
257
|
case 'SMAN':
|
|
283
258
|
const maxSmoothingAngle = this.IFF.reader.getFloat32();
|
|
284
259
|
this.IFF.currentSurface.attributes.smooth = maxSmoothingAngle < 0 ? false : true;
|
|
285
260
|
break;
|
|
286
|
-
// LWO2: Basic Surface Parameters
|
|
287
261
|
|
|
262
|
+
// LWO2: Basic Surface Parameters
|
|
288
263
|
case 'COLR':
|
|
289
264
|
this.IFF.currentSurface.attributes.Color = {
|
|
290
265
|
value: this.IFF.reader.getFloat32Array( 3 )
|
|
291
266
|
};
|
|
292
267
|
this.IFF.reader.skip( 2 ); // VX: envelope
|
|
293
|
-
|
|
294
268
|
break;
|
|
295
|
-
|
|
296
269
|
case 'LUMI':
|
|
297
270
|
this.IFF.currentSurface.attributes.Luminosity = {
|
|
298
271
|
value: this.IFF.reader.getFloat32()
|
|
299
272
|
};
|
|
300
273
|
this.IFF.reader.skip( 2 );
|
|
301
274
|
break;
|
|
302
|
-
|
|
303
275
|
case 'SPEC':
|
|
304
276
|
this.IFF.currentSurface.attributes.Specular = {
|
|
305
277
|
value: this.IFF.reader.getFloat32()
|
|
306
278
|
};
|
|
307
279
|
this.IFF.reader.skip( 2 );
|
|
308
280
|
break;
|
|
309
|
-
|
|
310
281
|
case 'DIFF':
|
|
311
282
|
this.IFF.currentSurface.attributes.Diffuse = {
|
|
312
283
|
value: this.IFF.reader.getFloat32()
|
|
313
284
|
};
|
|
314
285
|
this.IFF.reader.skip( 2 );
|
|
315
286
|
break;
|
|
316
|
-
|
|
317
287
|
case 'REFL':
|
|
318
288
|
this.IFF.currentSurface.attributes.Reflection = {
|
|
319
289
|
value: this.IFF.reader.getFloat32()
|
|
320
290
|
};
|
|
321
291
|
this.IFF.reader.skip( 2 );
|
|
322
292
|
break;
|
|
323
|
-
|
|
324
293
|
case 'GLOS':
|
|
325
294
|
this.IFF.currentSurface.attributes.Glossiness = {
|
|
326
295
|
value: this.IFF.reader.getFloat32()
|
|
327
296
|
};
|
|
328
297
|
this.IFF.reader.skip( 2 );
|
|
329
298
|
break;
|
|
330
|
-
|
|
331
299
|
case 'TRAN':
|
|
332
300
|
this.IFF.currentSurface.attributes.opacity = this.IFF.reader.getFloat32();
|
|
333
301
|
this.IFF.reader.skip( 2 );
|
|
334
302
|
break;
|
|
335
|
-
|
|
336
303
|
case 'BUMP':
|
|
337
304
|
this.IFF.currentSurface.attributes.bumpStrength = this.IFF.reader.getFloat32();
|
|
338
305
|
this.IFF.reader.skip( 2 );
|
|
339
306
|
break;
|
|
340
|
-
|
|
341
307
|
case 'SIDE':
|
|
342
308
|
this.IFF.currentSurface.attributes.side = this.IFF.reader.getUint16();
|
|
343
309
|
break;
|
|
344
|
-
|
|
345
310
|
case 'RIMG':
|
|
346
311
|
this.IFF.currentSurface.attributes.reflectionMap = this.IFF.reader.getVariableLengthIndex();
|
|
347
312
|
break;
|
|
348
|
-
|
|
349
313
|
case 'RIND':
|
|
350
314
|
this.IFF.currentSurface.attributes.refractiveIndex = this.IFF.reader.getFloat32();
|
|
351
315
|
this.IFF.reader.skip( 2 );
|
|
352
316
|
break;
|
|
353
|
-
|
|
354
317
|
case 'TIMG':
|
|
355
318
|
this.IFF.currentSurface.attributes.refractionMap = this.IFF.reader.getVariableLengthIndex();
|
|
356
319
|
break;
|
|
357
|
-
|
|
358
320
|
case 'IMAP':
|
|
359
321
|
this.IFF.currentSurface.attributes.imageMapIndex = this.IFF.reader.getUint32();
|
|
360
322
|
break;
|
|
361
|
-
|
|
362
323
|
case 'IUVI':
|
|
363
324
|
// uv channel name
|
|
364
325
|
this.IFF.currentNode.UVChannel = this.IFF.reader.getString( length );
|
|
365
326
|
break;
|
|
366
|
-
|
|
367
327
|
case 'IUTL':
|
|
368
328
|
// widthWrappingMode: 0 = Reset, 1 = Repeat, 2 = Mirror, 3 = Edge
|
|
369
329
|
this.IFF.currentNode.widthWrappingMode = this.IFF.reader.getUint32();
|
|
370
330
|
break;
|
|
371
|
-
|
|
372
331
|
case 'IVTL':
|
|
373
332
|
// heightWrappingMode
|
|
374
333
|
this.IFF.currentNode.heightWrappingMode = this.IFF.reader.getUint32();
|
|
375
334
|
break;
|
|
376
|
-
|
|
377
335
|
default:
|
|
378
336
|
this.IFF.parseUnknownCHUNK( blockID, length );
|
|
379
337
|
|
|
@@ -12,9 +12,7 @@
|
|
|
12
12
|
value: new THREE.Color( 0x000000 )
|
|
13
13
|
}
|
|
14
14
|
} ] ),
|
|
15
|
-
vertexShader:
|
|
16
|
-
/* glsl */
|
|
17
|
-
`
|
|
15
|
+
vertexShader: /* glsl */`
|
|
18
16
|
|
|
19
17
|
#define GOURAUD
|
|
20
18
|
|
|
@@ -190,9 +188,7 @@
|
|
|
190
188
|
#include <fog_vertex>
|
|
191
189
|
|
|
192
190
|
}`,
|
|
193
|
-
fragmentShader:
|
|
194
|
-
/* glsl */
|
|
195
|
-
`
|
|
191
|
+
fragmentShader: /* glsl */`
|
|
196
192
|
|
|
197
193
|
#define GOURAUD
|
|
198
194
|
|
|
@@ -291,7 +287,9 @@
|
|
|
291
287
|
#include <dithering_fragment>
|
|
292
288
|
|
|
293
289
|
}`
|
|
294
|
-
};
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
//
|
|
295
293
|
|
|
296
294
|
class MeshGouraudMaterial extends THREE.ShaderMaterial {
|
|
297
295
|
|
|
@@ -299,27 +297,33 @@
|
|
|
299
297
|
|
|
300
298
|
super();
|
|
301
299
|
this.isMeshGouraudMaterial = true;
|
|
302
|
-
this.type = 'MeshGouraudMaterial';
|
|
300
|
+
this.type = 'MeshGouraudMaterial';
|
|
301
|
+
|
|
302
|
+
//this.color = new THREE.Color( 0xffffff ); // diffuse
|
|
303
|
+
|
|
303
304
|
//this.map = null;
|
|
305
|
+
|
|
304
306
|
//this.lightMap = null;
|
|
305
307
|
//this.lightMapIntensity = 1.0;
|
|
308
|
+
|
|
306
309
|
//this.aoMap = null;
|
|
307
310
|
//this.aoMapIntensity = 1.0;
|
|
311
|
+
|
|
308
312
|
//this.emissive = new THREE.Color( 0x000000 );
|
|
309
313
|
//this.emissiveIntensity = 1.0;
|
|
310
314
|
//this.emissiveMap = null;
|
|
315
|
+
|
|
311
316
|
//this.specularMap = null;
|
|
317
|
+
|
|
312
318
|
//this.alphaMap = null;
|
|
313
|
-
//this.envMap = null;
|
|
314
319
|
|
|
320
|
+
//this.envMap = null;
|
|
315
321
|
this.combine = THREE.MultiplyOperation; // combine has no uniform
|
|
316
322
|
//this.reflectivity = 1;
|
|
317
323
|
//this.refractionRatio = 0.98;
|
|
318
324
|
|
|
319
325
|
this.fog = false; // set to use scene fog
|
|
320
|
-
|
|
321
326
|
this.lights = true; // set to use scene lights
|
|
322
|
-
|
|
323
327
|
this.clipping = false; // set to use user-defined clipping planes
|
|
324
328
|
|
|
325
329
|
const shader = GouraudShader;
|
|
@@ -328,7 +332,6 @@
|
|
|
328
332
|
this.vertexShader = shader.vertexShader;
|
|
329
333
|
this.fragmentShader = shader.fragmentShader;
|
|
330
334
|
const exposePropertyNames = [ 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity', 'emissive', 'emissiveIntensity', 'emissiveMap', 'specularMap', 'alphaMap', 'envMap', 'reflectivity', 'refractionRatio', 'opacity', 'diffuse' ];
|
|
331
|
-
|
|
332
335
|
for ( const propertyName of exposePropertyNames ) {
|
|
333
336
|
|
|
334
337
|
Object.defineProperty( this, propertyName, {
|
|
@@ -350,7 +353,6 @@
|
|
|
350
353
|
this.setValues( parameters );
|
|
351
354
|
|
|
352
355
|
}
|
|
353
|
-
|
|
354
356
|
copy( source ) {
|
|
355
357
|
|
|
356
358
|
super.copy( source );
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _v1 = new THREE.Vector3();
|
|
4
|
-
|
|
5
4
|
const _v2 = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
const _v3 = new THREE.Vector3();
|
|
8
|
-
|
|
9
6
|
const EPS = 1e-10;
|
|
10
|
-
|
|
11
7
|
class Capsule {
|
|
12
8
|
|
|
13
9
|
constructor( start = new THREE.Vector3( 0, 0, 0 ), end = new THREE.Vector3( 0, 1, 0 ), radius = 1 ) {
|
|
@@ -17,13 +13,11 @@
|
|
|
17
13
|
this.radius = radius;
|
|
18
14
|
|
|
19
15
|
}
|
|
20
|
-
|
|
21
16
|
clone() {
|
|
22
17
|
|
|
23
18
|
return new Capsule( this.start.clone(), this.end.clone(), this.radius );
|
|
24
19
|
|
|
25
20
|
}
|
|
26
|
-
|
|
27
21
|
set( start, end, radius ) {
|
|
28
22
|
|
|
29
23
|
this.start.copy( start );
|
|
@@ -31,7 +25,6 @@
|
|
|
31
25
|
this.radius = radius;
|
|
32
26
|
|
|
33
27
|
}
|
|
34
|
-
|
|
35
28
|
copy( capsule ) {
|
|
36
29
|
|
|
37
30
|
this.start.copy( capsule.start );
|
|
@@ -39,40 +32,32 @@
|
|
|
39
32
|
this.radius = capsule.radius;
|
|
40
33
|
|
|
41
34
|
}
|
|
42
|
-
|
|
43
35
|
getCenter( target ) {
|
|
44
36
|
|
|
45
37
|
return target.copy( this.end ).add( this.start ).multiplyScalar( 0.5 );
|
|
46
38
|
|
|
47
39
|
}
|
|
48
|
-
|
|
49
40
|
translate( v ) {
|
|
50
41
|
|
|
51
42
|
this.start.add( v );
|
|
52
43
|
this.end.add( v );
|
|
53
44
|
|
|
54
45
|
}
|
|
55
|
-
|
|
56
46
|
checkAABBAxis( p1x, p1y, p2x, p2y, minx, maxx, miny, maxy, radius ) {
|
|
57
47
|
|
|
58
48
|
return ( minx - p1x < radius || minx - p2x < radius ) && ( p1x - maxx < radius || p2x - maxx < radius ) && ( miny - p1y < radius || miny - p2y < radius ) && ( p1y - maxy < radius || p2y - maxy < radius );
|
|
59
49
|
|
|
60
50
|
}
|
|
61
|
-
|
|
62
51
|
intersectsBox( box ) {
|
|
63
52
|
|
|
64
53
|
return this.checkAABBAxis( this.start.x, this.start.y, this.end.x, this.end.y, box.min.x, box.max.x, box.min.y, box.max.y, this.radius ) && this.checkAABBAxis( this.start.x, this.start.z, this.end.x, this.end.z, box.min.x, box.max.x, box.min.z, box.max.z, this.radius ) && this.checkAABBAxis( this.start.y, this.start.z, this.end.y, this.end.z, box.min.y, box.max.y, box.min.z, box.max.z, this.radius );
|
|
65
54
|
|
|
66
55
|
}
|
|
67
|
-
|
|
68
56
|
lineLineMinimumPoints( line1, line2 ) {
|
|
69
57
|
|
|
70
58
|
const r = _v1.copy( line1.end ).sub( line1.start );
|
|
71
|
-
|
|
72
59
|
const s = _v2.copy( line2.end ).sub( line2.start );
|
|
73
|
-
|
|
74
60
|
const w = _v3.copy( line2.start ).sub( line1.start );
|
|
75
|
-
|
|
76
61
|
const a = r.dot( s ),
|
|
77
62
|
b = r.dot( r ),
|
|
78
63
|
c = s.dot( s ),
|
|
@@ -80,12 +65,10 @@
|
|
|
80
65
|
e = r.dot( w );
|
|
81
66
|
let t1, t2;
|
|
82
67
|
const divisor = b * c - a * a;
|
|
83
|
-
|
|
84
68
|
if ( Math.abs( divisor ) < EPS ) {
|
|
85
69
|
|
|
86
70
|
const d1 = - d / c;
|
|
87
71
|
const d2 = ( a - d ) / c;
|
|
88
|
-
|
|
89
72
|
if ( Math.abs( d1 - 0.5 ) < Math.abs( d2 - 0.5 ) ) {
|
|
90
73
|
|
|
91
74
|
t1 = 0;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _hsl = {};
|
|
4
|
-
|
|
5
4
|
class ColorConverter {
|
|
6
5
|
|
|
7
6
|
static setHSV( color, h, s, v ) {
|
|
8
7
|
|
|
9
8
|
// https://gist.github.com/xpansive/1337890#file-index-js
|
|
9
|
+
|
|
10
10
|
h = THREE.MathUtils.euclideanModulo( h, 1 );
|
|
11
11
|
s = THREE.MathUtils.clamp( s, 0, 1 );
|
|
12
12
|
v = THREE.MathUtils.clamp( v, 0, 1 );
|
|
13
13
|
return color.setHSL( h, s * v / ( ( h = ( 2 - s ) * v ) < 1 ? h : 2 - h ), h * 0.5 );
|
|
14
14
|
|
|
15
15
|
}
|
|
16
|
-
|
|
17
16
|
static getHSV( color, target ) {
|
|
18
17
|
|
|
19
|
-
color.getHSL( _hsl );
|
|
18
|
+
color.getHSL( _hsl );
|
|
20
19
|
|
|
20
|
+
// based on https://gist.github.com/xpansive/1337890#file-index-js
|
|
21
21
|
_hsl.s *= _hsl.l < 0.5 ? _hsl.l : 1 - _hsl.l;
|
|
22
22
|
target.h = _hsl.h;
|
|
23
23
|
target.s = 2 * _hsl.s / ( _hsl.l + _hsl.s );
|