@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
|
@@ -42,7 +42,6 @@
|
|
|
42
42
|
|
|
43
43
|
if ( Math.abs( num ) < 1e-6 ) num = 0;
|
|
44
44
|
let a = num.toString();
|
|
45
|
-
|
|
46
45
|
if ( a.indexOf( '.' ) === - 1 ) {
|
|
47
46
|
|
|
48
47
|
a += '.';
|
|
@@ -60,7 +59,6 @@
|
|
|
60
59
|
function toStringsFromArray( array ) {
|
|
61
60
|
|
|
62
61
|
const a = [];
|
|
63
|
-
|
|
64
62
|
for ( let i = 0, il = array.length; i < il; i ++ ) {
|
|
65
63
|
|
|
66
64
|
a.push( toStringsFromNumber( array[ i ] ) );
|
|
@@ -84,16 +82,15 @@
|
|
|
84
82
|
array.push( ( skin.name !== '' ? skin.name.replace( /\s/g, '_' ) : 'skin' ) + '.osm;' );
|
|
85
83
|
array.push( bones.length + ';' );
|
|
86
84
|
array.push( '' );
|
|
87
|
-
|
|
88
85
|
for ( let i = 0, il = bones.length; i < il; i ++ ) {
|
|
89
86
|
|
|
90
87
|
const bone = bones[ i ];
|
|
91
88
|
const bone2 = bones2[ i ];
|
|
89
|
+
|
|
92
90
|
/*
|
|
93
91
|
* use the bone matrix saved before solving IK.
|
|
94
92
|
* see CCDIKSolver for the detail.
|
|
95
93
|
*/
|
|
96
|
-
|
|
97
94
|
if ( useOriginalBones === true && bone.userData.ik !== undefined && bone.userData.ik.originalMatrix !== undefined ) {
|
|
98
95
|
|
|
99
96
|
matrix.fromArray( bone.userData.ik.originalMatrix );
|
|
@@ -107,8 +104,9 @@
|
|
|
107
104
|
position.setFromMatrixPosition( matrix );
|
|
108
105
|
quaternion.setFromRotationMatrix( matrix );
|
|
109
106
|
const pArray = position.sub( bone2.position ).toArray();
|
|
110
|
-
const qArray = quaternion2.copy( bone2.quaternion ).conjugate().multiply( quaternion ).toArray();
|
|
107
|
+
const qArray = quaternion2.copy( bone2.quaternion ).conjugate().multiply( quaternion ).toArray();
|
|
111
108
|
|
|
109
|
+
// right to left
|
|
112
110
|
pArray[ 2 ] = - pArray[ 2 ];
|
|
113
111
|
qArray[ 0 ] = - qArray[ 0 ];
|
|
114
112
|
qArray[ 1 ] = - qArray[ 1 ];
|
|
@@ -126,21 +124,18 @@
|
|
|
126
124
|
|
|
127
125
|
}
|
|
128
126
|
|
|
129
|
-
}
|
|
130
|
-
|
|
127
|
+
}
|
|
131
128
|
|
|
129
|
+
// Unicode to Shift_JIS table
|
|
132
130
|
let u2sTable;
|
|
133
|
-
|
|
134
131
|
function unicodeToShiftjis( str ) {
|
|
135
132
|
|
|
136
133
|
if ( u2sTable === undefined ) {
|
|
137
134
|
|
|
138
135
|
const encoder = new MMDParser.CharsetEncoder(); // eslint-disable-line no-undef
|
|
139
|
-
|
|
140
136
|
const table = encoder.s2uTable;
|
|
141
137
|
u2sTable = {};
|
|
142
138
|
const keys = Object.keys( table );
|
|
143
|
-
|
|
144
139
|
for ( let i = 0, il = keys.length; i < il; i ++ ) {
|
|
145
140
|
|
|
146
141
|
let key = keys[ i ];
|
|
@@ -153,12 +148,10 @@
|
|
|
153
148
|
}
|
|
154
149
|
|
|
155
150
|
const array = [];
|
|
156
|
-
|
|
157
151
|
for ( let i = 0, il = str.length; i < il; i ++ ) {
|
|
158
152
|
|
|
159
153
|
const code = str.charCodeAt( i );
|
|
160
154
|
const value = u2sTable[ code ];
|
|
161
|
-
|
|
162
155
|
if ( value === undefined ) {
|
|
163
156
|
|
|
164
157
|
throw new Error( 'cannot convert charcode 0x' + code.toString( 16 ) );
|
|
@@ -13,73 +13,83 @@
|
|
|
13
13
|
const normal = new THREE.Vector3();
|
|
14
14
|
const uv = new THREE.Vector2();
|
|
15
15
|
const face = [];
|
|
16
|
-
|
|
17
16
|
function parseMesh( mesh ) {
|
|
18
17
|
|
|
19
18
|
let nbVertex = 0;
|
|
20
19
|
let nbNormals = 0;
|
|
21
20
|
let nbVertexUvs = 0;
|
|
22
21
|
const geometry = mesh.geometry;
|
|
23
|
-
const normalMatrixWorld = new THREE.Matrix3();
|
|
22
|
+
const normalMatrixWorld = new THREE.Matrix3();
|
|
24
23
|
|
|
24
|
+
// shortcuts
|
|
25
25
|
const vertices = geometry.getAttribute( 'position' );
|
|
26
26
|
const normals = geometry.getAttribute( 'normal' );
|
|
27
27
|
const uvs = geometry.getAttribute( 'uv' );
|
|
28
|
-
const indices = geometry.getIndex();
|
|
28
|
+
const indices = geometry.getIndex();
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
// name of the mesh object
|
|
31
|
+
output += 'o ' + mesh.name + '\n';
|
|
31
32
|
|
|
33
|
+
// name of the mesh material
|
|
32
34
|
if ( mesh.material && mesh.material.name ) {
|
|
33
35
|
|
|
34
36
|
output += 'usemtl ' + mesh.material.name + '\n';
|
|
35
37
|
|
|
36
|
-
}
|
|
38
|
+
}
|
|
37
39
|
|
|
40
|
+
// vertices
|
|
38
41
|
|
|
39
42
|
if ( vertices !== undefined ) {
|
|
40
43
|
|
|
41
44
|
for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) {
|
|
42
45
|
|
|
43
|
-
vertex.fromBufferAttribute( vertices, i );
|
|
46
|
+
vertex.fromBufferAttribute( vertices, i );
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
// transform the vertex to world space
|
|
49
|
+
vertex.applyMatrix4( mesh.matrixWorld );
|
|
46
50
|
|
|
51
|
+
// transform the vertex to export format
|
|
47
52
|
output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n';
|
|
48
53
|
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
}
|
|
56
|
+
}
|
|
52
57
|
|
|
58
|
+
// uvs
|
|
53
59
|
|
|
54
60
|
if ( uvs !== undefined ) {
|
|
55
61
|
|
|
56
62
|
for ( let i = 0, l = uvs.count; i < l; i ++, nbVertexUvs ++ ) {
|
|
57
63
|
|
|
58
|
-
uv.fromBufferAttribute( uvs, i );
|
|
64
|
+
uv.fromBufferAttribute( uvs, i );
|
|
59
65
|
|
|
66
|
+
// transform the uv to export format
|
|
60
67
|
output += 'vt ' + uv.x + ' ' + uv.y + '\n';
|
|
61
68
|
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
}
|
|
71
|
+
}
|
|
65
72
|
|
|
73
|
+
// normals
|
|
66
74
|
|
|
67
75
|
if ( normals !== undefined ) {
|
|
68
76
|
|
|
69
77
|
normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
|
|
70
|
-
|
|
71
78
|
for ( let i = 0, l = normals.count; i < l; i ++, nbNormals ++ ) {
|
|
72
79
|
|
|
73
|
-
normal.fromBufferAttribute( normals, i );
|
|
80
|
+
normal.fromBufferAttribute( normals, i );
|
|
74
81
|
|
|
75
|
-
|
|
82
|
+
// transform the normal to world space
|
|
83
|
+
normal.applyMatrix3( normalMatrixWorld ).normalize();
|
|
76
84
|
|
|
85
|
+
// transform the normal to export format
|
|
77
86
|
output += 'vn ' + normal.x + ' ' + normal.y + ' ' + normal.z + '\n';
|
|
78
87
|
|
|
79
88
|
}
|
|
80
89
|
|
|
81
|
-
}
|
|
90
|
+
}
|
|
82
91
|
|
|
92
|
+
// faces
|
|
83
93
|
|
|
84
94
|
if ( indices !== null ) {
|
|
85
95
|
|
|
@@ -90,9 +100,9 @@
|
|
|
90
100
|
const j = indices.getX( i + m ) + 1;
|
|
91
101
|
face[ m ] = indexVertex + j + ( normals || uvs ? '/' + ( uvs ? indexVertexUvs + j : '' ) + ( normals ? '/' + ( indexNormals + j ) : '' ) : '' );
|
|
92
102
|
|
|
93
|
-
}
|
|
94
|
-
|
|
103
|
+
}
|
|
95
104
|
|
|
105
|
+
// transform the face to export format
|
|
96
106
|
output += 'f ' + face.join( ' ' ) + '\n';
|
|
97
107
|
|
|
98
108
|
}
|
|
@@ -106,16 +116,16 @@
|
|
|
106
116
|
const j = i + m + 1;
|
|
107
117
|
face[ m ] = indexVertex + j + ( normals || uvs ? '/' + ( uvs ? indexVertexUvs + j : '' ) + ( normals ? '/' + ( indexNormals + j ) : '' ) : '' );
|
|
108
118
|
|
|
109
|
-
}
|
|
110
|
-
|
|
119
|
+
}
|
|
111
120
|
|
|
121
|
+
// transform the face to export format
|
|
112
122
|
output += 'f ' + face.join( ' ' ) + '\n';
|
|
113
123
|
|
|
114
124
|
}
|
|
115
125
|
|
|
116
|
-
}
|
|
117
|
-
|
|
126
|
+
}
|
|
118
127
|
|
|
128
|
+
// update index
|
|
119
129
|
indexVertex += nbVertex;
|
|
120
130
|
indexVertexUvs += nbVertexUvs;
|
|
121
131
|
indexNormals += nbNormals;
|
|
@@ -126,20 +136,23 @@
|
|
|
126
136
|
|
|
127
137
|
let nbVertex = 0;
|
|
128
138
|
const geometry = line.geometry;
|
|
129
|
-
const type = line.type;
|
|
139
|
+
const type = line.type;
|
|
130
140
|
|
|
131
|
-
|
|
141
|
+
// shortcuts
|
|
142
|
+
const vertices = geometry.getAttribute( 'position' );
|
|
132
143
|
|
|
144
|
+
// name of the line object
|
|
133
145
|
output += 'o ' + line.name + '\n';
|
|
134
|
-
|
|
135
146
|
if ( vertices !== undefined ) {
|
|
136
147
|
|
|
137
148
|
for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) {
|
|
138
149
|
|
|
139
|
-
vertex.fromBufferAttribute( vertices, i );
|
|
150
|
+
vertex.fromBufferAttribute( vertices, i );
|
|
140
151
|
|
|
141
|
-
|
|
152
|
+
// transform the vertex to world space
|
|
153
|
+
vertex.applyMatrix4( line.matrixWorld );
|
|
142
154
|
|
|
155
|
+
// transform the vertex to export format
|
|
143
156
|
output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n';
|
|
144
157
|
|
|
145
158
|
}
|
|
@@ -149,7 +162,6 @@
|
|
|
149
162
|
if ( type === 'Line' ) {
|
|
150
163
|
|
|
151
164
|
output += 'l ';
|
|
152
|
-
|
|
153
165
|
for ( let j = 1, l = vertices.count; j <= l; j ++ ) {
|
|
154
166
|
|
|
155
167
|
output += indexVertex + j + ' ';
|
|
@@ -168,9 +180,9 @@
|
|
|
168
180
|
|
|
169
181
|
}
|
|
170
182
|
|
|
171
|
-
}
|
|
172
|
-
|
|
183
|
+
}
|
|
173
184
|
|
|
185
|
+
// update index
|
|
174
186
|
indexVertex += nbVertex;
|
|
175
187
|
|
|
176
188
|
}
|
|
@@ -182,7 +194,6 @@
|
|
|
182
194
|
const vertices = geometry.getAttribute( 'position' );
|
|
183
195
|
const colors = geometry.getAttribute( 'color' );
|
|
184
196
|
output += 'o ' + points.name + '\n';
|
|
185
|
-
|
|
186
197
|
if ( vertices !== undefined ) {
|
|
187
198
|
|
|
188
199
|
for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) {
|
|
@@ -190,7 +201,6 @@
|
|
|
190
201
|
vertex.fromBufferAttribute( vertices, i );
|
|
191
202
|
vertex.applyMatrix4( points.matrixWorld );
|
|
192
203
|
output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z;
|
|
193
|
-
|
|
194
204
|
if ( colors !== undefined ) {
|
|
195
205
|
|
|
196
206
|
color.fromBufferAttribute( colors, i ).convertLinearToSRGB();
|
|
@@ -203,7 +213,6 @@
|
|
|
203
213
|
}
|
|
204
214
|
|
|
205
215
|
output += 'p ';
|
|
206
|
-
|
|
207
216
|
for ( let j = 1, l = vertices.count; j <= l; j ++ ) {
|
|
208
217
|
|
|
209
218
|
output += indexVertex + j + ' ';
|
|
@@ -212,9 +221,9 @@
|
|
|
212
221
|
|
|
213
222
|
output += '\n';
|
|
214
223
|
|
|
215
|
-
}
|
|
216
|
-
|
|
224
|
+
}
|
|
217
225
|
|
|
226
|
+
// update index
|
|
218
227
|
indexVertex += nbVertex;
|
|
219
228
|
|
|
220
229
|
}
|
|
@@ -26,7 +26,6 @@
|
|
|
26
26
|
|
|
27
27
|
const mesh = child;
|
|
28
28
|
const geometry = mesh.geometry;
|
|
29
|
-
|
|
30
29
|
if ( geometry.hasAttribute( 'position' ) === true ) {
|
|
31
30
|
|
|
32
31
|
cb( mesh, geometry );
|
|
@@ -37,9 +36,9 @@
|
|
|
37
36
|
|
|
38
37
|
} );
|
|
39
38
|
|
|
40
|
-
}
|
|
41
|
-
|
|
39
|
+
}
|
|
42
40
|
|
|
41
|
+
// Default options
|
|
43
42
|
const defaultOptions = {
|
|
44
43
|
binary: false,
|
|
45
44
|
excludeAttributes: [],
|
|
@@ -51,9 +50,10 @@
|
|
|
51
50
|
let includeIndices = true;
|
|
52
51
|
let includeNormals = false;
|
|
53
52
|
let includeColors = false;
|
|
54
|
-
let includeUVs = false;
|
|
55
|
-
// and cache the BufferGeometry
|
|
53
|
+
let includeUVs = false;
|
|
56
54
|
|
|
55
|
+
// count the vertices, check which properties are used,
|
|
56
|
+
// and cache the BufferGeometry
|
|
57
57
|
let vertexCount = 0;
|
|
58
58
|
let faceCount = 0;
|
|
59
59
|
object.traverse( function ( child ) {
|
|
@@ -67,7 +67,6 @@
|
|
|
67
67
|
const uvs = geometry.getAttribute( 'uv' );
|
|
68
68
|
const colors = geometry.getAttribute( 'color' );
|
|
69
69
|
const indices = geometry.getIndex();
|
|
70
|
-
|
|
71
70
|
if ( vertices === undefined ) {
|
|
72
71
|
|
|
73
72
|
return;
|
|
@@ -96,7 +95,6 @@
|
|
|
96
95
|
includeNormals = includeNormals && excludeAttributes.indexOf( 'normal' ) === - 1;
|
|
97
96
|
includeColors = includeColors && excludeAttributes.indexOf( 'color' ) === - 1;
|
|
98
97
|
includeUVs = includeUVs && excludeAttributes.indexOf( 'uv' ) === - 1;
|
|
99
|
-
|
|
100
98
|
if ( includeIndices && faceCount !== Math.floor( faceCount ) ) {
|
|
101
99
|
|
|
102
100
|
// point cloud meshes will not have an index array and may not have a
|
|
@@ -108,9 +106,9 @@
|
|
|
108
106
|
}
|
|
109
107
|
|
|
110
108
|
const indexByteCount = 4;
|
|
111
|
-
let header = 'ply\n' + `format ${options.binary ? options.littleEndian ? 'binary_little_endian' : 'binary_big_endian' : 'ascii'} 1.0\n` + `element vertex ${vertexCount}\n` +
|
|
109
|
+
let header = 'ply\n' + `format ${options.binary ? options.littleEndian ? 'binary_little_endian' : 'binary_big_endian' : 'ascii'} 1.0\n` + `element vertex ${vertexCount}\n` +
|
|
110
|
+
// position
|
|
112
111
|
'property float x\n' + 'property float y\n' + 'property float z\n';
|
|
113
|
-
|
|
114
112
|
if ( includeNormals === true ) {
|
|
115
113
|
|
|
116
114
|
// normal
|
|
@@ -139,23 +137,25 @@
|
|
|
139
137
|
|
|
140
138
|
}
|
|
141
139
|
|
|
142
|
-
header += 'end_header\n';
|
|
140
|
+
header += 'end_header\n';
|
|
143
141
|
|
|
142
|
+
// Generate attribute data
|
|
144
143
|
const vertex = new THREE.Vector3();
|
|
145
144
|
const normalMatrixWorld = new THREE.Matrix3();
|
|
146
145
|
let result = null;
|
|
147
|
-
|
|
148
146
|
if ( options.binary === true ) {
|
|
149
147
|
|
|
150
148
|
// Binary File Generation
|
|
151
|
-
const headerBin = new TextEncoder().encode( header );
|
|
149
|
+
const headerBin = new TextEncoder().encode( header );
|
|
150
|
+
|
|
151
|
+
// 3 position values at 4 bytes
|
|
152
152
|
// 3 normal values at 4 bytes
|
|
153
153
|
// 3 color channels with 1 byte
|
|
154
154
|
// 2 uv values at 4 bytes
|
|
155
|
+
const vertexListLength = vertexCount * ( 4 * 3 + ( includeNormals ? 4 * 3 : 0 ) + ( includeColors ? 3 : 0 ) + ( includeUVs ? 4 * 2 : 0 ) );
|
|
155
156
|
|
|
156
|
-
|
|
157
|
+
// 1 byte shape desciptor
|
|
157
158
|
// 3 vertex indices at ${indexByteCount} bytes
|
|
158
|
-
|
|
159
159
|
const faceListLength = includeIndices ? faceCount * ( indexByteCount * 3 + 1 ) : 0;
|
|
160
160
|
const output = new DataView( new ArrayBuffer( headerBin.length + vertexListLength + faceListLength ) );
|
|
161
161
|
new Uint8Array( output.buffer ).set( headerBin, 0 );
|
|
@@ -170,19 +170,20 @@
|
|
|
170
170
|
const colors = geometry.getAttribute( 'color' );
|
|
171
171
|
const indices = geometry.getIndex();
|
|
172
172
|
normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
|
|
173
|
-
|
|
174
173
|
for ( let i = 0, l = vertices.count; i < l; i ++ ) {
|
|
175
174
|
|
|
176
175
|
vertex.fromBufferAttribute( vertices, i );
|
|
177
|
-
vertex.applyMatrix4( mesh.matrixWorld );
|
|
176
|
+
vertex.applyMatrix4( mesh.matrixWorld );
|
|
178
177
|
|
|
178
|
+
// Position information
|
|
179
179
|
output.setFloat32( vOffset, vertex.x, options.littleEndian );
|
|
180
180
|
vOffset += 4;
|
|
181
181
|
output.setFloat32( vOffset, vertex.y, options.littleEndian );
|
|
182
182
|
vOffset += 4;
|
|
183
183
|
output.setFloat32( vOffset, vertex.z, options.littleEndian );
|
|
184
|
-
vOffset += 4;
|
|
184
|
+
vOffset += 4;
|
|
185
185
|
|
|
186
|
+
// Normal information
|
|
186
187
|
if ( includeNormals === true ) {
|
|
187
188
|
|
|
188
189
|
if ( normals != null ) {
|
|
@@ -207,9 +208,9 @@
|
|
|
207
208
|
|
|
208
209
|
}
|
|
209
210
|
|
|
210
|
-
}
|
|
211
|
-
|
|
211
|
+
}
|
|
212
212
|
|
|
213
|
+
// UV information
|
|
213
214
|
if ( includeUVs === true ) {
|
|
214
215
|
|
|
215
216
|
if ( uvs != null ) {
|
|
@@ -228,9 +229,9 @@
|
|
|
228
229
|
|
|
229
230
|
}
|
|
230
231
|
|
|
231
|
-
}
|
|
232
|
-
|
|
232
|
+
}
|
|
233
233
|
|
|
234
|
+
// THREE.Color information
|
|
234
235
|
if ( includeColors === true ) {
|
|
235
236
|
|
|
236
237
|
if ( colors != null ) {
|
|
@@ -261,6 +262,7 @@
|
|
|
261
262
|
if ( includeIndices === true ) {
|
|
262
263
|
|
|
263
264
|
// Create the face list
|
|
265
|
+
|
|
264
266
|
if ( indices !== null ) {
|
|
265
267
|
|
|
266
268
|
for ( let i = 0, l = indices.count; i < l; i += 3 ) {
|
|
@@ -293,10 +295,10 @@
|
|
|
293
295
|
|
|
294
296
|
}
|
|
295
297
|
|
|
296
|
-
}
|
|
297
|
-
// the face index on the next mesh
|
|
298
|
-
|
|
298
|
+
}
|
|
299
299
|
|
|
300
|
+
// Save the amount of verts we've already written so we can offset
|
|
301
|
+
// the face index on the next mesh
|
|
300
302
|
writtenVertices += vertices.count;
|
|
301
303
|
|
|
302
304
|
} );
|
|
@@ -316,15 +318,18 @@
|
|
|
316
318
|
const uvs = geometry.getAttribute( 'uv' );
|
|
317
319
|
const colors = geometry.getAttribute( 'color' );
|
|
318
320
|
const indices = geometry.getIndex();
|
|
319
|
-
normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
|
|
321
|
+
normalMatrixWorld.getNormalMatrix( mesh.matrixWorld );
|
|
320
322
|
|
|
323
|
+
// form each line
|
|
321
324
|
for ( let i = 0, l = vertices.count; i < l; i ++ ) {
|
|
322
325
|
|
|
323
326
|
vertex.fromBufferAttribute( vertices, i );
|
|
324
|
-
vertex.applyMatrix4( mesh.matrixWorld );
|
|
327
|
+
vertex.applyMatrix4( mesh.matrixWorld );
|
|
325
328
|
|
|
326
|
-
|
|
329
|
+
// Position information
|
|
330
|
+
let line = vertex.x + ' ' + vertex.y + ' ' + vertex.z;
|
|
327
331
|
|
|
332
|
+
// Normal information
|
|
328
333
|
if ( includeNormals === true ) {
|
|
329
334
|
|
|
330
335
|
if ( normals != null ) {
|
|
@@ -339,9 +344,9 @@
|
|
|
339
344
|
|
|
340
345
|
}
|
|
341
346
|
|
|
342
|
-
}
|
|
343
|
-
|
|
347
|
+
}
|
|
344
348
|
|
|
349
|
+
// UV information
|
|
345
350
|
if ( includeUVs === true ) {
|
|
346
351
|
|
|
347
352
|
if ( uvs != null ) {
|
|
@@ -354,9 +359,9 @@
|
|
|
354
359
|
|
|
355
360
|
}
|
|
356
361
|
|
|
357
|
-
}
|
|
358
|
-
|
|
362
|
+
}
|
|
359
363
|
|
|
364
|
+
// THREE.Color information
|
|
360
365
|
if ( includeColors === true ) {
|
|
361
366
|
|
|
362
367
|
if ( colors != null ) {
|
|
@@ -374,9 +379,9 @@
|
|
|
374
379
|
|
|
375
380
|
vertexList += line + '\n';
|
|
376
381
|
|
|
377
|
-
}
|
|
378
|
-
|
|
382
|
+
}
|
|
379
383
|
|
|
384
|
+
// Create the face list
|
|
380
385
|
if ( includeIndices === true ) {
|
|
381
386
|
|
|
382
387
|
if ( indices !== null ) {
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
parse( scene, options = {} ) {
|
|
15
15
|
|
|
16
|
-
const binary = options.binary !== undefined ? options.binary : false;
|
|
16
|
+
const binary = options.binary !== undefined ? options.binary : false;
|
|
17
|
+
|
|
18
|
+
//
|
|
17
19
|
|
|
18
20
|
const objects = [];
|
|
19
21
|
let triangles = 0;
|
|
@@ -57,17 +59,16 @@
|
|
|
57
59
|
const cb = new THREE.Vector3();
|
|
58
60
|
const ab = new THREE.Vector3();
|
|
59
61
|
const normal = new THREE.Vector3();
|
|
60
|
-
|
|
61
62
|
for ( let i = 0, il = objects.length; i < il; i ++ ) {
|
|
62
63
|
|
|
63
64
|
const object = objects[ i ].object3d;
|
|
64
65
|
const geometry = objects[ i ].geometry;
|
|
65
66
|
const index = geometry.index;
|
|
66
67
|
const positionAttribute = geometry.getAttribute( 'position' );
|
|
67
|
-
|
|
68
68
|
if ( index !== null ) {
|
|
69
69
|
|
|
70
70
|
// indexed geometry
|
|
71
|
+
|
|
71
72
|
for ( let j = 0; j < index.count; j += 3 ) {
|
|
72
73
|
|
|
73
74
|
const a = index.getX( j + 0 );
|
|
@@ -80,6 +81,7 @@
|
|
|
80
81
|
} else {
|
|
81
82
|
|
|
82
83
|
// non-indexed geometry
|
|
84
|
+
|
|
83
85
|
for ( let j = 0; j < positionAttribute.count; j += 3 ) {
|
|
84
86
|
|
|
85
87
|
const a = j + 0;
|
|
@@ -100,13 +102,11 @@
|
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
return output;
|
|
103
|
-
|
|
104
105
|
function writeFace( a, b, c, positionAttribute, object ) {
|
|
105
106
|
|
|
106
107
|
vA.fromBufferAttribute( positionAttribute, a );
|
|
107
108
|
vB.fromBufferAttribute( positionAttribute, b );
|
|
108
109
|
vC.fromBufferAttribute( positionAttribute, c );
|
|
109
|
-
|
|
110
110
|
if ( object.isSkinnedMesh === true ) {
|
|
111
111
|
|
|
112
112
|
object.boneTransform( a, vA );
|
|
@@ -122,7 +122,6 @@
|
|
|
122
122
|
writeVertex( vA );
|
|
123
123
|
writeVertex( vB );
|
|
124
124
|
writeVertex( vC );
|
|
125
|
-
|
|
126
125
|
if ( binary === true ) {
|
|
127
126
|
|
|
128
127
|
output.setUint16( offset, 0, true );
|
|
@@ -143,7 +142,6 @@
|
|
|
143
142
|
ab.subVectors( vA, vB );
|
|
144
143
|
cb.cross( ab ).normalize();
|
|
145
144
|
normal.copy( cb ).normalize();
|
|
146
|
-
|
|
147
145
|
if ( binary === true ) {
|
|
148
146
|
|
|
149
147
|
output.setFloat32( offset, normal.x, true );
|