@needle-tools/three 0.146.10 → 0.153.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/build/three.cjs +40124 -20919
- package/build/three.js +40120 -20914
- package/build/three.min.js +8 -6
- package/build/three.module.js +7298 -6003
- package/build/three.module.min.js +7 -0
- package/examples/jsm/animation/AnimationClipCreator.js +5 -3
- package/examples/jsm/cameras/CinematicCamera.js +1 -2
- package/examples/jsm/capabilities/WebGPU.js +17 -5
- package/examples/jsm/controls/ArcballControls.js +1828 -1821
- package/examples/jsm/controls/MapControls.js +28 -0
- package/examples/jsm/controls/OrbitControls.js +26 -53
- package/examples/jsm/controls/PointerLockControls.js +70 -65
- package/examples/jsm/controls/TrackballControls.js +18 -4
- package/examples/jsm/controls/TransformControls.js +0 -1
- package/examples/jsm/csm/CSM.js +11 -5
- package/examples/jsm/csm/CSMShader.js +7 -6
- package/examples/jsm/effects/AnaglyphEffect.js +6 -20
- package/examples/jsm/effects/AsciiEffect.js +3 -6
- package/examples/jsm/effects/OutlineEffect.js +1 -15
- package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +53 -11
- package/examples/jsm/exporters/EXRExporter.js +3 -9
- package/examples/jsm/exporters/GLTFExporter.js +561 -154
- package/examples/jsm/exporters/KTX2Exporter.js +34 -23
- package/examples/jsm/exporters/MMDExporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +8 -1
- package/examples/jsm/exporters/STLExporter.js +8 -4
- package/examples/jsm/exporters/USDZExporter.js +305 -792
- package/examples/jsm/geometries/ConvexGeometry.js +0 -6
- package/examples/jsm/geometries/ParametricGeometry.js +10 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +71 -57
- package/examples/jsm/interactive/HTMLMesh.js +16 -3
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/{js → jsm}/libs/basis/README.md +4 -4
- package/examples/jsm/libs/draco/draco_decoder.js +34 -0
- package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
- package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
- package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
- package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
- package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/examples/jsm/libs/lil-gui.module.min.js +2 -2
- package/examples/jsm/libs/tween.module.js +803 -0
- package/examples/jsm/lights/IESSpotLight.js +25 -0
- package/examples/jsm/lights/LightProbeGenerator.js +11 -9
- package/examples/jsm/lines/LineSegments2.js +16 -10
- package/examples/jsm/loaders/3DMLoader.js +8 -5
- package/examples/jsm/loaders/3MFLoader.js +12 -11
- package/examples/jsm/loaders/AMFLoader.js +2 -3
- package/examples/jsm/loaders/BVHLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +15 -16
- package/examples/jsm/loaders/DRACOLoader.js +69 -18
- package/examples/jsm/loaders/EXRLoader.js +23 -24
- package/examples/jsm/loaders/FBXLoader.js +34 -50
- package/examples/jsm/loaders/GCodeLoader.js +1 -2
- package/examples/jsm/loaders/GLTFLoader.js +417 -895
- package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +684 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
- package/examples/jsm/loaders/IESLoader.js +337 -0
- package/examples/jsm/loaders/KMZLoader.js +4 -4
- package/examples/jsm/loaders/KTX2Loader.js +145 -69
- package/examples/jsm/loaders/LDrawLoader.js +20 -18
- package/examples/jsm/loaders/LWOLoader.js +12 -29
- package/examples/jsm/loaders/LottieLoader.js +3 -1
- package/examples/jsm/loaders/MMDLoader.js +49 -18
- package/examples/jsm/loaders/MTLLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +9 -3
- package/examples/jsm/loaders/NRRDLoader.js +33 -5
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +26 -12
- package/examples/jsm/loaders/PDBLoader.js +7 -2
- package/examples/jsm/loaders/PLYLoader.js +254 -109
- package/examples/jsm/loaders/RGBELoader.js +3 -3
- package/examples/jsm/loaders/STLLoader.js +9 -5
- package/examples/jsm/loaders/SVGLoader.js +36 -27
- package/examples/jsm/loaders/TTFLoader.js +1 -8
- package/examples/jsm/loaders/TiltLoader.js +13 -7
- package/examples/jsm/loaders/USDZLoader.js +6 -6
- package/examples/jsm/loaders/VOXLoader.js +8 -2
- package/examples/jsm/loaders/VRMLLoader.js +44 -16
- package/examples/jsm/loaders/VTKLoader.js +19 -10
- package/examples/jsm/loaders/XYZLoader.js +9 -3
- package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -3
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/Lut.js +5 -4
- package/examples/jsm/math/MeshSurfaceSampler.js +7 -9
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/misc/ConvexObjectBreaker.js +2 -8
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -5
- package/examples/jsm/misc/MD2Character.js +2 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +2 -2
- package/examples/jsm/misc/ProgressiveLightMap.js +12 -10
- package/examples/jsm/misc/RollerCoaster.js +7 -1
- package/examples/jsm/misc/Volume.js +20 -5
- package/examples/jsm/misc/VolumeSlice.js +3 -1
- package/examples/jsm/modifiers/CurveModifier.js +1 -0
- package/examples/jsm/modifiers/TessellateModifier.js +19 -19
- package/examples/jsm/nodes/Nodes.js +144 -335
- package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +86 -0
- package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
- package/examples/jsm/nodes/accessors/CameraNode.js +12 -2
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +58 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +41 -26
- package/examples/jsm/nodes/accessors/MaterialNode.js +155 -38
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
- package/examples/jsm/nodes/accessors/ModelNode.js +11 -0
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +13 -14
- package/examples/jsm/nodes/accessors/NormalNode.js +35 -19
- package/examples/jsm/nodes/accessors/Object3DNode.js +32 -12
- package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
- package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
- package/examples/jsm/nodes/accessors/SkinningNode.js +43 -40
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
- package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
- package/examples/jsm/nodes/accessors/TextureNode.js +80 -12
- package/examples/jsm/nodes/accessors/UVNode.js +6 -0
- package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
- package/examples/jsm/nodes/code/CodeNode.js +75 -0
- package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
- package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
- package/examples/jsm/nodes/{core → code}/FunctionNode.js +8 -7
- package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
- package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
- package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
- package/examples/jsm/nodes/core/AttributeNode.js +17 -9
- package/examples/jsm/nodes/core/BypassNode.js +9 -2
- package/examples/jsm/nodes/core/CacheNode.js +46 -0
- package/examples/jsm/nodes/core/ConstNode.js +3 -0
- package/examples/jsm/nodes/core/ContextNode.js +8 -1
- package/examples/jsm/nodes/core/InputNode.js +26 -5
- package/examples/jsm/nodes/core/InstanceIndexNode.js +26 -2
- package/examples/jsm/nodes/core/LightingModel.js +16 -0
- package/examples/jsm/nodes/core/Node.js +129 -35
- package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +271 -121
- package/examples/jsm/nodes/core/NodeCache.js +26 -0
- package/examples/jsm/nodes/core/NodeFrame.js +56 -5
- package/examples/jsm/nodes/core/NodeUtils.js +115 -28
- package/examples/jsm/nodes/core/PropertyNode.js +19 -2
- package/examples/jsm/nodes/core/StackNode.js +99 -0
- package/examples/jsm/nodes/core/TempNode.js +11 -3
- package/examples/jsm/nodes/core/UniformNode.js +16 -1
- package/examples/jsm/nodes/core/VarNode.js +21 -29
- package/examples/jsm/nodes/core/VaryingNode.js +15 -2
- package/examples/jsm/nodes/core/constants.js +6 -0
- package/examples/jsm/nodes/display/BlendModeNode.js +25 -11
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +30 -14
- package/examples/jsm/nodes/display/ColorSpaceNode.js +39 -27
- package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +31 -18
- package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
- package/examples/jsm/nodes/display/ToneMappingNode.js +101 -11
- package/examples/jsm/nodes/display/ViewportNode.js +27 -18
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +30 -0
- package/examples/jsm/nodes/display/ViewportTextureNode.js +67 -0
- package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
- package/examples/jsm/nodes/fog/FogNode.js +12 -6
- package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
- package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -13
- package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -6
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +4 -4
- package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +3 -3
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +7 -5
- package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +35 -36
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +4 -3
- package/examples/jsm/nodes/functions/material/getRoughness.js +4 -4
- package/examples/jsm/nodes/geometry/RangeNode.js +50 -55
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
- package/examples/jsm/nodes/lighting/AONode.js +5 -3
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +114 -5
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +121 -35
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
- package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
- package/examples/jsm/nodes/lighting/LightNode.js +57 -0
- package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
- package/examples/jsm/nodes/lighting/LightingContextNode.js +30 -8
- package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
- package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
- package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
- package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -9
- package/examples/jsm/nodes/materials/Materials.js +11 -55
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -11
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +48 -0
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +74 -0
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +21 -96
- package/examples/jsm/nodes/materials/NodeMaterial.js +284 -62
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -1
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -25
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +2 -1
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +2 -1
- package/examples/jsm/nodes/math/CondNode.js +43 -17
- package/examples/jsm/nodes/math/MathNode.js +178 -73
- package/examples/jsm/nodes/math/OperatorNode.js +52 -2
- package/examples/jsm/nodes/procedural/CheckerNode.js +14 -6
- package/examples/jsm/nodes/shadernode/ShaderNode.js +186 -63
- package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
- package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
- package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +10 -4
- package/examples/jsm/nodes/utils/JoinNode.js +4 -1
- package/examples/jsm/nodes/utils/LoopNode.js +186 -0
- package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
- package/examples/jsm/nodes/utils/OscNode.js +21 -14
- package/examples/jsm/nodes/utils/PackingNode.js +55 -0
- package/examples/jsm/nodes/utils/RemapNode.js +13 -5
- package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
- package/examples/jsm/nodes/utils/SplitNode.js +7 -5
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
- package/examples/jsm/nodes/utils/TimerNode.js +16 -6
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
- package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
- package/examples/jsm/objects/Lensflare.js +3 -4
- package/examples/jsm/objects/MarchingCubes.js +5 -1
- package/examples/jsm/objects/Reflector.js +7 -4
- package/examples/jsm/objects/Refractor.js +4 -4
- package/examples/jsm/objects/ShadowMesh.js +3 -3
- package/examples/jsm/objects/Water.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +27 -28
- package/examples/jsm/physics/RapierPhysics.js +199 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +3 -2
- package/examples/jsm/postprocessing/BloomPass.js +7 -4
- package/examples/jsm/postprocessing/BokehPass.js +3 -8
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -2
- package/examples/jsm/postprocessing/EffectComposer.js +5 -95
- package/examples/jsm/postprocessing/FilmPass.js +1 -2
- package/examples/jsm/postprocessing/GlitchPass.js +0 -2
- package/examples/jsm/postprocessing/HalftonePass.js +0 -6
- package/examples/jsm/postprocessing/OutlinePass.js +7 -7
- package/examples/jsm/postprocessing/OutputPass.js +72 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +4 -26
- package/examples/jsm/postprocessing/SMAAPass.js +5 -8
- package/examples/jsm/postprocessing/SSAARenderPass.js +15 -6
- package/examples/jsm/postprocessing/SSAOPass.js +4 -14
- package/examples/jsm/postprocessing/SSRPass.js +3 -7
- package/examples/jsm/postprocessing/SavePass.js +2 -3
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +3 -2
- package/examples/jsm/postprocessing/TexturePass.js +0 -2
- package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -11
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
- package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +4 -4
- package/examples/jsm/renderers/common/Attributes.js +75 -0
- package/examples/jsm/renderers/common/Backend.js +160 -0
- package/examples/jsm/renderers/common/Background.js +133 -0
- package/examples/jsm/renderers/common/Binding.js +11 -0
- package/examples/jsm/renderers/common/Bindings.js +169 -0
- package/examples/jsm/renderers/common/Buffer.js +38 -0
- package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
- package/examples/jsm/renderers/common/ChainMap.js +89 -0
- package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
- package/examples/jsm/renderers/common/Constants.js +14 -0
- package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
- package/examples/jsm/renderers/common/DataMap.js +54 -0
- package/examples/jsm/renderers/common/Geometries.js +215 -0
- package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
- package/examples/jsm/renderers/common/Pipeline.js +13 -0
- package/examples/jsm/renderers/common/Pipelines.js +309 -0
- package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
- package/examples/jsm/renderers/common/RenderContext.js +37 -0
- package/examples/jsm/renderers/common/RenderContexts.js +38 -0
- package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +26 -47
- package/examples/jsm/renderers/common/RenderLists.js +38 -0
- package/examples/jsm/renderers/common/RenderObject.js +95 -0
- package/examples/jsm/renderers/common/RenderObjects.js +92 -0
- package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
- package/examples/jsm/renderers/common/RenderTarget.js +15 -0
- package/examples/jsm/renderers/common/Renderer.js +822 -0
- package/examples/jsm/renderers/common/SampledTexture.js +80 -0
- package/examples/jsm/renderers/common/Sampler.js +18 -0
- package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
- package/examples/jsm/renderers/common/Textures.js +206 -0
- package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
- package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
- package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
- package/examples/jsm/renderers/common/nodes/NodeRender.js +302 -0
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
- package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
- package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +35 -31
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +765 -0
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -987
- package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +117 -90
- package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
- package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +251 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
- package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +73 -12
- package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +135 -285
- package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +5 -25
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +855 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +88 -0
- package/examples/jsm/shaders/BleachBypassShader.js +2 -0
- package/examples/jsm/shaders/BokehShader2.js +3 -0
- package/examples/jsm/shaders/ColorifyShader.js +2 -0
- package/examples/jsm/shaders/ConvolutionShader.js +2 -0
- package/examples/jsm/shaders/CopyShader.js +2 -0
- package/examples/jsm/shaders/DotScreenShader.js +2 -0
- package/examples/jsm/shaders/ExposureShader.js +44 -0
- package/examples/jsm/shaders/FilmShader.js +2 -0
- package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
- package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
- package/examples/jsm/shaders/MMDToonShader.js +15 -4
- package/examples/jsm/shaders/OutputShader.js +61 -0
- package/examples/jsm/shaders/RGBShiftShader.js +4 -2
- package/examples/jsm/shaders/SepiaShader.js +2 -0
- package/examples/jsm/shaders/ToonShader.js +13 -5
- package/examples/jsm/shaders/VelocityShader.js +1 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
- package/examples/jsm/shaders/VignetteShader.js +2 -0
- package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +54 -36
- package/examples/jsm/utils/LDrawUtils.js +4 -4
- package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
- package/examples/jsm/utils/SceneUtils.js +8 -4
- package/examples/jsm/utils/SkeletonUtils.js +27 -210
- package/examples/jsm/utils/TextureUtils.js +41 -40
- package/examples/jsm/webxr/VRButton.js +1 -2
- package/examples/jsm/webxr/XRButton.js +198 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
- package/examples/jsm/webxr/XRPlanes.js +100 -0
- package/package.json +34 -87
- package/src/Three.Legacy.js +19 -110
- package/src/Three.js +4 -3
- package/src/animation/AnimationUtils.js +13 -1
- package/src/audio/Audio.js +7 -2
- package/src/audio/PositionalAudio.js +8 -0
- package/src/cameras/Camera.js +5 -0
- package/src/cameras/CubeCamera.js +76 -13
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +22 -2
- package/src/core/BufferAttribute.js +150 -9
- package/src/core/BufferGeometry.js +4 -10
- package/src/core/GLBufferAttribute.js +2 -0
- package/src/core/InterleavedBufferAttribute.js +5 -5
- package/src/core/Object3D.js +37 -8
- package/src/extras/DataUtils.js +7 -1
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +5 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/curves/LineCurve.js +6 -4
- package/src/extras/curves/LineCurve3.js +13 -0
- package/src/geometries/BoxGeometry.js +10 -0
- package/src/geometries/CircleGeometry.js +11 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +11 -1
- package/src/geometries/EdgesGeometry.js +10 -0
- package/src/geometries/ExtrudeGeometry.js +11 -1
- package/src/geometries/LatheGeometry.js +10 -0
- package/src/geometries/PlaneGeometry.js +10 -0
- package/src/geometries/PolyhedronGeometry.js +11 -1
- package/src/geometries/RingGeometry.js +11 -1
- package/src/geometries/ShapeGeometry.js +11 -1
- package/src/geometries/SphereGeometry.js +12 -2
- package/src/geometries/TorusGeometry.js +11 -1
- package/src/geometries/TorusKnotGeometry.js +10 -0
- package/src/geometries/TubeGeometry.js +10 -0
- package/src/geometries/WireframeGeometry.js +10 -0
- package/src/helpers/Box3Helper.js +1 -2
- package/src/lights/DirectionalLight.js +1 -1
- package/src/lights/HemisphereLight.js +1 -1
- package/src/lights/SpotLight.js +1 -1
- package/src/loaders/AudioLoader.js +14 -8
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +5 -1
- package/src/loaders/MaterialLoader.js +8 -0
- package/src/loaders/ObjectLoader.js +10 -2
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +16 -4
- package/src/materials/MeshDistanceMaterial.js +0 -9
- package/src/materials/MeshPhysicalMaterial.js +32 -6
- package/src/materials/ShaderMaterial.js +6 -1
- package/src/math/Box2.js +3 -2
- package/src/math/Box3.js +49 -64
- package/src/math/Color.js +88 -66
- package/src/math/ColorManagement.js +75 -16
- package/src/math/Euler.js +2 -11
- package/src/math/Frustum.js +29 -5
- package/src/math/MathUtils.js +43 -1
- package/src/math/Matrix3.js +26 -6
- package/src/math/Matrix4.js +74 -19
- package/src/math/Plane.js +2 -2
- package/src/math/Quaternion.js +6 -0
- package/src/math/Ray.js +7 -7
- package/src/math/Triangle.js +37 -7
- package/src/math/Vector2.js +16 -0
- package/src/math/Vector3.js +10 -0
- package/src/math/interpolants/CubicInterpolant.js +1 -2
- package/src/objects/InstancedMesh.js +82 -1
- package/src/objects/Mesh.js +108 -76
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/SkinnedMesh.js +123 -8
- package/src/objects/Sprite.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +12 -3
- package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
- package/src/renderers/WebGLRenderTarget.js +14 -2
- package/src/renderers/WebGLRenderer.js +1433 -1236
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
- package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +32 -0
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +10 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +39 -13
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +306 -10
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -10
- package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
- package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +32 -10
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
- package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +5 -5
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +101 -16
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +113 -1
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +134 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +116 -1
- package/src/renderers/shaders/ShaderChunk.js +0 -6
- package/src/renderers/shaders/ShaderLib/background.glsl.js +0 -8
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +5 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -4
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +16 -12
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib/points.glsl.js +13 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +5 -0
- package/src/renderers/shaders/ShaderLib.js +18 -4
- package/src/renderers/shaders/UniformsLib.js +27 -15
- package/src/renderers/shaders/UniformsUtils.js +12 -3
- package/src/renderers/webgl/WebGLBackground.js +23 -12
- package/src/renderers/webgl/WebGLBindingStates.js +13 -5
- package/src/renderers/webgl/WebGLCapabilities.js +1 -2
- package/src/renderers/webgl/WebGLClipping.js +7 -3
- package/src/renderers/webgl/WebGLGeometries.js +12 -0
- package/src/renderers/webgl/WebGLInfo.js +0 -1
- package/src/renderers/webgl/WebGLLights.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +123 -234
- package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
- package/src/renderers/webgl/WebGLProgram.js +130 -48
- package/src/renderers/webgl/WebGLPrograms.js +210 -130
- package/src/renderers/webgl/WebGLRenderStates.js +2 -2
- package/src/renderers/webgl/WebGLShadowMap.js +40 -27
- package/src/renderers/webgl/WebGLState.js +23 -9
- package/src/renderers/webgl/WebGLTextures.js +39 -19
- package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
- package/src/renderers/webgl/WebGLUtils.js +41 -29
- package/src/renderers/webxr/WebXRController.js +3 -0
- package/src/renderers/webxr/WebXRManager.js +89 -141
- package/src/scenes/Scene.js +4 -6
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/CubeTexture.js +2 -2
- package/src/textures/DataTexture.js +2 -2
- package/src/textures/DepthTexture.js +22 -0
- package/src/textures/FramebufferTexture.js +1 -3
- package/src/textures/Source.js +4 -0
- package/src/textures/Texture.js +43 -13
- package/src/utils.js +13 -1
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
- package/examples/fonts/open-sans/open-sans.css +0 -9
- package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
- package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
- package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
- package/examples/js/animation/AnimationClipCreator.js +0 -89
- package/examples/js/animation/CCDIKSolver.js +0 -416
- package/examples/js/animation/MMDAnimationHelper.js +0 -1046
- package/examples/js/animation/MMDPhysics.js +0 -1174
- package/examples/js/cameras/CinematicCamera.js +0 -168
- package/examples/js/controls/ArcballControls.js +0 -2770
- package/examples/js/controls/DragControls.js +0 -205
- package/examples/js/controls/FirstPersonControls.js +0 -312
- package/examples/js/controls/FlyControls.js +0 -321
- package/examples/js/controls/OrbitControls.js +0 -1065
- package/examples/js/controls/PointerLockControls.js +0 -144
- package/examples/js/controls/TrackballControls.js +0 -729
- package/examples/js/controls/TransformControls.js +0 -1301
- package/examples/js/csm/CSM.js +0 -347
- package/examples/js/csm/CSMFrustum.js +0 -127
- package/examples/js/csm/CSMHelper.js +0 -165
- package/examples/js/csm/CSMShader.js +0 -253
- package/examples/js/curves/CurveExtras.js +0 -348
- package/examples/js/curves/NURBSCurve.js +0 -63
- package/examples/js/curves/NURBSSurface.js +0 -48
- package/examples/js/curves/NURBSUtils.js +0 -439
- package/examples/js/effects/AnaglyphEffect.js +0 -86
- package/examples/js/effects/AsciiEffect.js +0 -260
- package/examples/js/effects/OutlineEffect.js +0 -450
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
- package/examples/js/effects/PeppersGhostEffect.js +0 -139
- package/examples/js/effects/StereoEffect.js +0 -46
- package/examples/js/environments/DebugEnvironment.js +0 -53
- package/examples/js/environments/RoomEnvironment.js +0 -124
- package/examples/js/exporters/ColladaExporter.js +0 -487
- package/examples/js/exporters/DRACOExporter.js +0 -212
- package/examples/js/exporters/EXRExporter.js +0 -455
- package/examples/js/exporters/GLTFExporter.js +0 -2425
- package/examples/js/exporters/MMDExporter.js +0 -187
- package/examples/js/exporters/OBJExporter.js +0 -260
- package/examples/js/exporters/PLYExporter.js +0 -427
- package/examples/js/exporters/STLExporter.js +0 -188
- package/examples/js/exporters/USDZExporter.js +0 -608
- package/examples/js/geometries/BoxLineGeometry.js +0 -59
- package/examples/js/geometries/ConvexGeometry.js +0 -53
- package/examples/js/geometries/DecalGeometry.js +0 -324
- package/examples/js/geometries/LightningStrike.js +0 -861
- package/examples/js/geometries/ParametricGeometries.js +0 -216
- package/examples/js/geometries/ParametricGeometry.js +0 -121
- package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
- package/examples/js/geometries/TeapotGeometry.js +0 -335
- package/examples/js/geometries/TextGeometry.js +0 -53
- package/examples/js/helpers/LightProbeHelper.js +0 -48
- package/examples/js/helpers/OctreeHelper.js +0 -76
- package/examples/js/helpers/PositionalAudioHelper.js +0 -91
- package/examples/js/helpers/RectAreaLightHelper.js +0 -73
- package/examples/js/helpers/VertexNormalsHelper.js +0 -74
- package/examples/js/helpers/VertexTangentsHelper.js +0 -68
- package/examples/js/helpers/ViewHelper.js +0 -281
- package/examples/js/interactive/HTMLMesh.js +0 -497
- package/examples/js/interactive/InteractiveGroup.js +0 -95
- package/examples/js/interactive/SelectionBox.js +0 -195
- package/examples/js/interactive/SelectionHelper.js +0 -83
- package/examples/js/libs/chevrotain.min.js +0 -3
- package/examples/js/libs/draco/draco_decoder.js +0 -52
- package/examples/js/libs/draco/draco_decoder.wasm +0 -0
- package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
- package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
- package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
- package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
- package/examples/js/libs/fflate.min.js +0 -7
- package/examples/js/libs/ktx-parse.umd.js +0 -1
- package/examples/js/libs/meshopt_decoder.js +0 -188
- package/examples/js/libs/opentype.min.js +0 -1
- package/examples/js/libs/stats.min.js +0 -5
- package/examples/js/lights/LightProbeGenerator.js +0 -221
- package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
- package/examples/js/lines/Line2.js +0 -19
- package/examples/js/lines/LineGeometry.js +0 -69
- package/examples/js/lines/LineMaterial.js +0 -635
- package/examples/js/lines/LineSegments2.js +0 -311
- package/examples/js/lines/LineSegmentsGeometry.js +0 -198
- package/examples/js/lines/Wireframe.js +0 -47
- package/examples/js/lines/WireframeGeometry2.js +0 -20
- package/examples/js/loaders/3DMLoader.js +0 -1273
- package/examples/js/loaders/3MFLoader.js +0 -1306
- package/examples/js/loaders/AMFLoader.js +0 -504
- package/examples/js/loaders/BVHLoader.js +0 -395
- package/examples/js/loaders/BasisTextureLoader.js +0 -706
- package/examples/js/loaders/ColladaLoader.js +0 -3663
- package/examples/js/loaders/DDSLoader.js +0 -244
- package/examples/js/loaders/DRACOLoader.js +0 -511
- package/examples/js/loaders/EXRLoader.js +0 -2039
- package/examples/js/loaders/FBXLoader.js +0 -3680
- package/examples/js/loaders/FontLoader.js +0 -160
- package/examples/js/loaders/GCodeLoader.js +0 -255
- package/examples/js/loaders/GLTFLoader.js +0 -4108
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
- package/examples/js/loaders/KMZLoader.js +0 -121
- package/examples/js/loaders/KTXLoader.js +0 -159
- package/examples/js/loaders/LDrawLoader.js +0 -2263
- package/examples/js/loaders/LUT3dlLoader.js +0 -135
- package/examples/js/loaders/LUTCubeLoader.js +0 -132
- package/examples/js/loaders/LWOLoader.js +0 -901
- package/examples/js/loaders/LogLuvLoader.js +0 -715
- package/examples/js/loaders/LottieLoader.js +0 -62
- package/examples/js/loaders/MD2Loader.js +0 -248
- package/examples/js/loaders/MDDLoader.js +0 -91
- package/examples/js/loaders/MMDLoader.js +0 -1915
- package/examples/js/loaders/MTLLoader.js +0 -472
- package/examples/js/loaders/MaterialXLoader.js +0 -392
- package/examples/js/loaders/NRRDLoader.js +0 -609
- package/examples/js/loaders/OBJLoader.js +0 -789
- package/examples/js/loaders/PCDLoader.js +0 -413
- package/examples/js/loaders/PDBLoader.js +0 -317
- package/examples/js/loaders/PLYLoader.js +0 -532
- package/examples/js/loaders/PRWMLoader.js +0 -249
- package/examples/js/loaders/PVRLoader.js +0 -218
- package/examples/js/loaders/RGBELoader.js +0 -442
- package/examples/js/loaders/RGBMLoader.js +0 -1354
- package/examples/js/loaders/STLLoader.js +0 -364
- package/examples/js/loaders/SVGLoader.js +0 -2783
- package/examples/js/loaders/TDSLoader.js +0 -992
- package/examples/js/loaders/TGALoader.js +0 -484
- package/examples/js/loaders/TIFFLoader.js +0 -30
- package/examples/js/loaders/TTFLoader.js +0 -203
- package/examples/js/loaders/TiltLoader.js +0 -459
- package/examples/js/loaders/VOXLoader.js +0 -240
- package/examples/js/loaders/VRMLLoader.js +0 -3140
- package/examples/js/loaders/VTKLoader.js +0 -1078
- package/examples/js/loaders/XYZLoader.js +0 -89
- package/examples/js/loaders/lwo/IFFParser.js +0 -1067
- package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
- package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
- package/examples/js/materials/MeshGouraudMaterial.js +0 -387
- package/examples/js/math/Capsule.js +0 -103
- package/examples/js/math/ColorConverter.js +0 -33
- package/examples/js/math/ConvexHull.js +0 -1154
- package/examples/js/math/ImprovedNoise.js +0 -66
- package/examples/js/math/Lut.js +0 -164
- package/examples/js/math/MeshSurfaceSampler.js +0 -171
- package/examples/js/math/OBB.js +0 -382
- package/examples/js/math/Octree.js +0 -410
- package/examples/js/math/SimplexNoise.js +0 -445
- package/examples/js/misc/ConvexObjectBreaker.js +0 -474
- package/examples/js/misc/GPUComputationRenderer.js +0 -393
- package/examples/js/misc/Gyroscope.js +0 -56
- package/examples/js/misc/MD2Character.js +0 -235
- package/examples/js/misc/MD2CharacterComplex.js +0 -513
- package/examples/js/misc/MorphAnimMesh.js +0 -63
- package/examples/js/misc/MorphBlendMesh.js +0 -265
- package/examples/js/misc/ProgressiveLightMap.js +0 -335
- package/examples/js/misc/RollerCoaster.js +0 -430
- package/examples/js/misc/TubePainter.js +0 -167
- package/examples/js/misc/Volume.js +0 -437
- package/examples/js/misc/VolumeSlice.js +0 -214
- package/examples/js/modifiers/CurveModifier.js +0 -309
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
- package/examples/js/modifiers/SimplifyModifier.js +0 -465
- package/examples/js/modifiers/TessellateModifier.js +0 -276
- package/examples/js/objects/GroundProjectedEnv.js +0 -181
- package/examples/js/objects/Lensflare.js +0 -356
- package/examples/js/objects/LightningStorm.js +0 -206
- package/examples/js/objects/MarchingCubes.js +0 -759
- package/examples/js/objects/Reflector.js +0 -216
- package/examples/js/objects/ReflectorForSSRPass.js +0 -315
- package/examples/js/objects/Refractor.js +0 -283
- package/examples/js/objects/ShadowMesh.js +0 -59
- package/examples/js/objects/Sky.js +0 -218
- package/examples/js/objects/Water.js +0 -292
- package/examples/js/objects/Water2.js +0 -307
- package/examples/js/physics/AmmoPhysics.js +0 -259
- package/examples/js/physics/OimoPhysics.js +0 -217
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
- package/examples/js/postprocessing/AfterimagePass.js +0 -77
- package/examples/js/postprocessing/BloomPass.js +0 -135
- package/examples/js/postprocessing/BokehPass.js +0 -120
- package/examples/js/postprocessing/ClearPass.js +0 -39
- package/examples/js/postprocessing/CubeTexturePass.js +0 -60
- package/examples/js/postprocessing/DotScreenPass.js +0 -51
- package/examples/js/postprocessing/EffectComposer.js +0 -272
- package/examples/js/postprocessing/FilmPass.js +0 -52
- package/examples/js/postprocessing/GlitchPass.js +0 -104
- package/examples/js/postprocessing/HalftonePass.js +0 -75
- package/examples/js/postprocessing/LUTPass.js +0 -171
- package/examples/js/postprocessing/MaskPass.js +0 -95
- package/examples/js/postprocessing/OutlinePass.js +0 -598
- package/examples/js/postprocessing/Pass.js +0 -72
- package/examples/js/postprocessing/RenderPass.js +0 -70
- package/examples/js/postprocessing/SAOPass.js +0 -374
- package/examples/js/postprocessing/SMAAPass.js +0 -170
- package/examples/js/postprocessing/SSAARenderPass.js +0 -156
- package/examples/js/postprocessing/SSAOPass.js +0 -365
- package/examples/js/postprocessing/SSRPass.js +0 -567
- package/examples/js/postprocessing/SavePass.js +0 -59
- package/examples/js/postprocessing/ShaderPass.js +0 -64
- package/examples/js/postprocessing/TAARenderPass.js +0 -130
- package/examples/js/postprocessing/TexturePass.js +0 -49
- package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
- package/examples/js/renderers/CSS2DRenderer.js +0 -178
- package/examples/js/renderers/CSS3DRenderer.js +0 -237
- package/examples/js/renderers/Projector.js +0 -818
- package/examples/js/renderers/SVGRenderer.js +0 -491
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
- package/examples/js/shaders/AfterimageShader.js +0 -60
- package/examples/js/shaders/BasicShader.js +0 -27
- package/examples/js/shaders/BleachBypassShader.js +0 -62
- package/examples/js/shaders/BlendShader.js +0 -54
- package/examples/js/shaders/BokehShader.js +0 -156
- package/examples/js/shaders/BokehShader2.js +0 -419
- package/examples/js/shaders/BrightnessContrastShader.js +0 -58
- package/examples/js/shaders/ColorCorrectionShader.js +0 -52
- package/examples/js/shaders/ColorifyShader.js +0 -47
- package/examples/js/shaders/ConvolutionShader.js +0 -92
- package/examples/js/shaders/CopyShader.js +0 -45
- package/examples/js/shaders/DOFMipMapShader.js +0 -60
- package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
- package/examples/js/shaders/DigitalGlitch.js +0 -127
- package/examples/js/shaders/DotScreenShader.js +0 -72
- package/examples/js/shaders/FXAAShader.js +0 -284
- package/examples/js/shaders/FilmShader.js +0 -110
- package/examples/js/shaders/FocusShader.js +0 -95
- package/examples/js/shaders/FreiChenShader.js +0 -93
- package/examples/js/shaders/GammaCorrectionShader.js +0 -41
- package/examples/js/shaders/GodRaysShader.js +0 -284
- package/examples/js/shaders/HalftoneShader.js +0 -336
- package/examples/js/shaders/HorizontalBlurShader.js +0 -59
- package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
- package/examples/js/shaders/HueSaturationShader.js +0 -69
- package/examples/js/shaders/KaleidoShader.js +0 -60
- package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
- package/examples/js/shaders/LuminosityShader.js +0 -46
- package/examples/js/shaders/MMDToonShader.js +0 -96
- package/examples/js/shaders/MirrorShader.js +0 -56
- package/examples/js/shaders/NormalMapShader.js +0 -55
- package/examples/js/shaders/RGBShiftShader.js +0 -56
- package/examples/js/shaders/SAOShader.js +0 -209
- package/examples/js/shaders/SMAAShader.js +0 -454
- package/examples/js/shaders/SSAOShader.js +0 -295
- package/examples/js/shaders/SSRShader.js +0 -381
- package/examples/js/shaders/SepiaShader.js +0 -52
- package/examples/js/shaders/SobelOperatorShader.js +0 -88
- package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
- package/examples/js/shaders/TechnicolorShader.js +0 -43
- package/examples/js/shaders/ToneMapShader.js +0 -84
- package/examples/js/shaders/ToonShader.js +0 -335
- package/examples/js/shaders/TriangleBlurShader.js +0 -70
- package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
- package/examples/js/shaders/VelocityShader.js +0 -126
- package/examples/js/shaders/VerticalBlurShader.js +0 -59
- package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
- package/examples/js/shaders/VignetteShader.js +0 -53
- package/examples/js/shaders/VolumeShader.js +0 -296
- package/examples/js/shaders/WaterRefractionShader.js +0 -84
- package/examples/js/textures/FlakesTexture.js +0 -40
- package/examples/js/utils/BufferGeometryUtils.js +0 -1160
- package/examples/js/utils/CameraUtils.js +0 -71
- package/examples/js/utils/GPUStatsPanel.js +0 -125
- package/examples/js/utils/GeometryCompressionUtils.js +0 -549
- package/examples/js/utils/GeometryUtils.js +0 -168
- package/examples/js/utils/LDrawUtils.js +0 -179
- package/examples/js/utils/PackedPhongMaterial.js +0 -109
- package/examples/js/utils/SceneUtils.js +0 -214
- package/examples/js/utils/ShadowMapViewer.js +0 -183
- package/examples/js/utils/SkeletonUtils.js +0 -493
- package/examples/js/utils/UVsDebug.js +0 -143
- package/examples/js/utils/WorkerPool.js +0 -105
- package/examples/jsm/exporters/ColladaExporter.js +0 -713
- package/examples/jsm/geometries/LightningStrike.js +0 -1017
- package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
- package/examples/jsm/libs/OimoPhysics/index.js +0 -43
- package/examples/jsm/libs/flow.module.js +0 -4552
- package/examples/jsm/libs/tween.module.min.js +0 -3
- package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
- package/examples/jsm/loaders/IFCLoader.js +0 -2431
- package/examples/jsm/loaders/PRWMLoader.js +0 -299
- package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
- package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
- package/examples/jsm/node-editor/NodeEditor.js +0 -857
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
- package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
- package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
- package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
- package/examples/jsm/node-editor/core/BaseNode.js +0 -96
- package/examples/jsm/node-editor/core/DataFile.js +0 -59
- package/examples/jsm/node-editor/core/FileEditor.js +0 -20
- package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
- package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
- package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
- package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
- package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
- package/examples/jsm/node-editor/examples/matcap.json +0 -1
- package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
- package/examples/jsm/node-editor/examples/rim.json +0 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
- package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
- package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
- package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
- package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
- package/examples/jsm/node-editor/math/DotEditor.js +0 -35
- package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
- package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
- package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
- package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
- package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
- package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
- package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
- package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
- package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
- package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
- package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
- package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
- package/examples/jsm/nodes/core/CodeNode.js +0 -50
- package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
- package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
- package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
- package/examples/jsm/objects/LightningStorm.js +0 -245
- package/examples/jsm/physics/OimoPhysics.js +0 -231
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -369
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -187
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -173
- package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -255
- package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +0 -82
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
- package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
- package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -38
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -296
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -66
- package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -73
- package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
- package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
- package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -40
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +0 -794
- package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -81
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +0 -83
- package/examples/jsm/shaders/ToneMapShader.js +0 -73
- package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
- package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
- package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
- /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
- /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
- /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
- /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
- /package/examples/{js → jsm}/libs/draco/README.md +0 -0
- /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
- /package/examples/{js → jsm}/libs/draco/gltf/draco_encoder.js +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Tabler Icons 1.42.0 by tabler - https://tabler.io
|
|
3
|
-
* License - https://github.com/tabler/tabler-icons/blob/master/LICENSE
|
|
4
|
-
*/@font-face{font-family:tabler-icons;font-style:normal;font-weight:400;src:url(fonts/tabler-icons.eot);src:url(fonts/tabler-icons.eot?#iefix) format("embedded-opentype"),url(fonts/tabler-icons.woff2) format("woff2"),url(fonts/tabler-icons.woff) format("woff"),url(fonts/tabler-icons.ttf) format("truetype"),url(fonts/tabler-icons.svg#tabler-icons) format("svg")}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:tabler-icons;src:url(fonts/tabler-icons.svg#tabler-icons) format("svg")}}.ti{font-family:tabler-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-2fa:before{content:"\eca0"}.ti-3d-cube-sphere:before{content:"\ecd7"}.ti-a-b:before{content:"\ec36"}.ti-access-point:before{content:"\ed1b"}.ti-access-point-off:before{content:"\ed1a"}.ti-accessible:before{content:"\eba9"}.ti-activity:before{content:"\ed23"}.ti-ad:before{content:"\ea02"}.ti-ad-2:before{content:"\ef1f"}.ti-adjustments:before{content:"\ea03"}.ti-adjustments-alt:before{content:"\ec37"}.ti-adjustments-horizontal:before{content:"\ec38"}.ti-aerial-lift:before{content:"\edfe"}.ti-affiliate:before{content:"\edff"}.ti-alarm:before{content:"\ea04"}.ti-alert-circle:before{content:"\ea05"}.ti-alert-octagon:before{content:"\ecc6"}.ti-alert-triangle:before{content:"\ea06"}.ti-alien:before{content:"\ebde"}.ti-align-center:before{content:"\ea07"}.ti-align-justified:before{content:"\ea08"}.ti-align-left:before{content:"\ea09"}.ti-align-right:before{content:"\ea0a"}.ti-ambulance:before{content:"\ebf5"}.ti-anchor:before{content:"\eb76"}.ti-angle:before{content:"\ef20"}.ti-antenna-bars-1:before{content:"\ecc7"}.ti-antenna-bars-2:before{content:"\ecc8"}.ti-antenna-bars-3:before{content:"\ecc9"}.ti-antenna-bars-4:before{content:"\ecca"}.ti-antenna-bars-5:before{content:"\eccb"}.ti-aperture:before{content:"\eb58"}.ti-apple:before{content:"\ef21"}.ti-apps:before{content:"\ebb6"}.ti-archive:before{content:"\ea0b"}.ti-arrow-autofit-content:before{content:"\ef31"}.ti-arrow-autofit-down:before{content:"\ef32"}.ti-arrow-autofit-height:before{content:"\ef33"}.ti-arrow-autofit-left:before{content:"\ef34"}.ti-arrow-autofit-right:before{content:"\ef35"}.ti-arrow-autofit-up:before{content:"\ef36"}.ti-arrow-autofit-width:before{content:"\ef37"}.ti-arrow-back:before{content:"\ea0c"}.ti-arrow-back-up:before{content:"\eb77"}.ti-arrow-bar-down:before{content:"\ea0d"}.ti-arrow-bar-left:before{content:"\ea0e"}.ti-arrow-bar-right:before{content:"\ea0f"}.ti-arrow-bar-to-down:before{content:"\ec88"}.ti-arrow-bar-to-left:before{content:"\ec89"}.ti-arrow-bar-to-right:before{content:"\ec8a"}.ti-arrow-bar-to-up:before{content:"\ec8b"}.ti-arrow-bar-up:before{content:"\ea10"}.ti-arrow-big-down:before{content:"\edda"}.ti-arrow-big-left:before{content:"\eddb"}.ti-arrow-big-right:before{content:"\eddc"}.ti-arrow-big-top:before{content:"\eddd"}.ti-arrow-bottom-bar:before{content:"\ed98"}.ti-arrow-bottom-circle:before{content:"\ed99"}.ti-arrow-bottom-square:before{content:"\ed9a"}.ti-arrow-bottom-tail:before{content:"\ed9b"}.ti-arrow-down:before{content:"\ea16"}.ti-arrow-down-circle:before{content:"\ea11"}.ti-arrow-down-left:before{content:"\ea13"}.ti-arrow-down-left-circle:before{content:"\ea12"}.ti-arrow-down-right:before{content:"\ea15"}.ti-arrow-down-right-circle:before{content:"\ea14"}.ti-arrow-forward:before{content:"\ea17"}.ti-arrow-forward-up:before{content:"\eb78"}.ti-arrow-left:before{content:"\ea19"}.ti-arrow-left-bar:before{content:"\ed9c"}.ti-arrow-left-circle:before{content:"\ea18"}.ti-arrow-left-square:before{content:"\ed9d"}.ti-arrow-left-tail:before{content:"\ed9e"}.ti-arrow-loop-left:before{content:"\ed9f"}.ti-arrow-loop-right:before{content:"\eda0"}.ti-arrow-narrow-down:before{content:"\ea1a"}.ti-arrow-narrow-left:before{content:"\ea1b"}.ti-arrow-narrow-right:before{content:"\ea1c"}.ti-arrow-narrow-up:before{content:"\ea1d"}.ti-arrow-ramp-left:before{content:"\ed3c"}.ti-arrow-ramp-right:before{content:"\ed3d"}.ti-arrow-right:before{content:"\ea1f"}.ti-arrow-right-bar:before{content:"\eda1"}.ti-arrow-right-circle:before{content:"\ea1e"}.ti-arrow-right-square:before{content:"\eda2"}.ti-arrow-right-tail:before{content:"\eda3"}.ti-arrow-top-bar:before{content:"\eda4"}.ti-arrow-top-circle:before{content:"\eda5"}.ti-arrow-top-square:before{content:"\eda6"}.ti-arrow-top-tail:before{content:"\eda7"}.ti-arrow-up:before{content:"\ea25"}.ti-arrow-up-circle:before{content:"\ea20"}.ti-arrow-up-left:before{content:"\ea22"}.ti-arrow-up-left-circle:before{content:"\ea21"}.ti-arrow-up-right:before{content:"\ea24"}.ti-arrow-up-right-circle:before{content:"\ea23"}.ti-arrow-wave-left-down:before{content:"\eda8"}.ti-arrow-wave-left-up:before{content:"\eda9"}.ti-arrow-wave-right-down:before{content:"\edaa"}.ti-arrow-wave-right-up:before{content:"\edab"}.ti-arrows-diagonal:before{content:"\ea27"}.ti-arrows-diagonal-2:before{content:"\ea26"}.ti-arrows-diagonal-minimize:before{content:"\ef39"}.ti-arrows-diagonal-minimize-2:before{content:"\ef38"}.ti-arrows-double-ne-sw:before{content:"\edde"}.ti-arrows-double-nw-se:before{content:"\eddf"}.ti-arrows-double-se-nw:before{content:"\ede0"}.ti-arrows-double-sw-ne:before{content:"\ede1"}.ti-arrows-down:before{content:"\edad"}.ti-arrows-down-up:before{content:"\edac"}.ti-arrows-horizontal:before{content:"\eb59"}.ti-arrows-join:before{content:"\edaf"}.ti-arrows-join-2:before{content:"\edae"}.ti-arrows-left:before{content:"\edb1"}.ti-arrows-left-down:before{content:"\ee00"}.ti-arrows-left-right:before{content:"\edb0"}.ti-arrows-maximize:before{content:"\ea28"}.ti-arrows-minimize:before{content:"\ea29"}.ti-arrows-right:before{content:"\edb3"}.ti-arrows-right-down:before{content:"\ee01"}.ti-arrows-right-left:before{content:"\edb2"}.ti-arrows-sort:before{content:"\eb5a"}.ti-arrows-split:before{content:"\edb5"}.ti-arrows-split-2:before{content:"\edb4"}.ti-arrows-up:before{content:"\edb7"}.ti-arrows-up-down:before{content:"\edb6"}.ti-arrows-up-left:before{content:"\ee02"}.ti-arrows-up-right:before{content:"\ee03"}.ti-arrows-vertical:before{content:"\eb5b"}.ti-artboard:before{content:"\ea2a"}.ti-aspect-ratio:before{content:"\ed30"}.ti-at:before{content:"\ea2b"}.ti-atom:before{content:"\eb79"}.ti-atom-2:before{content:"\ebdf"}.ti-award:before{content:"\ea2c"}.ti-backhoe:before{content:"\ed86"}.ti-backspace:before{content:"\ea2d"}.ti-ball-american-football:before{content:"\ee04"}.ti-ball-basketball:before{content:"\ec28"}.ti-ball-bowling:before{content:"\ec29"}.ti-ball-football:before{content:"\ee06"}.ti-ball-football-off:before{content:"\ee05"}.ti-ball-tennis:before{content:"\ec2a"}.ti-ball-volleyball:before{content:"\ec2b"}.ti-ballon:before{content:"\ef3a"}.ti-ban:before{content:"\ea2e"}.ti-bandage:before{content:"\eb7a"}.ti-barcode:before{content:"\ebc6"}.ti-basket:before{content:"\ebe1"}.ti-battery:before{content:"\ea34"}.ti-battery-1:before{content:"\ea2f"}.ti-battery-2:before{content:"\ea30"}.ti-battery-3:before{content:"\ea31"}.ti-battery-4:before{content:"\ea32"}.ti-battery-automotive:before{content:"\ee07"}.ti-battery-charging:before{content:"\ea33"}.ti-battery-charging-2:before{content:"\ef3b"}.ti-battery-eco:before{content:"\ef3c"}.ti-battery-off:before{content:"\ed1c"}.ti-beach:before{content:"\ef3d"}.ti-bed:before{content:"\eb5c"}.ti-bell:before{content:"\ea35"}.ti-bell-minus:before{content:"\ede2"}.ti-bell-off:before{content:"\ece9"}.ti-bell-plus:before{content:"\ede3"}.ti-bell-ringing:before{content:"\ed07"}.ti-bell-ringing-2:before{content:"\ede4"}.ti-bell-x:before{content:"\ede5"}.ti-bike:before{content:"\ea36"}.ti-binary:before{content:"\ee08"}.ti-biohazard:before{content:"\ecb8"}.ti-blockquote:before{content:"\ee09"}.ti-bluetooth:before{content:"\ea37"}.ti-bluetooth-connected:before{content:"\ecea"}.ti-bluetooth-off:before{content:"\eceb"}.ti-bold:before{content:"\eb7b"}.ti-bolt:before{content:"\ea38"}.ti-bolt-off:before{content:"\ecec"}.ti-bone:before{content:"\edb8"}.ti-book:before{content:"\ea39"}.ti-bookmark:before{content:"\ea3a"}.ti-bookmark-off:before{content:"\eced"}.ti-bookmarks:before{content:"\ed08"}.ti-border-all:before{content:"\ea3b"}.ti-border-bottom:before{content:"\ea3c"}.ti-border-horizontal:before{content:"\ea3d"}.ti-border-inner:before{content:"\ea3e"}.ti-border-left:before{content:"\ea3f"}.ti-border-none:before{content:"\ea40"}.ti-border-outer:before{content:"\ea41"}.ti-border-radius:before{content:"\eb7c"}.ti-border-right:before{content:"\ea42"}.ti-border-style:before{content:"\ee0a"}.ti-border-style-2:before{content:"\ef22"}.ti-border-top:before{content:"\ea43"}.ti-border-vertical:before{content:"\ea44"}.ti-bottle:before{content:"\ef0b"}.ti-box:before{content:"\ea45"}.ti-box-margin:before{content:"\ee0b"}.ti-box-model:before{content:"\ee0c"}.ti-box-model-2:before{content:"\ef23"}.ti-box-multiple:before{content:"\ee17"}.ti-box-multiple-0:before{content:"\ee0d"}.ti-box-multiple-1:before{content:"\ee0e"}.ti-box-multiple-2:before{content:"\ee0f"}.ti-box-multiple-3:before{content:"\ee10"}.ti-box-multiple-4:before{content:"\ee11"}.ti-box-multiple-5:before{content:"\ee12"}.ti-box-multiple-6:before{content:"\ee13"}.ti-box-multiple-7:before{content:"\ee14"}.ti-box-multiple-8:before{content:"\ee15"}.ti-box-multiple-9:before{content:"\ee16"}.ti-box-padding:before{content:"\ee18"}.ti-braces:before{content:"\ebcc"}.ti-brackets:before{content:"\ebcd"}.ti-brand-airbnb:before{content:"\ed68"}.ti-brand-android:before{content:"\ec16"}.ti-brand-apple:before{content:"\ec17"}.ti-brand-apple-arcade:before{content:"\ed69"}.ti-brand-appstore:before{content:"\ed24"}.ti-brand-asana:before{content:"\edc5"}.ti-brand-behance:before{content:"\ec6e"}.ti-brand-bing:before{content:"\edc6"}.ti-brand-bitbucket:before{content:"\edc7"}.ti-brand-booking:before{content:"\edc8"}.ti-brand-bootstrap:before{content:"\ef3e"}.ti-brand-chrome:before{content:"\ec18"}.ti-brand-codepen:before{content:"\ec6f"}.ti-brand-codesandbox:before{content:"\ed6a"}.ti-brand-css3:before{content:"\ed6b"}.ti-brand-deviantart:before{content:"\ecfb"}.ti-brand-discord:before{content:"\ece3"}.ti-brand-disqus:before{content:"\edc9"}.ti-brand-docker:before{content:"\edca"}.ti-brand-dribbble:before{content:"\ec19"}.ti-brand-edge:before{content:"\ecfc"}.ti-brand-facebook:before{content:"\ec1a"}.ti-brand-figma:before{content:"\ec93"}.ti-brand-firefox:before{content:"\ecfd"}.ti-brand-flickr:before{content:"\ecfe"}.ti-brand-foursquare:before{content:"\ecff"}.ti-brand-framer:before{content:"\ec1b"}.ti-brand-github:before{content:"\ec1c"}.ti-brand-gitlab:before{content:"\ec1d"}.ti-brand-google:before{content:"\ec1f"}.ti-brand-google-analytics:before{content:"\edcb"}.ti-brand-google-drive:before{content:"\ec1e"}.ti-brand-google-play:before{content:"\ed25"}.ti-brand-gravatar:before{content:"\edcc"}.ti-brand-hipchat:before{content:"\edcd"}.ti-brand-html5:before{content:"\ed6c"}.ti-brand-instagram:before{content:"\ec20"}.ti-brand-javascript:before{content:"\ef0c"}.ti-brand-kickstarter:before{content:"\edce"}.ti-brand-kotlin:before{content:"\ed6d"}.ti-brand-linkedin:before{content:"\ec8c"}.ti-brand-medium:before{content:"\ec70"}.ti-brand-messenger:before{content:"\ec71"}.ti-brand-netflix:before{content:"\edcf"}.ti-brand-open-source:before{content:"\edd0"}.ti-brand-opera:before{content:"\ec21"}.ti-brand-pagekit:before{content:"\edd1"}.ti-brand-patreon:before{content:"\edd2"}.ti-brand-paypal:before{content:"\ec22"}.ti-brand-pinterest:before{content:"\ec8d"}.ti-brand-pocket:before{content:"\ed00"}.ti-brand-producthunt:before{content:"\edd3"}.ti-brand-python:before{content:"\ed01"}.ti-brand-reddit:before{content:"\ec8e"}.ti-brand-safari:before{content:"\ec23"}.ti-brand-sass:before{content:"\edd4"}.ti-brand-sentry:before{content:"\edd5"}.ti-brand-shazam:before{content:"\edd6"}.ti-brand-sketch:before{content:"\ec24"}.ti-brand-skype:before{content:"\ed02"}.ti-brand-slack:before{content:"\ec72"}.ti-brand-snapchat:before{content:"\ec25"}.ti-brand-soundcloud:before{content:"\ed6e"}.ti-brand-spotify:before{content:"\ed03"}.ti-brand-steam:before{content:"\ed6f"}.ti-brand-stripe:before{content:"\edd7"}.ti-brand-tabler:before{content:"\ec8f"}.ti-brand-tailwind:before{content:"\eca1"}.ti-brand-telegram:before{content:"\ec26"}.ti-brand-tidal:before{content:"\ed70"}.ti-brand-tiktok:before{content:"\ec73"}.ti-brand-tinder:before{content:"\ed71"}.ti-brand-tumblr:before{content:"\ed04"}.ti-brand-twitch:before{content:"\ed05"}.ti-brand-twitter:before{content:"\ec27"}.ti-brand-unsplash:before{content:"\edd8"}.ti-brand-vercel:before{content:"\ef24"}.ti-brand-vimeo:before{content:"\ed06"}.ti-brand-vk:before{content:"\ed72"}.ti-brand-whatsapp:before{content:"\ec74"}.ti-brand-windows:before{content:"\ecd8"}.ti-brand-yahoo:before{content:"\ed73"}.ti-brand-ycombinator:before{content:"\edd9"}.ti-brand-youtube:before{content:"\ec90"}.ti-briefcase:before{content:"\ea46"}.ti-brightness:before{content:"\eb7f"}.ti-brightness-2:before{content:"\ee19"}.ti-brightness-down:before{content:"\eb7d"}.ti-brightness-half:before{content:"\ee1a"}.ti-brightness-up:before{content:"\eb7e"}.ti-browser:before{content:"\ebb7"}.ti-brush:before{content:"\ebb8"}.ti-bucket:before{content:"\ea47"}.ti-bug:before{content:"\ea48"}.ti-building:before{content:"\ea4f"}.ti-building-arch:before{content:"\ea49"}.ti-building-bank:before{content:"\ebe2"}.ti-building-bridge:before{content:"\ea4b"}.ti-building-bridge-2:before{content:"\ea4a"}.ti-building-carousel:before{content:"\ed87"}.ti-building-castle:before{content:"\ed88"}.ti-building-church:before{content:"\ea4c"}.ti-building-community:before{content:"\ebf6"}.ti-building-cottage:before{content:"\ee1b"}.ti-building-factory:before{content:"\ee1c"}.ti-building-fortress:before{content:"\ed89"}.ti-building-hospital:before{content:"\ea4d"}.ti-building-lighthouse:before{content:"\ed8a"}.ti-building-monument:before{content:"\ed26"}.ti-building-pavilon:before{content:"\ebf7"}.ti-building-skyscraper:before{content:"\ec39"}.ti-building-store:before{content:"\ea4e"}.ti-building-warehouse:before{content:"\ebe3"}.ti-bulb:before{content:"\ea51"}.ti-bulb-off:before{content:"\ea50"}.ti-bulldozer:before{content:"\ee1d"}.ti-bus:before{content:"\ebe4"}.ti-businessplan:before{content:"\ee1e"}.ti-calculator:before{content:"\eb80"}.ti-calendar:before{content:"\ea53"}.ti-calendar-event:before{content:"\ea52"}.ti-calendar-minus:before{content:"\ebb9"}.ti-calendar-off:before{content:"\ee1f"}.ti-calendar-plus:before{content:"\ebba"}.ti-calendar-stats:before{content:"\ee20"}.ti-calendar-time:before{content:"\ee21"}.ti-camera:before{content:"\ea54"}.ti-camera-minus:before{content:"\ec3a"}.ti-camera-off:before{content:"\ecee"}.ti-camera-plus:before{content:"\ec3b"}.ti-camera-rotate:before{content:"\ee22"}.ti-camera-selfie:before{content:"\ee23"}.ti-candy:before{content:"\ef0d"}.ti-capture:before{content:"\ec3c"}.ti-car:before{content:"\ebbb"}.ti-car-crane:before{content:"\ef25"}.ti-caravan:before{content:"\ec7c"}.ti-cardboards:before{content:"\ed74"}.ti-caret-down:before{content:"\eb5d"}.ti-caret-left:before{content:"\eb5e"}.ti-caret-right:before{content:"\eb5f"}.ti-caret-up:before{content:"\eb60"}.ti-cash:before{content:"\ea55"}.ti-cash-banknote:before{content:"\ee25"}.ti-cash-banknote-off:before{content:"\ee24"}.ti-cast:before{content:"\ea56"}.ti-ce:before{content:"\ed75"}.ti-certificate:before{content:"\ed76"}.ti-charging-pile:before{content:"\ee26"}.ti-chart-arcs:before{content:"\ee28"}.ti-chart-arcs-3:before{content:"\ee27"}.ti-chart-area:before{content:"\ea58"}.ti-chart-area-line:before{content:"\ea57"}.ti-chart-arrows:before{content:"\ee2a"}.ti-chart-arrows-vertical:before{content:"\ee29"}.ti-chart-bar:before{content:"\ea59"}.ti-chart-bubble:before{content:"\ec75"}.ti-chart-candle:before{content:"\ea5a"}.ti-chart-circles:before{content:"\ee2b"}.ti-chart-donut:before{content:"\ea5b"}.ti-chart-donut-2:before{content:"\ee2c"}.ti-chart-donut-3:before{content:"\ee2d"}.ti-chart-donut-4:before{content:"\ee2e"}.ti-chart-dots:before{content:"\ee2f"}.ti-chart-infographic:before{content:"\ee30"}.ti-chart-line:before{content:"\ea5c"}.ti-chart-pie:before{content:"\ea5d"}.ti-chart-pie-2:before{content:"\ee31"}.ti-chart-pie-3:before{content:"\ee32"}.ti-chart-pie-4:before{content:"\ee33"}.ti-chart-radar:before{content:"\ed77"}.ti-check:before{content:"\ea5e"}.ti-checkbox:before{content:"\eba6"}.ti-checks:before{content:"\ebaa"}.ti-cheese:before{content:"\ef26"}.ti-chevron-down:before{content:"\ea5f"}.ti-chevron-down-left:before{content:"\ed09"}.ti-chevron-down-right:before{content:"\ed0a"}.ti-chevron-left:before{content:"\ea60"}.ti-chevron-right:before{content:"\ea61"}.ti-chevron-up:before{content:"\ea62"}.ti-chevron-up-left:before{content:"\ed0b"}.ti-chevron-up-right:before{content:"\ed0c"}.ti-chevrons-down:before{content:"\ea63"}.ti-chevrons-down-left:before{content:"\ed0d"}.ti-chevrons-down-right:before{content:"\ed0e"}.ti-chevrons-left:before{content:"\ea64"}.ti-chevrons-right:before{content:"\ea65"}.ti-chevrons-up:before{content:"\ea66"}.ti-chevrons-up-left:before{content:"\ed0f"}.ti-chevrons-up-right:before{content:"\ed10"}.ti-christmas-tree:before{content:"\ed78"}.ti-circle:before{content:"\ea6b"}.ti-circle-0:before{content:"\ee34"}.ti-circle-1:before{content:"\ee35"}.ti-circle-2:before{content:"\ee36"}.ti-circle-3:before{content:"\ee37"}.ti-circle-4:before{content:"\ee38"}.ti-circle-5:before{content:"\ee39"}.ti-circle-6:before{content:"\ee3a"}.ti-circle-7:before{content:"\ee3b"}.ti-circle-8:before{content:"\ee3c"}.ti-circle-9:before{content:"\ee3d"}.ti-circle-check:before{content:"\ea67"}.ti-circle-dashed:before{content:"\ed27"}.ti-circle-dotted:before{content:"\ed28"}.ti-circle-half:before{content:"\ee3f"}.ti-circle-half-vertical:before{content:"\ee3e"}.ti-circle-minus:before{content:"\ea68"}.ti-circle-off:before{content:"\ee40"}.ti-circle-plus:before{content:"\ea69"}.ti-circle-square:before{content:"\ece4"}.ti-circle-x:before{content:"\ea6a"}.ti-circles:before{content:"\ece5"}.ti-clear-all:before{content:"\ee41"}.ti-clear-formatting:before{content:"\ebe5"}.ti-click:before{content:"\ebbc"}.ti-clipboard:before{content:"\ea6f"}.ti-clipboard-check:before{content:"\ea6c"}.ti-clipboard-list:before{content:"\ea6d"}.ti-clipboard-x:before{content:"\ea6e"}.ti-clock:before{content:"\ea70"}.ti-cloud:before{content:"\ea76"}.ti-cloud-download:before{content:"\ea71"}.ti-cloud-fog:before{content:"\ecd9"}.ti-cloud-off:before{content:"\ed3e"}.ti-cloud-rain:before{content:"\ea72"}.ti-cloud-snow:before{content:"\ea73"}.ti-cloud-storm:before{content:"\ea74"}.ti-cloud-upload:before{content:"\ea75"}.ti-code:before{content:"\ea77"}.ti-code-minus:before{content:"\ee42"}.ti-code-plus:before{content:"\ee43"}.ti-coffee:before{content:"\ef0e"}.ti-coin:before{content:"\eb82"}.ti-color-picker:before{content:"\ebe6"}.ti-color-swatch:before{content:"\eb61"}.ti-column-insert-left:before{content:"\ee44"}.ti-column-insert-right:before{content:"\ee45"}.ti-columns:before{content:"\eb83"}.ti-comet:before{content:"\ec76"}.ti-command:before{content:"\ea78"}.ti-compass:before{content:"\ea79"}.ti-confetti:before{content:"\ee46"}.ti-container:before{content:"\ee47"}.ti-contrast:before{content:"\ec4e"}.ti-cookie:before{content:"\ef0f"}.ti-copy:before{content:"\ea7a"}.ti-copyleft:before{content:"\ec3d"}.ti-copyright:before{content:"\ea7b"}.ti-corner-down-left:before{content:"\ea7c"}.ti-corner-down-left-double:before{content:"\ee48"}.ti-corner-down-right:before{content:"\ea7d"}.ti-corner-down-right-double:before{content:"\ee49"}.ti-corner-left-down:before{content:"\ea7e"}.ti-corner-left-down-double:before{content:"\ee4a"}.ti-corner-left-up:before{content:"\ea7f"}.ti-corner-left-up-double:before{content:"\ee4b"}.ti-corner-right-down:before{content:"\ea80"}.ti-corner-right-down-double:before{content:"\ee4c"}.ti-corner-right-up:before{content:"\ea81"}.ti-corner-right-up-double:before{content:"\ee4d"}.ti-corner-up-left:before{content:"\ea82"}.ti-corner-up-left-double:before{content:"\ee4e"}.ti-corner-up-right:before{content:"\ea83"}.ti-corner-up-right-double:before{content:"\ee4f"}.ti-crane:before{content:"\ef27"}.ti-credit-card:before{content:"\ea84"}.ti-credit-card-off:before{content:"\ed11"}.ti-crop:before{content:"\ea85"}.ti-crosshair:before{content:"\ec3e"}.ti-crown:before{content:"\ed12"}.ti-crown-off:before{content:"\ee50"}.ti-cup:before{content:"\ef28"}.ti-curly-loop:before{content:"\ecda"}.ti-currency-bahraini:before{content:"\ee51"}.ti-currency-bath:before{content:"\ee52"}.ti-currency-bitcoin:before{content:"\ebab"}.ti-currency-cent:before{content:"\ee53"}.ti-currency-dinar:before{content:"\ee54"}.ti-currency-dirham:before{content:"\ee55"}.ti-currency-dollar:before{content:"\eb84"}.ti-currency-dollar-australian:before{content:"\ee56"}.ti-currency-dollar-canadian:before{content:"\ee57"}.ti-currency-dollar-singapore:before{content:"\ee58"}.ti-currency-ethereum:before{content:"\ee59"}.ti-currency-euro:before{content:"\eb85"}.ti-currency-forint:before{content:"\ee5a"}.ti-currency-frank:before{content:"\ee5b"}.ti-currency-krone-czech:before{content:"\ee5c"}.ti-currency-krone-danish:before{content:"\ee5d"}.ti-currency-krone-swedish:before{content:"\ee5e"}.ti-currency-leu:before{content:"\ee5f"}.ti-currency-lira:before{content:"\ee60"}.ti-currency-litecoin:before{content:"\ee61"}.ti-currency-naira:before{content:"\ee62"}.ti-currency-pound:before{content:"\ebac"}.ti-currency-real:before{content:"\ee63"}.ti-currency-renminbi:before{content:"\ee64"}.ti-currency-ripple:before{content:"\ee65"}.ti-currency-riyal:before{content:"\ee66"}.ti-currency-rubel:before{content:"\ee67"}.ti-currency-rupee:before{content:"\ebad"}.ti-currency-shekel:before{content:"\ee68"}.ti-currency-taka:before{content:"\ee69"}.ti-currency-tugrik:before{content:"\ee6a"}.ti-currency-won:before{content:"\ee6b"}.ti-currency-yen:before{content:"\ebae"}.ti-currency-zloty:before{content:"\ee6c"}.ti-current-location:before{content:"\ecef"}.ti-cursor-text:before{content:"\ee6d"}.ti-cut:before{content:"\ea86"}.ti-dashboard:before{content:"\ea87"}.ti-database:before{content:"\ea88"}.ti-database-export:before{content:"\ee6e"}.ti-database-import:before{content:"\ee6f"}.ti-database-off:before{content:"\ee70"}.ti-details:before{content:"\ee71"}.ti-device-analytics:before{content:"\ee72"}.ti-device-audio-tape:before{content:"\ee73"}.ti-device-cctv:before{content:"\ee74"}.ti-device-computer-camera:before{content:"\ee76"}.ti-device-computer-camera-off:before{content:"\ee75"}.ti-device-desktop:before{content:"\ea89"}.ti-device-desktop-analytics:before{content:"\ee77"}.ti-device-desktop-off:before{content:"\ee78"}.ti-device-floppy:before{content:"\eb62"}.ti-device-gamepad:before{content:"\eb63"}.ti-device-laptop:before{content:"\eb64"}.ti-device-mobile:before{content:"\ea8a"}.ti-device-mobile-message:before{content:"\ee79"}.ti-device-mobile-rotated:before{content:"\ecdb"}.ti-device-mobile-vibration:before{content:"\eb86"}.ti-device-speaker:before{content:"\ea8b"}.ti-device-tablet:before{content:"\ea8c"}.ti-device-tv:before{content:"\ea8d"}.ti-device-watch:before{content:"\ebf9"}.ti-devices:before{content:"\eb87"}.ti-devices-2:before{content:"\ed29"}.ti-devices-pc:before{content:"\ee7a"}.ti-diamond:before{content:"\eb65"}.ti-dice:before{content:"\eb66"}.ti-dimensions:before{content:"\ee7b"}.ti-direction:before{content:"\ebfb"}.ti-direction-horizontal:before{content:"\ebfa"}.ti-directions:before{content:"\ea8e"}.ti-disabled:before{content:"\ea8f"}.ti-disabled-2:before{content:"\ebaf"}.ti-disc:before{content:"\ea90"}.ti-discount:before{content:"\ebbd"}.ti-discount-2:before{content:"\ee7c"}.ti-divide:before{content:"\ed5c"}.ti-dna:before{content:"\ee7d"}.ti-dog-bowl:before{content:"\ef29"}.ti-dots:before{content:"\ea95"}.ti-dots-circle-horizontal:before{content:"\ea91"}.ti-dots-diagonal:before{content:"\ea93"}.ti-dots-diagonal-2:before{content:"\ea92"}.ti-dots-vertical:before{content:"\ea94"}.ti-download:before{content:"\ea96"}.ti-drag-drop:before{content:"\eb89"}.ti-drag-drop-2:before{content:"\eb88"}.ti-drone:before{content:"\ed79"}.ti-drone-off:before{content:"\ee7e"}.ti-droplet:before{content:"\ea97"}.ti-droplet-filled:before{content:"\ee80"}.ti-droplet-filled-2:before{content:"\ee7f"}.ti-droplet-half:before{content:"\ee82"}.ti-droplet-half-2:before{content:"\ee81"}.ti-droplet-off:before{content:"\ee83"}.ti-ear:before{content:"\ebce"}.ti-ear-off:before{content:"\ee84"}.ti-edit:before{content:"\ea98"}.ti-edit-circle:before{content:"\ee85"}.ti-egg:before{content:"\eb8a"}.ti-emphasis:before{content:"\ebcf"}.ti-equal:before{content:"\ee87"}.ti-equal-not:before{content:"\ee86"}.ti-eraser:before{content:"\eb8b"}.ti-exchange:before{content:"\ebe7"}.ti-exposure:before{content:"\eb8c"}.ti-external-link:before{content:"\ea99"}.ti-eye:before{content:"\ea9a"}.ti-eye-check:before{content:"\ee88"}.ti-eye-off:before{content:"\ecf0"}.ti-eyeglass:before{content:"\ee8a"}.ti-eyeglass-2:before{content:"\ee89"}.ti-face-id:before{content:"\ea9b"}.ti-fall:before{content:"\ecb9"}.ti-feather:before{content:"\ee8b"}.ti-fence:before{content:"\ef2a"}.ti-file:before{content:"\eaa4"}.ti-file-alert:before{content:"\ede6"}.ti-file-analytics:before{content:"\ede7"}.ti-file-certificate:before{content:"\ed4d"}.ti-file-check:before{content:"\ea9c"}.ti-file-code:before{content:"\ebd0"}.ti-file-code-2:before{content:"\ede8"}.ti-file-diff:before{content:"\ecf1"}.ti-file-dislike:before{content:"\ed2a"}.ti-file-download:before{content:"\ea9d"}.ti-file-export:before{content:"\ede9"}.ti-file-horizontal:before{content:"\ebb0"}.ti-file-import:before{content:"\edea"}.ti-file-info:before{content:"\edec"}.ti-file-invoice:before{content:"\eb67"}.ti-file-like:before{content:"\ed2b"}.ti-file-minus:before{content:"\ea9e"}.ti-file-music:before{content:"\ea9f"}.ti-file-off:before{content:"\ecf2"}.ti-file-phone:before{content:"\ecdc"}.ti-file-plus:before{content:"\eaa0"}.ti-file-report:before{content:"\eded"}.ti-file-search:before{content:"\ed5d"}.ti-file-shredder:before{content:"\eaa1"}.ti-file-symlink:before{content:"\ed53"}.ti-file-text:before{content:"\eaa2"}.ti-file-upload:before{content:"\ec91"}.ti-file-x:before{content:"\eaa3"}.ti-file-zip:before{content:"\ed4e"}.ti-files:before{content:"\edef"}.ti-files-off:before{content:"\edee"}.ti-filter:before{content:"\eaa5"}.ti-filter-off:before{content:"\ed2c"}.ti-fingerprint:before{content:"\ebd1"}.ti-firetruck:before{content:"\ebe8"}.ti-fish:before{content:"\ef2b"}.ti-flag:before{content:"\eaa6"}.ti-flag-2:before{content:"\ee8c"}.ti-flag-3:before{content:"\ee8d"}.ti-flame:before{content:"\ec2c"}.ti-flare:before{content:"\ee8e"}.ti-flask:before{content:"\ebd2"}.ti-flip-horizontal:before{content:"\eaa7"}.ti-flip-vertical:before{content:"\eaa8"}.ti-float-center:before{content:"\ebb1"}.ti-float-left:before{content:"\ebb2"}.ti-float-none:before{content:"\ed13"}.ti-float-right:before{content:"\ebb3"}.ti-focus:before{content:"\eb8d"}.ti-focus-2:before{content:"\ebd3"}.ti-fold:before{content:"\ed56"}.ti-fold-down:before{content:"\ed54"}.ti-fold-up:before{content:"\ed55"}.ti-folder:before{content:"\eaad"}.ti-folder-minus:before{content:"\eaaa"}.ti-folder-off:before{content:"\ed14"}.ti-folder-plus:before{content:"\eaab"}.ti-folder-x:before{content:"\eaac"}.ti-folders:before{content:"\eaae"}.ti-forbid:before{content:"\ebd5"}.ti-forbid-2:before{content:"\ebd4"}.ti-forklift:before{content:"\ebe9"}.ti-forms:before{content:"\ee8f"}.ti-frame:before{content:"\eaaf"}.ti-friends:before{content:"\eab0"}.ti-gas-station:before{content:"\ec7d"}.ti-gauge:before{content:"\eab1"}.ti-geometry:before{content:"\ee90"}.ti-ghost:before{content:"\eb8e"}.ti-gift:before{content:"\eb68"}.ti-git-branch:before{content:"\eab2"}.ti-git-commit:before{content:"\eab3"}.ti-git-compare:before{content:"\eab4"}.ti-git-fork:before{content:"\eb8f"}.ti-git-merge:before{content:"\eab5"}.ti-git-pull-request:before{content:"\eab6"}.ti-glass:before{content:"\eab8"}.ti-glass-full:before{content:"\eab7"}.ti-glass-off:before{content:"\ee91"}.ti-globe:before{content:"\eab9"}.ti-golf:before{content:"\ed8c"}.ti-gps:before{content:"\ed7a"}.ti-grain:before{content:"\ee92"}.ti-grid-dots:before{content:"\eaba"}.ti-grip-horizontal:before{content:"\ec00"}.ti-grip-vertical:before{content:"\ec01"}.ti-growth:before{content:"\ee93"}.ti-h-1:before{content:"\ec94"}.ti-h-2:before{content:"\ec95"}.ti-h-3:before{content:"\ec96"}.ti-h-4:before{content:"\ec97"}.ti-h-5:before{content:"\ec98"}.ti-h-6:before{content:"\ec99"}.ti-hand-finger:before{content:"\ee94"}.ti-hand-little-finger:before{content:"\ee95"}.ti-hand-middle-finger:before{content:"\ec2d"}.ti-hand-off:before{content:"\ed15"}.ti-hand-ring-finger:before{content:"\ee96"}.ti-hand-rock:before{content:"\ee97"}.ti-hand-stop:before{content:"\ec2e"}.ti-hand-three-fingers:before{content:"\ee98"}.ti-hand-two-fingers:before{content:"\ee99"}.ti-hanger:before{content:"\ee9a"}.ti-hash:before{content:"\eabc"}.ti-heading:before{content:"\ee9b"}.ti-headphones:before{content:"\eabd"}.ti-headphones-off:before{content:"\ed1d"}.ti-headset:before{content:"\eb90"}.ti-heart:before{content:"\eabe"}.ti-heart-broken:before{content:"\ecba"}.ti-helicopter:before{content:"\ed8e"}.ti-helicopter-landing:before{content:"\ed8d"}.ti-help:before{content:"\eabf"}.ti-hexagon:before{content:"\ec02"}.ti-hexagon-off:before{content:"\ee9c"}.ti-hierarchy:before{content:"\ee9e"}.ti-hierarchy-2:before{content:"\ee9d"}.ti-highlight:before{content:"\ef3f"}.ti-history:before{content:"\ebea"}.ti-home:before{content:"\eac1"}.ti-home-2:before{content:"\eac0"}.ti-ice-cream:before{content:"\eac2"}.ti-ice-cream-2:before{content:"\ee9f"}.ti-id:before{content:"\eac3"}.ti-inbox:before{content:"\eac4"}.ti-indent-decrease:before{content:"\eb91"}.ti-indent-increase:before{content:"\eb92"}.ti-infinity:before{content:"\eb69"}.ti-info-circle:before{content:"\eac5"}.ti-info-square:before{content:"\eac6"}.ti-italic:before{content:"\eb93"}.ti-jump-rope:before{content:"\ed8f"}.ti-karate:before{content:"\ed32"}.ti-key:before{content:"\eac7"}.ti-keyboard:before{content:"\ebd6"}.ti-keyboard-hide:before{content:"\ec7e"}.ti-keyboard-off:before{content:"\eea0"}.ti-keyboard-show:before{content:"\ec7f"}.ti-language:before{content:"\ebbe"}.ti-layers-difference:before{content:"\eac8"}.ti-layers-intersect:before{content:"\eac9"}.ti-layers-linked:before{content:"\eea1"}.ti-layers-subtract:before{content:"\eaca"}.ti-layers-union:before{content:"\eacb"}.ti-layout:before{content:"\eadb"}.ti-layout-2:before{content:"\eacc"}.ti-layout-align-bottom:before{content:"\eacd"}.ti-layout-align-center:before{content:"\eace"}.ti-layout-align-left:before{content:"\eacf"}.ti-layout-align-middle:before{content:"\ead0"}.ti-layout-align-right:before{content:"\ead1"}.ti-layout-align-top:before{content:"\ead2"}.ti-layout-bottombar:before{content:"\ead3"}.ti-layout-cards:before{content:"\ec13"}.ti-layout-columns:before{content:"\ead4"}.ti-layout-distribute-horizontal:before{content:"\ead5"}.ti-layout-distribute-vertical:before{content:"\ead6"}.ti-layout-grid:before{content:"\edba"}.ti-layout-grid-add:before{content:"\edb9"}.ti-layout-kanban:before{content:"\ec3f"}.ti-layout-list:before{content:"\ec14"}.ti-layout-navbar:before{content:"\ead7"}.ti-layout-rows:before{content:"\ead8"}.ti-layout-sidebar:before{content:"\eada"}.ti-layout-sidebar-right:before{content:"\ead9"}.ti-leaf:before{content:"\ed4f"}.ti-lego:before{content:"\eadc"}.ti-lemon:before{content:"\ef10"}.ti-letter-a:before{content:"\ec50"}.ti-letter-b:before{content:"\ec51"}.ti-letter-c:before{content:"\ec52"}.ti-letter-case:before{content:"\eea5"}.ti-letter-case-lower:before{content:"\eea2"}.ti-letter-case-toggle:before{content:"\eea3"}.ti-letter-case-upper:before{content:"\eea4"}.ti-letter-d:before{content:"\ec53"}.ti-letter-e:before{content:"\ec54"}.ti-letter-f:before{content:"\ec55"}.ti-letter-g:before{content:"\ec56"}.ti-letter-h:before{content:"\ec57"}.ti-letter-i:before{content:"\ec58"}.ti-letter-j:before{content:"\ec59"}.ti-letter-k:before{content:"\ec5a"}.ti-letter-l:before{content:"\ec5b"}.ti-letter-m:before{content:"\ec5c"}.ti-letter-n:before{content:"\ec5d"}.ti-letter-o:before{content:"\ec5e"}.ti-letter-p:before{content:"\ec5f"}.ti-letter-q:before{content:"\ec60"}.ti-letter-r:before{content:"\ec61"}.ti-letter-s:before{content:"\ec62"}.ti-letter-spacing:before{content:"\eea6"}.ti-letter-t:before{content:"\ec63"}.ti-letter-u:before{content:"\ec64"}.ti-letter-v:before{content:"\ec65"}.ti-letter-w:before{content:"\ec66"}.ti-letter-x:before{content:"\ec67"}.ti-letter-y:before{content:"\ec68"}.ti-letter-z:before{content:"\ec69"}.ti-letters-case:before{content:"\ec6a"}.ti-license:before{content:"\ebc0"}.ti-lifebuoy:before{content:"\eadd"}.ti-line:before{content:"\ec40"}.ti-line-dashed:before{content:"\eea7"}.ti-line-dotted:before{content:"\eea8"}.ti-line-height:before{content:"\eb94"}.ti-link:before{content:"\eade"}.ti-list:before{content:"\eb6b"}.ti-list-check:before{content:"\eb6a"}.ti-list-details:before{content:"\ef40"}.ti-list-numbers:before{content:"\ef11"}.ti-list-search:before{content:"\eea9"}.ti-live-photo:before{content:"\eadf"}.ti-live-view:before{content:"\ec6b"}.ti-loader:before{content:"\eca3"}.ti-loader-quarter:before{content:"\eca2"}.ti-location:before{content:"\eae0"}.ti-lock:before{content:"\eae2"}.ti-lock-access:before{content:"\eeaa"}.ti-lock-off:before{content:"\ed1e"}.ti-lock-open:before{content:"\eae1"}.ti-login:before{content:"\eba7"}.ti-logout:before{content:"\eba8"}.ti-macro:before{content:"\eeab"}.ti-magnet:before{content:"\eae3"}.ti-mail:before{content:"\eae5"}.ti-mail-forward:before{content:"\eeac"}.ti-mail-opened:before{content:"\eae4"}.ti-mailbox:before{content:"\eead"}.ti-man:before{content:"\eae6"}.ti-manual-gearbox:before{content:"\ed7b"}.ti-map:before{content:"\eae9"}.ti-map-2:before{content:"\eae7"}.ti-map-pin:before{content:"\eae8"}.ti-map-pin-off:before{content:"\ecf3"}.ti-map-pins:before{content:"\ed5e"}.ti-markdown:before{content:"\ec41"}.ti-marquee:before{content:"\ec77"}.ti-marquee-2:before{content:"\eeae"}.ti-mars:before{content:"\ec80"}.ti-mask:before{content:"\eeb0"}.ti-mask-off:before{content:"\eeaf"}.ti-massage:before{content:"\eeb1"}.ti-math:before{content:"\ebeb"}.ti-math-function:before{content:"\eeb2"}.ti-math-symbols:before{content:"\eeb3"}.ti-maximize:before{content:"\eaea"}.ti-meat:before{content:"\ef12"}.ti-medal:before{content:"\ec78"}.ti-medical-cross:before{content:"\ec2f"}.ti-menu:before{content:"\eaeb"}.ti-menu-2:before{content:"\ec42"}.ti-message:before{content:"\eaef"}.ti-message-2:before{content:"\eaec"}.ti-message-circle:before{content:"\eaed"}.ti-message-circle-2:before{content:"\ed3f"}.ti-message-circle-off:before{content:"\ed40"}.ti-message-dots:before{content:"\eaee"}.ti-message-off:before{content:"\ed41"}.ti-message-plus:before{content:"\ec9a"}.ti-message-report:before{content:"\ec9b"}.ti-messages:before{content:"\eb6c"}.ti-messages-off:before{content:"\ed42"}.ti-microphone:before{content:"\eaf0"}.ti-microphone-2:before{content:"\ef2c"}.ti-microphone-off:before{content:"\ed16"}.ti-milk:before{content:"\ef13"}.ti-minimize:before{content:"\eaf1"}.ti-minus:before{content:"\eaf2"}.ti-minus-vertical:before{content:"\eeb4"}.ti-mist:before{content:"\ec30"}.ti-mood-boy:before{content:"\ed2d"}.ti-mood-confuzed:before{content:"\eaf3"}.ti-mood-crazy-happy:before{content:"\ed90"}.ti-mood-cry:before{content:"\ecbb"}.ti-mood-empty:before{content:"\eeb5"}.ti-mood-happy:before{content:"\eaf4"}.ti-mood-kid:before{content:"\ec03"}.ti-mood-neutral:before{content:"\eaf5"}.ti-mood-sad:before{content:"\eaf6"}.ti-mood-smile:before{content:"\eaf7"}.ti-mood-suprised:before{content:"\ec04"}.ti-mood-tongue:before{content:"\eb95"}.ti-moon:before{content:"\eaf8"}.ti-moon-2:before{content:"\ece6"}.ti-moon-stars:before{content:"\ece7"}.ti-moped:before{content:"\ecbc"}.ti-motorbike:before{content:"\eeb6"}.ti-mouse:before{content:"\eaf9"}.ti-movie:before{content:"\eafa"}.ti-mug:before{content:"\eafb"}.ti-multiplier-0-5x:before{content:"\ef41"}.ti-multiplier-1-5x:before{content:"\ef42"}.ti-multiplier-1x:before{content:"\ef43"}.ti-multiplier-2x:before{content:"\ef44"}.ti-mushroom:before{content:"\ef14"}.ti-music:before{content:"\eafc"}.ti-new-section:before{content:"\ebc1"}.ti-news:before{content:"\eafd"}.ti-nfc:before{content:"\eeb7"}.ti-note:before{content:"\eb6d"}.ti-notebook:before{content:"\eb96"}.ti-notes:before{content:"\eb6e"}.ti-notification:before{content:"\eafe"}.ti-number-0:before{content:"\edf0"}.ti-number-1:before{content:"\edf1"}.ti-number-2:before{content:"\edf2"}.ti-number-3:before{content:"\edf3"}.ti-number-4:before{content:"\edf4"}.ti-number-5:before{content:"\edf5"}.ti-number-6:before{content:"\edf6"}.ti-number-7:before{content:"\edf7"}.ti-number-8:before{content:"\edf8"}.ti-number-9:before{content:"\edf9"}.ti-octagon:before{content:"\ecbd"}.ti-octagon-off:before{content:"\eeb8"}.ti-old:before{content:"\eeb9"}.ti-olympics:before{content:"\eeba"}.ti-omega:before{content:"\eb97"}.ti-outlet:before{content:"\ebd7"}.ti-overline:before{content:"\eebb"}.ti-package:before{content:"\eaff"}.ti-pacman:before{content:"\eebc"}.ti-page-break:before{content:"\ec81"}.ti-paint:before{content:"\eb00"}.ti-palette:before{content:"\eb01"}.ti-panorama-horizontal:before{content:"\ed33"}.ti-panorama-vertical:before{content:"\ed34"}.ti-paperclip:before{content:"\eb02"}.ti-parachute:before{content:"\ed7c"}.ti-parentheses:before{content:"\ebd8"}.ti-parking:before{content:"\eb03"}.ti-peace:before{content:"\ecbe"}.ti-pencil:before{content:"\eb04"}.ti-pennant:before{content:"\ed7d"}.ti-pepper:before{content:"\ef15"}.ti-percentage:before{content:"\ecf4"}.ti-perspective:before{content:"\eebd"}.ti-phone:before{content:"\eb09"}.ti-phone-call:before{content:"\eb05"}.ti-phone-calling:before{content:"\ec43"}.ti-phone-check:before{content:"\ec05"}.ti-phone-incoming:before{content:"\eb06"}.ti-phone-off:before{content:"\ecf5"}.ti-phone-outgoing:before{content:"\eb07"}.ti-phone-pause:before{content:"\eb08"}.ti-phone-plus:before{content:"\ec06"}.ti-phone-x:before{content:"\ec07"}.ti-photo:before{content:"\eb0a"}.ti-photo-off:before{content:"\ecf6"}.ti-physotherapist:before{content:"\eebe"}.ti-picture-in-picture:before{content:"\ed35"}.ti-picture-in-picture-off:before{content:"\ed43"}.ti-picture-in-picture-on:before{content:"\ed44"}.ti-pill:before{content:"\ec44"}.ti-pin:before{content:"\ec9c"}.ti-pinned:before{content:"\ed60"}.ti-pinned-off:before{content:"\ed5f"}.ti-pizza:before{content:"\edbb"}.ti-plane:before{content:"\eb6f"}.ti-plane-arrival:before{content:"\eb99"}.ti-plane-departure:before{content:"\eb9a"}.ti-planet:before{content:"\ec08"}.ti-plant:before{content:"\ed50"}.ti-plant-2:before{content:"\ed7e"}.ti-play-card:before{content:"\eebf"}.ti-player-pause:before{content:"\ed45"}.ti-player-play:before{content:"\ed46"}.ti-player-record:before{content:"\ed47"}.ti-player-skip-back:before{content:"\ed48"}.ti-player-skip-forward:before{content:"\ed49"}.ti-player-stop:before{content:"\ed4a"}.ti-player-track-next:before{content:"\ed4b"}.ti-player-track-prev:before{content:"\ed4c"}.ti-playlist:before{content:"\eec0"}.ti-plug:before{content:"\ebd9"}.ti-plus:before{content:"\eb0b"}.ti-point:before{content:"\eb0c"}.ti-pokeball:before{content:"\eec1"}.ti-polaroid:before{content:"\eec2"}.ti-pool:before{content:"\ed91"}.ti-power:before{content:"\eb0d"}.ti-pray:before{content:"\ecbf"}.ti-presentation:before{content:"\eb70"}.ti-presentation-analytics:before{content:"\eec3"}.ti-printer:before{content:"\eb0e"}.ti-prompt:before{content:"\eb0f"}.ti-propeller:before{content:"\eec4"}.ti-puzzle:before{content:"\eb10"}.ti-pyramid:before{content:"\eec5"}.ti-qrcode:before{content:"\eb11"}.ti-question-mark:before{content:"\ec9d"}.ti-radio:before{content:"\ef2d"}.ti-radioactive:before{content:"\ecc0"}.ti-radius-bottom-left:before{content:"\eec6"}.ti-radius-bottom-right:before{content:"\eec7"}.ti-radius-top-left:before{content:"\eec8"}.ti-radius-top-right:before{content:"\eec9"}.ti-rainbow:before{content:"\edbc"}.ti-receipt:before{content:"\edfd"}.ti-receipt-2:before{content:"\edfa"}.ti-receipt-off:before{content:"\edfb"}.ti-receipt-refund:before{content:"\edfc"}.ti-receipt-tax:before{content:"\edbd"}.ti-recharging:before{content:"\eeca"}.ti-record-mail:before{content:"\eb12"}.ti-rectangle:before{content:"\ed37"}.ti-rectangle-vertical:before{content:"\ed36"}.ti-recycle:before{content:"\eb9b"}.ti-refresh:before{content:"\eb13"}.ti-refresh-alert:before{content:"\ed57"}.ti-registered:before{content:"\eb14"}.ti-relation-many-to-many:before{content:"\ed7f"}.ti-relation-one-to-many:before{content:"\ed80"}.ti-relation-one-to-one:before{content:"\ed81"}.ti-repeat:before{content:"\eb72"}.ti-repeat-once:before{content:"\eb71"}.ti-replace:before{content:"\ebc7"}.ti-report:before{content:"\eece"}.ti-report-analytics:before{content:"\eecb"}.ti-report-medical:before{content:"\eecc"}.ti-report-money:before{content:"\eecd"}.ti-resize:before{content:"\eecf"}.ti-ripple:before{content:"\ed82"}.ti-road-sign:before{content:"\ecdd"}.ti-rocket:before{content:"\ec45"}.ti-rotate:before{content:"\eb16"}.ti-rotate-2:before{content:"\ebb4"}.ti-rotate-clockwise:before{content:"\eb15"}.ti-rotate-clockwise-2:before{content:"\ebb5"}.ti-rotate-rectangle:before{content:"\ec15"}.ti-route:before{content:"\eb17"}.ti-router:before{content:"\eb18"}.ti-row-insert-bottom:before{content:"\eed0"}.ti-row-insert-top:before{content:"\eed1"}.ti-rss:before{content:"\eb19"}.ti-ruler:before{content:"\eb1a"}.ti-ruler-2:before{content:"\eed2"}.ti-run:before{content:"\ec82"}.ti-sailboat:before{content:"\ec83"}.ti-salt:before{content:"\ef16"}.ti-satellite:before{content:"\eed3"}.ti-sausage:before{content:"\ef17"}.ti-scale:before{content:"\ebc2"}.ti-scan:before{content:"\ebc8"}.ti-school:before{content:"\ecf7"}.ti-scissors:before{content:"\eb1b"}.ti-scooter:before{content:"\ec6c"}.ti-scooter-electric:before{content:"\ecc1"}.ti-screen-share:before{content:"\ed18"}.ti-screen-share-off:before{content:"\ed17"}.ti-scuba-mask:before{content:"\eed4"}.ti-search:before{content:"\eb1c"}.ti-section:before{content:"\eed5"}.ti-seeding:before{content:"\ed51"}.ti-select:before{content:"\ec9e"}.ti-selector:before{content:"\eb1d"}.ti-send:before{content:"\eb1e"}.ti-separator:before{content:"\ebda"}.ti-separator-horizontal:before{content:"\ec79"}.ti-separator-vertical:before{content:"\ec7a"}.ti-server:before{content:"\eb1f"}.ti-servicemark:before{content:"\ec09"}.ti-settings:before{content:"\eb20"}.ti-settings-automation:before{content:"\eed6"}.ti-shadow:before{content:"\eed8"}.ti-shadow-off:before{content:"\eed7"}.ti-shape:before{content:"\eb9c"}.ti-shape-2:before{content:"\eed9"}.ti-shape-3:before{content:"\eeda"}.ti-share:before{content:"\eb21"}.ti-shield:before{content:"\eb24"}.ti-shield-check:before{content:"\eb22"}.ti-shield-lock:before{content:"\ed58"}.ti-shield-off:before{content:"\ecf8"}.ti-shield-x:before{content:"\eb23"}.ti-ship:before{content:"\ec84"}.ti-shirt:before{content:"\ec0a"}.ti-shopping-cart:before{content:"\eb25"}.ti-shopping-cart-discount:before{content:"\eedb"}.ti-shopping-cart-off:before{content:"\eedc"}.ti-shopping-cart-plus:before{content:"\eedd"}.ti-shopping-cart-x:before{content:"\eede"}.ti-shredder:before{content:"\eedf"}.ti-signature:before{content:"\eee0"}.ti-sitemap:before{content:"\eb9d"}.ti-skateboard:before{content:"\ecc2"}.ti-slice:before{content:"\ebdb"}.ti-slideshow:before{content:"\ebc9"}.ti-smart-home:before{content:"\ecde"}.ti-smoking:before{content:"\ecc4"}.ti-smoking-no:before{content:"\ecc3"}.ti-snowflake:before{content:"\ec0b"}.ti-soccer-field:before{content:"\ed92"}.ti-social:before{content:"\ebec"}.ti-sock:before{content:"\eee1"}.ti-sort-ascending:before{content:"\eb26"}.ti-sort-ascending-2:before{content:"\eee2"}.ti-sort-ascending-letters:before{content:"\ef18"}.ti-sort-ascending-numbers:before{content:"\ef19"}.ti-sort-descending:before{content:"\eb27"}.ti-sort-descending-2:before{content:"\eee3"}.ti-sort-descending-letters:before{content:"\ef1a"}.ti-sort-descending-numbers:before{content:"\ef1b"}.ti-soup:before{content:"\ef2e"}.ti-space:before{content:"\ec0c"}.ti-speakerphone:before{content:"\ed61"}.ti-speedboat:before{content:"\ed93"}.ti-sport-billard:before{content:"\eee4"}.ti-square:before{content:"\eb2c"}.ti-square-0:before{content:"\eee5"}.ti-square-1:before{content:"\eee6"}.ti-square-2:before{content:"\eee7"}.ti-square-3:before{content:"\eee8"}.ti-square-4:before{content:"\eee9"}.ti-square-5:before{content:"\eeea"}.ti-square-6:before{content:"\eeeb"}.ti-square-7:before{content:"\eeec"}.ti-square-8:before{content:"\eeed"}.ti-square-9:before{content:"\eeee"}.ti-square-check:before{content:"\eb28"}.ti-square-dot:before{content:"\ed59"}.ti-square-forbid:before{content:"\ed5b"}.ti-square-forbid-2:before{content:"\ed5a"}.ti-square-minus:before{content:"\eb29"}.ti-square-off:before{content:"\eeef"}.ti-square-plus:before{content:"\eb2a"}.ti-square-root:before{content:"\eef1"}.ti-square-root-2:before{content:"\eef0"}.ti-square-rotated:before{content:"\ecdf"}.ti-square-rotated-off:before{content:"\eef2"}.ti-square-toggle:before{content:"\eef4"}.ti-square-toggle-horizontal:before{content:"\eef3"}.ti-square-x:before{content:"\eb2b"}.ti-squares-diagonal:before{content:"\eef5"}.ti-squares-filled:before{content:"\eef6"}.ti-stack:before{content:"\eb2d"}.ti-stack-2:before{content:"\eef7"}.ti-stairs:before{content:"\eca6"}.ti-stairs-down:before{content:"\eca4"}.ti-stairs-up:before{content:"\eca5"}.ti-star:before{content:"\eb2e"}.ti-star-half:before{content:"\ed19"}.ti-star-off:before{content:"\ed62"}.ti-stars:before{content:"\ed38"}.ti-steering-wheel:before{content:"\ec7b"}.ti-step-into:before{content:"\ece0"}.ti-step-out:before{content:"\ece1"}.ti-stethoscope:before{content:"\edbe"}.ti-sticker:before{content:"\eb2f"}.ti-strikethrough:before{content:"\eb9e"}.ti-submarine:before{content:"\ed94"}.ti-subscript:before{content:"\eb9f"}.ti-subtask:before{content:"\ec9f"}.ti-sum:before{content:"\eb73"}.ti-sun:before{content:"\eb30"}.ti-sun-off:before{content:"\ed63"}.ti-sunrise:before{content:"\ef1c"}.ti-sunset:before{content:"\ec31"}.ti-superscript:before{content:"\eba0"}.ti-swimming:before{content:"\ec92"}.ti-switch:before{content:"\eb33"}.ti-switch-2:before{content:"\edbf"}.ti-switch-3:before{content:"\edc0"}.ti-switch-horizontal:before{content:"\eb31"}.ti-switch-vertical:before{content:"\eb32"}.ti-table:before{content:"\eba1"}.ti-table-export:before{content:"\eef8"}.ti-table-import:before{content:"\eef9"}.ti-table-off:before{content:"\eefa"}.ti-tag:before{content:"\eb34"}.ti-tallymark-1:before{content:"\ec46"}.ti-tallymark-2:before{content:"\ec47"}.ti-tallymark-3:before{content:"\ec48"}.ti-tallymark-4:before{content:"\ec49"}.ti-tallymarks:before{content:"\ec4a"}.ti-tank:before{content:"\ed95"}.ti-target:before{content:"\eb35"}.ti-temperature:before{content:"\eb38"}.ti-temperature-celsius:before{content:"\eb36"}.ti-temperature-fahrenheit:before{content:"\eb37"}.ti-temperature-minus:before{content:"\ebed"}.ti-temperature-plus:before{content:"\ebee"}.ti-template:before{content:"\eb39"}.ti-tent:before{content:"\eefb"}.ti-terminal:before{content:"\ebdc"}.ti-terminal-2:before{content:"\ebef"}.ti-test-pipe:before{content:"\eb3a"}.ti-text-direction-ltr:before{content:"\eefc"}.ti-text-direction-rtl:before{content:"\eefd"}.ti-text-wrap:before{content:"\ebdd"}.ti-text-wrap-disabled:before{content:"\eca7"}.ti-thumb-down:before{content:"\eb3b"}.ti-thumb-up:before{content:"\eb3c"}.ti-ticket:before{content:"\eb3d"}.ti-tilt-shift:before{content:"\eefe"}.ti-tir:before{content:"\ebf0"}.ti-toggle-left:before{content:"\eb3e"}.ti-toggle-right:before{content:"\eb3f"}.ti-tool:before{content:"\eb40"}.ti-tools:before{content:"\ebca"}.ti-tools-kitchen:before{content:"\ed64"}.ti-tools-kitchen-2:before{content:"\eeff"}.ti-tornado:before{content:"\ece2"}.ti-tournament:before{content:"\ecd0"}.ti-track:before{content:"\ef00"}.ti-tractor:before{content:"\ec0d"}.ti-trademark:before{content:"\ec0e"}.ti-traffic-cone:before{content:"\ec0f"}.ti-traffic-lights:before{content:"\ed39"}.ti-train:before{content:"\ed96"}.ti-transfer-in:before{content:"\ef2f"}.ti-transfer-out:before{content:"\ef30"}.ti-trash:before{content:"\eb41"}.ti-trash-off:before{content:"\ed65"}.ti-tree:before{content:"\ef01"}.ti-trees:before{content:"\ec10"}.ti-trending-down:before{content:"\eb42"}.ti-trending-down-2:before{content:"\edc1"}.ti-trending-down-3:before{content:"\edc2"}.ti-trending-up:before{content:"\eb43"}.ti-trending-up-2:before{content:"\edc3"}.ti-trending-up-3:before{content:"\edc4"}.ti-triangle:before{content:"\eb44"}.ti-triangle-off:before{content:"\ef02"}.ti-triangle-square-circle:before{content:"\ece8"}.ti-trident:before{content:"\ecc5"}.ti-trophy:before{content:"\eb45"}.ti-truck:before{content:"\ebc4"}.ti-truck-delivery:before{content:"\ec4b"}.ti-truck-off:before{content:"\ef03"}.ti-truck-return:before{content:"\ec4c"}.ti-typography:before{content:"\ebc5"}.ti-umbrella:before{content:"\ebf1"}.ti-underline:before{content:"\eba2"}.ti-unlink:before{content:"\eb46"}.ti-upload:before{content:"\eb47"}.ti-urgent:before{content:"\eb48"}.ti-user:before{content:"\eb4d"}.ti-user-check:before{content:"\eb49"}.ti-user-exclamation:before{content:"\ec12"}.ti-user-minus:before{content:"\eb4a"}.ti-user-off:before{content:"\ecf9"}.ti-user-plus:before{content:"\eb4b"}.ti-user-x:before{content:"\eb4c"}.ti-users:before{content:"\ebf2"}.ti-vaccine:before{content:"\ef04"}.ti-variable:before{content:"\ef05"}.ti-vector:before{content:"\eca9"}.ti-vector-beizer-2:before{content:"\ed3a"}.ti-vector-bezier:before{content:"\ef1d"}.ti-vector-triangle:before{content:"\eca8"}.ti-venus:before{content:"\ec86"}.ti-versions:before{content:"\ed52"}.ti-video:before{content:"\ed22"}.ti-video-minus:before{content:"\ed1f"}.ti-video-off:before{content:"\ed20"}.ti-video-plus:before{content:"\ed21"}.ti-view-360:before{content:"\ed84"}.ti-viewfinder:before{content:"\eb4e"}.ti-viewport-narrow:before{content:"\ebf3"}.ti-viewport-wide:before{content:"\ebf4"}.ti-virus:before{content:"\eb74"}.ti-virus-off:before{content:"\ed66"}.ti-virus-search:before{content:"\ed67"}.ti-vocabulary:before{content:"\ef1e"}.ti-volume:before{content:"\eb51"}.ti-volume-2:before{content:"\eb4f"}.ti-volume-3:before{content:"\eb50"}.ti-walk:before{content:"\ec87"}.ti-wallet:before{content:"\eb75"}.ti-wand:before{content:"\ebcb"}.ti-wave-saw-tool:before{content:"\ecd3"}.ti-wave-sine:before{content:"\ecd4"}.ti-wave-square:before{content:"\ecd5"}.ti-wifi:before{content:"\eb52"}.ti-wifi-0:before{content:"\eba3"}.ti-wifi-1:before{content:"\eba4"}.ti-wifi-2:before{content:"\eba5"}.ti-wifi-off:before{content:"\ecfa"}.ti-wind:before{content:"\ec34"}.ti-windmill:before{content:"\ed85"}.ti-window:before{content:"\ef06"}.ti-wiper:before{content:"\ecab"}.ti-wiper-wash:before{content:"\ecaa"}.ti-woman:before{content:"\eb53"}.ti-world:before{content:"\eb54"}.ti-world-latitude:before{content:"\ed2e"}.ti-world-longitude:before{content:"\ed2f"}.ti-wrecking-ball:before{content:"\ed97"}.ti-writing:before{content:"\ef08"}.ti-writing-sign:before{content:"\ef07"}.ti-x:before{content:"\eb55"}.ti-yin-yang:before{content:"\ec35"}.ti-zodiac-aquarius:before{content:"\ecac"}.ti-zodiac-aries:before{content:"\ecad"}.ti-zodiac-cancer:before{content:"\ecae"}.ti-zodiac-capricorn:before{content:"\ecaf"}.ti-zodiac-gemini:before{content:"\ecb0"}.ti-zodiac-leo:before{content:"\ecb1"}.ti-zodiac-libra:before{content:"\ecb2"}.ti-zodiac-pisces:before{content:"\ecb3"}.ti-zodiac-sagittarius:before{content:"\ecb4"}.ti-zodiac-scorpio:before{content:"\ecb5"}.ti-zodiac-taurus:before{content:"\ecb6"}.ti-zodiac-virgo:before{content:"\ecb7"}.ti-zoom-cancel:before{content:"\ec4d"}.ti-zoom-check:before{content:"\ef09"}.ti-zoom-in:before{content:"\eb56"}.ti-zoom-money:before{content:"\ef0a"}.ti-zoom-out:before{content:"\eb57"}.ti-zoom-question:before{content:"\edeb"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
( function () {
|
|
2
|
-
|
|
3
|
-
class AnimationClipCreator {
|
|
4
|
-
|
|
5
|
-
static CreateRotationAnimation( period, axis = 'x' ) {
|
|
6
|
-
|
|
7
|
-
const times = [ 0, period ],
|
|
8
|
-
values = [ 0, 360 ];
|
|
9
|
-
const trackName = '.rotation[' + axis + ']';
|
|
10
|
-
const track = new THREE.NumberKeyframeTrack( trackName, times, values );
|
|
11
|
-
return new THREE.AnimationClip( null, period, [ track ] );
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
static CreateScaleAxisAnimation( period, axis = 'x' ) {
|
|
15
|
-
|
|
16
|
-
const times = [ 0, period ],
|
|
17
|
-
values = [ 0, 1 ];
|
|
18
|
-
const trackName = '.scale[' + axis + ']';
|
|
19
|
-
const track = new THREE.NumberKeyframeTrack( trackName, times, values );
|
|
20
|
-
return new THREE.AnimationClip( null, period, [ track ] );
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
static CreateShakeAnimation( duration, shakeScale ) {
|
|
24
|
-
|
|
25
|
-
const times = [],
|
|
26
|
-
values = [],
|
|
27
|
-
tmp = new THREE.Vector3();
|
|
28
|
-
for ( let i = 0; i < duration * 10; i ++ ) {
|
|
29
|
-
|
|
30
|
-
times.push( i / 10 );
|
|
31
|
-
tmp.set( Math.random() * 2.0 - 1.0, Math.random() * 2.0 - 1.0, Math.random() * 2.0 - 1.0 ).multiply( shakeScale ).toArray( values, values.length );
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const trackName = '.position';
|
|
36
|
-
const track = new THREE.VectorKeyframeTrack( trackName, times, values );
|
|
37
|
-
return new THREE.AnimationClip( null, duration, [ track ] );
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
static CreatePulsationAnimation( duration, pulseScale ) {
|
|
41
|
-
|
|
42
|
-
const times = [],
|
|
43
|
-
values = [],
|
|
44
|
-
tmp = new THREE.Vector3();
|
|
45
|
-
for ( let i = 0; i < duration * 10; i ++ ) {
|
|
46
|
-
|
|
47
|
-
times.push( i / 10 );
|
|
48
|
-
const scaleFactor = Math.random() * pulseScale;
|
|
49
|
-
tmp.set( scaleFactor, scaleFactor, scaleFactor ).toArray( values, values.length );
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const trackName = '.scale';
|
|
54
|
-
const track = new THREE.VectorKeyframeTrack( trackName, times, values );
|
|
55
|
-
return new THREE.AnimationClip( null, duration, [ track ] );
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
static CreateVisibilityAnimation( duration ) {
|
|
59
|
-
|
|
60
|
-
const times = [ 0, duration / 2, duration ],
|
|
61
|
-
values = [ true, false, true ];
|
|
62
|
-
const trackName = '.visible';
|
|
63
|
-
const track = new THREE.BooleanKeyframeTrack( trackName, times, values );
|
|
64
|
-
return new THREE.AnimationClip( null, duration, [ track ] );
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
static CreateMaterialColorAnimation( duration, colors ) {
|
|
68
|
-
|
|
69
|
-
const times = [],
|
|
70
|
-
values = [],
|
|
71
|
-
timeStep = duration / colors.length;
|
|
72
|
-
for ( let i = 0; i <= colors.length; i ++ ) {
|
|
73
|
-
|
|
74
|
-
times.push( i * timeStep );
|
|
75
|
-
values.push( colors[ i % colors.length ] );
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const trackName = '.material[0].color';
|
|
80
|
-
const track = new THREE.ColorKeyframeTrack( trackName, times, values );
|
|
81
|
-
return new THREE.AnimationClip( null, duration, [ track ] );
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
THREE.AnimationClipCreator = AnimationClipCreator;
|
|
88
|
-
|
|
89
|
-
} )();
|
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
( function () {
|
|
2
|
-
|
|
3
|
-
const _q = new THREE.Quaternion();
|
|
4
|
-
const _targetPos = new THREE.Vector3();
|
|
5
|
-
const _targetVec = new THREE.Vector3();
|
|
6
|
-
const _effectorPos = new THREE.Vector3();
|
|
7
|
-
const _effectorVec = new THREE.Vector3();
|
|
8
|
-
const _linkPos = new THREE.Vector3();
|
|
9
|
-
const _invLinkQ = new THREE.Quaternion();
|
|
10
|
-
const _linkScale = new THREE.Vector3();
|
|
11
|
-
const _axis = new THREE.Vector3();
|
|
12
|
-
const _vector = new THREE.Vector3();
|
|
13
|
-
const _matrix = new THREE.Matrix4();
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* CCD Algorithm
|
|
17
|
-
* - https://sites.google.com/site/auraliusproject/ccd-algorithm
|
|
18
|
-
*
|
|
19
|
-
* // ik parameter example
|
|
20
|
-
* //
|
|
21
|
-
* // target, effector, index in links are bone index in skeleton.bones.
|
|
22
|
-
* // the bones relation should be
|
|
23
|
-
* // <-- parent child -->
|
|
24
|
-
* // links[ n ], links[ n - 1 ], ..., links[ 0 ], effector
|
|
25
|
-
* iks = [ {
|
|
26
|
-
* target: 1,
|
|
27
|
-
* effector: 2,
|
|
28
|
-
* links: [ { index: 5, limitation: new THREE.Vector3( 1, 0, 0 ) }, { index: 4, enabled: false }, { index : 3 } ],
|
|
29
|
-
* iteration: 10,
|
|
30
|
-
* minAngle: 0.0,
|
|
31
|
-
* maxAngle: 1.0,
|
|
32
|
-
* } ];
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
class CCDIKSolver {
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @param {THREE.SkinnedMesh} mesh
|
|
39
|
-
* @param {Array<Object>} iks
|
|
40
|
-
*/
|
|
41
|
-
constructor( mesh, iks = [] ) {
|
|
42
|
-
|
|
43
|
-
this.mesh = mesh;
|
|
44
|
-
this.iks = iks;
|
|
45
|
-
this._valid();
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Update all IK bones.
|
|
51
|
-
*
|
|
52
|
-
* @return {CCDIKSolver}
|
|
53
|
-
*/
|
|
54
|
-
update() {
|
|
55
|
-
|
|
56
|
-
const iks = this.iks;
|
|
57
|
-
for ( let i = 0, il = iks.length; i < il; i ++ ) {
|
|
58
|
-
|
|
59
|
-
this.updateOne( iks[ i ] );
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return this;
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Update one IK bone
|
|
69
|
-
*
|
|
70
|
-
* @param {Object} ik parameter
|
|
71
|
-
* @return {CCDIKSolver}
|
|
72
|
-
*/
|
|
73
|
-
updateOne( ik ) {
|
|
74
|
-
|
|
75
|
-
const bones = this.mesh.skeleton.bones;
|
|
76
|
-
|
|
77
|
-
// for reference overhead reduction in loop
|
|
78
|
-
const math = Math;
|
|
79
|
-
const effector = bones[ ik.effector ];
|
|
80
|
-
const target = bones[ ik.target ];
|
|
81
|
-
|
|
82
|
-
// don't use getWorldPosition() here for the performance
|
|
83
|
-
// because it calls updateMatrixWorld( true ) inside.
|
|
84
|
-
_targetPos.setFromMatrixPosition( target.matrixWorld );
|
|
85
|
-
const links = ik.links;
|
|
86
|
-
const iteration = ik.iteration !== undefined ? ik.iteration : 1;
|
|
87
|
-
for ( let i = 0; i < iteration; i ++ ) {
|
|
88
|
-
|
|
89
|
-
let rotated = false;
|
|
90
|
-
for ( let j = 0, jl = links.length; j < jl; j ++ ) {
|
|
91
|
-
|
|
92
|
-
const link = bones[ links[ j ].index ];
|
|
93
|
-
|
|
94
|
-
// skip this link and following links.
|
|
95
|
-
// this skip is used for MMD performance optimization.
|
|
96
|
-
if ( links[ j ].enabled === false ) break;
|
|
97
|
-
const limitation = links[ j ].limitation;
|
|
98
|
-
const rotationMin = links[ j ].rotationMin;
|
|
99
|
-
const rotationMax = links[ j ].rotationMax;
|
|
100
|
-
|
|
101
|
-
// don't use getWorldPosition/Quaternion() here for the performance
|
|
102
|
-
// because they call updateMatrixWorld( true ) inside.
|
|
103
|
-
link.matrixWorld.decompose( _linkPos, _invLinkQ, _linkScale );
|
|
104
|
-
_invLinkQ.invert();
|
|
105
|
-
_effectorPos.setFromMatrixPosition( effector.matrixWorld );
|
|
106
|
-
|
|
107
|
-
// work in link world
|
|
108
|
-
_effectorVec.subVectors( _effectorPos, _linkPos );
|
|
109
|
-
_effectorVec.applyQuaternion( _invLinkQ );
|
|
110
|
-
_effectorVec.normalize();
|
|
111
|
-
_targetVec.subVectors( _targetPos, _linkPos );
|
|
112
|
-
_targetVec.applyQuaternion( _invLinkQ );
|
|
113
|
-
_targetVec.normalize();
|
|
114
|
-
let angle = _targetVec.dot( _effectorVec );
|
|
115
|
-
if ( angle > 1.0 ) {
|
|
116
|
-
|
|
117
|
-
angle = 1.0;
|
|
118
|
-
|
|
119
|
-
} else if ( angle < - 1.0 ) {
|
|
120
|
-
|
|
121
|
-
angle = - 1.0;
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
angle = math.acos( angle );
|
|
126
|
-
|
|
127
|
-
// skip if changing angle is too small to prevent vibration of bone
|
|
128
|
-
if ( angle < 1e-5 ) continue;
|
|
129
|
-
if ( ik.minAngle !== undefined && angle < ik.minAngle ) {
|
|
130
|
-
|
|
131
|
-
angle = ik.minAngle;
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if ( ik.maxAngle !== undefined && angle > ik.maxAngle ) {
|
|
136
|
-
|
|
137
|
-
angle = ik.maxAngle;
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
_axis.crossVectors( _effectorVec, _targetVec );
|
|
142
|
-
_axis.normalize();
|
|
143
|
-
_q.setFromAxisAngle( _axis, angle );
|
|
144
|
-
link.quaternion.multiply( _q );
|
|
145
|
-
|
|
146
|
-
// TODO: re-consider the limitation specification
|
|
147
|
-
if ( limitation !== undefined ) {
|
|
148
|
-
|
|
149
|
-
let c = link.quaternion.w;
|
|
150
|
-
if ( c > 1.0 ) c = 1.0;
|
|
151
|
-
const c2 = math.sqrt( 1 - c * c );
|
|
152
|
-
link.quaternion.set( limitation.x * c2, limitation.y * c2, limitation.z * c2, c );
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if ( rotationMin !== undefined ) {
|
|
157
|
-
|
|
158
|
-
link.rotation.setFromVector3( _vector.setFromEuler( link.rotation ).max( rotationMin ) );
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if ( rotationMax !== undefined ) {
|
|
163
|
-
|
|
164
|
-
link.rotation.setFromVector3( _vector.setFromEuler( link.rotation ).min( rotationMax ) );
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
link.updateMatrixWorld( true );
|
|
169
|
-
rotated = true;
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if ( ! rotated ) break;
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return this;
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Creates Helper
|
|
183
|
-
*
|
|
184
|
-
* @return {CCDIKHelper}
|
|
185
|
-
*/
|
|
186
|
-
createHelper() {
|
|
187
|
-
|
|
188
|
-
return new CCDIKHelper( this.mesh, this.mesh.geometry.userData.MMD.iks );
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// private methods
|
|
193
|
-
|
|
194
|
-
_valid() {
|
|
195
|
-
|
|
196
|
-
const iks = this.iks;
|
|
197
|
-
const bones = this.mesh.skeleton.bones;
|
|
198
|
-
for ( let i = 0, il = iks.length; i < il; i ++ ) {
|
|
199
|
-
|
|
200
|
-
const ik = iks[ i ];
|
|
201
|
-
const effector = bones[ ik.effector ];
|
|
202
|
-
const links = ik.links;
|
|
203
|
-
let link0, link1;
|
|
204
|
-
link0 = effector;
|
|
205
|
-
for ( let j = 0, jl = links.length; j < jl; j ++ ) {
|
|
206
|
-
|
|
207
|
-
link1 = bones[ links[ j ].index ];
|
|
208
|
-
if ( link0.parent !== link1 ) {
|
|
209
|
-
|
|
210
|
-
console.warn( 'THREE.CCDIKSolver: bone ' + link0.name + ' is not the child of bone ' + link1.name );
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
link0 = link1;
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
function getPosition( bone, matrixWorldInv ) {
|
|
224
|
-
|
|
225
|
-
return _vector.setFromMatrixPosition( bone.matrixWorld ).applyMatrix4( matrixWorldInv );
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv ) {
|
|
230
|
-
|
|
231
|
-
const v = getPosition( bone, matrixWorldInv );
|
|
232
|
-
array[ index * 3 + 0 ] = v.x;
|
|
233
|
-
array[ index * 3 + 1 ] = v.y;
|
|
234
|
-
array[ index * 3 + 2 ] = v.z;
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Visualize IK bones
|
|
240
|
-
*
|
|
241
|
-
* @param {SkinnedMesh} mesh
|
|
242
|
-
* @param {Array<Object>} iks
|
|
243
|
-
*/
|
|
244
|
-
class CCDIKHelper extends THREE.Object3D {
|
|
245
|
-
|
|
246
|
-
constructor( mesh, iks = [], sphereSize = 0.25 ) {
|
|
247
|
-
|
|
248
|
-
super();
|
|
249
|
-
this.root = mesh;
|
|
250
|
-
this.iks = iks;
|
|
251
|
-
this.matrix.copy( mesh.matrixWorld );
|
|
252
|
-
this.matrixAutoUpdate = false;
|
|
253
|
-
this.sphereGeometry = new THREE.SphereGeometry( sphereSize, 16, 8 );
|
|
254
|
-
this.targetSphereMaterial = new THREE.MeshBasicMaterial( {
|
|
255
|
-
color: new THREE.Color( 0xff8888 ),
|
|
256
|
-
depthTest: false,
|
|
257
|
-
depthWrite: false,
|
|
258
|
-
transparent: true
|
|
259
|
-
} );
|
|
260
|
-
this.effectorSphereMaterial = new THREE.MeshBasicMaterial( {
|
|
261
|
-
color: new THREE.Color( 0x88ff88 ),
|
|
262
|
-
depthTest: false,
|
|
263
|
-
depthWrite: false,
|
|
264
|
-
transparent: true
|
|
265
|
-
} );
|
|
266
|
-
this.linkSphereMaterial = new THREE.MeshBasicMaterial( {
|
|
267
|
-
color: new THREE.Color( 0x8888ff ),
|
|
268
|
-
depthTest: false,
|
|
269
|
-
depthWrite: false,
|
|
270
|
-
transparent: true
|
|
271
|
-
} );
|
|
272
|
-
this.lineMaterial = new THREE.LineBasicMaterial( {
|
|
273
|
-
color: new THREE.Color( 0xff0000 ),
|
|
274
|
-
depthTest: false,
|
|
275
|
-
depthWrite: false,
|
|
276
|
-
transparent: true
|
|
277
|
-
} );
|
|
278
|
-
this._init();
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Updates IK bones visualization.
|
|
284
|
-
*/
|
|
285
|
-
updateMatrixWorld( force ) {
|
|
286
|
-
|
|
287
|
-
const mesh = this.root;
|
|
288
|
-
if ( this.visible ) {
|
|
289
|
-
|
|
290
|
-
let offset = 0;
|
|
291
|
-
const iks = this.iks;
|
|
292
|
-
const bones = mesh.skeleton.bones;
|
|
293
|
-
_matrix.copy( mesh.matrixWorld ).invert();
|
|
294
|
-
for ( let i = 0, il = iks.length; i < il; i ++ ) {
|
|
295
|
-
|
|
296
|
-
const ik = iks[ i ];
|
|
297
|
-
const targetBone = bones[ ik.target ];
|
|
298
|
-
const effectorBone = bones[ ik.effector ];
|
|
299
|
-
const targetMesh = this.children[ offset ++ ];
|
|
300
|
-
const effectorMesh = this.children[ offset ++ ];
|
|
301
|
-
targetMesh.position.copy( getPosition( targetBone, _matrix ) );
|
|
302
|
-
effectorMesh.position.copy( getPosition( effectorBone, _matrix ) );
|
|
303
|
-
for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
|
|
304
|
-
|
|
305
|
-
const link = ik.links[ j ];
|
|
306
|
-
const linkBone = bones[ link.index ];
|
|
307
|
-
const linkMesh = this.children[ offset ++ ];
|
|
308
|
-
linkMesh.position.copy( getPosition( linkBone, _matrix ) );
|
|
309
|
-
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
const line = this.children[ offset ++ ];
|
|
313
|
-
const array = line.geometry.attributes.position.array;
|
|
314
|
-
setPositionOfBoneToAttributeArray( array, 0, targetBone, _matrix );
|
|
315
|
-
setPositionOfBoneToAttributeArray( array, 1, effectorBone, _matrix );
|
|
316
|
-
for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
|
|
317
|
-
|
|
318
|
-
const link = ik.links[ j ];
|
|
319
|
-
const linkBone = bones[ link.index ];
|
|
320
|
-
setPositionOfBoneToAttributeArray( array, j + 2, linkBone, _matrix );
|
|
321
|
-
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
line.geometry.attributes.position.needsUpdate = true;
|
|
325
|
-
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
this.matrix.copy( mesh.matrixWorld );
|
|
331
|
-
super.updateMatrixWorld( force );
|
|
332
|
-
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
|
|
337
|
-
*/
|
|
338
|
-
dispose() {
|
|
339
|
-
|
|
340
|
-
this.sphereGeometry.dispose();
|
|
341
|
-
this.targetSphereMaterial.dispose();
|
|
342
|
-
this.effectorSphereMaterial.dispose();
|
|
343
|
-
this.linkSphereMaterial.dispose();
|
|
344
|
-
this.lineMaterial.dispose();
|
|
345
|
-
const children = this.children;
|
|
346
|
-
for ( let i = 0; i < children.length; i ++ ) {
|
|
347
|
-
|
|
348
|
-
const child = children[ i ];
|
|
349
|
-
if ( child.isLine ) child.geometry.dispose();
|
|
350
|
-
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// private method
|
|
356
|
-
|
|
357
|
-
_init() {
|
|
358
|
-
|
|
359
|
-
const scope = this;
|
|
360
|
-
const iks = this.iks;
|
|
361
|
-
function createLineGeometry( ik ) {
|
|
362
|
-
|
|
363
|
-
const geometry = new THREE.BufferGeometry();
|
|
364
|
-
const vertices = new Float32Array( ( 2 + ik.links.length ) * 3 );
|
|
365
|
-
geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
|
|
366
|
-
return geometry;
|
|
367
|
-
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
function createTargetMesh() {
|
|
371
|
-
|
|
372
|
-
return new THREE.Mesh( scope.sphereGeometry, scope.targetSphereMaterial );
|
|
373
|
-
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
function createEffectorMesh() {
|
|
377
|
-
|
|
378
|
-
return new THREE.Mesh( scope.sphereGeometry, scope.effectorSphereMaterial );
|
|
379
|
-
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
function createLinkMesh() {
|
|
383
|
-
|
|
384
|
-
return new THREE.Mesh( scope.sphereGeometry, scope.linkSphereMaterial );
|
|
385
|
-
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
function createLine( ik ) {
|
|
389
|
-
|
|
390
|
-
return new THREE.Line( createLineGeometry( ik ), scope.lineMaterial );
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
for ( let i = 0, il = iks.length; i < il; i ++ ) {
|
|
395
|
-
|
|
396
|
-
const ik = iks[ i ];
|
|
397
|
-
this.add( createTargetMesh() );
|
|
398
|
-
this.add( createEffectorMesh() );
|
|
399
|
-
for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) {
|
|
400
|
-
|
|
401
|
-
this.add( createLinkMesh() );
|
|
402
|
-
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
this.add( createLine( ik ) );
|
|
406
|
-
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
THREE.CCDIKHelper = CCDIKHelper;
|
|
414
|
-
THREE.CCDIKSolver = CCDIKSolver;
|
|
415
|
-
|
|
416
|
-
} )();
|