@anov/3d-ability 0.0.28 → 0.0.29
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/dist/camera/index.d.ts +1 -1
- package/dist/camera/index.js +3 -3
- package/dist/camera/index.js.map +1 -1
- package/dist/common/IconStyle.d.ts +4 -4
- package/dist/common/IconStyle.js +3 -3
- package/dist/common/IconStyle.js.map +1 -1
- package/dist/common/ImageStyle.d.ts +3 -3
- package/dist/common/ImageStyle.js +3 -3
- package/dist/common/ImageStyle.js.map +1 -1
- package/dist/common/LabelStyle.d.ts +5 -5
- package/dist/common/LabelStyle.js +3 -3
- package/dist/common/LabelStyle.js.map +1 -1
- package/dist/common/component.d.ts +3 -2
- package/dist/common/component.js +8 -6
- package/dist/common/component.js.map +1 -1
- package/dist/common/constant.d.ts +9 -3
- package/dist/common/constant.js +5 -4
- package/dist/common/constant.js.map +1 -1
- package/dist/controls/base.js +3 -3
- package/dist/controls/base.js.map +1 -1
- package/dist/controls/src/FirstViewControl.js +3 -3
- package/dist/controls/src/FirstViewControl.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/action/input.js +3 -3
- package/dist/controls/src/ThirdViewControl/action/input.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/index.js +3 -3
- package/dist/controls/src/ThirdViewControl/index.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/player/animation.d.ts +2 -2
- package/dist/controls/src/ThirdViewControl/player/animation.js +4 -4
- package/dist/controls/src/ThirdViewControl/player/animation.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/player/camera.js +3 -3
- package/dist/controls/src/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/player/control.js +3 -3
- package/dist/controls/src/ThirdViewControl/player/control.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/player.js +6 -6
- package/dist/controls/src/ThirdViewControl/player.js.map +1 -1
- package/dist/controls/src/ThirdViewControl/type.d.ts +1 -1
- package/dist/environment/rain.d.ts +1 -1
- package/dist/environment/rain.js.map +1 -1
- package/dist/environment/rainShader/index.js +3 -3
- package/dist/environment/rainShader/index.js.map +1 -1
- package/dist/environment/rainShader/shader.d.ts +2 -2
- package/dist/environment/shaderCloud/cloudMaterial.d.ts +1 -1
- package/dist/environment/shaderCloud/cloudMaterial.js +3 -3
- package/dist/environment/shaderCloud/cloudMaterial.js.map +1 -1
- package/dist/environment/shaderCloud/index.js.map +1 -1
- package/dist/environment/showShader/index.js +3 -3
- package/dist/environment/showShader/index.js.map +1 -1
- package/dist/environment/showShader/shader.d.ts +2 -2
- package/dist/environment/sky/index.js +1 -1
- package/dist/environment/sky/index.js.map +1 -1
- package/dist/environment/skyBox/index.d.ts +1 -1
- package/dist/environment/skyBox/index.js +13 -14
- package/dist/environment/skyBox/index.js.map +1 -1
- package/dist/environment/skyv2/config.d.ts +2 -2
- package/dist/environment/skyv2/config.js.map +1 -1
- package/dist/environment/skyv2/index.js +4 -4
- package/dist/environment/skyv2/index.js.map +1 -1
- package/dist/environment/snow.d.ts +1 -1
- package/dist/environment/snow.js.map +1 -1
- package/dist/environment/sun/index.d.ts +4 -1
- package/dist/environment/sun/index.js.map +1 -1
- package/dist/environment/utils/points.d.ts +1 -1
- package/dist/environment/utils/points.js +3 -3
- package/dist/environment/utils/points.js.map +1 -1
- package/dist/environment/volumetricCloud/cloudMaterial.js.map +1 -1
- package/dist/environment/volumetricCloud/inex.js +3 -3
- package/dist/environment/volumetricCloud/inex.js.map +1 -1
- package/dist/heatmap/index.js +4 -4
- package/dist/heatmap/index.js.map +1 -1
- package/dist/helper/view/index.d.ts +2 -2
- package/dist/helper/view/index.js +4 -5
- package/dist/helper/view/index.js.map +1 -1
- package/dist/helper/view/utils.js +1 -1
- package/dist/helper/view/utils.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/line/curve.d.ts +2 -2
- package/dist/line/curve.js +3 -3
- package/dist/line/curve.js.map +1 -1
- package/dist/line/index.d.ts +16 -0
- package/dist/line/index.js +62 -1
- package/dist/line/index.js.map +1 -1
- package/dist/line/round-curve.d.ts +1 -1
- package/dist/line/round-curve.js +5 -5
- package/dist/line/round-curve.js.map +1 -1
- package/dist/material/fakeGlowMaterial/index.js +3 -3
- package/dist/material/fakeGlowMaterial/index.js.map +1 -1
- package/dist/material/finirMaterialMaterial/index.d.ts +1 -1
- package/dist/material/finirMaterialMaterial/index.js +3 -3
- package/dist/material/finirMaterialMaterial/index.js.map +1 -1
- package/dist/material/pristineGridMaterial/index.d.ts +1 -1
- package/dist/material/pristineGridMaterial/index.js +3 -3
- package/dist/material/pristineGridMaterial/index.js.map +1 -1
- package/dist/poi/Poi.d.ts +10 -6
- package/dist/poi/Poi.js +52 -35
- package/dist/poi/Poi.js.map +1 -1
- package/dist/poi/{2D → disable/2D}/index.js +5 -6
- package/dist/poi/disable/2D/index.js.map +1 -0
- package/dist/poi/{3D → disable/3D}/index.js +6 -6
- package/dist/poi/disable/3D/index.js.map +1 -0
- package/dist/poi/{3D → disable/3D}/index1.d.ts +3 -3
- package/dist/poi/{3D → disable/3D}/index1.js +7 -6
- package/dist/poi/disable/3D/index1.js.map +1 -0
- package/dist/poi/disable/3D/type.js +6 -0
- package/dist/poi/disable/3D/type.js.map +1 -0
- package/dist/poi/{Base.js → disable/Base.js} +3 -3
- package/dist/poi/disable/Base.js.map +1 -0
- package/dist/poi/{Sprite → disable/Sprite}/index.js +6 -6
- package/dist/poi/disable/Sprite/index.js.map +1 -0
- package/dist/poi/disable/Sprite/index2.js +188 -0
- package/dist/poi/disable/Sprite/index2.js.map +1 -0
- package/dist/poi/disable/utils/canvas.js +68 -0
- package/dist/poi/disable/utils/canvas.js.map +1 -0
- package/dist/poi/{utils → disable/utils}/element.js +5 -6
- package/dist/poi/disable/utils/element.js.map +1 -0
- package/dist/poi/{utils → disable/utils}/type.d.ts +3 -3
- package/dist/poi/{utils → disable/utils}/type.js +3 -3
- package/dist/poi/disable/utils/type.js.map +1 -0
- package/dist/poi/index.d.ts +6 -5
- package/dist/poi/index.js +6 -5
- package/dist/poi/index.js.map +1 -1
- package/dist/poi/plane/index.d.ts +21 -0
- package/dist/poi/plane/index.js +127 -0
- package/dist/poi/plane/index.js.map +1 -0
- package/dist/postEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/postEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/postEffects/bloomPass.d.ts +1 -1
- package/dist/postEffects/bloomPass.js.map +1 -1
- package/dist/postEffects/bloomSelect.d.ts +1 -1
- package/dist/postEffects/bloomSelect.js.map +1 -1
- package/dist/postEffects/colorifyPass.js.map +1 -1
- package/dist/postEffects/index.d.ts +1 -1
- package/dist/postEffects/index.js.map +1 -1
- package/dist/postEffects/outlinePass.d.ts +1 -1
- package/dist/postEffects/outlinePass.js +5 -5
- package/dist/postEffects/outlinePass.js.map +1 -1
- package/dist/postEffects/postprocessing.js.map +1 -1
- package/dist/postEffects/saoPass.js.map +1 -1
- package/dist/postEffects/shader/colorify.d.ts +1 -1
- package/dist/postEffects/shader/gammaCorrectionShader.d.ts +1 -1
- package/dist/postEffects/shader/mapping.d.ts +1 -1
- package/dist/postEffects/shader/thermalMaging.d.ts +1 -1
- package/dist/scene/grow/grow.js +3 -4
- package/dist/scene/grow/grow.js.map +1 -1
- package/dist/scene/grow/style_down.js +3 -3
- package/dist/scene/grow/style_down.js.map +1 -1
- package/dist/scene/grow/style_up.js +3 -3
- package/dist/scene/grow/style_up.js.map +1 -1
- package/dist/scene/grow/type.js +5 -5
- package/dist/scene/grow/type.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/weather/index.js +12 -11
- package/dist/weather/index.js.map +1 -1
- package/dist/weather/objects/CloudMesh.js +5 -5
- package/dist/weather/objects/CloudMesh.js.map +1 -1
- package/dist/weather/objects/Fog2DMesh.js +5 -5
- package/dist/weather/objects/Fog2DMesh.js.map +1 -1
- package/dist/weather/objects/RainMesh.js +5 -5
- package/dist/weather/objects/RainMesh.js.map +1 -1
- package/dist/weather/objects/SkyMesh.js +3 -3
- package/dist/weather/objects/SkyMesh.js.map +1 -1
- package/dist/weather/objects/SnowMesh.js +4 -4
- package/dist/weather/objects/SnowMesh.js.map +1 -1
- package/dist/weather/shaders/RainPlane.d.ts +2 -2
- package/dist/weather/shaders/cloud.d.ts +2 -2
- package/dist/weather/shaders/snow.d.ts +2 -2
- package/dist/weather/utils/constant.d.ts +1 -1
- package/dist/weather/utils/constant.js +9 -10
- package/dist/weather/utils/constant.js.map +1 -1
- package/dist/widget/icon.js +3 -3
- package/dist/widget/icon.js.map +1 -1
- package/dist/widget/image.js +3 -3
- package/dist/widget/image.js.map +1 -1
- package/dist/widget/label.js +5 -5
- package/dist/widget/label.js.map +1 -1
- package/package.json +2 -3
- package/dist/poi/2D/index.js.map +0 -1
- package/dist/poi/3D/index.js.map +0 -1
- package/dist/poi/3D/index1.js.map +0 -1
- package/dist/poi/3D/type.js +0 -6
- package/dist/poi/3D/type.js.map +0 -1
- package/dist/poi/Base.js.map +0 -1
- package/dist/poi/Sprite/index.js.map +0 -1
- package/dist/poi/Sprite/index2.js +0 -184
- package/dist/poi/Sprite/index2.js.map +0 -1
- package/dist/poi/utils/canvas.js +0 -68
- package/dist/poi/utils/canvas.js.map +0 -1
- package/dist/poi/utils/element.js.map +0 -1
- package/dist/poi/utils/type.js.map +0 -1
- /package/dist/poi/{2D → disable/2D}/index.d.ts +0 -0
- /package/dist/poi/{3D → disable/3D}/index.d.ts +0 -0
- /package/dist/poi/{3D → disable/3D}/type.d.ts +0 -0
- /package/dist/poi/{Base.d.ts → disable/Base.d.ts} +0 -0
- /package/dist/poi/{Sprite → disable/Sprite}/index.d.ts +0 -0
- /package/dist/poi/{Sprite → disable/Sprite}/index2.d.ts +0 -0
- /package/dist/poi/{utils → disable/utils}/canvas.d.ts +0 -0
- /package/dist/poi/{utils → disable/utils}/element.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BackSide","Color","Data3DTexture","GLSL3","LinearFilter","RawShaderMaterial","RedFormat","Vector3","lib","size","data","Uint8Array","i","scale","perlin","ImprovedNoise","vector","z","y","x","d","set","subScalar","divideScalar","length","noise","texture","format","minFilter","magFilter","unpackAlignment","needsUpdate","vertexShader","fragmentShader","cloudMaterial","glslVersion","uniforms","base","value","map","cameraPos","threshold","opacity","range","steps","frame","side","transparent"],"sources":["../../../src/environment/volumetricCloud/cloudMaterial.ts"],"sourcesContent":["import { BackSide, Color, Data3DTexture, GLSL3, LinearFilter, RawShaderMaterial, RedFormat, Vector3, lib } from '@anov/3d-core'\n\nconst size = 128\nconst data = new Uint8Array(size * size * size)\n\nlet i = 0\nconst scale = 0.05\nconst perlin = new lib.ImprovedNoise()\nconst vector = new Vector3()\n\nfor (let z = 0; z < size; z++) {\n for (let y = 0; y < size; y++) {\n for (let x = 0; x < size; x++) {\n const d = 1.0 - vector.set(x, y, z).subScalar(size / 2).divideScalar(size).length()\n data[i] = (128 + 128 * perlin.noise(x * scale / 1.5, y * scale, z * scale / 1.5)) * d * d\n i++\n }\n }\n}\n\nconst texture = new Data3DTexture(data, size, size, size)\ntexture.format = RedFormat\ntexture.minFilter = LinearFilter\ntexture.magFilter = LinearFilter\ntexture.unpackAlignment = 1\ntexture.needsUpdate = true\n\n// Material\nconst vertexShader = /* glsl */`\nin vec3 position;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPos;\nout vec3 vOrigin;\nout vec3 vDirection;\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n vOrigin = vec3(inverse(modelMatrix) * vec4(cameraPos, 1.0)).xyz;\n vDirection = position - vOrigin;\n gl_Position = projectionMatrix * mvPosition;\n}\n`\n\nconst fragmentShader = /* glsl */`\n\n\nprecision highp float;\nprecision highp sampler3D;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\nout vec4 color;\n\nuniform vec3 base;\nuniform sampler3D map;\n\nuniform float threshold;\nuniform float range;\nuniform float opacity;\nuniform float steps;\nuniform float frame;\n\nuint wang_hash(uint seed) {\n seed = (seed ^ 61u) ^ (seed >> 16u);\n seed *= 9u;\n seed = seed ^ (seed >> 4u);\n seed *= 0x27d4eb2du;\n seed = seed ^ (seed >> 15u);\n return seed;\n}\n\nfloat randomFloat(inout uint seed) {\n return float(wang_hash(seed)) / 4294967296.;\n}\n\nvec2 hitBox(vec3 orig, vec3 dir) {\n const vec3 box_min = vec3(-0.5);\n const vec3 box_max = vec3(0.5);\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = (box_min - orig) * inv_dir;\n vec3 tmax_tmp = (box_max - orig) * inv_dir;\n vec3 tmin = min(tmin_tmp, tmax_tmp);\n vec3 tmax = max(tmin_tmp, tmax_tmp);\n float t0 = max(tmin.x, max(tmin.y, tmin.z));\n float t1 = min(tmax.x, min(tmax.y, tmax.z));\n return vec2(t0, t1);\n}\n\nfloat sample1(vec3 p) {\n return texture(map, p).r;\n}\n\nfloat shading(vec3 coord) {\n float step = 0.01;\n return sample1(coord + vec3(-step)) - sample1(coord + vec3(step));\n}\n\nvec4 linearToSRGB(in vec4 value) {\n return vec4(mix(pow(value.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), value.rgb * 12.92, vec3(lessThanEqual(value.rgb, vec3(0.0031308)))), value.a);\n}\n\nvoid main() {\n vec3 rayDir = normalize(vDirection);\n vec2 bounds = hitBox(vOrigin, rayDir);\n\n if(bounds.x > bounds.y)\n discard;\n\n bounds.x = max(bounds.x, 0.0);\n\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs(rayDir);\n float delta = min(inc.x, min(inc.y, inc.z));\n delta /= steps;\n\n// Jitter\n// Nice little seed from\n// https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\n uint seed = uint(gl_FragCoord.x) * uint(1973) + uint(gl_FragCoord.y) * uint(9277) + uint(frame) * uint(26699);\n vec3 size = vec3(textureSize(map, 0));\n float randNum = randomFloat(seed) * 2.0 - 1.0;\n p += rayDir * randNum * (1.0 / size);\n\n vec4 ac = vec4(base, 0.0);\n\n for(float t = bounds.x; t < bounds.y; t += delta) {\n\n float d = sample1(p + 0.5);\n\n d = smoothstep(threshold - range, threshold + range, d) * opacity;\n\n float col = shading(p + 0.5) * 3.0 + ((p.x + p.y) * 0.25) + 0.2;\n\n ac.rgb += (1.0 - ac.a) * d * col;\n\n ac.a += (1.0 - ac.a) * d;\n\n if(ac.a >= 0.95)\n break;\n\n p += rayDir * delta;\n\n }\n\n color = linearToSRGB(ac);\n\n if(color.a == 0.0)\n discard;\n\n}\n\n`\n\nconst cloudMaterial = new RawShaderMaterial({\n glslVersion: GLSL3,\n uniforms: {\n base: { value: new Color(0x798AA0) },\n map: { value: texture },\n cameraPos: { value: new Vector3() },\n threshold: { value: 0.25 },\n opacity: { value: 0.25 },\n range: { value: 0.1 },\n steps: { value: 100 },\n frame: { value: 0 },\n },\n vertexShader,\n fragmentShader,\n side: BackSide,\n transparent: true,\n})\n\nexport default cloudMaterial"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,KAAK,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,SAAS,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AAE/H,IAAMC,IAAI,GAAG,GAAG;AAChB,IAAMC,IAAI,GAAG,IAAIC,UAAU,CAACF,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC;AAE/C,IAAIG,CAAC,GAAG,CAAC;AACT,IAAMC,KAAK,GAAG,IAAI;AAClB,IAAMC,MAAM,GAAG,IAAIN,GAAG,CAACO,aAAa,
|
|
1
|
+
{"version":3,"names":["BackSide","Color","Data3DTexture","GLSL3","LinearFilter","RawShaderMaterial","RedFormat","Vector3","lib","size","data","Uint8Array","i","scale","perlin","ImprovedNoise","vector","z","y","x","d","set","subScalar","divideScalar","length","noise","texture","format","minFilter","magFilter","unpackAlignment","needsUpdate","vertexShader","fragmentShader","cloudMaterial","glslVersion","uniforms","base","value","map","cameraPos","threshold","opacity","range","steps","frame","side","transparent"],"sources":["../../../src/environment/volumetricCloud/cloudMaterial.ts"],"sourcesContent":["import { BackSide, Color, Data3DTexture, GLSL3, LinearFilter, RawShaderMaterial, RedFormat, Vector3, lib } from '@anov/3d-core'\n\nconst size = 128\nconst data = new Uint8Array(size * size * size)\n\nlet i = 0\nconst scale = 0.05\nconst perlin = new lib.ImprovedNoise()\nconst vector = new Vector3()\n\nfor (let z = 0; z < size; z++) {\n for (let y = 0; y < size; y++) {\n for (let x = 0; x < size; x++) {\n const d = 1.0 - vector.set(x, y, z).subScalar(size / 2).divideScalar(size).length()\n data[i] = (128 + 128 * perlin.noise(x * scale / 1.5, y * scale, z * scale / 1.5)) * d * d\n i++\n }\n }\n}\n\nconst texture = new Data3DTexture(data, size, size, size)\ntexture.format = RedFormat\ntexture.minFilter = LinearFilter\ntexture.magFilter = LinearFilter\ntexture.unpackAlignment = 1\ntexture.needsUpdate = true\n\n// Material\nconst vertexShader = /* glsl */`\nin vec3 position;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPos;\nout vec3 vOrigin;\nout vec3 vDirection;\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n vOrigin = vec3(inverse(modelMatrix) * vec4(cameraPos, 1.0)).xyz;\n vDirection = position - vOrigin;\n gl_Position = projectionMatrix * mvPosition;\n}\n`\n\nconst fragmentShader = /* glsl */`\n\n\nprecision highp float;\nprecision highp sampler3D;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\nout vec4 color;\n\nuniform vec3 base;\nuniform sampler3D map;\n\nuniform float threshold;\nuniform float range;\nuniform float opacity;\nuniform float steps;\nuniform float frame;\n\nuint wang_hash(uint seed) {\n seed = (seed ^ 61u) ^ (seed >> 16u);\n seed *= 9u;\n seed = seed ^ (seed >> 4u);\n seed *= 0x27d4eb2du;\n seed = seed ^ (seed >> 15u);\n return seed;\n}\n\nfloat randomFloat(inout uint seed) {\n return float(wang_hash(seed)) / 4294967296.;\n}\n\nvec2 hitBox(vec3 orig, vec3 dir) {\n const vec3 box_min = vec3(-0.5);\n const vec3 box_max = vec3(0.5);\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = (box_min - orig) * inv_dir;\n vec3 tmax_tmp = (box_max - orig) * inv_dir;\n vec3 tmin = min(tmin_tmp, tmax_tmp);\n vec3 tmax = max(tmin_tmp, tmax_tmp);\n float t0 = max(tmin.x, max(tmin.y, tmin.z));\n float t1 = min(tmax.x, min(tmax.y, tmax.z));\n return vec2(t0, t1);\n}\n\nfloat sample1(vec3 p) {\n return texture(map, p).r;\n}\n\nfloat shading(vec3 coord) {\n float step = 0.01;\n return sample1(coord + vec3(-step)) - sample1(coord + vec3(step));\n}\n\nvec4 linearToSRGB(in vec4 value) {\n return vec4(mix(pow(value.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), value.rgb * 12.92, vec3(lessThanEqual(value.rgb, vec3(0.0031308)))), value.a);\n}\n\nvoid main() {\n vec3 rayDir = normalize(vDirection);\n vec2 bounds = hitBox(vOrigin, rayDir);\n\n if(bounds.x > bounds.y)\n discard;\n\n bounds.x = max(bounds.x, 0.0);\n\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs(rayDir);\n float delta = min(inc.x, min(inc.y, inc.z));\n delta /= steps;\n\n// Jitter\n// Nice little seed from\n// https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\n uint seed = uint(gl_FragCoord.x) * uint(1973) + uint(gl_FragCoord.y) * uint(9277) + uint(frame) * uint(26699);\n vec3 size = vec3(textureSize(map, 0));\n float randNum = randomFloat(seed) * 2.0 - 1.0;\n p += rayDir * randNum * (1.0 / size);\n\n vec4 ac = vec4(base, 0.0);\n\n for(float t = bounds.x; t < bounds.y; t += delta) {\n\n float d = sample1(p + 0.5);\n\n d = smoothstep(threshold - range, threshold + range, d) * opacity;\n\n float col = shading(p + 0.5) * 3.0 + ((p.x + p.y) * 0.25) + 0.2;\n\n ac.rgb += (1.0 - ac.a) * d * col;\n\n ac.a += (1.0 - ac.a) * d;\n\n if(ac.a >= 0.95)\n break;\n\n p += rayDir * delta;\n\n }\n\n color = linearToSRGB(ac);\n\n if(color.a == 0.0)\n discard;\n\n}\n\n`\n\nconst cloudMaterial = new RawShaderMaterial({\n glslVersion: GLSL3,\n uniforms: {\n base: { value: new Color(0x798AA0) },\n map: { value: texture },\n cameraPos: { value: new Vector3() },\n threshold: { value: 0.25 },\n opacity: { value: 0.25 },\n range: { value: 0.1 },\n steps: { value: 100 },\n frame: { value: 0 },\n },\n vertexShader,\n fragmentShader,\n side: BackSide,\n transparent: true,\n})\n\nexport default cloudMaterial"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,KAAK,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,SAAS,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AAE/H,IAAMC,IAAI,GAAG,GAAG;AAChB,IAAMC,IAAI,GAAG,IAAIC,UAAU,CAACF,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC;AAE/C,IAAIG,CAAC,GAAG,CAAC;AACT,IAAMC,KAAK,GAAG,IAAI;AAClB,IAAMC,MAAM,GAAG,IAAIN,GAAG,CAACO,aAAa,CAAC,CAAC;AACtC,IAAMC,MAAM,GAAG,IAAIT,OAAO,CAAC,CAAC;AAE5B,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,IAAI,EAAEQ,CAAC,EAAE,EAAE;EAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,IAAI,EAAES,CAAC,EAAE,EAAE;IAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,IAAI,EAAEU,CAAC,EAAE,EAAE;MAC7B,IAAMC,CAAC,GAAG,GAAG,GAAGJ,MAAM,CAACK,GAAG,CAACF,CAAC,EAAED,CAAC,EAAED,CAAC,CAAC,CAACK,SAAS,CAACb,IAAI,GAAG,CAAC,CAAC,CAACc,YAAY,CAACd,IAAI,CAAC,CAACe,MAAM,CAAC,CAAC;MACnFd,IAAI,CAACE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAGE,MAAM,CAACW,KAAK,CAACN,CAAC,GAAGN,KAAK,GAAG,GAAG,EAAEK,CAAC,GAAGL,KAAK,EAAEI,CAAC,GAAGJ,KAAK,GAAG,GAAG,CAAC,IAAIO,CAAC,GAAGA,CAAC;MACzFR,CAAC,EAAE;IACL;EACF;AACF;AAEA,IAAMc,OAAO,GAAG,IAAIxB,aAAa,CAACQ,IAAI,EAAED,IAAI,EAAEA,IAAI,EAAEA,IAAI,CAAC;AACzDiB,OAAO,CAACC,MAAM,GAAGrB,SAAS;AAC1BoB,OAAO,CAACE,SAAS,GAAGxB,YAAY;AAChCsB,OAAO,CAACG,SAAS,GAAGzB,YAAY;AAChCsB,OAAO,CAACI,eAAe,GAAG,CAAC;AAC3BJ,OAAO,CAACK,WAAW,GAAG,IAAI;;AAE1B;AACA,IAAMC,YAAY,GAAG,6aAepB;AAED,IAAMC,cAAc,GAAG,utFAgHtB;AAED,IAAMC,aAAa,GAAG,IAAI7B,iBAAiB,CAAC;EAC1C8B,WAAW,EAAEhC,KAAK;EAClBiC,QAAQ,EAAE;IACRC,IAAI,EAAE;MAAEC,KAAK,EAAE,IAAIrC,KAAK,CAAC,QAAQ;IAAE,CAAC;IACpCsC,GAAG,EAAE;MAAED,KAAK,EAAEZ;IAAQ,CAAC;IACvBc,SAAS,EAAE;MAAEF,KAAK,EAAE,IAAI/B,OAAO,CAAC;IAAE,CAAC;IACnCkC,SAAS,EAAE;MAAEH,KAAK,EAAE;IAAK,CAAC;IAC1BI,OAAO,EAAE;MAAEJ,KAAK,EAAE;IAAK,CAAC;IACxBK,KAAK,EAAE;MAAEL,KAAK,EAAE;IAAI,CAAC;IACrBM,KAAK,EAAE;MAAEN,KAAK,EAAE;IAAI,CAAC;IACrBO,KAAK,EAAE;MAAEP,KAAK,EAAE;IAAE;EACpB,CAAC;EACDN,YAAY,EAAZA,YAAY;EACZC,cAAc,EAAdA,cAAc;EACda,IAAI,EAAE9C,QAAQ;EACd+C,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,eAAeb,aAAa"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function _typeof(
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
3
3
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
4
4
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
function _toPropertyKey(
|
|
7
|
-
function _toPrimitive(
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
8
|
import { BoxGeometry, Mesh, use } from '@anov/3d-core';
|
|
9
9
|
import cloudMaterial from "./cloudMaterial";
|
|
10
10
|
export var VolumetricCloud = /*#__PURE__*/_createClass(function VolumetricCloud() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BoxGeometry","Mesh","use","cloudMaterial","VolumetricCloud","box","cloudGroup","useScene","camera","useframe","createVolumetricCloud","scene","Error","add"],"sources":["../../../src/environment/volumetricCloud/inex.ts"],"sourcesContent":["import { BoxGeometry, BufferGeometryUtils, Mesh, use } from '@anov/3d-core'\nimport cloudMaterial from './cloudMaterial'\n\nexport class VolumetricCloud {\n private geometries: BoxGeometry[] = []\n public cloudGroup: Mesh\n\n constructor() {\n // cloud density\n // for (let i = 0; i < 100; i++) {\n // const cloud = new BoxGeometry(100, 100, 100)\n\n // cloud.translate(Math.random() * 1000 - 500, -Math.random() * Math.random() * 200 - 15, i)\n // // cloud.rotateZ(Math.random() * Math.PI / 2)\n // cloud.scale(Math.random() * Math.random() * 1.1 + 0.5, Math.random() * Math.random() * 1.1 + 0.5, 1)\n // this.geometries.push(cloud)\n // }\n\n const box = new BoxGeometry(100, 100, 100)\n // const mergedGeometry = BufferGeometryUtils.mergeGeometries(this.geometries, false)\n this.cloudGroup = new Mesh(box, cloudMaterial)\n\n const { camera } = use.useScene()\n\n use.useframe(() => {\n // @ts-ignore\n // this.cloudGroup.material.uniforms.cameraPos.value.copy(camera!.position)\n })\n }\n}\n\nconst createVolumetricCloud = () => {\n const { scene } = use.useScene()\n const cloudGroup = new VolumetricCloud().cloudGroup\n\n if (!scene)\n throw new Error('scene is not defined')\n\n scene.add(cloudGroup)\n\n return cloudGroup\n}\n\nexport default createVolumetricCloud"],"mappings":";;;;;;;AAAA,SAASA,WAAW,EAAuBC,IAAI,EAAEC,GAAG,QAAQ,eAAe;AAC3E,OAAOC,aAAa;AAEpB,WAAaC,eAAe,
|
|
1
|
+
{"version":3,"names":["BoxGeometry","Mesh","use","cloudMaterial","VolumetricCloud","_createClass","_classCallCheck","_defineProperty","box","cloudGroup","_use$useScene","useScene","camera","useframe","createVolumetricCloud","_use$useScene2","scene","Error","add"],"sources":["../../../src/environment/volumetricCloud/inex.ts"],"sourcesContent":["import { BoxGeometry, BufferGeometryUtils, Mesh, use } from '@anov/3d-core'\nimport cloudMaterial from './cloudMaterial'\n\nexport class VolumetricCloud {\n private geometries: BoxGeometry[] = []\n public cloudGroup: Mesh\n\n constructor() {\n // cloud density\n // for (let i = 0; i < 100; i++) {\n // const cloud = new BoxGeometry(100, 100, 100)\n\n // cloud.translate(Math.random() * 1000 - 500, -Math.random() * Math.random() * 200 - 15, i)\n // // cloud.rotateZ(Math.random() * Math.PI / 2)\n // cloud.scale(Math.random() * Math.random() * 1.1 + 0.5, Math.random() * Math.random() * 1.1 + 0.5, 1)\n // this.geometries.push(cloud)\n // }\n\n const box = new BoxGeometry(100, 100, 100)\n // const mergedGeometry = BufferGeometryUtils.mergeGeometries(this.geometries, false)\n this.cloudGroup = new Mesh(box, cloudMaterial)\n\n const { camera } = use.useScene()\n\n use.useframe(() => {\n // @ts-ignore\n // this.cloudGroup.material.uniforms.cameraPos.value.copy(camera!.position)\n })\n }\n}\n\nconst createVolumetricCloud = () => {\n const { scene } = use.useScene()\n const cloudGroup = new VolumetricCloud().cloudGroup\n\n if (!scene)\n throw new Error('scene is not defined')\n\n scene.add(cloudGroup)\n\n return cloudGroup\n}\n\nexport default createVolumetricCloud"],"mappings":";;;;;;;AAAA,SAASA,WAAW,EAAuBC,IAAI,EAAEC,GAAG,QAAQ,eAAe;AAC3E,OAAOC,aAAa;AAEpB,WAAaC,eAAe,gBAAAC,YAAA,CAI1B,SAAAD,gBAAA,EAAc;EAAAE,eAAA,OAAAF,eAAA;EAAAG,eAAA,qBAHsB,EAAE;EAAAA,eAAA;EAIpC;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA,IAAMC,GAAG,GAAG,IAAIR,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1C;EACA,IAAI,CAACS,UAAU,GAAG,IAAIR,IAAI,CAACO,GAAG,EAAEL,aAAa,CAAC;EAE9C,IAAAO,aAAA,GAAmBR,GAAG,CAACS,QAAQ,CAAC,CAAC;IAAzBC,MAAM,GAAAF,aAAA,CAANE,MAAM;EAEdV,GAAG,CAACW,QAAQ,CAAC,YAAM;IACjB;IACA;EAAA,CACD,CAAC;AACJ,CAAC;AAGH,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAA,EAAS;EAClC,IAAAC,cAAA,GAAkBb,GAAG,CAACS,QAAQ,CAAC,CAAC;IAAxBK,KAAK,GAAAD,cAAA,CAALC,KAAK;EACb,IAAMP,UAAU,GAAG,IAAIL,eAAe,CAAC,CAAC,CAACK,UAAU;EAEnD,IAAI,CAACO,KAAK,EACR,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EAEzCD,KAAK,CAACE,GAAG,CAACT,UAAU,CAAC;EAErB,OAAOA,UAAU;AACnB,CAAC;AAED,eAAeK,qBAAqB"}
|
package/dist/heatmap/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
function _typeof(
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
3
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
-
function _toPropertyKey(
|
|
6
|
-
function _toPrimitive(
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
7
|
import { Color, DoubleSide, Mesh, PlaneGeometry, ShaderMaterial, Texture, use } from '@anov/3d-core';
|
|
8
8
|
|
|
9
9
|
// @ts-ignore
|
|
@@ -29,7 +29,7 @@ var HeatMap = /*#__PURE__*/function () {
|
|
|
29
29
|
console.log('camera:', camera === null || camera === void 0 ? void 0 : camera.position);
|
|
30
30
|
|
|
31
31
|
// 添加到场景
|
|
32
|
-
scene === null || scene === void 0
|
|
32
|
+
scene === null || scene === void 0 || scene.add(mesh);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
// 热力图
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","DoubleSide","Mesh","PlaneGeometry","ShaderMaterial","Texture","use","heatMap","TemperatureColorStops","HeatMap","mesh","addHeatMap","useScene","scene","camera","console","log","position","add","heatmap","
|
|
1
|
+
{"version":3,"names":["Color","DoubleSide","Mesh","PlaneGeometry","ShaderMaterial","Texture","use","heatMap","TemperatureColorStops","HeatMap","_classCallCheck","_createClass","key","value","create","mesh","addHeatMap","_use$useScene","useScene","scene","camera","console","log","position","add","heatmap","container","createDom","gradient","len","width","window","innerWidth","height","innerHeight","points","max","val","Math","floor","random","point","x","y","push","setData","data","greymap","heatMapMaterial","transparent","vertexShader","fragmentShader","uniforms","undefined","greyMap","Zscale","u_color","u_opacity","side","texture","_renderer","canvas","needsUpdate","greyTexture","heatMapGeometry","heatMapPlane","rotation","set","PI","document","createElement","body","appendChild","_delete","update"],"sources":["../../src/heatmap/index.ts"],"sourcesContent":["import {\n Color,\n DoubleSide,\n Mesh,\n PlaneGeometry,\n ShaderMaterial,\n Texture,\n use,\n} from '@anov/3d-core'\n\n// @ts-ignore\nimport heatMap from 'anov-heat-map'\n\nconst TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n}\n\nclass HeatMap {\n constructor() {\n\n }\n\n public create() {\n const mesh = this.addHeatMap()\n const { scene, camera } = use.useScene()\n console.log('camera:', camera?.position)\n\n // 添加到场景\n scene?.add(mesh)\n }\n\n // 热力图\n private addHeatMap() {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: TemperatureColorStops,\n })\n let len = 150\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 30)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 1.2 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 1.0,\n },\n },\n })\n heatMapMaterial.side = DoubleSide // 双面渲染\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const heatMapGeometry = new PlaneGeometry(15, 15, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n heatMapPlane.position.set(0, 0, 0) // 3d热力图中心点位置\n\n return heatMapPlane\n }\n\n private createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n\n return canvas\n }\n\n public delete() {}\n\n public update() {\n\n }\n}\n\nexport default HeatMap\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LineSegments, OrbitControls, PerspectiveCamera, Sprite, WebGLRenderer, lib } from '@anov/3d-core';
|
|
2
2
|
import { Mesh, Object3D, OrthographicCamera, Vector3, Vector4 } from '@anov/3d-core';
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
type GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z';
|
|
4
|
+
export type DomPlacement = 'top-left' | 'top-right' | 'top-center' | 'center-right' | 'center-left' | 'center-center' | 'bottom-left' | 'bottom-right' | 'bottom-center';
|
|
5
5
|
declare class ViewHelper extends Object3D {
|
|
6
6
|
camera: OrthographicCamera | PerspectiveCamera;
|
|
7
7
|
orthoCamera: OrthographicCamera;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _typeof(
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
3
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
4
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -14,13 +14,13 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
|
14
14
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
15
15
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
16
16
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
-
function _toPropertyKey(
|
|
18
|
-
function _toPrimitive(
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
19
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
20
20
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
21
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
22
22
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
23
|
-
function _iterableToArrayLimit(
|
|
23
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
24
24
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
25
25
|
import { BackSide, Clock, Euler, Mesh, MeshBasicMaterial, Object3D, OrthographicCamera, Quaternion, Raycaster, SphereGeometry, Vector2, Vector3, Vector4 } from '@anov/3d-core';
|
|
26
26
|
import { getAxesLines, getAxesSpritePoints, getDomContainer } from "./utils";
|
|
@@ -353,7 +353,6 @@ function resetSprites(sprites) {
|
|
|
353
353
|
}
|
|
354
354
|
// sprites.forEach((sprite) => (sprite.material.map!.offset.x = 1));
|
|
355
355
|
}
|
|
356
|
-
|
|
357
356
|
function updateSpritesOpacity(sprites, camera) {
|
|
358
357
|
point.set(0, 0, 1);
|
|
359
358
|
point.applyQuaternion(camera.quaternion);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BackSide","Clock","Euler","Mesh","MeshBasicMaterial","Object3D","OrthographicCamera","Quaternion","Raycaster","SphereGeometry","Vector2","Vector3","Vector4","getAxesLines","getAxesSpritePoints","getDomContainer","Array","fill","map","_","i","POS_X","POS_Y","POS_Z","NEG_X","NEG_Y","NEG_Z","clock","targetPosition","targetQuaternion","euler","q1","q2","point","dim","turnRate","Math","PI","raycaster","mouse","mouseStart","mouseAngle","dummy","radius","ViewHelper","camera","renderer","placement","size","domElement","orthoCamera","position","set","backgroundSphere","getBackgroundSphere","axesLines","spritePoints","domContainer","parentElement","appendChild","domRect","getBoundingClientRect","startListening","controlsChangeEvent","listener","updateOrientation","update","add","onpointerdown","e","onPointerDown","onpointermove","onPointerMove","onpointerleave","onPointerLeave","drag","dragging","isClick","resetSprites","clientX","clientY","sub","multiplyScalar","width","rotation","x","clamp","rotationStart","y","updateMatrixWorld","copy","quaternion","invert","applyQuaternion","target","setFromQuaternion","endDrag","document","removeEventListener","handleClick","animating","preventDefault","setRadius","addEventListener","material","opacity","handleHover","style","cursor","object","getIntersectionObject","setOrientation","userData","type","offset","scale","controls","delta","getDelta","animate","height","autoClear","setViewport","render","viewport","fromCamera","updateSpritesOpacity","offsetHeight","getViewport","step","rotateTowards","angleTo","orientation","prepareAnimationData","geometry","dispose","forEach","sprite","remove","sphere","color","side","transparent","depthTest","focusPoint","axis","setFromEuler","console","error","prepareQuaternions","distanceTo","lookAt","updatePointer","left","top","setFromCamera","startCoords","threshold","abs","event","intersectionObjects","intersects","intersectObjects","length","intersection","sprites","z","num","min","max"],"sources":["../../../src/helper/view/index.ts"],"sourcesContent":["import type {\n Camera,\n LineSegments,\n Material,\n OrbitControls,\n PerspectiveCamera,\n Sprite,\n WebGLRenderer,\n lib,\n} from '@anov/3d-core'\n\nimport {\n BackSide,\n Clock,\n Euler,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n OrthographicCamera,\n Quaternion,\n Raycaster,\n SphereGeometry,\n Vector2,\n Vector3,\n Vector4,\n use,\n} from '@anov/3d-core'\nimport { getAxesLines, getAxesSpritePoints, getDomContainer } from './utils'\n\nconst [POS_X, POS_Y, POS_Z, NEG_X, NEG_Y, NEG_Z] = Array(6)\n .fill(0)\n .map((_, i) => i)\n\nconst clock = new Clock()\nconst targetPosition = new Vector3()\nconst targetQuaternion = new Quaternion()\nconst euler = new Euler()\nconst q1 = new Quaternion()\nconst q2 = new Quaternion()\nconst point = new Vector3()\nconst dim = 128\nconst turnRate = 2 * Math.PI\nconst raycaster = new Raycaster()\nconst mouse = new Vector2()\nconst mouseStart = new Vector2()\nconst mouseAngle = new Vector2()\nconst dummy = new Object3D()\nlet radius = 0\n\ntype GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z'\n\nexport type DomPlacement =\n | 'top-left'\n | 'top-right'\n | 'top-center'\n | 'center-right'\n | 'center-left'\n | 'center-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom-center'\n\nclass ViewHelper extends Object3D {\n camera: OrthographicCamera | PerspectiveCamera\n orthoCamera = new OrthographicCamera(-1.8, 1.8, 1.8, -1.8, 0, 4)\n isViewHelper = true\n animating = false\n target = new Vector3()\n backgroundSphere: Mesh\n axesLines: LineSegments\n spritePoints: Sprite[]\n domElement: HTMLElement\n domContainer: HTMLElement\n domRect: DOMRect\n dragging = false\n renderer: WebGLRenderer\n controls?: OrbitControls | lib.TrackballControls\n controlsChangeEvent: { listener: () => void }\n viewport: Vector4 = new Vector4()\n offsetHeight = 0\n\n constructor(\n camera: PerspectiveCamera | OrthographicCamera,\n renderer: WebGLRenderer,\n placement: DomPlacement = 'bottom-right',\n size = 128,\n ) {\n super()\n\n this.renderer = renderer\n this.camera = camera\n this.domElement = renderer.domElement\n this.orthoCamera.position.set(0, 0, 2)\n\n this.backgroundSphere = getBackgroundSphere()\n this.axesLines = getAxesLines()\n this.spritePoints = getAxesSpritePoints()\n this.domContainer = getDomContainer(placement, size)\n\n // This may cause confusion if the parent isn't the body and doesn't have a `position:relative`\n this.domElement.parentElement!.appendChild(this.domContainer)\n this.domRect = this.domContainer.getBoundingClientRect()\n this.startListening()\n\n this.controlsChangeEvent = { listener: () => this.updateOrientation() }\n this.update()\n this.updateOrientation()\n\n this.add(this.backgroundSphere, this.axesLines, ...this.spritePoints)\n }\n\n startListening() {\n this.domContainer.onpointerdown = e => this.onPointerDown(e)\n this.domContainer.onpointermove = e => this.onPointerMove(e)\n this.domContainer.onpointerleave = () => this.onPointerLeave()\n }\n\n onPointerDown(e: PointerEvent) {\n const drag = (e: PointerEvent) => {\n if (!this.dragging && isClick(e, mouseStart))\n return\n if (!this.dragging) {\n resetSprites(this.spritePoints)\n this.dragging = true\n }\n\n mouseAngle\n .set(e.clientX, e.clientY)\n .sub(mouseStart)\n .multiplyScalar((1 / this.domRect.width) * Math.PI)\n\n this.rotation.x = clamp(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n rotationStart.x + mouseAngle.y,\n Math.PI / -2 + 0.001,\n Math.PI / 2 - 0.001,\n )\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n this.rotation.y = rotationStart.y + mouseAngle.x\n this.updateMatrixWorld()\n\n q1.copy(this.quaternion).invert()\n\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n this.camera.rotation.setFromQuaternion(q1)\n\n this.updateOrientation(false)\n }\n const endDrag = () => {\n document.removeEventListener('pointermove', drag, false)\n document.removeEventListener('pointerup', endDrag, false)\n\n if (!this.dragging) {\n this.handleClick(e)\n return\n }\n\n this.dragging = false\n }\n\n if (this.animating === true)\n return\n e.preventDefault()\n\n mouseStart.set(e.clientX, e.clientY)\n\n const rotationStart = euler.copy(this.rotation)\n\n setRadius(this.camera, this.target)\n\n document.addEventListener('pointermove', drag, false)\n document.addEventListener('pointerup', endDrag, false)\n }\n\n onPointerMove(e: PointerEvent) {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0.2\n this.handleHover(e)\n }\n\n onPointerLeave() {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0\n resetSprites(this.spritePoints)\n this.domContainer.style.cursor = ''\n }\n\n handleClick(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n if (!object)\n return\n\n this.setOrientation(object.userData.type)\n }\n\n handleHover(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n resetSprites(this.spritePoints)\n\n if (!object) {\n this.domContainer.style.cursor = ''\n }\n else {\n object.material.map!.offset.x = 0.5\n object.scale.multiplyScalar(1.2)\n this.domContainer.style.cursor = 'pointer'\n }\n }\n\n setControls(controls?: OrbitControls | lib.TrackballControls) {\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n this.target = new Vector3()\n }\n\n if (!controls)\n return\n\n this.controls = controls\n controls.addEventListener('change', this.controlsChangeEvent.listener)\n this.target = controls.target\n }\n\n render() {\n const delta = clock.getDelta()\n if (this.animating)\n this.animate(delta)\n\n const { width, height } = this.domElement.getBoundingClientRect()\n const autoClear = this.renderer.autoClear\n\n this.renderer.autoClear = false\n this.renderer.setViewport(width - dim, height - dim, dim, dim)\n this.renderer.render(this, this.orthoCamera)\n this.renderer.setViewport(this.viewport)\n this.renderer.autoClear = autoClear\n }\n\n updateOrientation(fromCamera = true) {\n if (fromCamera) {\n this.quaternion.copy(this.camera.quaternion).invert()\n this.updateMatrixWorld()\n }\n\n updateSpritesOpacity(this.spritePoints, this.camera)\n }\n\n update() {\n this.domRect = this.domContainer.getBoundingClientRect()\n this.offsetHeight = this.domElement.offsetHeight\n setRadius(this.camera, this.target)\n this.renderer.getViewport(this.viewport)\n\n this.updateOrientation()\n }\n\n animate(delta: number) {\n const step = delta * turnRate\n\n // animate position by doing a slerp and then scaling the position on the unit sphere\n\n q1.rotateTowards(q2, step)\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n // animate orientation\n\n this.camera.quaternion.rotateTowards(targetQuaternion, step)\n\n this.updateOrientation()\n\n if (q1.angleTo(q2) === 0)\n this.animating = false\n }\n\n setOrientation(orientation: GizmoOrientation) {\n prepareAnimationData(this.camera, this.target, orientation)\n this.animating = true\n }\n\n dispose() {\n this.axesLines.geometry.dispose();\n (this.axesLines.material as Material).dispose()\n\n this.backgroundSphere.geometry.dispose();\n (this.backgroundSphere.material as Material).dispose()\n\n this.spritePoints.forEach((sprite) => {\n sprite.material.map!.dispose()\n sprite.material.dispose()\n })\n\n this.domContainer.remove()\n\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n }\n }\n}\n\nfunction getBackgroundSphere() {\n const geometry = new SphereGeometry(1.6)\n const sphere = new Mesh(\n geometry,\n new MeshBasicMaterial({\n color: 0xFFFFFF,\n side: BackSide,\n transparent: true,\n opacity: 0,\n depthTest: false,\n }),\n )\n\n return sphere\n}\n\nfunction prepareAnimationData(\n camera: OrthographicCamera | PerspectiveCamera,\n focusPoint: Vector3,\n axis: GizmoOrientation,\n) {\n switch (axis) {\n case '+x':\n targetPosition.set(1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI * 0.5, 0))\n break\n\n case '+y':\n targetPosition.set(0, 1, 0)\n targetQuaternion.setFromEuler(new Euler(-Math.PI * 0.5, 0, 0))\n break\n\n case '+z':\n targetPosition.set(0, 0, 1)\n targetQuaternion.setFromEuler(new Euler())\n break\n\n case '-x':\n targetPosition.set(-1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, -Math.PI * 0.5, 0))\n break\n\n case '-y':\n targetPosition.set(0, -1, 0)\n targetQuaternion.setFromEuler(new Euler(Math.PI * 0.5, 0, 0))\n break\n\n case '-z':\n targetPosition.set(0, 0, -1)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI, 0))\n break\n\n default:\n console.error('ViewHelper: Invalid axis.')\n }\n\n setRadius(camera, focusPoint)\n prepareQuaternions(camera, focusPoint)\n}\n\nfunction setRadius(camera: Camera, focusPoint: Vector3) {\n radius = camera.position.distanceTo(focusPoint)\n}\n\nfunction prepareQuaternions(camera: Camera, focusPoint: Vector3) {\n targetPosition.multiplyScalar(radius).add(focusPoint)\n\n dummy.position.copy(focusPoint)\n\n dummy.lookAt(camera.position)\n q1.copy(dummy.quaternion)\n\n dummy.lookAt(targetPosition)\n q2.copy(dummy.quaternion)\n}\n\nfunction updatePointer(\n e: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n) {\n mouse.x = ((e.clientX - domRect.left) / domRect.width) * 2 - 1\n mouse.y = -((e.clientY - domRect.top) / domRect.height) * 2 + 1\n\n raycaster.setFromCamera(mouse, orthoCamera)\n}\n\nfunction isClick(\n e: PointerEvent,\n startCoords: Vector2,\n threshold = 10,\n) {\n return (\n Math.abs(e.clientX - startCoords.x) < threshold\n && Math.abs(e.clientY - startCoords.y) < threshold\n )\n}\n\nfunction getIntersectionObject(\n event: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n intersectionObjects: Sprite[],\n) {\n updatePointer(event, domRect, orthoCamera)\n\n const intersects = raycaster.intersectObjects(intersectionObjects)\n\n if (!intersects.length)\n return null\n\n const intersection = intersects[0]\n return intersection.object as Sprite\n}\n\nfunction resetSprites(sprites: Sprite[]) {\n let i = sprites.length\n\n while (i--) {\n const scale = i < 3 ? 0.6 : 0.4\n sprites[i].scale.set(scale, scale, scale)\n sprites[i].material.map!.offset.x = 1\n }\n // sprites.forEach((sprite) => (sprite.material.map!.offset.x = 1));\n}\n\nfunction updateSpritesOpacity(sprites: Sprite[], camera: Camera) {\n point.set(0, 0, 1)\n point.applyQuaternion(camera.quaternion)\n\n if (point.x >= 0) {\n sprites[POS_X].material.opacity = 1\n sprites[NEG_X].material.opacity = 0.5\n }\n else {\n sprites[POS_X].material.opacity = 0.5\n sprites[NEG_X].material.opacity = 1\n }\n\n if (point.y >= 0) {\n sprites[POS_Y].material.opacity = 1\n sprites[NEG_Y].material.opacity = 0.5\n }\n else {\n sprites[POS_Y].material.opacity = 0.5\n sprites[NEG_Y].material.opacity = 1\n }\n\n if (point.z >= 0) {\n sprites[POS_Z].material.opacity = 1\n sprites[NEG_Z].material.opacity = 0.5\n }\n else {\n sprites[POS_Z].material.opacity = 0.5\n sprites[NEG_Z].material.opacity = 1\n }\n}\n\nfunction clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max)\n}\n\nexport default ViewHelper\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["BackSide","Clock","Euler","Mesh","MeshBasicMaterial","Object3D","OrthographicCamera","Quaternion","Raycaster","SphereGeometry","Vector2","Vector3","Vector4","getAxesLines","getAxesSpritePoints","getDomContainer","_Array$fill$map","Array","fill","map","_","i","_Array$fill$map2","_slicedToArray","POS_X","POS_Y","POS_Z","NEG_X","NEG_Y","NEG_Z","clock","targetPosition","targetQuaternion","euler","q1","q2","point","dim","turnRate","Math","PI","raycaster","mouse","mouseStart","mouseAngle","dummy","radius","ViewHelper","_Object3D","_inherits","_super","_createSuper","camera","renderer","_this2","_this","placement","arguments","length","undefined","size","_classCallCheck","call","_defineProperty","_assertThisInitialized","domElement","orthoCamera","position","set","backgroundSphere","getBackgroundSphere","axesLines","spritePoints","domContainer","parentElement","appendChild","domRect","getBoundingClientRect","startListening","controlsChangeEvent","listener","updateOrientation","update","add","apply","concat","_toConsumableArray","_createClass","key","value","_this3","onpointerdown","e","onPointerDown","onpointermove","onPointerMove","onpointerleave","onPointerLeave","_this4","drag","dragging","isClick","resetSprites","clientX","clientY","sub","multiplyScalar","width","rotation","x","clamp","rotationStart","y","updateMatrixWorld","copy","quaternion","invert","applyQuaternion","target","setFromQuaternion","endDrag","document","removeEventListener","handleClick","animating","preventDefault","setRadius","addEventListener","material","opacity","handleHover","style","cursor","object","getIntersectionObject","setOrientation","userData","type","offset","scale","setControls","controls","render","delta","getDelta","animate","_this$domElement$getB","height","autoClear","setViewport","viewport","fromCamera","updateSpritesOpacity","offsetHeight","getViewport","step","rotateTowards","angleTo","orientation","prepareAnimationData","dispose","geometry","forEach","sprite","remove","sphere","color","side","transparent","depthTest","focusPoint","axis","setFromEuler","console","error","prepareQuaternions","distanceTo","lookAt","updatePointer","left","top","setFromCamera","startCoords","threshold","abs","event","intersectionObjects","intersects","intersectObjects","intersection","sprites","z","num","min","max"],"sources":["../../../src/helper/view/index.ts"],"sourcesContent":["import type {\n Camera,\n LineSegments,\n Material,\n OrbitControls,\n PerspectiveCamera,\n Sprite,\n WebGLRenderer,\n lib,\n} from '@anov/3d-core'\n\nimport {\n BackSide,\n Clock,\n Euler,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n OrthographicCamera,\n Quaternion,\n Raycaster,\n SphereGeometry,\n Vector2,\n Vector3,\n Vector4,\n use,\n} from '@anov/3d-core'\nimport { getAxesLines, getAxesSpritePoints, getDomContainer } from './utils'\n\nconst [POS_X, POS_Y, POS_Z, NEG_X, NEG_Y, NEG_Z] = Array(6)\n .fill(0)\n .map((_, i) => i)\n\nconst clock = new Clock()\nconst targetPosition = new Vector3()\nconst targetQuaternion = new Quaternion()\nconst euler = new Euler()\nconst q1 = new Quaternion()\nconst q2 = new Quaternion()\nconst point = new Vector3()\nconst dim = 128\nconst turnRate = 2 * Math.PI\nconst raycaster = new Raycaster()\nconst mouse = new Vector2()\nconst mouseStart = new Vector2()\nconst mouseAngle = new Vector2()\nconst dummy = new Object3D()\nlet radius = 0\n\ntype GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z'\n\nexport type DomPlacement =\n | 'top-left'\n | 'top-right'\n | 'top-center'\n | 'center-right'\n | 'center-left'\n | 'center-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom-center'\n\nclass ViewHelper extends Object3D {\n camera: OrthographicCamera | PerspectiveCamera\n orthoCamera = new OrthographicCamera(-1.8, 1.8, 1.8, -1.8, 0, 4)\n isViewHelper = true\n animating = false\n target = new Vector3()\n backgroundSphere: Mesh\n axesLines: LineSegments\n spritePoints: Sprite[]\n domElement: HTMLElement\n domContainer: HTMLElement\n domRect: DOMRect\n dragging = false\n renderer: WebGLRenderer\n controls?: OrbitControls | lib.TrackballControls\n controlsChangeEvent: { listener: () => void }\n viewport: Vector4 = new Vector4()\n offsetHeight = 0\n\n constructor(\n camera: PerspectiveCamera | OrthographicCamera,\n renderer: WebGLRenderer,\n placement: DomPlacement = 'bottom-right',\n size = 128,\n ) {\n super()\n\n this.renderer = renderer\n this.camera = camera\n this.domElement = renderer.domElement\n this.orthoCamera.position.set(0, 0, 2)\n\n this.backgroundSphere = getBackgroundSphere()\n this.axesLines = getAxesLines()\n this.spritePoints = getAxesSpritePoints()\n this.domContainer = getDomContainer(placement, size)\n\n // This may cause confusion if the parent isn't the body and doesn't have a `position:relative`\n this.domElement.parentElement!.appendChild(this.domContainer)\n this.domRect = this.domContainer.getBoundingClientRect()\n this.startListening()\n\n this.controlsChangeEvent = { listener: () => this.updateOrientation() }\n this.update()\n this.updateOrientation()\n\n this.add(this.backgroundSphere, this.axesLines, ...this.spritePoints)\n }\n\n startListening() {\n this.domContainer.onpointerdown = e => this.onPointerDown(e)\n this.domContainer.onpointermove = e => this.onPointerMove(e)\n this.domContainer.onpointerleave = () => this.onPointerLeave()\n }\n\n onPointerDown(e: PointerEvent) {\n const drag = (e: PointerEvent) => {\n if (!this.dragging && isClick(e, mouseStart))\n return\n if (!this.dragging) {\n resetSprites(this.spritePoints)\n this.dragging = true\n }\n\n mouseAngle\n .set(e.clientX, e.clientY)\n .sub(mouseStart)\n .multiplyScalar((1 / this.domRect.width) * Math.PI)\n\n this.rotation.x = clamp(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n rotationStart.x + mouseAngle.y,\n Math.PI / -2 + 0.001,\n Math.PI / 2 - 0.001,\n )\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n this.rotation.y = rotationStart.y + mouseAngle.x\n this.updateMatrixWorld()\n\n q1.copy(this.quaternion).invert()\n\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n this.camera.rotation.setFromQuaternion(q1)\n\n this.updateOrientation(false)\n }\n const endDrag = () => {\n document.removeEventListener('pointermove', drag, false)\n document.removeEventListener('pointerup', endDrag, false)\n\n if (!this.dragging) {\n this.handleClick(e)\n return\n }\n\n this.dragging = false\n }\n\n if (this.animating === true)\n return\n e.preventDefault()\n\n mouseStart.set(e.clientX, e.clientY)\n\n const rotationStart = euler.copy(this.rotation)\n\n setRadius(this.camera, this.target)\n\n document.addEventListener('pointermove', drag, false)\n document.addEventListener('pointerup', endDrag, false)\n }\n\n onPointerMove(e: PointerEvent) {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0.2\n this.handleHover(e)\n }\n\n onPointerLeave() {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0\n resetSprites(this.spritePoints)\n this.domContainer.style.cursor = ''\n }\n\n handleClick(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n if (!object)\n return\n\n this.setOrientation(object.userData.type)\n }\n\n handleHover(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n resetSprites(this.spritePoints)\n\n if (!object) {\n this.domContainer.style.cursor = ''\n }\n else {\n object.material.map!.offset.x = 0.5\n object.scale.multiplyScalar(1.2)\n this.domContainer.style.cursor = 'pointer'\n }\n }\n\n setControls(controls?: OrbitControls | lib.TrackballControls) {\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n this.target = new Vector3()\n }\n\n if (!controls)\n return\n\n this.controls = controls\n controls.addEventListener('change', this.controlsChangeEvent.listener)\n this.target = controls.target\n }\n\n render() {\n const delta = clock.getDelta()\n if (this.animating)\n this.animate(delta)\n\n const { width, height } = this.domElement.getBoundingClientRect()\n const autoClear = this.renderer.autoClear\n\n this.renderer.autoClear = false\n this.renderer.setViewport(width - dim, height - dim, dim, dim)\n this.renderer.render(this, this.orthoCamera)\n this.renderer.setViewport(this.viewport)\n this.renderer.autoClear = autoClear\n }\n\n updateOrientation(fromCamera = true) {\n if (fromCamera) {\n this.quaternion.copy(this.camera.quaternion).invert()\n this.updateMatrixWorld()\n }\n\n updateSpritesOpacity(this.spritePoints, this.camera)\n }\n\n update() {\n this.domRect = this.domContainer.getBoundingClientRect()\n this.offsetHeight = this.domElement.offsetHeight\n setRadius(this.camera, this.target)\n this.renderer.getViewport(this.viewport)\n\n this.updateOrientation()\n }\n\n animate(delta: number) {\n const step = delta * turnRate\n\n // animate position by doing a slerp and then scaling the position on the unit sphere\n\n q1.rotateTowards(q2, step)\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n // animate orientation\n\n this.camera.quaternion.rotateTowards(targetQuaternion, step)\n\n this.updateOrientation()\n\n if (q1.angleTo(q2) === 0)\n this.animating = false\n }\n\n setOrientation(orientation: GizmoOrientation) {\n prepareAnimationData(this.camera, this.target, orientation)\n this.animating = true\n }\n\n dispose() {\n this.axesLines.geometry.dispose();\n (this.axesLines.material as Material).dispose()\n\n this.backgroundSphere.geometry.dispose();\n (this.backgroundSphere.material as Material).dispose()\n\n this.spritePoints.forEach((sprite) => {\n sprite.material.map!.dispose()\n sprite.material.dispose()\n })\n\n this.domContainer.remove()\n\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n }\n }\n}\n\nfunction getBackgroundSphere() {\n const geometry = new SphereGeometry(1.6)\n const sphere = new Mesh(\n geometry,\n new MeshBasicMaterial({\n color: 0xFFFFFF,\n side: BackSide,\n transparent: true,\n opacity: 0,\n depthTest: false,\n }),\n )\n\n return sphere\n}\n\nfunction prepareAnimationData(\n camera: OrthographicCamera | PerspectiveCamera,\n focusPoint: Vector3,\n axis: GizmoOrientation,\n) {\n switch (axis) {\n case '+x':\n targetPosition.set(1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI * 0.5, 0))\n break\n\n case '+y':\n targetPosition.set(0, 1, 0)\n targetQuaternion.setFromEuler(new Euler(-Math.PI * 0.5, 0, 0))\n break\n\n case '+z':\n targetPosition.set(0, 0, 1)\n targetQuaternion.setFromEuler(new Euler())\n break\n\n case '-x':\n targetPosition.set(-1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, -Math.PI * 0.5, 0))\n break\n\n case '-y':\n targetPosition.set(0, -1, 0)\n targetQuaternion.setFromEuler(new Euler(Math.PI * 0.5, 0, 0))\n break\n\n case '-z':\n targetPosition.set(0, 0, -1)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI, 0))\n break\n\n default:\n console.error('ViewHelper: Invalid axis.')\n }\n\n setRadius(camera, focusPoint)\n prepareQuaternions(camera, focusPoint)\n}\n\nfunction setRadius(camera: Camera, focusPoint: Vector3) {\n radius = camera.position.distanceTo(focusPoint)\n}\n\nfunction prepareQuaternions(camera: Camera, focusPoint: Vector3) {\n targetPosition.multiplyScalar(radius).add(focusPoint)\n\n dummy.position.copy(focusPoint)\n\n dummy.lookAt(camera.position)\n q1.copy(dummy.quaternion)\n\n dummy.lookAt(targetPosition)\n q2.copy(dummy.quaternion)\n}\n\nfunction updatePointer(\n e: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n) {\n mouse.x = ((e.clientX - domRect.left) / domRect.width) * 2 - 1\n mouse.y = -((e.clientY - domRect.top) / domRect.height) * 2 + 1\n\n raycaster.setFromCamera(mouse, orthoCamera)\n}\n\nfunction isClick(\n e: PointerEvent,\n startCoords: Vector2,\n threshold = 10,\n) {\n return (\n Math.abs(e.clientX - startCoords.x) < threshold\n && Math.abs(e.clientY - startCoords.y) < threshold\n )\n}\n\nfunction getIntersectionObject(\n event: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n intersectionObjects: Sprite[],\n) {\n updatePointer(event, domRect, orthoCamera)\n\n const intersects = raycaster.intersectObjects(intersectionObjects)\n\n if (!intersects.length)\n return null\n\n const intersection = intersects[0]\n return intersection.object as Sprite\n}\n\nfunction resetSprites(sprites: Sprite[]) {\n let i = sprites.length\n\n while (i--) {\n const scale = i < 3 ? 0.6 : 0.4\n sprites[i].scale.set(scale, scale, scale)\n sprites[i].material.map!.offset.x = 1\n }\n // sprites.forEach((sprite) => (sprite.material.map!.offset.x = 1));\n}\n\nfunction updateSpritesOpacity(sprites: Sprite[], camera: Camera) {\n point.set(0, 0, 1)\n point.applyQuaternion(camera.quaternion)\n\n if (point.x >= 0) {\n sprites[POS_X].material.opacity = 1\n sprites[NEG_X].material.opacity = 0.5\n }\n else {\n sprites[POS_X].material.opacity = 0.5\n sprites[NEG_X].material.opacity = 1\n }\n\n if (point.y >= 0) {\n sprites[POS_Y].material.opacity = 1\n sprites[NEG_Y].material.opacity = 0.5\n }\n else {\n sprites[POS_Y].material.opacity = 0.5\n sprites[NEG_Y].material.opacity = 1\n }\n\n if (point.z >= 0) {\n sprites[POS_Z].material.opacity = 1\n sprites[NEG_Z].material.opacity = 0.5\n }\n else {\n sprites[POS_Z].material.opacity = 0.5\n sprites[NEG_Z].material.opacity = 1\n }\n}\n\nfunction clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max)\n}\n\nexport default ViewHelper\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
2
2
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
3
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
4
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
-
function _iterableToArrayLimit(
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
6
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
7
|
import { BufferAttribute, BufferGeometry, CanvasTexture, Color, LineBasicMaterial, LineSegments, RepeatWrapping, Sprite, SpriteMaterial } from '@anov/3d-core';
|
|
8
8
|
var axesColors = [new Color(0xFF3653), new Color(0x8ADB00), new Color(0x2C8FFF)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BufferAttribute","BufferGeometry","CanvasTexture","Color","LineBasicMaterial","LineSegments","RepeatWrapping","Sprite","SpriteMaterial","axesColors","getDomContainer","placement","size","div","document","createElement","style","height","width","borderRadius","position","split","y","x","transform","left","right","top","bottom","getAxesLines","distance","Array","fill","map","_","i","flat","color","toArray","geometry","setAttribute","Float32Array","linewidth","vertexColors","getSpriteMaterial","text","canvas","context","getContext","beginPath","arc","Math","PI","closePath","fillStyle","getStyle","font","textAlign","fillText","toUpperCase","texture","wrapS","wrapT","repeat","toneMapped","transparent","getAxesSpritePoints","axes","isPositive","sign","axis","sprite","userData","type","scale","setScalar","renderOrder"],"sources":["../../../src/helper/view/utils.ts"],"sourcesContent":["import { BufferAttribute, BufferGeometry, CanvasTexture, Color, LineBasicMaterial, LineSegments, RepeatWrapping, Sprite, SpriteMaterial } from '@anov/3d-core'\nimport type { DomPlacement } from './index'\n\nconst axesColors = [\n new Color(0xFF3653),\n new Color(0x8ADB00),\n new Color(0x2C8FFF),\n]\n\nexport const getDomContainer = (placement: DomPlacement, size: number) => {\n const div = document.createElement('div')\n const style = div.style\n\n style.height = `${size}px`\n style.width = `${size}px`\n style.borderRadius = '100%'\n style.position = 'absolute'\n\n const [y, x] = placement.split('-')\n\n style.transform = ''\n style.left = x === 'left' ? '0' : x === 'center' ? '50%' : ''\n style.right = x === 'right' ? '0' : ''\n style.transform += x === 'center' ? 'translateX(-50%)' : ''\n style.top = y === 'top' ? '0' : y === 'bottom' ? '' : '50%'\n style.bottom = y === 'bottom' ? '0' : ''\n style.transform += y === 'center' ? 'translateY(-50%)' : ''\n\n return div\n}\n\nexport const getAxesLines = () => {\n const distance = 0.9\n const position = Array(3)\n .fill(0)\n .map((_, i) => [\n !i ? distance : 0,\n i === 1 ? distance : 0,\n i === 2 ? distance : 0,\n 0,\n 0,\n 0,\n ])\n .flat()\n const color = Array(6)\n .fill(0)\n .map((_, i) =>\n i < 2\n ? axesColors[0].toArray()\n : i < 4\n ? axesColors[1].toArray()\n : axesColors[2].toArray(),\n )\n .flat()\n\n const geometry = new BufferGeometry()\n geometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(position), 3),\n )\n geometry.setAttribute(\n 'color',\n new BufferAttribute(new Float32Array(color), 3),\n )\n\n return new LineSegments(\n geometry,\n new LineBasicMaterial({\n linewidth: 3,\n vertexColors: true,\n }),\n )\n}\n\nexport const getSpriteMaterial = (color: Color, text: 'x' | 'y' | 'z' | null = null) => {\n const canvas = document.createElement('canvas')\n canvas.width = 128\n canvas.height = 64\n\n const context = canvas.getContext('2d') as CanvasRenderingContext2D\n context.beginPath()\n context.arc(32, 32, 32, 0, 2 * Math.PI)\n context.closePath()\n context.fillStyle = color.getStyle()\n context.fill()\n\n context.beginPath()\n context.arc(96, 32, 32, 0, 2 * Math.PI)\n context.closePath()\n context.fillStyle = '#FFF'\n context.fill()\n\n if (text !== null) {\n context.font = 'bold 48px Arial'\n context.textAlign = 'center'\n context.fillStyle = '#000'\n context.fillText(text.toUpperCase(), 32, 48)\n context.fillText(text.toUpperCase(), 96, 48)\n }\n\n const texture = new CanvasTexture(canvas)\n texture.wrapS = texture.wrapT = RepeatWrapping\n texture.repeat.x = 0.5\n\n return new SpriteMaterial({\n map: texture,\n toneMapped: false,\n transparent: true,\n })\n}\n\nexport const getAxesSpritePoints = () => {\n const axes = ['x', 'y', 'z'] as const\n return Array(6)\n .fill(0)\n .map((_, i) => {\n const isPositive = i < 3\n const sign = isPositive ? '+' : '-'\n const axis = axes[i % 3]\n const color = axesColors[i % 3]\n\n const sprite = new Sprite(\n getSpriteMaterial(color, isPositive ? axis : null),\n )\n sprite.userData.type = `${sign}${axis}`\n sprite.scale.setScalar(isPositive ? 0.6 : 0.4)\n sprite.position[axis] = isPositive ? 1.2 : -1.2\n sprite.renderOrder = 1\n\n return sprite\n })\n}"],"mappings":";;;;;;AAAA,SAASA,eAAe,EAAEC,cAAc,EAAEC,aAAa,EAAEC,KAAK,EAAEC,iBAAiB,EAAEC,YAAY,EAAEC,cAAc,EAAEC,MAAM,EAAEC,cAAc,QAAQ,eAAe;AAG9J,IAAMC,UAAU,GAAG,CACjB,IAAIN,KAAK,CAAC,QAAQ,CAAC,EACnB,IAAIA,KAAK,CAAC,QAAQ,CAAC,EACnB,IAAIA,KAAK,CAAC,QAAQ,CAAC,CACpB;AAED,OAAO,IAAMO,eAAe,GAAG,SAAlBA,
|
|
1
|
+
{"version":3,"names":["BufferAttribute","BufferGeometry","CanvasTexture","Color","LineBasicMaterial","LineSegments","RepeatWrapping","Sprite","SpriteMaterial","axesColors","getDomContainer","placement","size","div","document","createElement","style","height","concat","width","borderRadius","position","_placement$split","split","_placement$split2","_slicedToArray","y","x","transform","left","right","top","bottom","getAxesLines","distance","Array","fill","map","_","i","flat","color","toArray","geometry","setAttribute","Float32Array","linewidth","vertexColors","getSpriteMaterial","text","arguments","length","undefined","canvas","context","getContext","beginPath","arc","Math","PI","closePath","fillStyle","getStyle","font","textAlign","fillText","toUpperCase","texture","wrapS","wrapT","repeat","toneMapped","transparent","getAxesSpritePoints","axes","isPositive","sign","axis","sprite","userData","type","scale","setScalar","renderOrder"],"sources":["../../../src/helper/view/utils.ts"],"sourcesContent":["import { BufferAttribute, BufferGeometry, CanvasTexture, Color, LineBasicMaterial, LineSegments, RepeatWrapping, Sprite, SpriteMaterial } from '@anov/3d-core'\nimport type { DomPlacement } from './index'\n\nconst axesColors = [\n new Color(0xFF3653),\n new Color(0x8ADB00),\n new Color(0x2C8FFF),\n]\n\nexport const getDomContainer = (placement: DomPlacement, size: number) => {\n const div = document.createElement('div')\n const style = div.style\n\n style.height = `${size}px`\n style.width = `${size}px`\n style.borderRadius = '100%'\n style.position = 'absolute'\n\n const [y, x] = placement.split('-')\n\n style.transform = ''\n style.left = x === 'left' ? '0' : x === 'center' ? '50%' : ''\n style.right = x === 'right' ? '0' : ''\n style.transform += x === 'center' ? 'translateX(-50%)' : ''\n style.top = y === 'top' ? '0' : y === 'bottom' ? '' : '50%'\n style.bottom = y === 'bottom' ? '0' : ''\n style.transform += y === 'center' ? 'translateY(-50%)' : ''\n\n return div\n}\n\nexport const getAxesLines = () => {\n const distance = 0.9\n const position = Array(3)\n .fill(0)\n .map((_, i) => [\n !i ? distance : 0,\n i === 1 ? distance : 0,\n i === 2 ? distance : 0,\n 0,\n 0,\n 0,\n ])\n .flat()\n const color = Array(6)\n .fill(0)\n .map((_, i) =>\n i < 2\n ? axesColors[0].toArray()\n : i < 4\n ? axesColors[1].toArray()\n : axesColors[2].toArray(),\n )\n .flat()\n\n const geometry = new BufferGeometry()\n geometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(position), 3),\n )\n geometry.setAttribute(\n 'color',\n new BufferAttribute(new Float32Array(color), 3),\n )\n\n return new LineSegments(\n geometry,\n new LineBasicMaterial({\n linewidth: 3,\n vertexColors: true,\n }),\n )\n}\n\nexport const getSpriteMaterial = (color: Color, text: 'x' | 'y' | 'z' | null = null) => {\n const canvas = document.createElement('canvas')\n canvas.width = 128\n canvas.height = 64\n\n const context = canvas.getContext('2d') as CanvasRenderingContext2D\n context.beginPath()\n context.arc(32, 32, 32, 0, 2 * Math.PI)\n context.closePath()\n context.fillStyle = color.getStyle()\n context.fill()\n\n context.beginPath()\n context.arc(96, 32, 32, 0, 2 * Math.PI)\n context.closePath()\n context.fillStyle = '#FFF'\n context.fill()\n\n if (text !== null) {\n context.font = 'bold 48px Arial'\n context.textAlign = 'center'\n context.fillStyle = '#000'\n context.fillText(text.toUpperCase(), 32, 48)\n context.fillText(text.toUpperCase(), 96, 48)\n }\n\n const texture = new CanvasTexture(canvas)\n texture.wrapS = texture.wrapT = RepeatWrapping\n texture.repeat.x = 0.5\n\n return new SpriteMaterial({\n map: texture,\n toneMapped: false,\n transparent: true,\n })\n}\n\nexport const getAxesSpritePoints = () => {\n const axes = ['x', 'y', 'z'] as const\n return Array(6)\n .fill(0)\n .map((_, i) => {\n const isPositive = i < 3\n const sign = isPositive ? '+' : '-'\n const axis = axes[i % 3]\n const color = axesColors[i % 3]\n\n const sprite = new Sprite(\n getSpriteMaterial(color, isPositive ? axis : null),\n )\n sprite.userData.type = `${sign}${axis}`\n sprite.scale.setScalar(isPositive ? 0.6 : 0.4)\n sprite.position[axis] = isPositive ? 1.2 : -1.2\n sprite.renderOrder = 1\n\n return sprite\n })\n}"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,8 @@ import createVolumetricCloud from './environment/volumetricCloud/inex';
|
|
|
12
12
|
import createSkyCloud from './environment/shaderCloud/index';
|
|
13
13
|
import Snow from './environment/showShader';
|
|
14
14
|
import Rain from './environment/rainShader';
|
|
15
|
-
import { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi } from './poi';
|
|
15
|
+
import { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi, PlanePoi } from './poi';
|
|
16
|
+
import Line from './line/index';
|
|
16
17
|
import HeatMap from './heatmap/index';
|
|
17
18
|
import SkyBox from './environment/skyBox';
|
|
18
19
|
import Camera from './camera/index';
|
|
@@ -31,5 +32,5 @@ import { FirstViewControl, ThirdViewControl } from './controls/index';
|
|
|
31
32
|
import { RenderType } from './common/constant';
|
|
32
33
|
export * from './scene';
|
|
33
34
|
export { SceneControl, // todo remove
|
|
34
|
-
createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, SkyBox, Fog2DMesh, Sky, Weather, Css2DPoi, Css3DPoi, SpritePoi, Poi, EAnimationType, RenderType, HeatMap, FakeGlowMaterial, GridMaterial, initPostEffects, // effect
|
|
35
|
+
createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, SkyBox, Fog2DMesh, Sky, Weather, Css2DPoi, Css3DPoi, SpritePoi, PlanePoi, Poi, EAnimationType, RenderType, Line, HeatMap, FakeGlowMaterial, GridMaterial, initPostEffects, // effect
|
|
35
36
|
initPostEffectsV2, createHighSelectedTool, addColorifyPass, addSsaoPass, addBloom, addBrightnessContrastPass, addMappingExposurePass, createBloomSelectedTool, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, FirstViewControl, ThirdViewControl, };
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,8 @@ import createVolumetricCloud from "./environment/volumetricCloud/inex";
|
|
|
12
12
|
import createSkyCloud from "./environment/shaderCloud/index";
|
|
13
13
|
import Snow from "./environment/showShader";
|
|
14
14
|
import Rain from "./environment/rainShader";
|
|
15
|
-
import { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi } from "./poi";
|
|
15
|
+
import { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi, PlanePoi } from "./poi";
|
|
16
|
+
import Line from "./line/index";
|
|
16
17
|
import HeatMap from "./heatmap/index";
|
|
17
18
|
import SkyBox from "./environment/skyBox";
|
|
18
19
|
import Camera from "./camera/index";
|
|
@@ -32,7 +33,7 @@ import { RenderType } from "./common/constant";
|
|
|
32
33
|
export * from "./scene";
|
|
33
34
|
export { SceneControl,
|
|
34
35
|
// todo remove
|
|
35
|
-
createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, SkyBox, Fog2DMesh, Sky, Weather, Css2DPoi, Css3DPoi, SpritePoi, Poi, EAnimationType, RenderType, HeatMap, FakeGlowMaterial, GridMaterial, initPostEffects,
|
|
36
|
+
createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, SkyBox, Fog2DMesh, Sky, Weather, Css2DPoi, Css3DPoi, SpritePoi, PlanePoi, Poi, EAnimationType, RenderType, Line, HeatMap, FakeGlowMaterial, GridMaterial, initPostEffects,
|
|
36
37
|
// effect
|
|
37
38
|
initPostEffectsV2, createHighSelectedTool, addColorifyPass, addSsaoPass, addBloom, addBrightnessContrastPass, addMappingExposurePass, createBloomSelectedTool, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, FirstViewControl, ThirdViewControl };
|
|
38
39
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","initPostEffectsV2","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","Poi","SpritePoi","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh","addColorifyPass","addSsaoPass","addBloom","addBrightnessContrastPass","addMappingExposurePass","createBloomSelectedTool","FakeGlowMaterial","Sky","Weather","FirstViewControl","ThirdViewControl","RenderType"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport { initPostEffectsV2 } from './postEffects/postprocessing'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/objects/Fog2DMesh'\nimport addColorifyPass from './postEffects/colorifyPass'\nimport addSsaoPass from './postEffects/saoPass'\nimport addBloom from './postEffects/bloomPass'\nimport addBrightnessContrastPass from './postEffects/addBrightnessContrastPass'\nimport addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass'\nimport createBloomSelectedTool from './postEffects/bloomSelect'\nimport FakeGlowMaterial from './material/fakeGlowMaterial'\nimport Sky from './environment/skyv2'\nimport Weather from './weather'\nimport { FirstViewControl, ThirdViewControl } from './controls/index'\nimport { RenderType } from './common/constant'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n SkyBox,\n Fog2DMesh,\n Sky,\n Weather,\n\n Css2DPoi,\n Css3DPoi,\n SpritePoi,\n Poi,\n EAnimationType,\n RenderType,\n
|
|
1
|
+
{"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","initPostEffectsV2","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","Poi","SpritePoi","PlanePoi","Line","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh","addColorifyPass","addSsaoPass","addBloom","addBrightnessContrastPass","addMappingExposurePass","createBloomSelectedTool","FakeGlowMaterial","Sky","Weather","FirstViewControl","ThirdViewControl","RenderType"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport { initPostEffectsV2 } from './postEffects/postprocessing'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, Css3DPoi, EAnimationType, Poi, SpritePoi,PlanePoi } from './poi'\nimport Line from './line/index'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/objects/Fog2DMesh'\nimport addColorifyPass from './postEffects/colorifyPass'\nimport addSsaoPass from './postEffects/saoPass'\nimport addBloom from './postEffects/bloomPass'\nimport addBrightnessContrastPass from './postEffects/addBrightnessContrastPass'\nimport addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass'\nimport createBloomSelectedTool from './postEffects/bloomSelect'\nimport FakeGlowMaterial from './material/fakeGlowMaterial'\nimport Sky from './environment/skyv2'\nimport Weather from './weather'\nimport { FirstViewControl, ThirdViewControl } from './controls/index'\nimport { RenderType } from './common/constant'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n SkyBox,\n Fog2DMesh,\n Sky,\n Weather,\n\n Css2DPoi,\n Css3DPoi,\n SpritePoi,\n PlanePoi,\n Poi,\n EAnimationType,\n RenderType,\n Line,\n HeatMap,\n\n FakeGlowMaterial,\n GridMaterial,\n\n initPostEffects, // effect\n initPostEffectsV2,\n createHighSelectedTool,\n addColorifyPass,\n addSsaoPass,\n addBloom,\n addBrightnessContrastPass,\n addMappingExposurePass,\n createBloomSelectedTool,\n\n ViewHelper,\n Camera,\n\n RoundLineGeometry,\n createRoundLineWallMesh,\n\n FirstViewControl,\n ThirdViewControl,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,GAAG,EAAEC,SAAS,EAACC,QAAQ;AACpE,OAAOC,IAAI;AACX,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAChB,OAAOC,eAAe;AACtB,OAAOC,WAAW;AAClB,OAAOC,QAAQ;AACf,OAAOC,yBAAyB;AAChC,OAAOC,sBAAsB;AAC7B,OAAOC,uBAAuB;AAC9B,OAAOC,gBAAgB;AACvB,OAAOC,GAAG;AACV,OAAOC,OAAO;AACd,SAASC,gBAAgB,EAAEC,gBAAgB;AAC3C,SAASC,UAAU;AAEnB;AAEA,SACEtC,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVK,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJS,MAAM,EACNI,SAAS,EACTQ,GAAG,EACHC,OAAO,EAEPrB,QAAQ,EACRC,QAAQ,EACRG,SAAS,EACTC,QAAQ,EACRF,GAAG,EACHD,cAAc,EACdsB,UAAU,EACVlB,IAAI,EACJC,OAAO,EAEPY,gBAAgB,EAChB1B,YAAY,EAEZJ,eAAe;AAAE;AACjBC,iBAAiB,EACjBC,sBAAsB,EACtBsB,eAAe,EACfC,WAAW,EACXC,QAAQ,EACRC,yBAAyB,EACzBC,sBAAsB,EACtBC,uBAAuB,EAEvBxB,UAAU,EACVe,MAAM,EAENC,iBAAiB,EACjBC,uBAAuB,EAEvBW,gBAAgB,EAChBC,gBAAgB"}
|
package/dist/line/curve.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Vector3 } from '@anov/3d-core';
|
|
2
2
|
import { Color, Line } from '@anov/3d-core';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type CurveType = 'CatmullRomCurve3' | 'CubicBezierCurve' | 'CubicBezierCurve3';
|
|
4
|
+
export type CurveInterface = {
|
|
5
5
|
curveType?: CurveType;
|
|
6
6
|
points: Vector3[];
|
|
7
7
|
color?: Color;
|
package/dist/line/curve.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function _typeof(
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
3
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
function _toPropertyKey(
|
|
7
|
-
function _toPrimitive(
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
8
|
import { BufferGeometry, CatmullRomCurve3, Color, Line, LineBasicMaterial } from '@anov/3d-core';
|
|
9
9
|
var CurveManage = /*#__PURE__*/function () {
|
|
10
10
|
function CurveManage() {
|
package/dist/line/curve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BufferGeometry","CatmullRomCurve3","Color","Line","LineBasicMaterial","CurveManage","params","curveType","points","color","pointNum","curve","line","createCurveObject3D","getPoints","geometry","setFromPoints","material"],"sources":["../../src/line/curve.ts"],"sourcesContent":["import type { Curve, Vector3 } from '@anov/3d-core'\nimport { BufferGeometry, CatmullRomCurve3, Color, Line, LineBasicMaterial } from '@anov/3d-core'\n\nexport type CurveType = 'CatmullRomCurve3' | 'CubicBezierCurve' | 'CubicBezierCurve3'\n\nexport type CurveInterface = {\n curveType?: CurveType\n points: Vector3[]\n color?: Color\n pointNum?: number\n}\n\nclass CurveManage {\n points: Vector3[] = []\n\n line: Line | null = null\n\n constructor() { }\n\n /**\n * create curve\n * @param params\n */\n createCurve(params: CurveInterface) {\n const { curveType = 'CatmullRomCurve3', points, color = new Color(0xFF0000), pointNum = 50 } = params\n\n // @ts-ignore\n const curve = this[`createRoundDotsBy${curveType}`](points) as Curve<Vector3>\n\n this.line = this.createCurveObject3D(curve, pointNum, color)\n }\n\n /**\n * catmullRomCurve3\n * @param points\n * @returns\n */\n private createRoundDotsByCatmullRomCurve3(points: Vector3[]) {\n const curve = new CatmullRomCurve3(points)\n\n return curve\n }\n\n /**\n * generate line object3d\n * @param curve\n * @param pointNum\n * @returns\n */\n private createCurveObject3D(curve: Curve<Vector3>, pointNum = 50, color: Color = new Color(0xFF0000)) {\n const points = curve.getPoints(pointNum)\n\n this.points = points\n\n const geometry = new BufferGeometry().setFromPoints(points)\n const material = new LineBasicMaterial({\n color,\n })\n\n return new Line(geometry, material)\n }\n}\n\nexport default CurveManage"],"mappings":";;;;;;;AACA,SAASA,cAAc,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,QAAQ,eAAe;AAAA,IAW1FC,WAAW;EAKf,
|
|
1
|
+
{"version":3,"names":["BufferGeometry","CatmullRomCurve3","Color","Line","LineBasicMaterial","CurveManage","_classCallCheck","_defineProperty","_createClass","key","value","createCurve","params","_params$curveType","curveType","points","_params$color","color","_params$pointNum","pointNum","curve","concat","line","createCurveObject3D","createRoundDotsByCatmullRomCurve3","arguments","length","undefined","getPoints","geometry","setFromPoints","material"],"sources":["../../src/line/curve.ts"],"sourcesContent":["import type { Curve, Vector3 } from '@anov/3d-core'\nimport { BufferGeometry, CatmullRomCurve3, Color, Line, LineBasicMaterial } from '@anov/3d-core'\n\nexport type CurveType = 'CatmullRomCurve3' | 'CubicBezierCurve' | 'CubicBezierCurve3'\n\nexport type CurveInterface = {\n curveType?: CurveType\n points: Vector3[]\n color?: Color\n pointNum?: number\n}\n\nclass CurveManage {\n points: Vector3[] = []\n\n line: Line | null = null\n\n constructor() { }\n\n /**\n * create curve\n * @param params\n */\n createCurve(params: CurveInterface) {\n const { curveType = 'CatmullRomCurve3', points, color = new Color(0xFF0000), pointNum = 50 } = params\n\n // @ts-ignore\n const curve = this[`createRoundDotsBy${curveType}`](points) as Curve<Vector3>\n\n this.line = this.createCurveObject3D(curve, pointNum, color)\n }\n\n /**\n * catmullRomCurve3\n * @param points\n * @returns\n */\n private createRoundDotsByCatmullRomCurve3(points: Vector3[]) {\n const curve = new CatmullRomCurve3(points)\n\n return curve\n }\n\n /**\n * generate line object3d\n * @param curve\n * @param pointNum\n * @returns\n */\n private createCurveObject3D(curve: Curve<Vector3>, pointNum = 50, color: Color = new Color(0xFF0000)) {\n const points = curve.getPoints(pointNum)\n\n this.points = points\n\n const geometry = new BufferGeometry().setFromPoints(points)\n const material = new LineBasicMaterial({\n color,\n })\n\n return new Line(geometry, material)\n }\n}\n\nexport default CurveManage"],"mappings":";;;;;;;AACA,SAASA,cAAc,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,QAAQ,eAAe;AAAA,IAW1FC,WAAW;EAKf,SAAAA,YAAA,EAAc;IAAAC,eAAA,OAAAD,WAAA;IAAAE,eAAA,iBAJM,EAAE;IAAAA,eAAA,eAEF,IAAI;EAER;;EAEhB;AACF;AACA;AACA;EAHEC,YAAA,CAAAH,WAAA;IAAAI,GAAA;IAAAC,KAAA,EAIA,SAAAC,YAAYC,MAAsB,EAAE;MAClC,IAAAC,iBAAA,GAA+FD,MAAM,CAA7FE,SAAS;QAATA,SAAS,GAAAD,iBAAA,cAAG,kBAAkB,GAAAA,iBAAA;QAAEE,MAAM,GAAiDH,MAAM,CAA7DG,MAAM;QAAAC,aAAA,GAAiDJ,MAAM,CAArDK,KAAK;QAALA,KAAK,GAAAD,aAAA,cAAG,IAAId,KAAK,CAAC,QAAQ,CAAC,GAAAc,aAAA;QAAAE,gBAAA,GAAoBN,MAAM,CAAxBO,QAAQ;QAARA,QAAQ,GAAAD,gBAAA,cAAG,EAAE,GAAAA,gBAAA;;MAE1F;MACA,IAAME,KAAK,GAAG,IAAI,qBAAAC,MAAA,CAAqBP,SAAS,EAAG,CAACC,MAAM,CAAmB;MAE7E,IAAI,CAACO,IAAI,GAAG,IAAI,CAACC,mBAAmB,CAACH,KAAK,EAAED,QAAQ,EAAEF,KAAK,CAAC;IAC9D;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAR,GAAA;IAAAC,KAAA,EAKA,SAAAc,kCAA0CT,MAAiB,EAAE;MAC3D,IAAMK,KAAK,GAAG,IAAInB,gBAAgB,CAACc,MAAM,CAAC;MAE1C,OAAOK,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAX,GAAA;IAAAC,KAAA,EAMA,SAAAa,oBAA4BH,KAAqB,EAAqD;MAAA,IAAnDD,QAAQ,GAAAM,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;MAAA,IAAER,KAAY,GAAAQ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAIvB,KAAK,CAAC,QAAQ,CAAC;MAClG,IAAMa,MAAM,GAAGK,KAAK,CAACQ,SAAS,CAACT,QAAQ,CAAC;MAExC,IAAI,CAACJ,MAAM,GAAGA,MAAM;MAEpB,IAAMc,QAAQ,GAAG,IAAI7B,cAAc,CAAC,CAAC,CAAC8B,aAAa,CAACf,MAAM,CAAC;MAC3D,IAAMgB,QAAQ,GAAG,IAAI3B,iBAAiB,CAAC;QACrCa,KAAK,EAALA;MACF,CAAC,CAAC;MAEF,OAAO,IAAId,IAAI,CAAC0B,QAAQ,EAAEE,QAAQ,CAAC;IACrC;EAAC;EAAA,OAAA1B,WAAA;AAAA;AAGH,eAAeA,WAAW"}
|
package/dist/line/index.d.ts
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Mesh } from '@anov/3d-core';
|
|
2
|
+
import Component from '../common/component';
|
|
3
|
+
type IOption = {
|
|
4
|
+
close?: boolean;
|
|
5
|
+
radius?: number;
|
|
6
|
+
width?: number;
|
|
7
|
+
color?: string;
|
|
8
|
+
};
|
|
9
|
+
declare class Line extends Component {
|
|
10
|
+
mesh: Mesh;
|
|
11
|
+
points: any;
|
|
12
|
+
option: IOption;
|
|
13
|
+
constructor(points: any, option: IOption);
|
|
14
|
+
create(): void;
|
|
15
|
+
}
|
|
16
|
+
export default Line;
|