@needle-tools/three 0.145.2 → 0.146.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +3559 -6924
- package/build/three.js +3559 -6924
- package/build/three.min.js +1 -2
- package/build/three.module.js +732 -339
- 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 +94 -28
- 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/WebGLCubeUVMaps.js +1 -1
- 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
|
@@ -9,13 +9,12 @@
|
|
|
9
9
|
this.type = 'LineGeometry';
|
|
10
10
|
|
|
11
11
|
}
|
|
12
|
-
|
|
13
12
|
setPositions( array ) {
|
|
14
13
|
|
|
15
14
|
// converts [ x1, y1, z1, x2, y2, z2, ... ] to pairs format
|
|
15
|
+
|
|
16
16
|
const length = array.length - 3;
|
|
17
17
|
const points = new Float32Array( 2 * length );
|
|
18
|
-
|
|
19
18
|
for ( let i = 0; i < length; i += 3 ) {
|
|
20
19
|
|
|
21
20
|
points[ 2 * i ] = array[ i ];
|
|
@@ -31,13 +30,12 @@
|
|
|
31
30
|
return this;
|
|
32
31
|
|
|
33
32
|
}
|
|
34
|
-
|
|
35
33
|
setColors( array ) {
|
|
36
34
|
|
|
37
35
|
// converts [ r1, g1, b1, r2, g2, b2, ... ] to pairs format
|
|
36
|
+
|
|
38
37
|
const length = array.length - 3;
|
|
39
38
|
const colors = new Float32Array( 2 * length );
|
|
40
|
-
|
|
41
39
|
for ( let i = 0; i < length; i += 3 ) {
|
|
42
40
|
|
|
43
41
|
colors[ 2 * i ] = array[ i ];
|
|
@@ -53,11 +51,11 @@
|
|
|
53
51
|
return this;
|
|
54
52
|
|
|
55
53
|
}
|
|
56
|
-
|
|
57
54
|
fromLine( line ) {
|
|
58
55
|
|
|
59
56
|
const geometry = line.geometry;
|
|
60
57
|
this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
|
|
58
|
+
|
|
61
59
|
// set colors, maybe
|
|
62
60
|
|
|
63
61
|
return this;
|
|
@@ -34,13 +34,11 @@
|
|
|
34
34
|
gapSize: {
|
|
35
35
|
value: 1
|
|
36
36
|
} // todo FIX - maybe change to totalSize
|
|
37
|
-
|
|
38
37
|
};
|
|
38
|
+
|
|
39
39
|
THREE.ShaderLib[ 'line' ] = {
|
|
40
40
|
uniforms: THREE.UniformsUtils.merge( [ THREE.UniformsLib.common, THREE.UniformsLib.fog, THREE.UniformsLib.line ] ),
|
|
41
|
-
vertexShader:
|
|
42
|
-
/* glsl */
|
|
43
|
-
`
|
|
41
|
+
vertexShader: /* glsl */`
|
|
44
42
|
#include <common>
|
|
45
43
|
#include <color_pars_vertex>
|
|
46
44
|
#include <fog_pars_vertex>
|
|
@@ -269,9 +267,7 @@
|
|
|
269
267
|
|
|
270
268
|
}
|
|
271
269
|
`,
|
|
272
|
-
fragmentShader:
|
|
273
|
-
/* glsl */
|
|
274
|
-
`
|
|
270
|
+
fragmentShader: /* glsl */`
|
|
275
271
|
uniform vec3 diffuse;
|
|
276
272
|
uniform float opacity;
|
|
277
273
|
uniform float linewidth;
|
|
@@ -432,7 +428,6 @@
|
|
|
432
428
|
}
|
|
433
429
|
`
|
|
434
430
|
};
|
|
435
|
-
|
|
436
431
|
class LineMaterial extends THREE.ShaderMaterial {
|
|
437
432
|
|
|
438
433
|
constructor( parameters ) {
|
|
@@ -443,8 +438,8 @@
|
|
|
443
438
|
vertexShader: THREE.ShaderLib[ 'line' ].vertexShader,
|
|
444
439
|
fragmentShader: THREE.ShaderLib[ 'line' ].fragmentShader,
|
|
445
440
|
clipping: true // required for clipping support
|
|
446
|
-
|
|
447
441
|
} );
|
|
442
|
+
|
|
448
443
|
this.isLineMaterial = true;
|
|
449
444
|
Object.defineProperties( this, {
|
|
450
445
|
color: {
|
|
@@ -501,7 +496,6 @@
|
|
|
501
496
|
return Boolean( 'USE_DASH' in this.defines );
|
|
502
497
|
|
|
503
498
|
},
|
|
504
|
-
|
|
505
499
|
set( value ) {
|
|
506
500
|
|
|
507
501
|
if ( Boolean( value ) !== Boolean( 'USE_DASH' in this.defines ) ) {
|
|
@@ -521,7 +515,6 @@
|
|
|
521
515
|
}
|
|
522
516
|
|
|
523
517
|
}
|
|
524
|
-
|
|
525
518
|
},
|
|
526
519
|
dashScale: {
|
|
527
520
|
enumerable: true,
|
|
@@ -1,49 +1,32 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _start = new THREE.Vector3();
|
|
4
|
-
|
|
5
4
|
const _end = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
const _start4 = new THREE.Vector4();
|
|
8
|
-
|
|
9
6
|
const _end4 = new THREE.Vector4();
|
|
10
|
-
|
|
11
7
|
const _ssOrigin = new THREE.Vector4();
|
|
12
|
-
|
|
13
8
|
const _ssOrigin3 = new THREE.Vector3();
|
|
14
|
-
|
|
15
9
|
const _mvMatrix = new THREE.Matrix4();
|
|
16
|
-
|
|
17
10
|
const _line = new THREE.Line3();
|
|
18
|
-
|
|
19
11
|
const _closestPoint = new THREE.Vector3();
|
|
20
|
-
|
|
21
12
|
const _box = new THREE.Box3();
|
|
22
|
-
|
|
23
13
|
const _sphere = new THREE.Sphere();
|
|
24
|
-
|
|
25
14
|
const _clipToWorldVector = new THREE.Vector4();
|
|
15
|
+
let _ray, _instanceStart, _instanceEnd, _lineWidth;
|
|
26
16
|
|
|
27
|
-
|
|
17
|
+
// Returns the margin required to expand by in world space given the distance from the camera,
|
|
28
18
|
// line width, resolution, and camera projection
|
|
29
|
-
|
|
30
|
-
|
|
31
19
|
function getWorldSpaceHalfWidth( camera, distance, resolution ) {
|
|
32
20
|
|
|
33
21
|
// transform into clip space, adjust the x and y values by the pixel width offset, then
|
|
34
22
|
// transform back into world space to get world offset. Note clip space is [-1, 1] so full
|
|
35
23
|
// width does not need to be halved.
|
|
36
24
|
_clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix );
|
|
37
|
-
|
|
38
25
|
_clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
|
|
39
|
-
|
|
40
26
|
_clipToWorldVector.x = _lineWidth / resolution.width;
|
|
41
27
|
_clipToWorldVector.y = _lineWidth / resolution.height;
|
|
42
|
-
|
|
43
28
|
_clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse );
|
|
44
|
-
|
|
45
29
|
_clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
|
|
46
|
-
|
|
47
30
|
return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) );
|
|
48
31
|
|
|
49
32
|
}
|
|
@@ -53,16 +36,11 @@
|
|
|
53
36
|
for ( let i = 0, l = _instanceStart.count; i < l; i ++ ) {
|
|
54
37
|
|
|
55
38
|
_line.start.fromBufferAttribute( _instanceStart, i );
|
|
56
|
-
|
|
57
39
|
_line.end.fromBufferAttribute( _instanceEnd, i );
|
|
58
|
-
|
|
59
40
|
const pointOnLine = new THREE.Vector3();
|
|
60
41
|
const point = new THREE.Vector3();
|
|
61
|
-
|
|
62
42
|
_ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
|
|
63
|
-
|
|
64
43
|
const isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5;
|
|
65
|
-
|
|
66
44
|
if ( isInside ) {
|
|
67
45
|
|
|
68
46
|
intersects.push( {
|
|
@@ -91,119 +69,98 @@
|
|
|
91
69
|
const geometry = lineSegments.geometry;
|
|
92
70
|
const instanceStart = geometry.attributes.instanceStart;
|
|
93
71
|
const instanceEnd = geometry.attributes.instanceEnd;
|
|
94
|
-
const near = - camera.near;
|
|
72
|
+
const near = - camera.near;
|
|
73
|
+
|
|
74
|
+
//
|
|
75
|
+
|
|
95
76
|
// pick a point 1 unit out along the ray to avoid the ray origin
|
|
96
77
|
// sitting at the camera origin which will cause "w" to be 0 when
|
|
97
78
|
// applying the projection matrix.
|
|
79
|
+
_ray.at( 1, _ssOrigin );
|
|
98
80
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
81
|
+
// ndc space [ - 1.0, 1.0 ]
|
|
102
82
|
_ssOrigin.w = 1;
|
|
103
|
-
|
|
104
83
|
_ssOrigin.applyMatrix4( camera.matrixWorldInverse );
|
|
105
|
-
|
|
106
84
|
_ssOrigin.applyMatrix4( projectionMatrix );
|
|
85
|
+
_ssOrigin.multiplyScalar( 1 / _ssOrigin.w );
|
|
107
86
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
87
|
+
// screen space
|
|
111
88
|
_ssOrigin.x *= resolution.x / 2;
|
|
112
89
|
_ssOrigin.y *= resolution.y / 2;
|
|
113
90
|
_ssOrigin.z = 0;
|
|
114
|
-
|
|
115
91
|
_ssOrigin3.copy( _ssOrigin );
|
|
116
|
-
|
|
117
92
|
_mvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld );
|
|
118
|
-
|
|
119
93
|
for ( let i = 0, l = instanceStart.count; i < l; i ++ ) {
|
|
120
94
|
|
|
121
95
|
_start4.fromBufferAttribute( instanceStart, i );
|
|
122
|
-
|
|
123
96
|
_end4.fromBufferAttribute( instanceEnd, i );
|
|
124
|
-
|
|
125
97
|
_start4.w = 1;
|
|
126
|
-
_end4.w = 1;
|
|
98
|
+
_end4.w = 1;
|
|
127
99
|
|
|
100
|
+
// camera space
|
|
128
101
|
_start4.applyMatrix4( _mvMatrix );
|
|
102
|
+
_end4.applyMatrix4( _mvMatrix );
|
|
129
103
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
104
|
+
// skip the segment if it's entirely behind the camera
|
|
133
105
|
const isBehindCameraNear = _start4.z > near && _end4.z > near;
|
|
134
|
-
|
|
135
106
|
if ( isBehindCameraNear ) {
|
|
136
107
|
|
|
137
108
|
continue;
|
|
138
109
|
|
|
139
|
-
}
|
|
140
|
-
|
|
110
|
+
}
|
|
141
111
|
|
|
112
|
+
// trim the segment if it extends behind camera near
|
|
142
113
|
if ( _start4.z > near ) {
|
|
143
114
|
|
|
144
115
|
const deltaDist = _start4.z - _end4.z;
|
|
145
116
|
const t = ( _start4.z - near ) / deltaDist;
|
|
146
|
-
|
|
147
117
|
_start4.lerp( _end4, t );
|
|
148
118
|
|
|
149
119
|
} else if ( _end4.z > near ) {
|
|
150
120
|
|
|
151
121
|
const deltaDist = _end4.z - _start4.z;
|
|
152
122
|
const t = ( _end4.z - near ) / deltaDist;
|
|
153
|
-
|
|
154
123
|
_end4.lerp( _start4, t );
|
|
155
124
|
|
|
156
|
-
}
|
|
157
|
-
|
|
125
|
+
}
|
|
158
126
|
|
|
127
|
+
// clip space
|
|
159
128
|
_start4.applyMatrix4( projectionMatrix );
|
|
129
|
+
_end4.applyMatrix4( projectionMatrix );
|
|
160
130
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
131
|
+
// ndc space [ - 1.0, 1.0 ]
|
|
164
132
|
_start4.multiplyScalar( 1 / _start4.w );
|
|
133
|
+
_end4.multiplyScalar( 1 / _end4.w );
|
|
165
134
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
135
|
+
// screen space
|
|
169
136
|
_start4.x *= resolution.x / 2;
|
|
170
137
|
_start4.y *= resolution.y / 2;
|
|
171
138
|
_end4.x *= resolution.x / 2;
|
|
172
|
-
_end4.y *= resolution.y / 2;
|
|
139
|
+
_end4.y *= resolution.y / 2;
|
|
173
140
|
|
|
141
|
+
// create 2d segment
|
|
174
142
|
_line.start.copy( _start4 );
|
|
175
|
-
|
|
176
143
|
_line.start.z = 0;
|
|
177
|
-
|
|
178
144
|
_line.end.copy( _end4 );
|
|
145
|
+
_line.end.z = 0;
|
|
179
146
|
|
|
180
|
-
|
|
181
|
-
|
|
147
|
+
// get closest point on ray to segment
|
|
182
148
|
const param = _line.closestPointToPointParameter( _ssOrigin3, true );
|
|
149
|
+
_line.at( param, _closestPoint );
|
|
183
150
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
151
|
+
// check if the intersection point is within clip space
|
|
187
152
|
const zPos = THREE.MathUtils.lerp( _start4.z, _end4.z, param );
|
|
188
153
|
const isInClipSpace = zPos >= - 1 && zPos <= 1;
|
|
189
|
-
|
|
190
154
|
const isInside = _ssOrigin3.distanceTo( _closestPoint ) < _lineWidth * 0.5;
|
|
191
|
-
|
|
192
155
|
if ( isInClipSpace && isInside ) {
|
|
193
156
|
|
|
194
157
|
_line.start.fromBufferAttribute( instanceStart, i );
|
|
195
|
-
|
|
196
158
|
_line.end.fromBufferAttribute( instanceEnd, i );
|
|
197
|
-
|
|
198
159
|
_line.start.applyMatrix4( matrixWorld );
|
|
199
|
-
|
|
200
160
|
_line.end.applyMatrix4( matrixWorld );
|
|
201
|
-
|
|
202
161
|
const pointOnLine = new THREE.Vector3();
|
|
203
162
|
const point = new THREE.Vector3();
|
|
204
|
-
|
|
205
163
|
_ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
|
|
206
|
-
|
|
207
164
|
intersects.push( {
|
|
208
165
|
point: point,
|
|
209
166
|
pointOnLine: pointOnLine,
|
|
@@ -231,8 +188,9 @@
|
|
|
231
188
|
this.isLineSegments2 = true;
|
|
232
189
|
this.type = 'LineSegments2';
|
|
233
190
|
|
|
234
|
-
}
|
|
191
|
+
}
|
|
235
192
|
|
|
193
|
+
// for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
|
|
236
194
|
|
|
237
195
|
computeLineDistances() {
|
|
238
196
|
|
|
@@ -240,13 +198,10 @@
|
|
|
240
198
|
const instanceStart = geometry.attributes.instanceStart;
|
|
241
199
|
const instanceEnd = geometry.attributes.instanceEnd;
|
|
242
200
|
const lineDistances = new Float32Array( 2 * instanceStart.count );
|
|
243
|
-
|
|
244
201
|
for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
|
|
245
202
|
|
|
246
203
|
_start.fromBufferAttribute( instanceStart, i );
|
|
247
|
-
|
|
248
204
|
_end.fromBufferAttribute( instanceEnd, i );
|
|
249
|
-
|
|
250
205
|
lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
|
|
251
206
|
lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
|
|
252
207
|
|
|
@@ -255,18 +210,15 @@
|
|
|
255
210
|
const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
|
|
256
211
|
|
|
257
212
|
geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
|
|
258
|
-
|
|
259
213
|
geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
|
|
260
214
|
|
|
261
215
|
return this;
|
|
262
216
|
|
|
263
217
|
}
|
|
264
|
-
|
|
265
218
|
raycast( raycaster, intersects ) {
|
|
266
219
|
|
|
267
220
|
const worldUnits = this.material.worldUnits;
|
|
268
221
|
const camera = raycaster.camera;
|
|
269
|
-
|
|
270
222
|
if ( camera === null && ! worldUnits ) {
|
|
271
223
|
|
|
272
224
|
console.error( 'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.' );
|
|
@@ -280,19 +232,19 @@
|
|
|
280
232
|
const material = this.material;
|
|
281
233
|
_lineWidth = material.linewidth + threshold;
|
|
282
234
|
_instanceStart = geometry.attributes.instanceStart;
|
|
283
|
-
_instanceEnd = geometry.attributes.instanceEnd;
|
|
235
|
+
_instanceEnd = geometry.attributes.instanceEnd;
|
|
284
236
|
|
|
237
|
+
// check if we intersect the sphere bounds
|
|
285
238
|
if ( geometry.boundingSphere === null ) {
|
|
286
239
|
|
|
287
240
|
geometry.computeBoundingSphere();
|
|
288
241
|
|
|
289
242
|
}
|
|
290
243
|
|
|
291
|
-
_sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
|
|
292
|
-
|
|
244
|
+
_sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
|
|
293
245
|
|
|
246
|
+
// increase the sphere bounds by the worst case line screen space width
|
|
294
247
|
let sphereMargin;
|
|
295
|
-
|
|
296
248
|
if ( worldUnits ) {
|
|
297
249
|
|
|
298
250
|
sphereMargin = _lineWidth * 0.5;
|
|
@@ -305,25 +257,23 @@
|
|
|
305
257
|
}
|
|
306
258
|
|
|
307
259
|
_sphere.radius += sphereMargin;
|
|
308
|
-
|
|
309
260
|
if ( _ray.intersectsSphere( _sphere ) === false ) {
|
|
310
261
|
|
|
311
262
|
return;
|
|
312
263
|
|
|
313
|
-
}
|
|
314
|
-
|
|
264
|
+
}
|
|
315
265
|
|
|
266
|
+
// check if we intersect the box bounds
|
|
316
267
|
if ( geometry.boundingBox === null ) {
|
|
317
268
|
|
|
318
269
|
geometry.computeBoundingBox();
|
|
319
270
|
|
|
320
271
|
}
|
|
321
272
|
|
|
322
|
-
_box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
|
|
323
|
-
|
|
273
|
+
_box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
|
|
324
274
|
|
|
275
|
+
// increase the box bounds by the worst case line width
|
|
325
276
|
let boxMargin;
|
|
326
|
-
|
|
327
277
|
if ( worldUnits ) {
|
|
328
278
|
|
|
329
279
|
boxMargin = _lineWidth * 0.5;
|
|
@@ -336,7 +286,6 @@
|
|
|
336
286
|
}
|
|
337
287
|
|
|
338
288
|
_box.expandByScalar( boxMargin );
|
|
339
|
-
|
|
340
289
|
if ( _ray.intersectsBox( _box ) === false ) {
|
|
341
290
|
|
|
342
291
|
return;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _box = new THREE.Box3();
|
|
4
|
-
|
|
5
4
|
const _vector = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
class LineSegmentsGeometry extends THREE.InstancedBufferGeometry {
|
|
8
6
|
|
|
9
7
|
constructor() {
|
|
@@ -19,12 +17,10 @@
|
|
|
19
17
|
this.setAttribute( 'uv', new THREE.Float32BufferAttribute( uvs, 2 ) );
|
|
20
18
|
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
applyMatrix4( matrix ) {
|
|
24
21
|
|
|
25
22
|
const start = this.attributes.instanceStart;
|
|
26
23
|
const end = this.attributes.instanceEnd;
|
|
27
|
-
|
|
28
24
|
if ( start !== undefined ) {
|
|
29
25
|
|
|
30
26
|
start.applyMatrix4( matrix );
|
|
@@ -48,11 +44,9 @@
|
|
|
48
44
|
return this;
|
|
49
45
|
|
|
50
46
|
}
|
|
51
|
-
|
|
52
47
|
setPositions( array ) {
|
|
53
48
|
|
|
54
49
|
let lineSegments;
|
|
55
|
-
|
|
56
50
|
if ( array instanceof Float32Array ) {
|
|
57
51
|
|
|
58
52
|
lineSegments = array;
|
|
@@ -66,8 +60,8 @@
|
|
|
66
60
|
const instanceBuffer = new THREE.InstancedInterleavedBuffer( lineSegments, 6, 1 ); // xyz, xyz
|
|
67
61
|
|
|
68
62
|
this.setAttribute( 'instanceStart', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz
|
|
69
|
-
|
|
70
63
|
this.setAttribute( 'instanceEnd', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz
|
|
64
|
+
|
|
71
65
|
//
|
|
72
66
|
|
|
73
67
|
this.computeBoundingBox();
|
|
@@ -75,11 +69,9 @@
|
|
|
75
69
|
return this;
|
|
76
70
|
|
|
77
71
|
}
|
|
78
|
-
|
|
79
72
|
setColors( array ) {
|
|
80
73
|
|
|
81
74
|
let colors;
|
|
82
|
-
|
|
83
75
|
if ( array instanceof Float32Array ) {
|
|
84
76
|
|
|
85
77
|
colors = array;
|
|
@@ -93,45 +85,42 @@
|
|
|
93
85
|
const instanceColorBuffer = new THREE.InstancedInterleavedBuffer( colors, 6, 1 ); // rgb, rgb
|
|
94
86
|
|
|
95
87
|
this.setAttribute( 'instanceColorStart', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 0 ) ); // rgb
|
|
96
|
-
|
|
97
88
|
this.setAttribute( 'instanceColorEnd', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 3 ) ); // rgb
|
|
98
89
|
|
|
99
90
|
return this;
|
|
100
91
|
|
|
101
92
|
}
|
|
102
|
-
|
|
103
93
|
fromWireframeGeometry( geometry ) {
|
|
104
94
|
|
|
105
95
|
this.setPositions( geometry.attributes.position.array );
|
|
106
96
|
return this;
|
|
107
97
|
|
|
108
98
|
}
|
|
109
|
-
|
|
110
99
|
fromEdgesGeometry( geometry ) {
|
|
111
100
|
|
|
112
101
|
this.setPositions( geometry.attributes.position.array );
|
|
113
102
|
return this;
|
|
114
103
|
|
|
115
104
|
}
|
|
116
|
-
|
|
117
105
|
fromMesh( mesh ) {
|
|
118
106
|
|
|
119
|
-
this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) );
|
|
107
|
+
this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) );
|
|
108
|
+
|
|
109
|
+
// set colors, maybe
|
|
120
110
|
|
|
121
111
|
return this;
|
|
122
112
|
|
|
123
113
|
}
|
|
124
|
-
|
|
125
114
|
fromLineSegments( lineSegments ) {
|
|
126
115
|
|
|
127
116
|
const geometry = lineSegments.geometry;
|
|
128
117
|
this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
|
|
118
|
+
|
|
129
119
|
// set colors, maybe
|
|
130
120
|
|
|
131
121
|
return this;
|
|
132
122
|
|
|
133
123
|
}
|
|
134
|
-
|
|
135
124
|
computeBoundingBox() {
|
|
136
125
|
|
|
137
126
|
if ( this.boundingBox === null ) {
|
|
@@ -142,19 +131,15 @@
|
|
|
142
131
|
|
|
143
132
|
const start = this.attributes.instanceStart;
|
|
144
133
|
const end = this.attributes.instanceEnd;
|
|
145
|
-
|
|
146
134
|
if ( start !== undefined && end !== undefined ) {
|
|
147
135
|
|
|
148
136
|
this.boundingBox.setFromBufferAttribute( start );
|
|
149
|
-
|
|
150
137
|
_box.setFromBufferAttribute( end );
|
|
151
|
-
|
|
152
138
|
this.boundingBox.union( _box );
|
|
153
139
|
|
|
154
140
|
}
|
|
155
141
|
|
|
156
142
|
}
|
|
157
|
-
|
|
158
143
|
computeBoundingSphere() {
|
|
159
144
|
|
|
160
145
|
if ( this.boundingSphere === null ) {
|
|
@@ -171,27 +156,21 @@
|
|
|
171
156
|
|
|
172
157
|
const start = this.attributes.instanceStart;
|
|
173
158
|
const end = this.attributes.instanceEnd;
|
|
174
|
-
|
|
175
159
|
if ( start !== undefined && end !== undefined ) {
|
|
176
160
|
|
|
177
161
|
const center = this.boundingSphere.center;
|
|
178
162
|
this.boundingBox.getCenter( center );
|
|
179
163
|
let maxRadiusSq = 0;
|
|
180
|
-
|
|
181
164
|
for ( let i = 0, il = start.count; i < il; i ++ ) {
|
|
182
165
|
|
|
183
166
|
_vector.fromBufferAttribute( start, i );
|
|
184
|
-
|
|
185
167
|
maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );
|
|
186
|
-
|
|
187
168
|
_vector.fromBufferAttribute( end, i );
|
|
188
|
-
|
|
189
169
|
maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );
|
|
190
170
|
|
|
191
171
|
}
|
|
192
172
|
|
|
193
173
|
this.boundingSphere.radius = Math.sqrt( maxRadiusSq );
|
|
194
|
-
|
|
195
174
|
if ( isNaN( this.boundingSphere.radius ) ) {
|
|
196
175
|
|
|
197
176
|
console.error( 'THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this );
|
|
@@ -201,10 +180,10 @@
|
|
|
201
180
|
}
|
|
202
181
|
|
|
203
182
|
}
|
|
183
|
+
toJSON() {
|
|
204
184
|
|
|
205
|
-
|
|
185
|
+
// todo
|
|
206
186
|
}
|
|
207
|
-
|
|
208
187
|
applyMatrix( matrix ) {
|
|
209
188
|
|
|
210
189
|
console.warn( 'THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().' );
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _start = new THREE.Vector3();
|
|
4
|
-
|
|
5
4
|
const _end = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
class Wireframe extends THREE.Mesh {
|
|
8
6
|
|
|
9
7
|
constructor( geometry = new THREE.LineSegmentsGeometry(), material = new THREE.LineMaterial( {
|
|
@@ -14,8 +12,9 @@
|
|
|
14
12
|
this.isWireframe = true;
|
|
15
13
|
this.type = 'Wireframe';
|
|
16
14
|
|
|
17
|
-
}
|
|
15
|
+
}
|
|
18
16
|
|
|
17
|
+
// for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
|
|
19
18
|
|
|
20
19
|
computeLineDistances() {
|
|
21
20
|
|
|
@@ -23,13 +22,10 @@
|
|
|
23
22
|
const instanceStart = geometry.attributes.instanceStart;
|
|
24
23
|
const instanceEnd = geometry.attributes.instanceEnd;
|
|
25
24
|
const lineDistances = new Float32Array( 2 * instanceStart.count );
|
|
26
|
-
|
|
27
25
|
for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
|
|
28
26
|
|
|
29
27
|
_start.fromBufferAttribute( instanceStart, i );
|
|
30
|
-
|
|
31
28
|
_end.fromBufferAttribute( instanceEnd, i );
|
|
32
|
-
|
|
33
29
|
lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
|
|
34
30
|
lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
|
|
35
31
|
|
|
@@ -38,7 +34,6 @@
|
|
|
38
34
|
const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
|
|
39
35
|
|
|
40
36
|
geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
|
|
41
|
-
|
|
42
37
|
geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
|
|
43
38
|
|
|
44
39
|
return this;
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
super();
|
|
8
8
|
this.isWireframeGeometry2 = true;
|
|
9
9
|
this.type = 'WireframeGeometry2';
|
|
10
|
-
this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) );
|
|
10
|
+
this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) );
|
|
11
|
+
|
|
12
|
+
// set colors, maybe
|
|
11
13
|
|
|
12
14
|
}
|
|
13
15
|
|