@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
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _v1 = new THREE.Vector3();
|
|
4
|
-
|
|
5
4
|
const _v2 = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
const _normalMatrix = new THREE.Matrix3();
|
|
8
|
-
|
|
9
6
|
class VertexNormalsHelper extends THREE.LineSegments {
|
|
10
7
|
|
|
11
8
|
constructor( object, size = 1, color = 0xff0000 ) {
|
|
@@ -20,38 +17,37 @@
|
|
|
20
17
|
} ) );
|
|
21
18
|
this.object = object;
|
|
22
19
|
this.size = size;
|
|
23
|
-
this.type = 'VertexNormalsHelper';
|
|
20
|
+
this.type = 'VertexNormalsHelper';
|
|
21
|
+
|
|
22
|
+
//
|
|
24
23
|
|
|
25
24
|
this.matrixAutoUpdate = false;
|
|
26
25
|
this.update();
|
|
27
26
|
|
|
28
27
|
}
|
|
29
|
-
|
|
30
28
|
update() {
|
|
31
29
|
|
|
32
30
|
this.object.updateMatrixWorld( true );
|
|
33
|
-
|
|
34
31
|
_normalMatrix.getNormalMatrix( this.object.matrixWorld );
|
|
35
|
-
|
|
36
32
|
const matrixWorld = this.object.matrixWorld;
|
|
37
|
-
const position = this.geometry.attributes.position;
|
|
33
|
+
const position = this.geometry.attributes.position;
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
//
|
|
40
36
|
|
|
37
|
+
const objGeometry = this.object.geometry;
|
|
41
38
|
if ( objGeometry ) {
|
|
42
39
|
|
|
43
40
|
const objPos = objGeometry.attributes.position;
|
|
44
41
|
const objNorm = objGeometry.attributes.normal;
|
|
45
|
-
let idx = 0;
|
|
42
|
+
let idx = 0;
|
|
43
|
+
|
|
44
|
+
// for simplicity, ignore index and drawcalls, and render every normal
|
|
46
45
|
|
|
47
46
|
for ( let j = 0, jl = objPos.count; j < jl; j ++ ) {
|
|
48
47
|
|
|
49
48
|
_v1.fromBufferAttribute( objPos, j ).applyMatrix4( matrixWorld );
|
|
50
|
-
|
|
51
49
|
_v2.fromBufferAttribute( objNorm, j );
|
|
52
|
-
|
|
53
50
|
_v2.applyMatrix3( _normalMatrix ).normalize().multiplyScalar( this.size ).add( _v1 );
|
|
54
|
-
|
|
55
51
|
position.setXYZ( idx, _v1.x, _v1.y, _v1.z );
|
|
56
52
|
idx = idx + 1;
|
|
57
53
|
position.setXYZ( idx, _v2.x, _v2.y, _v2.z );
|
|
@@ -64,6 +60,12 @@
|
|
|
64
60
|
position.needsUpdate = true;
|
|
65
61
|
|
|
66
62
|
}
|
|
63
|
+
dispose() {
|
|
64
|
+
|
|
65
|
+
this.geometry.dispose();
|
|
66
|
+
this.material.dispose();
|
|
67
|
+
|
|
68
|
+
}
|
|
67
69
|
|
|
68
70
|
}
|
|
69
71
|
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _v1 = new THREE.Vector3();
|
|
4
|
-
|
|
5
4
|
const _v2 = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
class VertexTangentsHelper extends THREE.LineSegments {
|
|
8
6
|
|
|
9
7
|
constructor( object, size = 1, color = 0x00ffff ) {
|
|
@@ -18,32 +16,34 @@
|
|
|
18
16
|
} ) );
|
|
19
17
|
this.object = object;
|
|
20
18
|
this.size = size;
|
|
21
|
-
this.type = 'VertexTangentsHelper';
|
|
19
|
+
this.type = 'VertexTangentsHelper';
|
|
20
|
+
|
|
21
|
+
//
|
|
22
22
|
|
|
23
23
|
this.matrixAutoUpdate = false;
|
|
24
24
|
this.update();
|
|
25
25
|
|
|
26
26
|
}
|
|
27
|
-
|
|
28
27
|
update() {
|
|
29
28
|
|
|
30
29
|
this.object.updateMatrixWorld( true );
|
|
31
30
|
const matrixWorld = this.object.matrixWorld;
|
|
32
|
-
const position = this.geometry.attributes.position;
|
|
31
|
+
const position = this.geometry.attributes.position;
|
|
32
|
+
|
|
33
|
+
//
|
|
33
34
|
|
|
34
35
|
const objGeometry = this.object.geometry;
|
|
35
36
|
const objPos = objGeometry.attributes.position;
|
|
36
37
|
const objTan = objGeometry.attributes.tangent;
|
|
37
|
-
let idx = 0;
|
|
38
|
+
let idx = 0;
|
|
39
|
+
|
|
40
|
+
// for simplicity, ignore index and drawcalls, and render every tangent
|
|
38
41
|
|
|
39
42
|
for ( let j = 0, jl = objPos.count; j < jl; j ++ ) {
|
|
40
43
|
|
|
41
44
|
_v1.fromBufferAttribute( objPos, j ).applyMatrix4( matrixWorld );
|
|
42
|
-
|
|
43
45
|
_v2.fromBufferAttribute( objTan, j );
|
|
44
|
-
|
|
45
46
|
_v2.transformDirection( matrixWorld ).multiplyScalar( this.size ).add( _v1 );
|
|
46
|
-
|
|
47
47
|
position.setXYZ( idx, _v1.x, _v1.y, _v1.z );
|
|
48
48
|
idx = idx + 1;
|
|
49
49
|
position.setXYZ( idx, _v2.x, _v2.y, _v2.z );
|
|
@@ -54,6 +54,12 @@
|
|
|
54
54
|
position.needsUpdate = true;
|
|
55
55
|
|
|
56
56
|
}
|
|
57
|
+
dispose() {
|
|
58
|
+
|
|
59
|
+
this.geometry.dispose();
|
|
60
|
+
this.material.dispose();
|
|
61
|
+
|
|
62
|
+
}
|
|
57
63
|
|
|
58
64
|
}
|
|
59
65
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const vpTemp = new THREE.Vector4();
|
|
4
|
-
|
|
5
4
|
class ViewHelper extends THREE.Object3D {
|
|
6
5
|
|
|
7
6
|
constructor( editorCamera, dom ) {
|
|
@@ -71,7 +70,6 @@
|
|
|
71
70
|
this.updateMatrixWorld();
|
|
72
71
|
point.set( 0, 0, 1 );
|
|
73
72
|
point.applyQuaternion( editorCamera.quaternion );
|
|
74
|
-
|
|
75
73
|
if ( point.x >= 0 ) {
|
|
76
74
|
|
|
77
75
|
posXAxisHelper.material.opacity = 1;
|
|
@@ -106,8 +104,9 @@
|
|
|
106
104
|
posZAxisHelper.material.opacity = 0.5;
|
|
107
105
|
negZAxisHelper.material.opacity = 1;
|
|
108
106
|
|
|
109
|
-
}
|
|
107
|
+
}
|
|
110
108
|
|
|
109
|
+
//
|
|
111
110
|
|
|
112
111
|
const x = dom.offsetWidth - dim;
|
|
113
112
|
renderer.clearDepth();
|
|
@@ -123,7 +122,6 @@
|
|
|
123
122
|
const q1 = new THREE.Quaternion();
|
|
124
123
|
const q2 = new THREE.Quaternion();
|
|
125
124
|
let radius = 0;
|
|
126
|
-
|
|
127
125
|
this.handleClick = function ( event ) {
|
|
128
126
|
|
|
129
127
|
if ( this.animating === true ) return false;
|
|
@@ -134,7 +132,6 @@
|
|
|
134
132
|
mouse.y = - ( ( event.clientY - offsetY ) / ( rect.bottom - offsetY ) ) * 2 + 1;
|
|
135
133
|
raycaster.setFromCamera( mouse, camera );
|
|
136
134
|
const intersects = raycaster.intersectObjects( interactiveObjects );
|
|
137
|
-
|
|
138
135
|
if ( intersects.length > 0 ) {
|
|
139
136
|
|
|
140
137
|
const intersection = intersects[ 0 ];
|
|
@@ -154,13 +151,16 @@
|
|
|
154
151
|
this.update = function ( delta ) {
|
|
155
152
|
|
|
156
153
|
const step = delta * turnRate;
|
|
157
|
-
const focusPoint = this.controls.center;
|
|
154
|
+
const focusPoint = this.controls.center;
|
|
155
|
+
|
|
156
|
+
// animate position by doing a slerp and then scaling the position on the unit sphere
|
|
158
157
|
|
|
159
158
|
q1.rotateTowards( q2, step );
|
|
160
|
-
editorCamera.position.set( 0, 0, 1 ).applyQuaternion( q1 ).multiplyScalar( radius ).add( focusPoint );
|
|
159
|
+
editorCamera.position.set( 0, 0, 1 ).applyQuaternion( q1 ).multiplyScalar( radius ).add( focusPoint );
|
|
161
160
|
|
|
162
|
-
|
|
161
|
+
// animate orientation
|
|
163
162
|
|
|
163
|
+
editorCamera.quaternion.rotateTowards( targetQuaternion, step );
|
|
164
164
|
if ( q1.angleTo( q2 ) === 0 ) {
|
|
165
165
|
|
|
166
166
|
this.animating = false;
|
|
@@ -169,6 +169,27 @@
|
|
|
169
169
|
|
|
170
170
|
};
|
|
171
171
|
|
|
172
|
+
this.dispose = function () {
|
|
173
|
+
|
|
174
|
+
geometry.dispose();
|
|
175
|
+
xAxis.material.dispose();
|
|
176
|
+
yAxis.material.dispose();
|
|
177
|
+
zAxis.material.dispose();
|
|
178
|
+
posXAxisHelper.material.map.dispose();
|
|
179
|
+
posYAxisHelper.material.map.dispose();
|
|
180
|
+
posZAxisHelper.material.map.dispose();
|
|
181
|
+
negXAxisHelper.material.map.dispose();
|
|
182
|
+
negYAxisHelper.material.map.dispose();
|
|
183
|
+
negZAxisHelper.material.map.dispose();
|
|
184
|
+
posXAxisHelper.material.dispose();
|
|
185
|
+
posYAxisHelper.material.dispose();
|
|
186
|
+
posZAxisHelper.material.dispose();
|
|
187
|
+
negXAxisHelper.material.dispose();
|
|
188
|
+
negYAxisHelper.material.dispose();
|
|
189
|
+
negZAxisHelper.material.dispose();
|
|
190
|
+
|
|
191
|
+
};
|
|
192
|
+
|
|
172
193
|
function prepareAnimationData( object, focusPoint ) {
|
|
173
194
|
|
|
174
195
|
switch ( object.userData.type ) {
|
|
@@ -177,37 +198,32 @@
|
|
|
177
198
|
targetPosition.set( 1, 0, 0 );
|
|
178
199
|
targetQuaternion.setFromEuler( new THREE.Euler( 0, Math.PI * 0.5, 0 ) );
|
|
179
200
|
break;
|
|
180
|
-
|
|
181
201
|
case 'posY':
|
|
182
202
|
targetPosition.set( 0, 1, 0 );
|
|
183
203
|
targetQuaternion.setFromEuler( new THREE.Euler( - Math.PI * 0.5, 0, 0 ) );
|
|
184
204
|
break;
|
|
185
|
-
|
|
186
205
|
case 'posZ':
|
|
187
206
|
targetPosition.set( 0, 0, 1 );
|
|
188
207
|
targetQuaternion.setFromEuler( new THREE.Euler() );
|
|
189
208
|
break;
|
|
190
|
-
|
|
191
209
|
case 'negX':
|
|
192
210
|
targetPosition.set( - 1, 0, 0 );
|
|
193
211
|
targetQuaternion.setFromEuler( new THREE.Euler( 0, - Math.PI * 0.5, 0 ) );
|
|
194
212
|
break;
|
|
195
|
-
|
|
196
213
|
case 'negY':
|
|
197
214
|
targetPosition.set( 0, - 1, 0 );
|
|
198
215
|
targetQuaternion.setFromEuler( new THREE.Euler( Math.PI * 0.5, 0, 0 ) );
|
|
199
216
|
break;
|
|
200
|
-
|
|
201
217
|
case 'negZ':
|
|
202
218
|
targetPosition.set( 0, 0, - 1 );
|
|
203
219
|
targetQuaternion.setFromEuler( new THREE.Euler( 0, Math.PI, 0 ) );
|
|
204
220
|
break;
|
|
205
|
-
|
|
206
221
|
default:
|
|
207
222
|
console.error( 'ViewHelper: Invalid axis.' );
|
|
208
223
|
|
|
209
|
-
}
|
|
224
|
+
}
|
|
210
225
|
|
|
226
|
+
//
|
|
211
227
|
|
|
212
228
|
radius = editorCamera.position.distanceTo( focusPoint );
|
|
213
229
|
targetPosition.multiplyScalar( radius ).add( focusPoint );
|
|
@@ -239,7 +255,6 @@
|
|
|
239
255
|
context.closePath();
|
|
240
256
|
context.fillStyle = color.getStyle();
|
|
241
257
|
context.fill();
|
|
242
|
-
|
|
243
258
|
if ( text !== null ) {
|
|
244
259
|
|
|
245
260
|
context.font = '24px Arial';
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
transparent: true
|
|
13
13
|
} );
|
|
14
14
|
super( geometry, material );
|
|
15
|
-
|
|
16
15
|
function onEvent( event ) {
|
|
17
16
|
|
|
18
17
|
material.map.dispatchDOMEvent( event );
|
|
@@ -23,12 +22,12 @@
|
|
|
23
22
|
this.addEventListener( 'mousemove', onEvent );
|
|
24
23
|
this.addEventListener( 'mouseup', onEvent );
|
|
25
24
|
this.addEventListener( 'click', onEvent );
|
|
26
|
-
|
|
27
25
|
this.dispose = function () {
|
|
28
26
|
|
|
29
27
|
geometry.dispose();
|
|
30
28
|
material.dispose();
|
|
31
29
|
material.map.dispose();
|
|
30
|
+
canvases.delete( dom );
|
|
32
31
|
this.removeEventListener( 'mousedown', onEvent );
|
|
33
32
|
this.removeEventListener( 'mousemove', onEvent );
|
|
34
33
|
this.removeEventListener( 'mouseup', onEvent );
|
|
@@ -39,7 +38,6 @@
|
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
}
|
|
42
|
-
|
|
43
41
|
class HTMLTexture extends THREE.CanvasTexture {
|
|
44
42
|
|
|
45
43
|
constructor( dom ) {
|
|
@@ -49,8 +47,9 @@
|
|
|
49
47
|
this.anisotropy = 16;
|
|
50
48
|
this.encoding = THREE.sRGBEncoding;
|
|
51
49
|
this.minFilter = THREE.LinearFilter;
|
|
52
|
-
this.magFilter = THREE.LinearFilter;
|
|
50
|
+
this.magFilter = THREE.LinearFilter;
|
|
53
51
|
|
|
52
|
+
// Create an observer on the DOM, and run html2canvas update in the next loop
|
|
54
53
|
const observer = new MutationObserver( () => {
|
|
55
54
|
|
|
56
55
|
if ( ! this.scheduleUpdate ) {
|
|
@@ -71,7 +70,6 @@
|
|
|
71
70
|
this.observer = observer;
|
|
72
71
|
|
|
73
72
|
}
|
|
74
|
-
|
|
75
73
|
dispatchDOMEvent( event ) {
|
|
76
74
|
|
|
77
75
|
if ( event.data ) {
|
|
@@ -81,7 +79,6 @@
|
|
|
81
79
|
}
|
|
82
80
|
|
|
83
81
|
}
|
|
84
|
-
|
|
85
82
|
update() {
|
|
86
83
|
|
|
87
84
|
this.image = html2canvas( this.dom );
|
|
@@ -89,7 +86,6 @@
|
|
|
89
86
|
this.scheduleUpdate = null;
|
|
90
87
|
|
|
91
88
|
}
|
|
92
|
-
|
|
93
89
|
dispose() {
|
|
94
90
|
|
|
95
91
|
if ( this.observer ) {
|
|
@@ -103,21 +99,19 @@
|
|
|
103
99
|
|
|
104
100
|
}
|
|
105
101
|
|
|
106
|
-
}
|
|
102
|
+
}
|
|
107
103
|
|
|
104
|
+
//
|
|
108
105
|
|
|
109
106
|
const canvases = new WeakMap();
|
|
110
|
-
|
|
111
107
|
function html2canvas( element ) {
|
|
112
108
|
|
|
113
109
|
const range = document.createRange();
|
|
114
110
|
const color = new THREE.Color();
|
|
115
|
-
|
|
116
111
|
function Clipper( context ) {
|
|
117
112
|
|
|
118
113
|
const clips = [];
|
|
119
114
|
let isClipping = false;
|
|
120
|
-
|
|
121
115
|
function doClip() {
|
|
122
116
|
|
|
123
117
|
if ( isClipping ) {
|
|
@@ -132,7 +126,6 @@
|
|
|
132
126
|
minY = - Infinity;
|
|
133
127
|
let maxX = Infinity,
|
|
134
128
|
maxY = Infinity;
|
|
135
|
-
|
|
136
129
|
for ( let i = 0; i < clips.length; i ++ ) {
|
|
137
130
|
|
|
138
131
|
const clip = clips[ i ];
|
|
@@ -206,7 +199,6 @@
|
|
|
206
199
|
const borderWidth = style[ which + 'Width' ];
|
|
207
200
|
const borderStyle = style[ which + 'Style' ];
|
|
208
201
|
const borderColor = style[ which + 'Color' ];
|
|
209
|
-
|
|
210
202
|
if ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {
|
|
211
203
|
|
|
212
204
|
context.strokeStyle = borderColor;
|
|
@@ -226,10 +218,10 @@
|
|
|
226
218
|
y = 0,
|
|
227
219
|
width = 0,
|
|
228
220
|
height = 0;
|
|
229
|
-
|
|
230
221
|
if ( element.nodeType === Node.TEXT_NODE ) {
|
|
231
222
|
|
|
232
223
|
// text
|
|
224
|
+
|
|
233
225
|
range.selectNode( element );
|
|
234
226
|
const rect = range.getBoundingClientRect();
|
|
235
227
|
x = rect.left - offset.left - 0.5;
|
|
@@ -260,23 +252,24 @@
|
|
|
260
252
|
y = rect.top - offset.top - 0.5;
|
|
261
253
|
width = rect.width;
|
|
262
254
|
height = rect.height;
|
|
263
|
-
style = window.getComputedStyle( element );
|
|
255
|
+
style = window.getComputedStyle( element );
|
|
256
|
+
|
|
257
|
+
// Get the border of the element used for fill and border
|
|
264
258
|
|
|
265
259
|
buildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );
|
|
266
260
|
const backgroundColor = style.backgroundColor;
|
|
267
|
-
|
|
268
261
|
if ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {
|
|
269
262
|
|
|
270
263
|
context.fillStyle = backgroundColor;
|
|
271
264
|
context.fill();
|
|
272
265
|
|
|
273
|
-
}
|
|
266
|
+
}
|
|
274
267
|
|
|
268
|
+
// If all the borders match then stroke the round rectangle
|
|
275
269
|
|
|
276
270
|
const borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];
|
|
277
271
|
let match = true;
|
|
278
272
|
let prevBorder = null;
|
|
279
|
-
|
|
280
273
|
for ( const border of borders ) {
|
|
281
274
|
|
|
282
275
|
if ( prevBorder !== null ) {
|
|
@@ -293,8 +286,8 @@
|
|
|
293
286
|
if ( match === true ) {
|
|
294
287
|
|
|
295
288
|
// They all match so stroke the rectangle from before allows for border-radius
|
|
296
|
-
const width = parseFloat( style.borderTopWidth );
|
|
297
289
|
|
|
290
|
+
const width = parseFloat( style.borderTopWidth );
|
|
298
291
|
if ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {
|
|
299
292
|
|
|
300
293
|
context.strokeStyle = style.borderTopColor;
|
|
@@ -306,6 +299,7 @@
|
|
|
306
299
|
} else {
|
|
307
300
|
|
|
308
301
|
// Otherwise draw individual borders
|
|
302
|
+
|
|
309
303
|
drawBorder( style, 'borderTop', x, y, width, 0 );
|
|
310
304
|
drawBorder( style, 'borderLeft', x, y, 0, height );
|
|
311
305
|
drawBorder( style, 'borderBottom', x, y + height, width, 0 );
|
|
@@ -320,7 +314,6 @@
|
|
|
320
314
|
color.set( accentColor );
|
|
321
315
|
const luminance = Math.sqrt( 0.299 * color.r ** 2 + 0.587 * color.g ** 2 + 0.114 * color.b ** 2 );
|
|
322
316
|
const accentTextColor = luminance < 0.5 ? 'white' : '#111111';
|
|
323
|
-
|
|
324
317
|
if ( element.type === 'radio' ) {
|
|
325
318
|
|
|
326
319
|
buildRectPath( x, y, width, height, height );
|
|
@@ -329,7 +322,6 @@
|
|
|
329
322
|
context.lineWidth = 1;
|
|
330
323
|
context.fill();
|
|
331
324
|
context.stroke();
|
|
332
|
-
|
|
333
325
|
if ( element.checked ) {
|
|
334
326
|
|
|
335
327
|
buildRectPath( x + 2, y + 2, width - 4, height - 4, height );
|
|
@@ -351,7 +343,6 @@
|
|
|
351
343
|
context.lineWidth = 1;
|
|
352
344
|
context.stroke();
|
|
353
345
|
context.fill();
|
|
354
|
-
|
|
355
346
|
if ( element.checked ) {
|
|
356
347
|
|
|
357
348
|
const currentTextAlign = context.textAlign;
|
|
@@ -404,13 +395,13 @@
|
|
|
404
395
|
}
|
|
405
396
|
|
|
406
397
|
}
|
|
398
|
+
|
|
407
399
|
/*
|
|
408
400
|
// debug
|
|
409
401
|
context.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );
|
|
410
402
|
context.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );
|
|
411
403
|
*/
|
|
412
404
|
|
|
413
|
-
|
|
414
405
|
const isClipping = style.overflow === 'auto' || style.overflow === 'hidden';
|
|
415
406
|
if ( isClipping ) clipper.add( {
|
|
416
407
|
x: x,
|
|
@@ -418,7 +409,6 @@
|
|
|
418
409
|
width: width,
|
|
419
410
|
height: height
|
|
420
411
|
} );
|
|
421
|
-
|
|
422
412
|
for ( let i = 0; i < element.childNodes.length; i ++ ) {
|
|
423
413
|
|
|
424
414
|
drawElement( element.childNodes[ i ], style );
|
|
@@ -431,7 +421,6 @@
|
|
|
431
421
|
|
|
432
422
|
const offset = element.getBoundingClientRect();
|
|
433
423
|
let canvas = canvases.get( element );
|
|
434
|
-
|
|
435
424
|
if ( canvas === undefined ) {
|
|
436
425
|
|
|
437
426
|
canvas = document.createElement( 'canvas' );
|
|
@@ -441,12 +430,15 @@
|
|
|
441
430
|
|
|
442
431
|
}
|
|
443
432
|
|
|
444
|
-
const context = canvas.getContext( '2d'
|
|
445
|
-
|
|
446
|
-
);
|
|
447
|
-
|
|
433
|
+
const context = canvas.getContext( '2d' /*, { alpha: false }*/ );
|
|
434
|
+
|
|
435
|
+
const clipper = new Clipper( context );
|
|
436
|
+
|
|
437
|
+
// console.time( 'drawElement' );
|
|
448
438
|
|
|
449
|
-
drawElement( element );
|
|
439
|
+
drawElement( element );
|
|
440
|
+
|
|
441
|
+
// console.timeEnd( 'drawElement' );
|
|
450
442
|
|
|
451
443
|
return canvas;
|
|
452
444
|
|
|
@@ -463,17 +455,14 @@
|
|
|
463
455
|
const rect = element.getBoundingClientRect();
|
|
464
456
|
x = x * rect.width + rect.left;
|
|
465
457
|
y = y * rect.height + rect.top;
|
|
466
|
-
|
|
467
458
|
function traverse( element ) {
|
|
468
459
|
|
|
469
460
|
if ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {
|
|
470
461
|
|
|
471
462
|
const rect = element.getBoundingClientRect();
|
|
472
|
-
|
|
473
463
|
if ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {
|
|
474
464
|
|
|
475
465
|
element.dispatchEvent( new MouseEvent( event, mouseEventInit ) );
|
|
476
|
-
|
|
477
466
|
if ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {
|
|
478
467
|
|
|
479
468
|
const [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _pointer = new THREE.Vector2();
|
|
4
|
-
|
|
5
4
|
const _event = {
|
|
6
5
|
type: '',
|
|
7
6
|
data: _pointer
|
|
8
7
|
};
|
|
9
|
-
|
|
10
8
|
class InteractiveGroup extends THREE.Group {
|
|
11
9
|
|
|
12
10
|
constructor( renderer, camera ) {
|
|
@@ -14,10 +12,11 @@
|
|
|
14
12
|
super();
|
|
15
13
|
const scope = this;
|
|
16
14
|
const raycaster = new THREE.Raycaster();
|
|
17
|
-
const tempMatrix = new THREE.Matrix4();
|
|
15
|
+
const tempMatrix = new THREE.Matrix4();
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
// Pointer Events
|
|
20
18
|
|
|
19
|
+
const element = renderer.domElement;
|
|
21
20
|
function onPointerEvent( event ) {
|
|
22
21
|
|
|
23
22
|
event.stopPropagation();
|
|
@@ -26,16 +25,13 @@
|
|
|
26
25
|
_pointer.y = - ( event.clientY - rect.top ) / rect.height * 2 + 1;
|
|
27
26
|
raycaster.setFromCamera( _pointer, camera );
|
|
28
27
|
const intersects = raycaster.intersectObjects( scope.children, false );
|
|
29
|
-
|
|
30
28
|
if ( intersects.length > 0 ) {
|
|
31
29
|
|
|
32
30
|
const intersection = intersects[ 0 ];
|
|
33
31
|
const object = intersection.object;
|
|
34
32
|
const uv = intersection.uv;
|
|
35
33
|
_event.type = event.type;
|
|
36
|
-
|
|
37
34
|
_event.data.set( uv.x, 1 - uv.y );
|
|
38
|
-
|
|
39
35
|
object.dispatchEvent( _event );
|
|
40
36
|
|
|
41
37
|
}
|
|
@@ -48,7 +44,9 @@
|
|
|
48
44
|
element.addEventListener( 'mousedown', onPointerEvent );
|
|
49
45
|
element.addEventListener( 'mouseup', onPointerEvent );
|
|
50
46
|
element.addEventListener( 'mousemove', onPointerEvent );
|
|
51
|
-
element.addEventListener( 'click', onPointerEvent );
|
|
47
|
+
element.addEventListener( 'click', onPointerEvent );
|
|
48
|
+
|
|
49
|
+
// WebXR Controller Events
|
|
52
50
|
// TODO: Dispatch pointerevents too
|
|
53
51
|
|
|
54
52
|
const events = {
|
|
@@ -57,7 +55,6 @@
|
|
|
57
55
|
'selectstart': 'mousedown',
|
|
58
56
|
'selectend': 'mouseup'
|
|
59
57
|
};
|
|
60
|
-
|
|
61
58
|
function onXRControllerEvent( event ) {
|
|
62
59
|
|
|
63
60
|
const controller = event.target;
|
|
@@ -65,16 +62,13 @@
|
|
|
65
62
|
raycaster.ray.origin.setFromMatrixPosition( controller.matrixWorld );
|
|
66
63
|
raycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );
|
|
67
64
|
const intersections = raycaster.intersectObjects( scope.children, false );
|
|
68
|
-
|
|
69
65
|
if ( intersections.length > 0 ) {
|
|
70
66
|
|
|
71
67
|
const intersection = intersections[ 0 ];
|
|
72
68
|
const object = intersection.object;
|
|
73
69
|
const uv = intersection.uv;
|
|
74
70
|
_event.type = events[ event.type ];
|
|
75
|
-
|
|
76
71
|
_event.data.set( uv.x, 1 - uv.y );
|
|
77
|
-
|
|
78
72
|
object.dispatchEvent( _event );
|
|
79
73
|
|
|
80
74
|
}
|