super-three 0.144.0 → 0.147.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/README.md +1 -1
- package/build/three.cjs +735 -387
- package/build/three.js +735 -387
- package/build/three.min.js +1 -1
- package/build/three.module.js +910 -408
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- 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 +125 -99
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +85 -170
- 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 +141 -317
- 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 +113 -27
- 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 +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- 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 +40 -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 +228 -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 +287 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +409 -706
- 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/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 +62 -48
- 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 +185 -141
- 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 +26 -16
- 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/RenderPixelatedPass.js +215 -0
- 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 -8
- 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 +236 -170
- 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 +27 -3
- package/examples/jsm/animation/MMDPhysics.js +25 -0
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/FirstPersonControls.js +20 -20
- package/examples/jsm/controls/FlyControls.js +16 -17
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/controls/TrackballControls.js +14 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/exporters/GLTFExporter.js +0 -79
- package/examples/jsm/exporters/USDZExporter.js +93 -1
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +5 -6
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +18 -2
- package/examples/jsm/loaders/GLTFLoader.js +269 -428
- 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 +351 -111
- package/examples/jsm/loaders/VRMLLoader.js +13 -1
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
- package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
- package/examples/jsm/nodes/Nodes.js +30 -3
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
- 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 +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +31 -8
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
- 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/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- 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/{Disclaimer.md → DISCLAIMER.md} +1 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
- package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
- 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/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +21 -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 +21 -1
- 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 +56 -35
- 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 +41 -9
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +13 -13
- package/src/Three.js +1 -0
- package/src/animation/PropertyBinding.js +7 -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/core/InterleavedBufferAttribute.js +4 -4
- package/src/extras/Earcut.js +67 -67
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PlaneHelper.js +9 -0
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +7 -0
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/LightShadow.js +1 -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/materials/MeshPhysicalMaterial.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 +36 -21
- 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/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- 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/vsm.glsl.js +0 -3
- 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 +78 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +152 -24
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +70 -2
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Texture.js +2 -1
- 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,68 +1,48 @@
|
|
|
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
|
}
|
|
50
33
|
|
|
51
34
|
function raycastWorldUnits( lineSegments, intersects ) {
|
|
52
35
|
|
|
36
|
+
const matrixWorld = lineSegments.matrixWorld;
|
|
53
37
|
for ( let i = 0, l = _instanceStart.count; i < l; i ++ ) {
|
|
54
38
|
|
|
55
39
|
_line.start.fromBufferAttribute( _instanceStart, i );
|
|
56
|
-
|
|
57
40
|
_line.end.fromBufferAttribute( _instanceEnd, i );
|
|
58
|
-
|
|
41
|
+
_line.applyMatrix4( matrixWorld );
|
|
59
42
|
const pointOnLine = new THREE.Vector3();
|
|
60
43
|
const point = new THREE.Vector3();
|
|
61
|
-
|
|
62
44
|
_ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
|
|
63
|
-
|
|
64
45
|
const isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5;
|
|
65
|
-
|
|
66
46
|
if ( isInside ) {
|
|
67
47
|
|
|
68
48
|
intersects.push( {
|
|
@@ -91,119 +71,98 @@
|
|
|
91
71
|
const geometry = lineSegments.geometry;
|
|
92
72
|
const instanceStart = geometry.attributes.instanceStart;
|
|
93
73
|
const instanceEnd = geometry.attributes.instanceEnd;
|
|
94
|
-
const near = - camera.near;
|
|
74
|
+
const near = - camera.near;
|
|
75
|
+
|
|
76
|
+
//
|
|
77
|
+
|
|
95
78
|
// pick a point 1 unit out along the ray to avoid the ray origin
|
|
96
79
|
// sitting at the camera origin which will cause "w" to be 0 when
|
|
97
80
|
// applying the projection matrix.
|
|
81
|
+
_ray.at( 1, _ssOrigin );
|
|
98
82
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
// ndc space [ - 1.0, 1.0 ]
|
|
102
84
|
_ssOrigin.w = 1;
|
|
103
|
-
|
|
104
85
|
_ssOrigin.applyMatrix4( camera.matrixWorldInverse );
|
|
105
|
-
|
|
106
86
|
_ssOrigin.applyMatrix4( projectionMatrix );
|
|
87
|
+
_ssOrigin.multiplyScalar( 1 / _ssOrigin.w );
|
|
107
88
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
89
|
+
// screen space
|
|
111
90
|
_ssOrigin.x *= resolution.x / 2;
|
|
112
91
|
_ssOrigin.y *= resolution.y / 2;
|
|
113
92
|
_ssOrigin.z = 0;
|
|
114
|
-
|
|
115
93
|
_ssOrigin3.copy( _ssOrigin );
|
|
116
|
-
|
|
117
94
|
_mvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld );
|
|
118
|
-
|
|
119
95
|
for ( let i = 0, l = instanceStart.count; i < l; i ++ ) {
|
|
120
96
|
|
|
121
97
|
_start4.fromBufferAttribute( instanceStart, i );
|
|
122
|
-
|
|
123
98
|
_end4.fromBufferAttribute( instanceEnd, i );
|
|
124
|
-
|
|
125
99
|
_start4.w = 1;
|
|
126
|
-
_end4.w = 1;
|
|
100
|
+
_end4.w = 1;
|
|
127
101
|
|
|
102
|
+
// camera space
|
|
128
103
|
_start4.applyMatrix4( _mvMatrix );
|
|
104
|
+
_end4.applyMatrix4( _mvMatrix );
|
|
129
105
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
106
|
+
// skip the segment if it's entirely behind the camera
|
|
133
107
|
const isBehindCameraNear = _start4.z > near && _end4.z > near;
|
|
134
|
-
|
|
135
108
|
if ( isBehindCameraNear ) {
|
|
136
109
|
|
|
137
110
|
continue;
|
|
138
111
|
|
|
139
|
-
}
|
|
140
|
-
|
|
112
|
+
}
|
|
141
113
|
|
|
114
|
+
// trim the segment if it extends behind camera near
|
|
142
115
|
if ( _start4.z > near ) {
|
|
143
116
|
|
|
144
117
|
const deltaDist = _start4.z - _end4.z;
|
|
145
118
|
const t = ( _start4.z - near ) / deltaDist;
|
|
146
|
-
|
|
147
119
|
_start4.lerp( _end4, t );
|
|
148
120
|
|
|
149
121
|
} else if ( _end4.z > near ) {
|
|
150
122
|
|
|
151
123
|
const deltaDist = _end4.z - _start4.z;
|
|
152
124
|
const t = ( _end4.z - near ) / deltaDist;
|
|
153
|
-
|
|
154
125
|
_end4.lerp( _start4, t );
|
|
155
126
|
|
|
156
|
-
}
|
|
157
|
-
|
|
127
|
+
}
|
|
158
128
|
|
|
129
|
+
// clip space
|
|
159
130
|
_start4.applyMatrix4( projectionMatrix );
|
|
131
|
+
_end4.applyMatrix4( projectionMatrix );
|
|
160
132
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
133
|
+
// ndc space [ - 1.0, 1.0 ]
|
|
164
134
|
_start4.multiplyScalar( 1 / _start4.w );
|
|
135
|
+
_end4.multiplyScalar( 1 / _end4.w );
|
|
165
136
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
137
|
+
// screen space
|
|
169
138
|
_start4.x *= resolution.x / 2;
|
|
170
139
|
_start4.y *= resolution.y / 2;
|
|
171
140
|
_end4.x *= resolution.x / 2;
|
|
172
|
-
_end4.y *= resolution.y / 2;
|
|
141
|
+
_end4.y *= resolution.y / 2;
|
|
173
142
|
|
|
143
|
+
// create 2d segment
|
|
174
144
|
_line.start.copy( _start4 );
|
|
175
|
-
|
|
176
145
|
_line.start.z = 0;
|
|
177
|
-
|
|
178
146
|
_line.end.copy( _end4 );
|
|
147
|
+
_line.end.z = 0;
|
|
179
148
|
|
|
180
|
-
|
|
181
|
-
|
|
149
|
+
// get closest point on ray to segment
|
|
182
150
|
const param = _line.closestPointToPointParameter( _ssOrigin3, true );
|
|
151
|
+
_line.at( param, _closestPoint );
|
|
183
152
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
153
|
+
// check if the intersection point is within clip space
|
|
187
154
|
const zPos = THREE.MathUtils.lerp( _start4.z, _end4.z, param );
|
|
188
155
|
const isInClipSpace = zPos >= - 1 && zPos <= 1;
|
|
189
|
-
|
|
190
156
|
const isInside = _ssOrigin3.distanceTo( _closestPoint ) < _lineWidth * 0.5;
|
|
191
|
-
|
|
192
157
|
if ( isInClipSpace && isInside ) {
|
|
193
158
|
|
|
194
159
|
_line.start.fromBufferAttribute( instanceStart, i );
|
|
195
|
-
|
|
196
160
|
_line.end.fromBufferAttribute( instanceEnd, i );
|
|
197
|
-
|
|
198
161
|
_line.start.applyMatrix4( matrixWorld );
|
|
199
|
-
|
|
200
162
|
_line.end.applyMatrix4( matrixWorld );
|
|
201
|
-
|
|
202
163
|
const pointOnLine = new THREE.Vector3();
|
|
203
164
|
const point = new THREE.Vector3();
|
|
204
|
-
|
|
205
165
|
_ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
|
|
206
|
-
|
|
207
166
|
intersects.push( {
|
|
208
167
|
point: point,
|
|
209
168
|
pointOnLine: pointOnLine,
|
|
@@ -231,8 +190,9 @@
|
|
|
231
190
|
this.isLineSegments2 = true;
|
|
232
191
|
this.type = 'LineSegments2';
|
|
233
192
|
|
|
234
|
-
}
|
|
193
|
+
}
|
|
235
194
|
|
|
195
|
+
// for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
|
|
236
196
|
|
|
237
197
|
computeLineDistances() {
|
|
238
198
|
|
|
@@ -240,13 +200,10 @@
|
|
|
240
200
|
const instanceStart = geometry.attributes.instanceStart;
|
|
241
201
|
const instanceEnd = geometry.attributes.instanceEnd;
|
|
242
202
|
const lineDistances = new Float32Array( 2 * instanceStart.count );
|
|
243
|
-
|
|
244
203
|
for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
|
|
245
204
|
|
|
246
205
|
_start.fromBufferAttribute( instanceStart, i );
|
|
247
|
-
|
|
248
206
|
_end.fromBufferAttribute( instanceEnd, i );
|
|
249
|
-
|
|
250
207
|
lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
|
|
251
208
|
lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
|
|
252
209
|
|
|
@@ -255,18 +212,15 @@
|
|
|
255
212
|
const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
|
|
256
213
|
|
|
257
214
|
geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
|
|
258
|
-
|
|
259
215
|
geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
|
|
260
216
|
|
|
261
217
|
return this;
|
|
262
218
|
|
|
263
219
|
}
|
|
264
|
-
|
|
265
220
|
raycast( raycaster, intersects ) {
|
|
266
221
|
|
|
267
222
|
const worldUnits = this.material.worldUnits;
|
|
268
223
|
const camera = raycaster.camera;
|
|
269
|
-
|
|
270
224
|
if ( camera === null && ! worldUnits ) {
|
|
271
225
|
|
|
272
226
|
console.error( 'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.' );
|
|
@@ -280,19 +234,19 @@
|
|
|
280
234
|
const material = this.material;
|
|
281
235
|
_lineWidth = material.linewidth + threshold;
|
|
282
236
|
_instanceStart = geometry.attributes.instanceStart;
|
|
283
|
-
_instanceEnd = geometry.attributes.instanceEnd;
|
|
237
|
+
_instanceEnd = geometry.attributes.instanceEnd;
|
|
284
238
|
|
|
239
|
+
// check if we intersect the sphere bounds
|
|
285
240
|
if ( geometry.boundingSphere === null ) {
|
|
286
241
|
|
|
287
242
|
geometry.computeBoundingSphere();
|
|
288
243
|
|
|
289
244
|
}
|
|
290
245
|
|
|
291
|
-
_sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
|
|
292
|
-
|
|
246
|
+
_sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
|
|
293
247
|
|
|
248
|
+
// increase the sphere bounds by the worst case line screen space width
|
|
294
249
|
let sphereMargin;
|
|
295
|
-
|
|
296
250
|
if ( worldUnits ) {
|
|
297
251
|
|
|
298
252
|
sphereMargin = _lineWidth * 0.5;
|
|
@@ -305,25 +259,23 @@
|
|
|
305
259
|
}
|
|
306
260
|
|
|
307
261
|
_sphere.radius += sphereMargin;
|
|
308
|
-
|
|
309
262
|
if ( _ray.intersectsSphere( _sphere ) === false ) {
|
|
310
263
|
|
|
311
264
|
return;
|
|
312
265
|
|
|
313
|
-
}
|
|
314
|
-
|
|
266
|
+
}
|
|
315
267
|
|
|
268
|
+
// check if we intersect the box bounds
|
|
316
269
|
if ( geometry.boundingBox === null ) {
|
|
317
270
|
|
|
318
271
|
geometry.computeBoundingBox();
|
|
319
272
|
|
|
320
273
|
}
|
|
321
274
|
|
|
322
|
-
_box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
|
|
323
|
-
|
|
275
|
+
_box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
|
|
324
276
|
|
|
277
|
+
// increase the box bounds by the worst case line width
|
|
325
278
|
let boxMargin;
|
|
326
|
-
|
|
327
279
|
if ( worldUnits ) {
|
|
328
280
|
|
|
329
281
|
boxMargin = _lineWidth * 0.5;
|
|
@@ -336,7 +288,6 @@
|
|
|
336
288
|
}
|
|
337
289
|
|
|
338
290
|
_box.expandByScalar( boxMargin );
|
|
339
|
-
|
|
340
291
|
if ( _ray.intersectsBox( _box ) === false ) {
|
|
341
292
|
|
|
342
293
|
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
|
|