@anov/3d-ability 0.0.4-alpha7 → 0.0.4-alpha9
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/animation/index.d.ts +0 -1
- package/dist/animation/index.js +1 -1
- package/dist/animation/index.js.map +1 -1
- package/dist/camera/index.d.ts +65 -0
- package/dist/camera/index.js +239 -0
- package/dist/camera/index.js.map +1 -0
- package/dist/city/flyinglead.d.ts +0 -0
- package/dist/city/radar.d.ts +0 -0
- package/dist/city/scanning.d.ts +0 -0
- package/dist/city/surroundLine.d.ts +0 -0
- package/dist/core/mouseDrawe.d.ts +2 -0
- package/dist/environment/cloud/cloud.d.ts +1 -0
- package/dist/environment/cloud/index.d.ts +7 -0
- package/dist/environment/rain.d.ts +20 -0
- package/dist/environment/rainShader/shader.d.ts +26 -0
- package/dist/environment/shaderCloud/cloudMaterial.d.ts +10 -0
- package/dist/environment/shaderCloud/shader.d.ts +5 -0
- package/dist/environment/sky/index.js +10 -13
- package/dist/environment/sky/index.js.map +1 -1
- package/dist/environment/skyBox/index.d.ts +41 -0
- package/dist/environment/skyBox/index.js +150 -0
- package/dist/environment/skyBox/index.js.map +1 -0
- package/dist/environment/snow.js +2 -0
- package/dist/environment/snow.js.map +1 -1
- package/dist/environment/sun/index.d.ts +13 -0
- package/dist/environment/volumetricCloud/cloudMaterial.d.ts +3 -0
- package/dist/environment/volumetricCloud/inex.d.ts +8 -0
- package/dist/heatmap/index.d.ts +9 -0
- package/dist/heatmap/index.js +138 -0
- package/dist/heatmap/index.js.map +1 -0
- package/dist/helper/view/index.d.ts +40 -0
- package/dist/helper/view/utils.d.ts +6 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/line/curve.d.ts +33 -0
- package/dist/line/curve.js +71 -0
- package/dist/line/curve.js.map +1 -0
- package/dist/line/index.d.ts +0 -0
- package/dist/line/index.js +2 -0
- package/dist/line/index.js.map +1 -0
- package/dist/line/round-curve.d.ts +19 -0
- package/dist/line/round-curve.js +212 -0
- package/dist/line/round-curve.js.map +1 -0
- package/dist/material/finirMaterialMaterial/index.d.ts +9 -0
- package/dist/material/finirMaterialMaterial/index.js +47 -0
- package/dist/material/finirMaterialMaterial/index.js.map +1 -0
- package/dist/material/pristineGridMaterial/index.d.ts +20 -0
- package/dist/material/pristineGridMaterial/shader/fragment.d.ts +2 -0
- package/dist/material/pristineGridMaterial/shader/vertex.d.ts +2 -0
- package/dist/poi/core/Base.d.ts +7 -0
- package/dist/poi/core/Base.js +24 -0
- package/dist/poi/core/Base.js.map +1 -0
- package/dist/poi/core/Css2D.d.ts +20 -0
- package/dist/poi/core/Css2D.js +181 -0
- package/dist/poi/core/Css2D.js.map +1 -0
- package/dist/poi/core/Css3D.d.ts +1 -0
- package/dist/poi/core/Css3D.js +24 -0
- package/dist/poi/core/Css3D.js.map +1 -0
- package/dist/poi/core/Sprite.d.ts +11 -0
- package/dist/poi/core/Sprite.js +134 -0
- package/dist/poi/core/Sprite.js.map +1 -0
- package/dist/poi/core/SpriteBase.d.ts +11 -0
- package/dist/poi/core/SpriteBase.js +58 -0
- package/dist/poi/core/SpriteBase.js.map +1 -0
- package/dist/poi/index.d.ts +9 -16
- package/dist/poi/index.js +11 -96
- package/dist/poi/index.js.map +1 -1
- package/dist/poi/utils/base64.d.ts +3 -0
- package/dist/poi/utils/base64.js +4 -0
- package/dist/poi/utils/base64.js.map +1 -0
- package/dist/poi/utils/canvas.d.ts +3 -0
- package/dist/poi/utils/canvas.js +68 -0
- package/dist/poi/utils/canvas.js.map +1 -0
- package/dist/poi/utils/css.d.ts +35 -0
- package/dist/poi/utils/css.js +41 -0
- package/dist/poi/utils/css.js.map +1 -0
- package/dist/poi/utils/type.d.ts +35 -0
- package/dist/poi/utils/type.js +39 -0
- package/dist/poi/utils/type.js.map +1 -0
- package/dist/poiBack/assets.js.map +1 -0
- package/dist/poiBack/dom.js.map +1 -0
- package/dist/poiBack/index.d.ts +19 -0
- package/dist/poiBack/index.js +145 -0
- package/dist/poiBack/index.js.map +1 -0
- package/dist/poiBack/type.js.map +1 -0
- package/dist/postEffects/bloomPass.d.ts +5 -0
- package/dist/postEffects/index.d.ts +11 -0
- package/dist/postEffects/outlinePass.d.ts +16 -0
- package/dist/postEffects/outlinePass.js +7 -1
- package/dist/postEffects/outlinePass.js.map +1 -1
- package/dist/scene/grow/grow.d.ts +10 -0
- package/dist/{animation → scene}/grow/grow.js +66 -33
- package/dist/scene/grow/grow.js.map +1 -0
- package/dist/scene/grow/growStyle.js.map +1 -0
- package/dist/scene/grow/index.js.map +1 -0
- package/dist/{animation → scene}/grow/style_down.d.ts +2 -0
- package/dist/{animation → scene}/grow/style_down.js +22 -21
- package/dist/scene/grow/style_down.js.map +1 -0
- package/dist/{animation → scene}/grow/style_up.d.ts +2 -0
- package/dist/{animation → scene}/grow/style_up.js +24 -22
- package/dist/scene/grow/style_up.js.map +1 -0
- package/dist/{animation → scene}/grow/type.d.ts +12 -11
- package/dist/scene/grow/type.js.map +1 -0
- package/dist/scene/index.d.ts +1 -0
- package/dist/scene/index.js +2 -0
- package/dist/scene/index.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +10 -3
- package/dist/animation/grow/grow.d.ts +0 -10
- package/dist/animation/grow/grow.js.map +0 -1
- package/dist/animation/grow/growStyle.js.map +0 -1
- package/dist/animation/grow/index.js.map +0 -1
- package/dist/animation/grow/style_down.js.map +0 -1
- package/dist/animation/grow/style_up.js.map +0 -1
- package/dist/animation/grow/type.js.map +0 -1
- package/dist/poi/assets.js.map +0 -1
- package/dist/poi/dom.js.map +0 -1
- package/dist/poi/type.js.map +0 -1
- /package/dist/{poi → poiBack}/assets.d.ts +0 -0
- /package/dist/{poi → poiBack}/assets.js +0 -0
- /package/dist/{poi → poiBack}/dom.d.ts +0 -0
- /package/dist/{poi → poiBack}/dom.js +0 -0
- /package/dist/{poi → poiBack}/type.d.ts +0 -0
- /package/dist/{poi → poiBack}/type.js +0 -0
- /package/dist/{animation → scene}/grow/growStyle.d.ts +0 -0
- /package/dist/{animation → scene}/grow/growStyle.js +0 -0
- /package/dist/{animation → scene}/grow/index.d.ts +0 -0
- /package/dist/{animation → scene}/grow/index.js +0 -0
- /package/dist/{animation → scene}/grow/type.js +0 -0
|
@@ -46,20 +46,17 @@ var initsSkySystem = function initsSkySystem(options) {
|
|
|
46
46
|
var initSunLight = function initSunLight(options) {
|
|
47
47
|
var _opts$mapSize, _opts$mapSize2;
|
|
48
48
|
var opts = options || {};
|
|
49
|
-
var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity,
|
|
49
|
+
var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10));
|
|
50
50
|
sunLight.castShadow = true;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// cam.top = getLastValue(opts.top, 100000)
|
|
61
|
-
// cam.bottom = getLastValue(opts.bottom, -100000)
|
|
62
|
-
|
|
51
|
+
sunLight.shadow.bias = getLastValue(opts.bias, -0.005);
|
|
52
|
+
sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024 * 2), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024 * 2));
|
|
53
|
+
var cam = sunLight.shadow.camera;
|
|
54
|
+
cam.near = getLastValue(opts.near, 1);
|
|
55
|
+
cam.far = getLastValue(opts.far, 10000);
|
|
56
|
+
cam.left = getLastValue(opts.left, -1000);
|
|
57
|
+
cam.right = getLastValue(opts.right, 1000);
|
|
58
|
+
cam.top = getLastValue(opts.top, 1000);
|
|
59
|
+
cam.bottom = getLastValue(opts.bottom, -1000);
|
|
63
60
|
return sunLight;
|
|
64
61
|
};
|
|
65
62
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","mapSize","set","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity,
|
|
1
|
+
{"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","bias","mapSize","set","cam","camera","near","far","left","right","top","bottom","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 10))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 2), getLastValue(opts.mapSize?.[1], 1024 * 2))\n\n const cam = sunLight.shadow.camera\n cam.near = getLastValue(opts.near, 1)\n cam.far = getLastValue(opts.far, 10000)\n cam.left = getLastValue(opts.left, -1000)\n cam.right = getLastValue(opts.right, 1000)\n cam.top = getLastValue(opts.top, 1000)\n cam.bottom = getLastValue(opts.bottom, -1000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Vector3 } from '@anov/3d-core';
|
|
2
|
+
declare type EnvironmentOptions = {
|
|
3
|
+
weather?: string;
|
|
4
|
+
time?: number;
|
|
5
|
+
};
|
|
6
|
+
declare class SkyBox {
|
|
7
|
+
private opts?;
|
|
8
|
+
private setDate;
|
|
9
|
+
private snow;
|
|
10
|
+
private rain;
|
|
11
|
+
private cloudReturn;
|
|
12
|
+
private sky;
|
|
13
|
+
private renderer;
|
|
14
|
+
sunPosition: Vector3;
|
|
15
|
+
constructor(opts?: EnvironmentOptions);
|
|
16
|
+
private initConfigSet;
|
|
17
|
+
private setWeatherStrategy;
|
|
18
|
+
/**
|
|
19
|
+
* setTime
|
|
20
|
+
* @param params
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
setTime(params: {
|
|
24
|
+
time: number;
|
|
25
|
+
duration?: number;
|
|
26
|
+
}): {
|
|
27
|
+
newTime: number;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* setWeather
|
|
31
|
+
* @param params
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
setWeather(params: {
|
|
35
|
+
weatherType: string;
|
|
36
|
+
duration?: number;
|
|
37
|
+
}): {
|
|
38
|
+
weatherType: string;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export default SkyBox;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
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
|
+
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 _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(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
9
|
+
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."); }
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
13
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
+
import { use } from '@anov/3d-core';
|
|
15
|
+
import { createRain, createSkyCloud, createSkySystem, createSnow } from "../../";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* create time sky system
|
|
19
|
+
* @param date
|
|
20
|
+
* @param latitude
|
|
21
|
+
* @param longitude
|
|
22
|
+
* @param sunRadius
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
var createTimeSkySystem = function createTimeSkySystem(date) {
|
|
26
|
+
var latitude = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 40;
|
|
27
|
+
var longitude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 116;
|
|
28
|
+
var sunRadius = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 100;
|
|
29
|
+
var _createSkySystem = createSkySystem(date, latitude, longitude, sunRadius),
|
|
30
|
+
_createSkySystem2 = _slicedToArray(_createSkySystem, 3),
|
|
31
|
+
setDate = _createSkySystem2[0],
|
|
32
|
+
sun = _createSkySystem2[1],
|
|
33
|
+
sky = _createSkySystem2[2];
|
|
34
|
+
return [setDate, sun, sky];
|
|
35
|
+
};
|
|
36
|
+
var SkyBox = /*#__PURE__*/function () {
|
|
37
|
+
function SkyBox(opts) {
|
|
38
|
+
var _this = this;
|
|
39
|
+
_classCallCheck(this, SkyBox);
|
|
40
|
+
_defineProperty(this, "opts", void 0);
|
|
41
|
+
_defineProperty(this, "setDate", void 0);
|
|
42
|
+
_defineProperty(this, "snow", null);
|
|
43
|
+
_defineProperty(this, "rain", null);
|
|
44
|
+
_defineProperty(this, "cloudReturn", null);
|
|
45
|
+
_defineProperty(this, "sky", void 0);
|
|
46
|
+
_defineProperty(this, "renderer", void 0);
|
|
47
|
+
_defineProperty(this, "sunPosition", void 0);
|
|
48
|
+
_defineProperty(this, "setWeatherStrategy", {
|
|
49
|
+
Snow: function Snow() {
|
|
50
|
+
!_this.snow && (_this.snow = createSnow(15, 10000, {
|
|
51
|
+
x: 0,
|
|
52
|
+
y: 3,
|
|
53
|
+
z: 0
|
|
54
|
+
}, 0.5, 50000));
|
|
55
|
+
_this.snow[0]();
|
|
56
|
+
_this.renderer.toneMappingExposure = 0.3;
|
|
57
|
+
},
|
|
58
|
+
Rain: function Rain() {
|
|
59
|
+
!_this.rain && (_this.rain = createRain(4, 10000, {
|
|
60
|
+
x: 0,
|
|
61
|
+
y: 10,
|
|
62
|
+
z: 0
|
|
63
|
+
}, 0.8, 100000));
|
|
64
|
+
_this.rain[0]();
|
|
65
|
+
_this.renderer.toneMappingExposure = 0.3;
|
|
66
|
+
},
|
|
67
|
+
Cloudy: function Cloudy() {
|
|
68
|
+
!_this.cloudReturn && (_this.cloudReturn = createSkyCloud());
|
|
69
|
+
},
|
|
70
|
+
Clear_Skies: function Clear_Skies() {
|
|
71
|
+
var _this$snow, _this$rain;
|
|
72
|
+
(_this$snow = _this.snow) === null || _this$snow === void 0 ? void 0 : _this$snow[1]();
|
|
73
|
+
(_this$rain = _this.rain) === null || _this$rain === void 0 ? void 0 : _this$rain[1]();
|
|
74
|
+
_this.renderer.toneMappingExposure = 0.6;
|
|
75
|
+
if (_this.cloudReturn) {
|
|
76
|
+
var _this$cloudReturn = _slicedToArray(_this.cloudReturn, 2),
|
|
77
|
+
_ = _this$cloudReturn[0],
|
|
78
|
+
clear = _this$cloudReturn[1];
|
|
79
|
+
clear();
|
|
80
|
+
_this.cloudReturn = null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
var _createTimeSkySystem = createTimeSkySystem(new Date(), 40, 116, 100),
|
|
85
|
+
_createTimeSkySystem2 = _slicedToArray(_createTimeSkySystem, 3),
|
|
86
|
+
setDate = _createTimeSkySystem2[0],
|
|
87
|
+
sun = _createTimeSkySystem2[1],
|
|
88
|
+
sky = _createTimeSkySystem2[2];
|
|
89
|
+
this.renderer = use.useScene().renderer;
|
|
90
|
+
this.sunPosition = sun.position;
|
|
91
|
+
this.setDate = setDate;
|
|
92
|
+
this.sky = sky;
|
|
93
|
+
this.opts = opts;
|
|
94
|
+
this.initConfigSet();
|
|
95
|
+
}
|
|
96
|
+
_createClass(SkyBox, [{
|
|
97
|
+
key: "initConfigSet",
|
|
98
|
+
value: function initConfigSet() {
|
|
99
|
+
var _ref = this.opts || {},
|
|
100
|
+
_ref$weather = _ref.weather,
|
|
101
|
+
weather = _ref$weather === void 0 ? 'Snow' : _ref$weather,
|
|
102
|
+
_ref$time = _ref.time,
|
|
103
|
+
time = _ref$time === void 0 ? 1700 : _ref$time;
|
|
104
|
+
this.setWeather({
|
|
105
|
+
weatherType: weather,
|
|
106
|
+
duration: 0
|
|
107
|
+
});
|
|
108
|
+
this.setTime({
|
|
109
|
+
time: time,
|
|
110
|
+
duration: 0
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}, {
|
|
114
|
+
key: "setTime",
|
|
115
|
+
value:
|
|
116
|
+
/**
|
|
117
|
+
* setTime
|
|
118
|
+
* @param params
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
function setTime(params) {
|
|
122
|
+
if (params.time === undefined || params.time > 2400 && params.time < 0) throw new Error('time must be between 0 and 2400');
|
|
123
|
+
var date = new Date();
|
|
124
|
+
date.setHours(0, 0, 0, 0);
|
|
125
|
+
date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400));
|
|
126
|
+
this.setDate(date);
|
|
127
|
+
return {
|
|
128
|
+
newTime: params.time
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* setWeather
|
|
134
|
+
* @param params
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
}, {
|
|
138
|
+
key: "setWeather",
|
|
139
|
+
value: function setWeather(params) {
|
|
140
|
+
// @ts-ignore
|
|
141
|
+
this.setWeatherStrategy[params.weatherType]();
|
|
142
|
+
return {
|
|
143
|
+
weatherType: params.weatherType
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}]);
|
|
147
|
+
return SkyBox;
|
|
148
|
+
}();
|
|
149
|
+
export default SkyBox;
|
|
150
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["use","createRain","createSkyCloud","createSkySystem","createSnow","createTimeSkySystem","date","latitude","longitude","sunRadius","setDate","sun","sky","SkyBox","opts","Snow","snow","x","y","z","renderer","toneMappingExposure","Rain","rain","Cloudy","cloudReturn","Clear_Skies","_","clear","Date","useScene","sunPosition","position","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/environment/skyBox/index.ts"],"sourcesContent":["import type { Vector3, WebGLRenderer, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport { createRain, createSkyCloud, createSkySystem, createSnow } from '../../'\n\n/**\n * create time sky system\n * @param date\n * @param latitude\n * @param longitude\n * @param sunRadius\n * @returns\n */\nconst createTimeSkySystem = (date: Date, latitude = 40, longitude = 116, sunRadius = 100) => {\n const [setDate, sun, sky] = createSkySystem(date, latitude, longitude, sunRadius)\n\n return [setDate, sun, sky] as [typeof setDate, typeof sun, typeof sky]\n}\n\ntype EnvironmentOptions = {\n weather?: string\n time?: number\n}\n\nclass SkyBox {\n private opts?: EnvironmentOptions\n private setDate: (currentDate?: Date | undefined) => Vector3\n private snow: any = null\n private rain: any = null\n private cloudReturn: ReturnType<typeof createSkyCloud> | null = null\n private sky: lib.Sky\n private renderer: WebGLRenderer\n sunPosition: Vector3\n\n constructor(opts?: EnvironmentOptions) {\n const [setDate, sun, sky] = createTimeSkySystem(new Date(), 40, 116, 100)\n this.renderer = use.useScene().renderer!\n this.sunPosition = sun.position\n this.setDate = setDate as any\n this.sky = sky\n\n this.opts = opts\n this.initConfigSet()\n }\n\n private initConfigSet() {\n const { weather = 'Snow', time = 1700 } = this.opts || {}\n\n this.setWeather({ weatherType: weather, duration: 0 })\n this.setTime({ time, duration: 0 })\n }\n\n private setWeatherStrategy = {\n Snow: () => {\n !this.snow && (this.snow = createSnow(15, 10000, { x: 0, y: 3, z: 0 }, 0.5, 50000))\n this.snow[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Rain: () => {\n !this.rain && (this.rain = createRain(4, 10000, { x: 0, y: 10, z: 0 }, 0.8, 100000))\n this.rain[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Cloudy: () => {\n !this.cloudReturn && (this.cloudReturn = createSkyCloud())\n },\n Clear_Skies: () => {\n this.snow?.[1]()\n this.rain?.[1]()\n this.renderer.toneMappingExposure = 0.6\n\n if (this.cloudReturn) {\n const [_, clear] = this.cloudReturn\n clear()\n this.cloudReturn = null\n }\n },\n }\n\n /**\n * setTime\n * @param params\n * @returns\n */\n setTime(params: { time: number; duration?: number }) {\n if (params.time === undefined || (params.time > 2400 && params.time < 0))\n throw new Error('time must be between 0 and 2400')\n\n const date = new Date()\n date.setHours(0, 0, 0, 0)\n date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400))\n this.setDate(date)\n\n return {\n newTime: params.time,\n }\n }\n\n /**\n * setWeather\n * @param params\n * @returns\n */\n setWeather(params: { weatherType: string; duration?: number }) {\n // @ts-ignore\n this.setWeatherStrategy[params.weatherType]()\n\n return {\n weatherType: params.weatherType,\n }\n }\n}\n\nexport default SkyBox"],"mappings":"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"}
|
package/dist/environment/snow.js
CHANGED
|
@@ -31,6 +31,8 @@ export var createSnow = function createSnow() {
|
|
|
31
31
|
removeFrame = useframe(function () {
|
|
32
32
|
points.animation(function (position) {
|
|
33
33
|
position.y -= position.speedY;
|
|
34
|
+
position.x += position.speedX;
|
|
35
|
+
position.z += position.speedZ;
|
|
34
36
|
if (position.y <= 0 && isBoundaryJudgment) position.y = 1000 / 2;
|
|
35
37
|
});
|
|
36
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createSnow","size","range","speed","opacity","count","points","url","removeFrame","isBoundaryJudgment","start","scene","add","point","animation","position","y","speedY","stop","remove"],"sources":["../../src/environment/snow.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { SpeedType } from './rain'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateSnowReturn = [\n () => void,\n () => void,\n]\n\n/**\n * create snow\n * @param size 雪花大小\n * @param range 降雪范围\n * @param speed 降雪速度\n * @param opacity 雪花透明度\n * @param count 雪花密度\n * @returns\n */\nexport const createSnow = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n speed,\n range,\n count,\n url: 'data:image/png;base64,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',\n })\n\n let removeFrame: (() => void) | null = null\n const isBoundaryJudgment = true\n\n const start = () => {\n globalObjectManage.scene!.add(points.point!)\n\n removeFrame = useframe(() => {\n points.animation(\n (position: AVector3) => {\n position.y -= position.speedY\n\n if (position.y <= 0 && isBoundaryJudgment)\n position.y = 1000 / 2\n },\n )\n })\n }\n\n const stop = () => {\n if (removeFrame) {\n removeFrame()\n globalObjectManage.scene!.remove(points.point!)\n }\n }\n\n return [\n start,\n stop,\n ] as CreateSnowReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAGvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAOhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAA8E;EAAA,IAA1EC,IAAI,uEAAG,EAAE;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAAA,IAAEC,KAAiB;EAAA,IAAEC,OAAO,uEAAG,GAAG;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAC9F,IAAMC,MAAM,GAAG,IAAIR,iBAAiB,CAAC;IACnCG,IAAI,EAAJA,IAAI;IACJG,OAAO,EAAPA,OAAO;IACPD,KAAK,EAALA,KAAK;IACLD,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLE,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAC3C,IAAMC,kBAAkB,GAAG,IAAI;EAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBd,kBAAkB,CAACe,KAAK,CAAEC,GAAG,CAACN,MAAM,CAACO,KAAK,CAAE;IAE5CL,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACQ,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAE7B,
|
|
1
|
+
{"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createSnow","size","range","speed","opacity","count","points","url","removeFrame","isBoundaryJudgment","start","scene","add","point","animation","position","y","speedY","x","speedX","z","speedZ","stop","remove"],"sources":["../../src/environment/snow.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { SpeedType } from './rain'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateSnowReturn = [\n () => void,\n () => void,\n]\n\n/**\n * create snow\n * @param size 雪花大小\n * @param range 降雪范围\n * @param speed 降雪速度\n * @param opacity 雪花透明度\n * @param count 雪花密度\n * @returns\n */\nexport const createSnow = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n speed,\n range,\n count,\n url: 'data:image/png;base64,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',\n })\n\n let removeFrame: (() => void) | null = null\n const isBoundaryJudgment = true\n\n const start = () => {\n globalObjectManage.scene!.add(points.point!)\n\n removeFrame = useframe(() => {\n points.animation(\n (position: AVector3) => {\n position.y -= position.speedY\n position.x += position.speedX\n position.z += position.speedZ\n\n if (position.y <= 0 && isBoundaryJudgment)\n position.y = 1000 / 2\n },\n )\n })\n }\n\n const stop = () => {\n if (removeFrame) {\n removeFrame()\n globalObjectManage.scene!.remove(points.point!)\n }\n }\n\n return [\n start,\n stop,\n ] as CreateSnowReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAGvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAOhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAA8E;EAAA,IAA1EC,IAAI,uEAAG,EAAE;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAAA,IAAEC,KAAiB;EAAA,IAAEC,OAAO,uEAAG,GAAG;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAC9F,IAAMC,MAAM,GAAG,IAAIR,iBAAiB,CAAC;IACnCG,IAAI,EAAJA,IAAI;IACJG,OAAO,EAAPA,OAAO;IACPD,KAAK,EAALA,KAAK;IACLD,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLE,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAC3C,IAAMC,kBAAkB,GAAG,IAAI;EAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBd,kBAAkB,CAACe,KAAK,CAAEC,GAAG,CAACN,MAAM,CAACO,KAAK,CAAE;IAE5CL,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACQ,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAC7BF,QAAQ,CAACG,CAAC,IAAIH,QAAQ,CAACI,MAAM;QAC7BJ,QAAQ,CAACK,CAAC,IAAIL,QAAQ,CAACM,MAAM;QAE7B,IAAIN,QAAQ,CAACC,CAAC,IAAI,CAAC,IAAIP,kBAAkB,EACvCM,QAAQ,CAACC,CAAC,GAAG,IAAI,GAAG,CAAC;MACzB,CAAC,CACF;IACH,CAAC,CAAC;EACJ,CAAC;EAED,IAAMM,IAAI,GAAG,SAAPA,IAAI,GAAS;IACjB,IAAId,WAAW,EAAE;MACfA,WAAW,EAAE;MACbZ,kBAAkB,CAACe,KAAK,CAAEY,MAAM,CAACjB,MAAM,CAACO,KAAK,CAAE;IACjD;EACF,CAAC;EAED,OAAO,CACLH,KAAK,EACLY,IAAI,CACL;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Group } from '@anov/3d-core';
|
|
2
|
+
export declare const getSunPosition: (date: Date, latitude: number, longitude: number) => {
|
|
3
|
+
altitude: number;
|
|
4
|
+
azimuth: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* create init
|
|
8
|
+
* @param date
|
|
9
|
+
* @param latitude
|
|
10
|
+
* @param longitude
|
|
11
|
+
* @param distance
|
|
12
|
+
*/
|
|
13
|
+
export declare const createSun: (date: Date, latitude: number, longitude: number, distance?: number, autoUpdate?: boolean) => (Group | ((date: Date, latitude: number, longitude: number) => void))[];
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
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
|
+
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(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
import { Color, DoubleSide, Mesh, PlaneGeometry, ShaderMaterial, Texture, use } from '@anov/3d-core';
|
|
8
|
+
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
import heatMap from 'anov-heat-map';
|
|
11
|
+
var TemperatureColorStops = {
|
|
12
|
+
1.0: '#f00',
|
|
13
|
+
0.9: '#e2fa00',
|
|
14
|
+
0.6: '#33f900',
|
|
15
|
+
0.3: '#0349df',
|
|
16
|
+
0.0: '#0f00ff'
|
|
17
|
+
};
|
|
18
|
+
var HeatMap = /*#__PURE__*/function () {
|
|
19
|
+
function HeatMap() {
|
|
20
|
+
_classCallCheck(this, HeatMap);
|
|
21
|
+
}
|
|
22
|
+
_createClass(HeatMap, [{
|
|
23
|
+
key: "create",
|
|
24
|
+
value: function create() {
|
|
25
|
+
var mesh = this.addHeatMap();
|
|
26
|
+
var _use$useScene = use.useScene(),
|
|
27
|
+
scene = _use$useScene.scene,
|
|
28
|
+
camera = _use$useScene.camera;
|
|
29
|
+
console.log('camera:', camera === null || camera === void 0 ? void 0 : camera.position);
|
|
30
|
+
|
|
31
|
+
// 添加到场景
|
|
32
|
+
scene === null || scene === void 0 ? void 0 : scene.add(mesh);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// 热力图
|
|
36
|
+
}, {
|
|
37
|
+
key: "addHeatMap",
|
|
38
|
+
value: function addHeatMap() {
|
|
39
|
+
var heatmap = heatMap.create({
|
|
40
|
+
container: this.createDom(),
|
|
41
|
+
gradient: TemperatureColorStops
|
|
42
|
+
});
|
|
43
|
+
var len = 150;
|
|
44
|
+
var width = window.innerWidth;
|
|
45
|
+
var height = window.innerHeight;
|
|
46
|
+
var points = [];
|
|
47
|
+
var max = 0;
|
|
48
|
+
while (len--) {
|
|
49
|
+
var val = Math.floor(Math.random() * 30);
|
|
50
|
+
max = Math.max(max, val);
|
|
51
|
+
var point = {
|
|
52
|
+
x: Math.floor(Math.random() * width),
|
|
53
|
+
y: Math.floor(Math.random() * height),
|
|
54
|
+
value: val
|
|
55
|
+
};
|
|
56
|
+
points.push(point);
|
|
57
|
+
}
|
|
58
|
+
heatmap.setData({
|
|
59
|
+
max: max,
|
|
60
|
+
data: points
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
// 灰度图
|
|
64
|
+
var greymap = heatMap.create({
|
|
65
|
+
container: this.createDom(),
|
|
66
|
+
gradient: {
|
|
67
|
+
'0': 'black',
|
|
68
|
+
'1.0': 'white'
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
greymap.setData({
|
|
72
|
+
max: max,
|
|
73
|
+
data: points
|
|
74
|
+
});
|
|
75
|
+
var heatMapMaterial = new ShaderMaterial({
|
|
76
|
+
transparent: true,
|
|
77
|
+
vertexShader: "varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//\u83B7\u53D6\u7070\u5EA6\u56FE\u70B9\u4F4D\u4FE1\u606F\n float height = Zscale * frgColor.a;//\u901A\u8FC7\u7070\u5EA6\u56FE\u7684rgb*\u9700\u8981\u8BBE\u7F6E\u7684\u9AD8\u5EA6\u8BA1\u7B97\u51FA\u70ED\u529B\u56FE\u6BCF\u4E2A\u70B9\u4F4D\u6700\u7EC8\u5728z\u8F74\u9AD8\u5EA6\n vec3 transformed = vec3( position.x, position.y, height);//\u91CD\u65B0\u7EC4\u88C5\u70B9\u5750\u6807\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//\u6E32\u67D3\u70B9\u4F4D\n \n }\n ",
|
|
78
|
+
fragmentShader: "varying vec2 vUv;\n uniform sampler2D heatMap;//\u70ED\u529B\u56FE\n uniform vec3 u_color;//\u57FA\u7840\u989C\u8272\n uniform float u_opacity; // \u900F\u660E\u5EA6\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//\u628A\u70ED\u529B\u56FE\u989C\u8272\u548C\u900F\u660E\u5EA6\u8FDB\u884C\u6E32\u67D3\n }",
|
|
79
|
+
uniforms: {
|
|
80
|
+
heatMap: {
|
|
81
|
+
value: {
|
|
82
|
+
value: undefined
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
greyMap: {
|
|
86
|
+
value: {
|
|
87
|
+
value: undefined
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
Zscale: {
|
|
91
|
+
value: 1.2
|
|
92
|
+
},
|
|
93
|
+
// 高度参数
|
|
94
|
+
u_color: {
|
|
95
|
+
value: new Color('rgb(255, 255, 255)')
|
|
96
|
+
},
|
|
97
|
+
u_opacity: {
|
|
98
|
+
value: 1.0
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
heatMapMaterial.side = DoubleSide; // 双面渲染
|
|
103
|
+
|
|
104
|
+
var texture = new Texture(heatmap._renderer.canvas);
|
|
105
|
+
texture.needsUpdate = true;
|
|
106
|
+
var greyTexture = new Texture(greymap._renderer.canvas);
|
|
107
|
+
greyTexture.needsUpdate = true;
|
|
108
|
+
heatMapMaterial.uniforms.heatMap.value = texture;
|
|
109
|
+
heatMapMaterial.uniforms.greyMap.value = greyTexture;
|
|
110
|
+
var heatMapGeometry = new PlaneGeometry(15, 15, 100, 100); // 3d热力图大小,及分块数量
|
|
111
|
+
var heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial);
|
|
112
|
+
heatMapPlane.rotation.set(-Math.PI / 2, 0, 0);
|
|
113
|
+
heatMapPlane.position.set(0, 0, 0); // 3d热力图中心点位置
|
|
114
|
+
|
|
115
|
+
return heatMapPlane;
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
118
|
+
key: "createDom",
|
|
119
|
+
value: function createDom() {
|
|
120
|
+
// 创建一个新的 canvas 元素
|
|
121
|
+
var canvas = document.createElement('canvas');
|
|
122
|
+
// 设置 canvas 元素的宽度和高度
|
|
123
|
+
canvas.width = window.innerWidth;
|
|
124
|
+
canvas.height = window.innerHeight;
|
|
125
|
+
document.body.appendChild(canvas);
|
|
126
|
+
return canvas;
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
key: "delete",
|
|
130
|
+
value: function _delete() {}
|
|
131
|
+
}, {
|
|
132
|
+
key: "update",
|
|
133
|
+
value: function update() {}
|
|
134
|
+
}]);
|
|
135
|
+
return HeatMap;
|
|
136
|
+
}();
|
|
137
|
+
export default HeatMap;
|
|
138
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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","create","container","createDom","gradient","len","width","window","innerWidth","height","innerHeight","points","max","val","Math","floor","random","point","x","y","value","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"],"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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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { LineSegments, OrbitControls, PerspectiveCamera, Sprite, WebGLRenderer, lib } from '@anov/3d-core';
|
|
2
|
+
import { Mesh, Object3D, OrthographicCamera, Vector3, Vector4 } from '@anov/3d-core';
|
|
3
|
+
declare type GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z';
|
|
4
|
+
export declare type DomPlacement = 'top-left' | 'top-right' | 'top-center' | 'center-right' | 'center-left' | 'center-center' | 'bottom-left' | 'bottom-right' | 'bottom-center';
|
|
5
|
+
declare class ViewHelper extends Object3D {
|
|
6
|
+
camera: OrthographicCamera | PerspectiveCamera;
|
|
7
|
+
orthoCamera: OrthographicCamera;
|
|
8
|
+
isViewHelper: boolean;
|
|
9
|
+
animating: boolean;
|
|
10
|
+
target: Vector3;
|
|
11
|
+
backgroundSphere: Mesh;
|
|
12
|
+
axesLines: LineSegments;
|
|
13
|
+
spritePoints: Sprite[];
|
|
14
|
+
domElement: HTMLElement;
|
|
15
|
+
domContainer: HTMLElement;
|
|
16
|
+
domRect: DOMRect;
|
|
17
|
+
dragging: boolean;
|
|
18
|
+
renderer: WebGLRenderer;
|
|
19
|
+
controls?: OrbitControls | lib.TrackballControls;
|
|
20
|
+
controlsChangeEvent: {
|
|
21
|
+
listener: () => void;
|
|
22
|
+
};
|
|
23
|
+
viewport: Vector4;
|
|
24
|
+
offsetHeight: number;
|
|
25
|
+
constructor(camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, placement?: DomPlacement, size?: number);
|
|
26
|
+
startListening(): void;
|
|
27
|
+
onPointerDown(e: PointerEvent): void;
|
|
28
|
+
onPointerMove(e: PointerEvent): void;
|
|
29
|
+
onPointerLeave(): void;
|
|
30
|
+
handleClick(e: PointerEvent): void;
|
|
31
|
+
handleHover(e: PointerEvent): void;
|
|
32
|
+
setControls(controls?: OrbitControls | lib.TrackballControls): void;
|
|
33
|
+
render(): void;
|
|
34
|
+
updateOrientation(fromCamera?: boolean): void;
|
|
35
|
+
update(): void;
|
|
36
|
+
animate(delta: number): void;
|
|
37
|
+
setOrientation(orientation: GizmoOrientation): void;
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
|
40
|
+
export default ViewHelper;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BufferGeometry, Color, LineBasicMaterial, LineSegments, Sprite, SpriteMaterial } from '@anov/3d-core';
|
|
2
|
+
import type { DomPlacement } from './index';
|
|
3
|
+
export declare const getDomContainer: (placement: DomPlacement, size: number) => HTMLDivElement;
|
|
4
|
+
export declare const getAxesLines: () => LineSegments<BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, LineBasicMaterial>;
|
|
5
|
+
export declare const getSpriteMaterial: (color: Color, text?: 'x' | 'y' | 'z' | null) => SpriteMaterial;
|
|
6
|
+
export declare const getAxesSpritePoints: () => Sprite[];
|
package/dist/index.d.ts
CHANGED
|
@@ -13,8 +13,12 @@ import createVolumetricCloud from './environment/volumetricCloud/inex';
|
|
|
13
13
|
import createSkyCloud from './environment/shaderCloud/index';
|
|
14
14
|
import Snow from './environment/showShader';
|
|
15
15
|
import Rain from './environment/rainShader';
|
|
16
|
-
import Poi from './poi
|
|
17
|
-
|
|
16
|
+
import Poi, { EPoiType } from './poi';
|
|
17
|
+
import HeatMap from './heatmap/index';
|
|
18
|
+
import SkyBox from './environment/skyBox';
|
|
19
|
+
import Camera from './camera/index';
|
|
20
|
+
import { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve';
|
|
21
|
+
export * from './scene';
|
|
18
22
|
export { SceneControl, // todo remove
|
|
19
|
-
mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, initPostEffects, // effect
|
|
20
|
-
createHighSelectedTool, GridMaterial, ViewHelper, };
|
|
23
|
+
mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, EPoiType, HeatMap, initPostEffects, // effect
|
|
24
|
+
createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, };
|