@needle-tools/three 0.145.4 → 0.146.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +32586 -35951
- package/build/three.js +32600 -35965
- package/build/three.min.js +6 -7
- package/build/three.module.js +1547 -1154
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +38 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +14 -18
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +234 -168
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +75 -19
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +10 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
super( manager );
|
|
8
8
|
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
parse( buffer ) {
|
|
12
11
|
|
|
13
12
|
// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js
|
|
13
|
+
|
|
14
14
|
function tgaCheckHeader( header ) {
|
|
15
15
|
|
|
16
16
|
switch ( header.image_type ) {
|
|
17
17
|
|
|
18
18
|
// check indexed type
|
|
19
|
+
|
|
19
20
|
case TGA_TYPE_INDEXED:
|
|
20
21
|
case TGA_TYPE_RLE_INDEXED:
|
|
21
22
|
if ( header.colormap_length > 256 || header.colormap_size !== 24 || header.colormap_type !== 1 ) {
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
break;
|
|
29
|
+
|
|
28
30
|
// check colormap type
|
|
29
31
|
|
|
30
32
|
case TGA_TYPE_RGB:
|
|
@@ -38,24 +40,28 @@
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
break;
|
|
43
|
+
|
|
41
44
|
// What the need of a file without data ?
|
|
42
45
|
|
|
43
46
|
case TGA_TYPE_NO_DATA:
|
|
44
47
|
console.error( 'THREE.TGALoader: No data.' );
|
|
48
|
+
|
|
45
49
|
// Invalid type ?
|
|
46
50
|
|
|
47
51
|
default:
|
|
48
52
|
console.error( 'THREE.TGALoader: Invalid type "%s".', header.image_type );
|
|
49
53
|
|
|
50
|
-
}
|
|
54
|
+
}
|
|
51
55
|
|
|
56
|
+
// check image width and height
|
|
52
57
|
|
|
53
58
|
if ( header.width <= 0 || header.height <= 0 ) {
|
|
54
59
|
|
|
55
60
|
console.error( 'THREE.TGALoader: Invalid image size.' );
|
|
56
61
|
|
|
57
|
-
}
|
|
62
|
+
}
|
|
58
63
|
|
|
64
|
+
// check image pixel size
|
|
59
65
|
|
|
60
66
|
if ( header.pixel_size !== 8 && header.pixel_size !== 16 && header.pixel_size !== 24 && header.pixel_size !== 32 ) {
|
|
61
67
|
|
|
@@ -63,21 +69,25 @@
|
|
|
63
69
|
|
|
64
70
|
}
|
|
65
71
|
|
|
66
|
-
}
|
|
72
|
+
}
|
|
67
73
|
|
|
74
|
+
// parse tga image buffer
|
|
68
75
|
|
|
69
76
|
function tgaParse( use_rle, use_pal, header, offset, data ) {
|
|
70
77
|
|
|
71
78
|
let pixel_data, palettes;
|
|
72
79
|
const pixel_size = header.pixel_size >> 3;
|
|
73
|
-
const pixel_total = header.width * header.height * pixel_size;
|
|
80
|
+
const pixel_total = header.width * header.height * pixel_size;
|
|
81
|
+
|
|
82
|
+
// read palettes
|
|
74
83
|
|
|
75
84
|
if ( use_pal ) {
|
|
76
85
|
|
|
77
86
|
palettes = data.subarray( offset, offset += header.colormap_length * ( header.colormap_size >> 3 ) );
|
|
78
87
|
|
|
79
|
-
}
|
|
88
|
+
}
|
|
80
89
|
|
|
90
|
+
// read RLE
|
|
81
91
|
|
|
82
92
|
if ( use_rle ) {
|
|
83
93
|
|
|
@@ -85,21 +95,24 @@
|
|
|
85
95
|
let c, count, i;
|
|
86
96
|
let shift = 0;
|
|
87
97
|
const pixels = new Uint8Array( pixel_size );
|
|
88
|
-
|
|
89
98
|
while ( shift < pixel_total ) {
|
|
90
99
|
|
|
91
100
|
c = data[ offset ++ ];
|
|
92
|
-
count = ( c & 0x7f ) + 1;
|
|
101
|
+
count = ( c & 0x7f ) + 1;
|
|
102
|
+
|
|
103
|
+
// RLE pixels
|
|
93
104
|
|
|
94
105
|
if ( c & 0x80 ) {
|
|
95
106
|
|
|
96
107
|
// bind pixel tmp array
|
|
108
|
+
|
|
97
109
|
for ( i = 0; i < pixel_size; ++ i ) {
|
|
98
110
|
|
|
99
111
|
pixels[ i ] = data[ offset ++ ];
|
|
100
112
|
|
|
101
|
-
}
|
|
113
|
+
}
|
|
102
114
|
|
|
115
|
+
// copy pixel array
|
|
103
116
|
|
|
104
117
|
for ( i = 0; i < count; ++ i ) {
|
|
105
118
|
|
|
@@ -112,8 +125,8 @@
|
|
|
112
125
|
} else {
|
|
113
126
|
|
|
114
127
|
// raw pixels
|
|
115
|
-
count *= pixel_size;
|
|
116
128
|
|
|
129
|
+
count *= pixel_size;
|
|
117
130
|
for ( i = 0; i < count; ++ i ) {
|
|
118
131
|
|
|
119
132
|
pixel_data[ shift + i ] = data[ offset ++ ];
|
|
@@ -129,6 +142,7 @@
|
|
|
129
142
|
} else {
|
|
130
143
|
|
|
131
144
|
// raw pixels
|
|
145
|
+
|
|
132
146
|
pixel_data = data.subarray( offset, offset += use_pal ? header.width * header.height : pixel_total );
|
|
133
147
|
|
|
134
148
|
}
|
|
@@ -148,7 +162,6 @@
|
|
|
148
162
|
x,
|
|
149
163
|
y;
|
|
150
164
|
const width = header.width;
|
|
151
|
-
|
|
152
165
|
for ( y = y_start; y !== y_end; y += y_step ) {
|
|
153
166
|
|
|
154
167
|
for ( x = x_start; x !== x_end; x += x_step, i ++ ) {
|
|
@@ -174,7 +187,6 @@
|
|
|
174
187
|
x,
|
|
175
188
|
y;
|
|
176
189
|
const width = header.width;
|
|
177
|
-
|
|
178
190
|
for ( y = y_start; y !== y_end; y += y_step ) {
|
|
179
191
|
|
|
180
192
|
for ( x = x_start; x !== x_end; x += x_step, i += 2 ) {
|
|
@@ -199,7 +211,6 @@
|
|
|
199
211
|
x,
|
|
200
212
|
y;
|
|
201
213
|
const width = header.width;
|
|
202
|
-
|
|
203
214
|
for ( y = y_start; y !== y_end; y += y_step ) {
|
|
204
215
|
|
|
205
216
|
for ( x = x_start; x !== x_end; x += x_step, i += 3 ) {
|
|
@@ -223,7 +234,6 @@
|
|
|
223
234
|
x,
|
|
224
235
|
y;
|
|
225
236
|
const width = header.width;
|
|
226
|
-
|
|
227
237
|
for ( y = y_start; y !== y_end; y += y_step ) {
|
|
228
238
|
|
|
229
239
|
for ( x = x_start; x !== x_end; x += x_step, i += 4 ) {
|
|
@@ -248,7 +258,6 @@
|
|
|
248
258
|
x,
|
|
249
259
|
y;
|
|
250
260
|
const width = header.width;
|
|
251
|
-
|
|
252
261
|
for ( y = y_start; y !== y_end; y += y_step ) {
|
|
253
262
|
|
|
254
263
|
for ( x = x_start; x !== x_end; x += x_step, i ++ ) {
|
|
@@ -273,7 +282,6 @@
|
|
|
273
282
|
x,
|
|
274
283
|
y;
|
|
275
284
|
const width = header.width;
|
|
276
|
-
|
|
277
285
|
for ( y = y_start; y !== y_end; y += y_step ) {
|
|
278
286
|
|
|
279
287
|
for ( x = x_start; x !== x_end; x += x_step, i += 2 ) {
|
|
@@ -294,7 +302,6 @@
|
|
|
294
302
|
function getTgaRGBA( data, width, height, image, palette ) {
|
|
295
303
|
|
|
296
304
|
let x_start, y_start, x_step, y_step, x_end, y_end;
|
|
297
|
-
|
|
298
305
|
switch ( ( header.flags & TGA_ORIGIN_MASK ) >> TGA_ORIGIN_SHIFT ) {
|
|
299
306
|
|
|
300
307
|
default:
|
|
@@ -306,7 +313,6 @@
|
|
|
306
313
|
y_step = 1;
|
|
307
314
|
y_end = height;
|
|
308
315
|
break;
|
|
309
|
-
|
|
310
316
|
case TGA_ORIGIN_BL:
|
|
311
317
|
x_start = 0;
|
|
312
318
|
x_step = 1;
|
|
@@ -315,7 +321,6 @@
|
|
|
315
321
|
y_step = - 1;
|
|
316
322
|
y_end = - 1;
|
|
317
323
|
break;
|
|
318
|
-
|
|
319
324
|
case TGA_ORIGIN_UR:
|
|
320
325
|
x_start = width - 1;
|
|
321
326
|
x_step = - 1;
|
|
@@ -324,7 +329,6 @@
|
|
|
324
329
|
y_step = 1;
|
|
325
330
|
y_end = height;
|
|
326
331
|
break;
|
|
327
|
-
|
|
328
332
|
case TGA_ORIGIN_BR:
|
|
329
333
|
x_start = width - 1;
|
|
330
334
|
x_step = - 1;
|
|
@@ -343,11 +347,9 @@
|
|
|
343
347
|
case 8:
|
|
344
348
|
tgaGetImageDataGrey8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
|
|
345
349
|
break;
|
|
346
|
-
|
|
347
350
|
case 16:
|
|
348
351
|
tgaGetImageDataGrey16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
|
|
349
352
|
break;
|
|
350
|
-
|
|
351
353
|
default:
|
|
352
354
|
console.error( 'THREE.TGALoader: Format not supported.' );
|
|
353
355
|
break;
|
|
@@ -361,34 +363,31 @@
|
|
|
361
363
|
case 8:
|
|
362
364
|
tgaGetImageData8bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image, palette );
|
|
363
365
|
break;
|
|
364
|
-
|
|
365
366
|
case 16:
|
|
366
367
|
tgaGetImageData16bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
|
|
367
368
|
break;
|
|
368
|
-
|
|
369
369
|
case 24:
|
|
370
370
|
tgaGetImageData24bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
|
|
371
371
|
break;
|
|
372
|
-
|
|
373
372
|
case 32:
|
|
374
373
|
tgaGetImageData32bits( data, y_start, y_step, y_end, x_start, x_step, x_end, image );
|
|
375
374
|
break;
|
|
376
|
-
|
|
377
375
|
default:
|
|
378
376
|
console.error( 'THREE.TGALoader: Format not supported.' );
|
|
379
377
|
break;
|
|
380
378
|
|
|
381
379
|
}
|
|
382
380
|
|
|
383
|
-
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Load image data according to specific method
|
|
384
384
|
// let func = 'tgaGetImageData' + (use_grey ? 'Grey' : '') + (header.pixel_size) + 'bits';
|
|
385
385
|
// func(data, y_start, y_step, y_end, x_start, x_step, x_end, width, image, palette );
|
|
386
|
-
|
|
387
|
-
|
|
388
386
|
return data;
|
|
389
387
|
|
|
390
|
-
}
|
|
388
|
+
}
|
|
391
389
|
|
|
390
|
+
// TGA constants
|
|
392
391
|
|
|
393
392
|
const TGA_TYPE_NO_DATA = 0,
|
|
394
393
|
TGA_TYPE_INDEXED = 1,
|
|
@@ -418,52 +417,51 @@
|
|
|
418
417
|
height: content[ offset ++ ] | content[ offset ++ ] << 8,
|
|
419
418
|
pixel_size: content[ offset ++ ],
|
|
420
419
|
flags: content[ offset ++ ]
|
|
421
|
-
};
|
|
420
|
+
};
|
|
422
421
|
|
|
423
|
-
|
|
422
|
+
// check tga if it is valid format
|
|
424
423
|
|
|
424
|
+
tgaCheckHeader( header );
|
|
425
425
|
if ( header.id_length + offset > buffer.length ) {
|
|
426
426
|
|
|
427
427
|
console.error( 'THREE.TGALoader: No data.' );
|
|
428
428
|
|
|
429
|
-
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// skip the needn't data
|
|
430
432
|
|
|
433
|
+
offset += header.id_length;
|
|
431
434
|
|
|
432
|
-
|
|
435
|
+
// get targa information about RLE compression and palette
|
|
433
436
|
|
|
434
437
|
let use_rle = false,
|
|
435
438
|
use_pal = false,
|
|
436
439
|
use_grey = false;
|
|
437
|
-
|
|
438
440
|
switch ( header.image_type ) {
|
|
439
441
|
|
|
440
442
|
case TGA_TYPE_RLE_INDEXED:
|
|
441
443
|
use_rle = true;
|
|
442
444
|
use_pal = true;
|
|
443
445
|
break;
|
|
444
|
-
|
|
445
446
|
case TGA_TYPE_INDEXED:
|
|
446
447
|
use_pal = true;
|
|
447
448
|
break;
|
|
448
|
-
|
|
449
449
|
case TGA_TYPE_RLE_RGB:
|
|
450
450
|
use_rle = true;
|
|
451
451
|
break;
|
|
452
|
-
|
|
453
452
|
case TGA_TYPE_RGB:
|
|
454
453
|
break;
|
|
455
|
-
|
|
456
454
|
case TGA_TYPE_RLE_GREY:
|
|
457
455
|
use_rle = true;
|
|
458
456
|
use_grey = true;
|
|
459
457
|
break;
|
|
460
|
-
|
|
461
458
|
case TGA_TYPE_GREY:
|
|
462
459
|
use_grey = true;
|
|
463
460
|
break;
|
|
464
461
|
|
|
465
|
-
}
|
|
462
|
+
}
|
|
466
463
|
|
|
464
|
+
//
|
|
467
465
|
|
|
468
466
|
const imageData = new Uint8Array( header.width * header.height * 4 );
|
|
469
467
|
const result = tgaParse( use_rle, use_pal, header, offset, content );
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
this.reversed = false;
|
|
15
15
|
|
|
16
16
|
}
|
|
17
|
-
|
|
18
17
|
load( url, onLoad, onProgress, onError ) {
|
|
19
18
|
|
|
20
19
|
const scope = this;
|
|
@@ -48,7 +47,6 @@
|
|
|
48
47
|
}, onProgress, onError );
|
|
49
48
|
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
parse( arraybuffer ) {
|
|
53
51
|
|
|
54
52
|
function convert( font, reversed ) {
|
|
@@ -58,12 +56,10 @@
|
|
|
58
56
|
const scale = 100000 / ( ( font.unitsPerEm || 2048 ) * 72 );
|
|
59
57
|
const glyphIndexMap = font.encoding.cmap.glyphIndexMap;
|
|
60
58
|
const unicodes = Object.keys( glyphIndexMap );
|
|
61
|
-
|
|
62
59
|
for ( let i = 0; i < unicodes.length; i ++ ) {
|
|
63
60
|
|
|
64
61
|
const unicode = unicodes[ i ];
|
|
65
62
|
const glyph = font.glyphs.glyphs[ glyphIndexMap[ unicode ] ];
|
|
66
|
-
|
|
67
63
|
if ( unicode !== undefined ) {
|
|
68
64
|
|
|
69
65
|
const token = {
|
|
@@ -72,7 +68,6 @@
|
|
|
72
68
|
x_max: round( glyph.xMax * scale ),
|
|
73
69
|
o: ''
|
|
74
70
|
};
|
|
75
|
-
|
|
76
71
|
if ( reversed ) {
|
|
77
72
|
|
|
78
73
|
glyph.path.commands = reverseCommands( glyph.path.commands );
|
|
@@ -88,7 +83,6 @@
|
|
|
88
83
|
}
|
|
89
84
|
|
|
90
85
|
token.o += command.type.toLowerCase() + ' ';
|
|
91
|
-
|
|
92
86
|
if ( command.x !== undefined && command.y !== undefined ) {
|
|
93
87
|
|
|
94
88
|
token.o += round( command.x * scale ) + ' ' + round( command.y * scale ) + ' ';
|
|
@@ -160,14 +154,12 @@
|
|
|
160
154
|
y: p[ p.length - 1 ].y
|
|
161
155
|
};
|
|
162
156
|
reversed.push( result );
|
|
163
|
-
|
|
164
157
|
for ( let i = p.length - 1; i > 0; i -- ) {
|
|
165
158
|
|
|
166
159
|
const command = p[ i ];
|
|
167
160
|
const result = {
|
|
168
161
|
type: command.type
|
|
169
162
|
};
|
|
170
|
-
|
|
171
163
|
if ( command.x2 !== undefined && command.y2 !== undefined ) {
|
|
172
164
|
|
|
173
165
|
result.x1 = command.x2;
|
|
@@ -34,12 +34,13 @@
|
|
|
34
34
|
}, onProgress, onError );
|
|
35
35
|
|
|
36
36
|
}
|
|
37
|
-
|
|
38
37
|
parse( buffer ) {
|
|
39
38
|
|
|
40
|
-
const group = new THREE.Group();
|
|
39
|
+
const group = new THREE.Group();
|
|
40
|
+
// https://docs.google.com/document/d/11ZsHozYn9FnWG7y3s3WAyKIACfbfwb4PbaS8cZ_xjvo/edit#
|
|
41
41
|
|
|
42
42
|
const zip = fflate.unzipSync( new Uint8Array( buffer.slice( 16 ) ) );
|
|
43
|
+
|
|
43
44
|
/*
|
|
44
45
|
const thumbnail = zip[ 'thumbnail.png' ].buffer;
|
|
45
46
|
const img = document.createElement( 'img' );
|
|
@@ -48,6 +49,7 @@
|
|
|
48
49
|
*/
|
|
49
50
|
|
|
50
51
|
const metadata = JSON.parse( fflate.strFromU8( zip[ 'metadata.json' ] ) );
|
|
52
|
+
|
|
51
53
|
/*
|
|
52
54
|
const blob = new Blob( [ zip[ 'data.sketch' ].buffer ], { type: 'application/octet-stream' } );
|
|
53
55
|
window.open( URL.createObjectURL( blob ) );
|
|
@@ -57,7 +59,6 @@
|
|
|
57
59
|
const num_strokes = data.getInt32( 16, true );
|
|
58
60
|
const brushes = {};
|
|
59
61
|
let offset = 20;
|
|
60
|
-
|
|
61
62
|
for ( let i = 0; i < num_strokes; i ++ ) {
|
|
62
63
|
|
|
63
64
|
const brush_index = data.getInt32( offset, true );
|
|
@@ -67,26 +68,28 @@
|
|
|
67
68
|
const controlpoint_mask = data.getUint32( offset + 28, true );
|
|
68
69
|
let offset_stroke_mask = 0;
|
|
69
70
|
let offset_controlpoint_mask = 0;
|
|
70
|
-
|
|
71
71
|
for ( let j = 0; j < 4; j ++ ) {
|
|
72
72
|
|
|
73
73
|
// TOFIX: I don't understand these masks yet
|
|
74
|
+
|
|
74
75
|
const byte = 1 << j;
|
|
75
76
|
if ( ( stroke_mask & byte ) > 0 ) offset_stroke_mask += 4;
|
|
76
77
|
if ( ( controlpoint_mask & byte ) > 0 ) offset_controlpoint_mask += 4;
|
|
77
78
|
|
|
78
|
-
}
|
|
79
|
-
// console.log( offset_stroke_mask, offset_controlpoint_mask );
|
|
79
|
+
}
|
|
80
80
|
|
|
81
|
+
// console.log( { brush_index, brush_color, brush_size, stroke_mask, controlpoint_mask } );
|
|
82
|
+
// console.log( offset_stroke_mask, offset_controlpoint_mask );
|
|
81
83
|
|
|
82
84
|
offset = offset + 28 + offset_stroke_mask + 4; // TOFIX: This is wrong
|
|
83
85
|
|
|
84
|
-
const num_control_points = data.getInt32( offset, true );
|
|
86
|
+
const num_control_points = data.getInt32( offset, true );
|
|
87
|
+
|
|
88
|
+
// console.log( { num_control_points } );
|
|
85
89
|
|
|
86
90
|
const positions = new Float32Array( num_control_points * 3 );
|
|
87
91
|
const quaternions = new Float32Array( num_control_points * 4 );
|
|
88
92
|
offset = offset + 4;
|
|
89
|
-
|
|
90
93
|
for ( let j = 0, k = 0; j < positions.length; j += 3, k += 4 ) {
|
|
91
94
|
|
|
92
95
|
positions[ j + 0 ] = data.getFloat32( offset + 0, true );
|
|
@@ -123,7 +126,6 @@
|
|
|
123
126
|
}
|
|
124
127
|
|
|
125
128
|
}
|
|
126
|
-
|
|
127
129
|
class StrokeGeometry extends THREE.BufferGeometry {
|
|
128
130
|
|
|
129
131
|
constructor( strokes ) {
|
|
@@ -139,7 +141,9 @@
|
|
|
139
141
|
const vector1 = new THREE.Vector3();
|
|
140
142
|
const vector2 = new THREE.Vector3();
|
|
141
143
|
const vector3 = new THREE.Vector3();
|
|
142
|
-
const vector4 = new THREE.Vector3();
|
|
144
|
+
const vector4 = new THREE.Vector3();
|
|
145
|
+
|
|
146
|
+
// size = size / 2;
|
|
143
147
|
|
|
144
148
|
for ( const k in strokes ) {
|
|
145
149
|
|
|
@@ -150,7 +154,6 @@
|
|
|
150
154
|
const color = stroke[ 3 ];
|
|
151
155
|
prevPosition.fromArray( positions, 0 );
|
|
152
156
|
prevQuaternion.fromArray( quaternions, 0 );
|
|
153
|
-
|
|
154
157
|
for ( let i = 3, j = 4, l = positions.length; i < l; i += 3, j += 4 ) {
|
|
155
158
|
|
|
156
159
|
position.fromArray( positions, i );
|
|
@@ -201,7 +204,6 @@
|
|
|
201
204
|
}
|
|
202
205
|
|
|
203
206
|
}
|
|
204
|
-
|
|
205
207
|
const BRUSH_LIST_ARRAY = {
|
|
206
208
|
'89d104cd-d012-426b-b5b3-bbaee63ac43c': 'Bubbles',
|
|
207
209
|
'700f3aa8-9a7c-2384-8b8a-ea028905dd8c': 'CelVinyl',
|
|
@@ -335,7 +337,6 @@
|
|
|
335
337
|
}
|
|
336
338
|
};
|
|
337
339
|
let shaders = null;
|
|
338
|
-
|
|
339
340
|
function getShaders() {
|
|
340
341
|
|
|
341
342
|
if ( shaders === null ) {
|
|
@@ -439,12 +440,10 @@
|
|
|
439
440
|
function getMaterial( GUID ) {
|
|
440
441
|
|
|
441
442
|
const name = BRUSH_LIST_ARRAY[ GUID ];
|
|
442
|
-
|
|
443
443
|
switch ( name ) {
|
|
444
444
|
|
|
445
445
|
case 'Light':
|
|
446
446
|
return new THREE.RawShaderMaterial( getShaders().Light );
|
|
447
|
-
|
|
448
447
|
default:
|
|
449
448
|
return new THREE.MeshBasicMaterial( {
|
|
450
449
|
vertexColors: true,
|
|
@@ -34,13 +34,11 @@
|
|
|
34
34
|
}, onProgress, onError );
|
|
35
35
|
|
|
36
36
|
}
|
|
37
|
-
|
|
38
37
|
parse( buffer ) {
|
|
39
38
|
|
|
40
39
|
const data = new DataView( buffer );
|
|
41
40
|
const id = data.getUint32( 0, true );
|
|
42
41
|
const version = data.getUint32( 4, true );
|
|
43
|
-
|
|
44
42
|
if ( id !== 542658390 || version !== 150 ) {
|
|
45
43
|
|
|
46
44
|
console.error( 'Not a valid VOX file' );
|
|
@@ -52,11 +50,9 @@
|
|
|
52
50
|
let i = 8;
|
|
53
51
|
let chunk;
|
|
54
52
|
const chunks = [];
|
|
55
|
-
|
|
56
53
|
while ( i < data.byteLength ) {
|
|
57
54
|
|
|
58
55
|
let id = '';
|
|
59
|
-
|
|
60
56
|
for ( let j = 0; j < 4; j ++ ) {
|
|
61
57
|
|
|
62
58
|
id += String.fromCharCode( data.getUint8( i ++ ) );
|
|
@@ -96,7 +92,6 @@
|
|
|
96
92
|
} else if ( id === 'RGBA' ) {
|
|
97
93
|
|
|
98
94
|
const palette = [ 0 ];
|
|
99
|
-
|
|
100
95
|
for ( let j = 0; j < 256; j ++ ) {
|
|
101
96
|
|
|
102
97
|
palette[ j + 1 ] = data.getUint32( i, true );
|
|
@@ -109,6 +104,7 @@
|
|
|
109
104
|
} else {
|
|
110
105
|
|
|
111
106
|
// console.log( id, chunkSize, childChunks );
|
|
107
|
+
|
|
112
108
|
i += chunkSize;
|
|
113
109
|
|
|
114
110
|
}
|
|
@@ -120,14 +116,15 @@
|
|
|
120
116
|
}
|
|
121
117
|
|
|
122
118
|
}
|
|
123
|
-
|
|
124
119
|
class VOXMesh extends THREE.Mesh {
|
|
125
120
|
|
|
126
121
|
constructor( chunk ) {
|
|
127
122
|
|
|
128
123
|
const data = chunk.data;
|
|
129
124
|
const size = chunk.size;
|
|
130
|
-
const palette = chunk.palette;
|
|
125
|
+
const palette = chunk.palette;
|
|
126
|
+
|
|
127
|
+
//
|
|
131
128
|
|
|
132
129
|
const vertices = [];
|
|
133
130
|
const colors = [];
|
|
@@ -137,13 +134,11 @@
|
|
|
137
134
|
const ny = [ 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0 ];
|
|
138
135
|
const nz = [ 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0 ];
|
|
139
136
|
const pz = [ 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1 ];
|
|
140
|
-
|
|
141
137
|
function add( tile, x, y, z, r, g, b ) {
|
|
142
138
|
|
|
143
139
|
x -= size.x / 2;
|
|
144
140
|
y -= size.z / 2;
|
|
145
141
|
z += size.y / 2;
|
|
146
|
-
|
|
147
142
|
for ( let i = 0; i < 18; i += 3 ) {
|
|
148
143
|
|
|
149
144
|
vertices.push( tile[ i + 0 ] + x, tile[ i + 1 ] + y, tile[ i + 2 ] + z );
|
|
@@ -151,13 +146,13 @@
|
|
|
151
146
|
|
|
152
147
|
}
|
|
153
148
|
|
|
154
|
-
}
|
|
149
|
+
}
|
|
155
150
|
|
|
151
|
+
// Store data in a volume for sampling
|
|
156
152
|
|
|
157
153
|
const offsety = size.x;
|
|
158
154
|
const offsetz = size.x * size.y;
|
|
159
155
|
const array = new Uint8Array( size.x * size.y * size.z );
|
|
160
|
-
|
|
161
156
|
for ( let j = 0; j < data.length; j += 4 ) {
|
|
162
157
|
|
|
163
158
|
const x = data[ j + 0 ];
|
|
@@ -166,11 +161,11 @@
|
|
|
166
161
|
const index = x + y * offsety + z * offsetz;
|
|
167
162
|
array[ index ] = 255;
|
|
168
163
|
|
|
169
|
-
}
|
|
164
|
+
}
|
|
170
165
|
|
|
166
|
+
// Construct geometry
|
|
171
167
|
|
|
172
168
|
let hasColors = false;
|
|
173
|
-
|
|
174
169
|
for ( let j = 0; j < data.length; j += 4 ) {
|
|
175
170
|
|
|
176
171
|
const x = data[ j + 0 ];
|
|
@@ -196,7 +191,6 @@
|
|
|
196
191
|
geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
|
|
197
192
|
geometry.computeVertexNormals();
|
|
198
193
|
const material = new THREE.MeshStandardMaterial();
|
|
199
|
-
|
|
200
194
|
if ( hasColors ) {
|
|
201
195
|
|
|
202
196
|
geometry.setAttribute( 'color', new THREE.Float32BufferAttribute( colors, 3 ) );
|
|
@@ -209,7 +203,6 @@
|
|
|
209
203
|
}
|
|
210
204
|
|
|
211
205
|
}
|
|
212
|
-
|
|
213
206
|
class VOXData3DTexture extends THREE.Data3DTexture {
|
|
214
207
|
|
|
215
208
|
constructor( chunk ) {
|
|
@@ -219,7 +212,6 @@
|
|
|
219
212
|
const offsety = size.x;
|
|
220
213
|
const offsetz = size.x * size.y;
|
|
221
214
|
const array = new Uint8Array( size.x * size.y * size.z );
|
|
222
|
-
|
|
223
215
|
for ( let j = 0; j < data.length; j += 4 ) {
|
|
224
216
|
|
|
225
217
|
const x = data[ j + 0 ];
|