@anov/3d 0.0.4-alpha30 → 0.0.4-alpha32
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/factory/3d.d.ts +4 -0
- package/dist/factory/3d.js +40 -65
- package/dist/factory/3d.js.map +1 -1
- package/dist/factory/type.d.ts +10 -0
- package/dist/factory/type.js +2 -0
- package/dist/factory/type.js.map +1 -0
- package/dist/factory/unit/CameraPoi.d.ts +11 -0
- package/dist/factory/unit/CameraPoi.js +103 -0
- package/dist/factory/unit/CameraPoi.js.map +1 -0
- package/dist/factory/unit/areaBoundingBox.d.ts +1 -1
- package/dist/factory/unit/areaBoundingBox.js.map +1 -1
- package/dist/factory/unit/circle.d.ts +1 -0
- package/dist/factory/unit/circle.js +15 -11
- package/dist/factory/unit/circle.js.map +1 -1
- package/dist/factory/unit/cylinder.js +0 -14
- package/dist/factory/unit/cylinder.js.map +1 -1
- package/dist/factory/unit/glsl/point/fragment.glsl +12 -0
- package/dist/factory/unit/glsl/point/vertex.glsl +7 -0
- package/dist/factory/unit/index.d.ts +6 -0
- package/dist/factory/unit/index.js +102 -15
- package/dist/factory/unit/index.js.map +1 -1
- package/dist/factory/unit/inspection.d.ts +30 -0
- package/dist/factory/unit/inspection.js +220 -0
- package/dist/factory/unit/inspection.js.map +1 -0
- package/dist/factory/unit/poi.d.ts +2 -1
- package/dist/factory/unit/poi.js +31 -16
- package/dist/factory/unit/poi.js.map +1 -1
- package/dist/factory/unit/point.js +5 -4
- package/dist/factory/unit/point.js.map +1 -1
- package/dist/factory/unit/wall.js +4 -0
- package/dist/factory/unit/wall.js.map +1 -1
- package/dist/factory/utils/switchMaterial.js +7 -5
- package/dist/factory/utils/switchMaterial.js.map +1 -1
- package/package.json +2 -2
package/dist/factory/unit/poi.js
CHANGED
|
@@ -13,7 +13,6 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
13
13
|
import { Vector3, utils } from '@anov/3d-core';
|
|
14
14
|
import { EPoiType, Poi } from '@anov/3d-ability';
|
|
15
15
|
import { regionMap } from "../regionData";
|
|
16
|
-
import { POI_IMG } from "../utils/base64";
|
|
17
16
|
var PoiManage = /*#__PURE__*/function () {
|
|
18
17
|
function PoiManage(gobal) {
|
|
19
18
|
_classCallCheck(this, PoiManage);
|
|
@@ -21,6 +20,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
21
20
|
_defineProperty(this, "scene", void 0);
|
|
22
21
|
_defineProperty(this, "dialogPoi", void 0);
|
|
23
22
|
_defineProperty(this, "poiMesh", new Map());
|
|
23
|
+
_defineProperty(this, "poiEventListener", new Map());
|
|
24
24
|
_defineProperty(this, "wallManage", void 0);
|
|
25
25
|
_defineProperty(this, "interactionManager", void 0);
|
|
26
26
|
this.gobal = gobal;
|
|
@@ -34,7 +34,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
34
34
|
var _this = this;
|
|
35
35
|
Object.keys(regionMap).forEach( /*#__PURE__*/function () {
|
|
36
36
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(key) {
|
|
37
|
-
var region, option, poi, sprite, changeWallState;
|
|
37
|
+
var region, option, poi, sprite, changeWallState, unClick;
|
|
38
38
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
39
39
|
while (1) switch (_context.prev = _context.next) {
|
|
40
40
|
case 0:
|
|
@@ -44,7 +44,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
44
44
|
}, (region.id === '4' || region.id === '5') && {
|
|
45
45
|
width: 260,
|
|
46
46
|
height: 260,
|
|
47
|
-
img:
|
|
47
|
+
img: './poi_big.png'
|
|
48
48
|
});
|
|
49
49
|
poi = new Poi(EPoiType.Line);
|
|
50
50
|
sprite = poi.create(region.title, option);
|
|
@@ -68,9 +68,10 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
68
68
|
sprite.addEventListener('mouseout', function () {
|
|
69
69
|
changeWallState(false);
|
|
70
70
|
});
|
|
71
|
-
sprite.addEventListener('click', function (event) {
|
|
71
|
+
unClick = sprite.addEventListener('click', function (event) {
|
|
72
72
|
if (!sprite.visible) return;
|
|
73
73
|
_this.reset();
|
|
74
|
+
|
|
74
75
|
// 光墙
|
|
75
76
|
var wall = _this.wallManage.wallMesh.get(region.id);
|
|
76
77
|
wall.visible = true;
|
|
@@ -78,7 +79,8 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
78
79
|
sprite.visible = false;
|
|
79
80
|
_this.addDialogPanel(region, event.point);
|
|
80
81
|
});
|
|
81
|
-
|
|
82
|
+
_this.poiEventListener.set(region.poi.id, unClick);
|
|
83
|
+
case 13:
|
|
82
84
|
case "end":
|
|
83
85
|
return _context.stop();
|
|
84
86
|
}
|
|
@@ -90,22 +92,35 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
90
92
|
}());
|
|
91
93
|
}
|
|
92
94
|
}, {
|
|
93
|
-
key: "
|
|
94
|
-
value: function
|
|
95
|
-
var
|
|
95
|
+
key: "remove",
|
|
96
|
+
value: function remove() {
|
|
97
|
+
var _this2 = this;
|
|
96
98
|
// 控制POI点的隐藏、显示
|
|
97
99
|
this.poiMesh.forEach(function (poi) {
|
|
98
|
-
poi
|
|
100
|
+
_this2.interactionManager.remove(poi);
|
|
101
|
+
poi.removeFromParent();
|
|
102
|
+
poi.remove();
|
|
103
|
+
});
|
|
104
|
+
// 取消事件监听
|
|
105
|
+
this.poiEventListener.forEach(function (f) {
|
|
106
|
+
f();
|
|
99
107
|
});
|
|
100
108
|
// 移除面板
|
|
101
109
|
if (this.dialogPoi) this.dialogPoi.removeFromParent();
|
|
110
|
+
this.poiMesh.clear();
|
|
111
|
+
this.poiEventListener.clear();
|
|
102
112
|
}
|
|
103
113
|
}, {
|
|
104
114
|
key: "reset",
|
|
105
115
|
value: function reset() {
|
|
106
116
|
var _this$wallManage;
|
|
107
117
|
// 控制POI点的隐藏、显示
|
|
108
|
-
|
|
118
|
+
// 控制POI点的隐藏、显示
|
|
119
|
+
this.poiMesh.forEach(function (poi) {
|
|
120
|
+
poi.visible = true;
|
|
121
|
+
});
|
|
122
|
+
// 移除面板
|
|
123
|
+
if (this.dialogPoi) this.dialogPoi.removeFromParent();
|
|
109
124
|
// 控制光墙的隐藏、显示
|
|
110
125
|
(_this$wallManage = this.wallManage) === null || _this$wallManage === void 0 ? void 0 : _this$wallManage.wallMesh.forEach(function (wall) {
|
|
111
126
|
wall.visible = false;
|
|
@@ -114,7 +129,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
114
129
|
}, {
|
|
115
130
|
key: "addDialogPanel",
|
|
116
131
|
value: function addDialogPanel(data, position) {
|
|
117
|
-
var
|
|
132
|
+
var _this3 = this;
|
|
118
133
|
// 添加面板
|
|
119
134
|
var poi = new Poi(EPoiType.Panel);
|
|
120
135
|
this.dialogPoi = poi.create({
|
|
@@ -126,11 +141,11 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
126
141
|
this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)));
|
|
127
142
|
this.scene.add(this.dialogPoi);
|
|
128
143
|
this.interactionManager.add(this.dialogPoi);
|
|
129
|
-
this.dialogPoi.addEventListener('click', function (
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
144
|
+
this.dialogPoi.addEventListener('click', function () {
|
|
145
|
+
_this3.dialogPoi.remove();
|
|
146
|
+
_this3.dialogPoi.removeFromParent();
|
|
147
|
+
_this3.dialogPoi = null;
|
|
148
|
+
_this3.reset();
|
|
134
149
|
});
|
|
135
150
|
}
|
|
136
151
|
}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","utils","EPoiType","Poi","regionMap","
|
|
1
|
+
{"version":3,"names":["Vector3","utils","EPoiType","Poi","regionMap","PoiManage","gobal","Map","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","id","width","height","img","poi","Line","sprite","create","title","position","copy","fromArray","add","poiMesh","set","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","remove","removeFromParent","f","clear","data","Panel","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene, Sprite } from '@anov/3d-core'\nimport { Vector3, utils } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Map<string, Function> = new Map()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: 80,\n ...((region.id === '4' || region.id === '5') && {\n width: 260,\n height: 260,\n img: './poi_big.png',\n }),\n }\n\n const poi = new Poi(EPoiType.Line)\n const sprite = poi.create(region.title, option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.set(region.poi.id, unClick)\n })\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n const poi = new Poi(EPoiType.Panel)\n this.dialogPoi = poi.create({ title: data.title, content: data.poi.content }, { print: true })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
|
@@ -7,8 +7,9 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
|
|
|
7
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
8
|
import { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Group, Points, ShaderMaterial } from '@anov/3d-core';
|
|
9
9
|
import { EPoiType, Poi } from '@anov/3d-ability';
|
|
10
|
-
import vertexShader from
|
|
11
|
-
import fragmentShader from
|
|
10
|
+
// import vertexShader from './glsl/point/vertex.glsl'
|
|
11
|
+
// import fragmentShader from './glsl/point/fragment.glsl'
|
|
12
|
+
|
|
12
13
|
var data = {
|
|
13
14
|
重整装置区: [{
|
|
14
15
|
id: 2,
|
|
@@ -36,8 +37,8 @@ var PointManage = /*#__PURE__*/function () {
|
|
|
36
37
|
var geometry = new BufferGeometry();
|
|
37
38
|
geometry.setAttribute('position', new BufferAttribute(new Float32Array(item.position), 3));
|
|
38
39
|
var point = new Points(geometry, new ShaderMaterial({
|
|
39
|
-
vertexShader:
|
|
40
|
-
fragmentShader:
|
|
40
|
+
vertexShader: "attribute float size;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = 20.0;\n gl_Position = projectionMatrix * mvPosition;\n }",
|
|
41
|
+
fragmentShader: "uniform vec3 color;\n\n void main() {\n float r = 0.0, delta = 0.0, alpha = 1.0;\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n r = dot(cxy, cxy);\n delta = fwidth(r);\n alpha = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n if(r > 1.0)\n discard;\n gl_FragColor = vec4(color, alpha);\n }",
|
|
41
42
|
uniforms: {
|
|
42
43
|
color: {
|
|
43
44
|
value: new Color('yellow')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdditiveBlending","BufferAttribute","BufferGeometry","Color","Group","Points","ShaderMaterial","EPoiType","Poi","
|
|
1
|
+
{"version":3,"names":["AdditiveBlending","BufferAttribute","BufferGeometry","Color","Group","Points","ShaderMaterial","EPoiType","Poi","data","重整装置区","id","name","position","PointManage","gobal","Map","scene","group","key","forEach","item","geometry","setAttribute","Float32Array","point","vertexShader","fragmentShader","uniforms","color","value","transparent","depthWrite","depthTest","blending","interactionManager","add","addEventListener","poi","Line","peoplePoi","create","copy","pointGroupMap","set"],"sources":["../../../src/factory/unit/point.ts"],"sourcesContent":["import type { Object3D, Scene } from '@anov/3d-core'\nimport { AdditiveBlending, BufferAttribute, BufferGeometry, Color, Group, Points, ShaderMaterial } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\n\n// import vertexShader from './glsl/point/vertex.glsl'\n// import fragmentShader from './glsl/point/fragment.glsl'\n\nconst data = {\n 重整装置区: [\n {\n id: 2,\n name: 'xxx',\n position: [15.23, -0.00, 158.30],\n },\n ],\n}\n\nclass PointManage {\n private pointGroupMap: Map<string, Group> = new Map()\n private scene: Scene\n private gobal: Factory3D\n private peoplePoi: Object3D\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n }\n\n generatePoint() {\n for (const key in data) {\n const group = new Group()\n\n data[key].forEach((item) => {\n const geometry = new BufferGeometry()\n geometry.setAttribute('position', new BufferAttribute(new Float32Array(item.position), 3))\n\n const point = new Points(geometry,\n new ShaderMaterial({\n vertexShader: `attribute float size;\n\n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = 20.0;\n gl_Position = projectionMatrix * mvPosition;\n }`,\n fragmentShader: `uniform vec3 color;\n\n void main() {\n float r = 0.0, delta = 0.0, alpha = 1.0;\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n r = dot(cxy, cxy);\n delta = fwidth(r);\n alpha = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n if(r > 1.0)\n discard;\n gl_FragColor = vec4(color, alpha);\n }`,\n uniforms: {\n color: { value: new Color('yellow') },\n },\n transparent: true,\n depthWrite: false,\n depthTest: false,\n blending: AdditiveBlending,\n }),\n )\n this.gobal.interactionManager.add(point)\n\n point.addEventListener('mouseover', () => {\n const poi = new Poi(EPoiType.Line)\n this.peoplePoi = poi.create(item.name)\n this.peoplePoi.position.copy(point.position)\n this.scene.add(this.peoplePoi)\n })\n group.add(point)\n })\n\n this.scene.add(group)\n this.pointGroupMap.set(key, group)\n }\n }\n}\n\nexport default PointManage"],"mappings":";;;;;;;AACA,SAASA,gBAAgB,EAAEC,eAAe,EAAEC,cAAc,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAEC,cAAc,QAAQ,eAAe;AACvH,SAASC,QAAQ,EAAEC,GAAG,QAAQ,kBAAkB;AAGhD;AACA;;AAEA,IAAMC,IAAI,GAAG;EACXC,KAAK,EAAE,CACL;IACEC,EAAE,EAAE,CAAC;IACLC,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM;EACjC,CAAC;AAEL,CAAC;AAAA,IAEKC,WAAW;EAMf,qBAAYC,KAAgB,EAAE;IAAA;IAAA,uCALc,IAAIC,GAAG,EAAE;IAAA;IAAA;IAAA;IAMnD,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,KAAK,GAAGF,KAAK,CAACE,KAAK,CAACA,KAAK;EAChC;EAAC;IAAA;IAAA,OAED,yBAAgB;MAAA;MAAA,6BACU;QACtB,IAAMC,KAAK,GAAG,IAAId,KAAK,EAAE;QAEzBK,IAAI,CAACU,GAAG,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;UAC1B,IAAMC,QAAQ,GAAG,IAAIpB,cAAc,EAAE;UACrCoB,QAAQ,CAACC,YAAY,CAAC,UAAU,EAAE,IAAItB,eAAe,CAAC,IAAIuB,YAAY,CAACH,IAAI,CAACR,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;UAE1F,IAAMY,KAAK,GAAG,IAAIpB,MAAM,CAACiB,QAAQ,EAC/B,IAAIhB,cAAc,CAAC;YACjBoB,YAAY,mPAMV;YACFC,cAAc,mbAWZ;YACFC,QAAQ,EAAE;cACRC,KAAK,EAAE;gBAAEC,KAAK,EAAE,IAAI3B,KAAK,CAAC,QAAQ;cAAE;YACtC,CAAC;YACD4B,WAAW,EAAE,IAAI;YACjBC,UAAU,EAAE,KAAK;YACjBC,SAAS,EAAE,KAAK;YAChBC,QAAQ,EAAElC;UACZ,CAAC,CAAC,CACH;UACD,KAAI,CAACe,KAAK,CAACoB,kBAAkB,CAACC,GAAG,CAACX,KAAK,CAAC;UAExCA,KAAK,CAACY,gBAAgB,CAAC,WAAW,EAAE,YAAM;YACxC,IAAMC,GAAG,GAAG,IAAI9B,GAAG,CAACD,QAAQ,CAACgC,IAAI,CAAC;YAClC,KAAI,CAACC,SAAS,GAAGF,GAAG,CAACG,MAAM,CAACpB,IAAI,CAACT,IAAI,CAAC;YACtC,KAAI,CAAC4B,SAAS,CAAC3B,QAAQ,CAAC6B,IAAI,CAACjB,KAAK,CAACZ,QAAQ,CAAC;YAC5C,KAAI,CAACI,KAAK,CAACmB,GAAG,CAAC,KAAI,CAACI,SAAS,CAAC;UAChC,CAAC,CAAC;UACFtB,KAAK,CAACkB,GAAG,CAACX,KAAK,CAAC;QAClB,CAAC,CAAC;QAEF,KAAI,CAACR,KAAK,CAACmB,GAAG,CAAClB,KAAK,CAAC;QACrB,KAAI,CAACyB,aAAa,CAACC,GAAG,CAACzB,GAAG,EAAED,KAAK,CAAC;MACpC,CAAC;MAlDD,KAAK,IAAMC,GAAG,IAAIV,IAAI;QAAA;MAAA;IAmDxB;EAAC;EAAA;AAAA;AAGH,eAAeK,WAAW"}
|
|
@@ -8,6 +8,10 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
8
8
|
import { createRoundLineWallMesh } from '@anov/3d-ability';
|
|
9
9
|
import { ShaderMaterial, Vector3 } from '@anov/3d-core';
|
|
10
10
|
import regionMap from "../regionData";
|
|
11
|
+
|
|
12
|
+
// import wallVertexShader from './glsl/wall/vertexShader.glsl'
|
|
13
|
+
// import wallFragmentShader from './glsl/wall/fragmentShader.glsl'
|
|
14
|
+
|
|
11
15
|
var wallPosition = [{
|
|
12
16
|
label: regionMap.reform.title,
|
|
13
17
|
id: '1',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","wallPosition","label","reform","title","id","belongTo","points","area","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","walllMaterial","uniforms","iTime","value","size","width","speed","alpha","color1","color2","vertexShader","fragmentShader","transparent","side","depthTest","WallManage","gobal","options","Map","scene","option","forEach","item","roundLineMesh","map","v","radius","close","visible","wallMesh","set","add"],"sources":["../../../src/factory/unit/wall.ts"],"sourcesContent":["import { createRoundLineWallMesh } from '@anov/3d-ability'\nimport type { Object3D, Scene } from '@anov/3d-core'\nimport { ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport type Factory3D from '../3d'\nimport regionMap from '../regionData'\n\nconst wallPosition = [\n {\n label: regionMap.reform.title,\n id: '1',\n belongTo: regionMap.reform.id,\n points: regionMap.reform.area,\n },\n {\n label: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n points: regionMap.reduction.area,\n },\n {\n label: regionMap.crudeOil.title,\n id: '3',\n belongTo: regionMap.crudeOil.id,\n points: regionMap.crudeOil.area,\n },\n {\n label: regionMap.catalyticCracking.title,\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n points: regionMap.catalyticCracking.area,\n },\n {\n label: regionMap.hydrocrackingUnit.title,\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n points: regionMap.hydrocrackingUnit.area,\n },\n {\n label: regionMap.cokingUnit.title,\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n points: regionMap.cokingUnit.area,\n },\n {\n label: regionMap.administrative.title,\n id: '7',\n belongTo: regionMap.administrative.id,\n points: regionMap.administrative.area,\n },\n]\n\nconst walllMaterial = new ShaderMaterial({\n uniforms: {\n iTime: {\n value: 0,\n },\n size: {\n value: 16.0,\n },\n width: {\n value: 0.4,\n },\n speed: {\n value: 1.0,\n },\n alpha: {\n value: 0.2,\n },\n color1: {\n value: [0.0, 0.9, 0.0],\n },\n color2: {\n value: [0.0, 0.2, 0.8],\n },\n },\n vertexShader: `varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `uniform float iTime;\n uniform float size;////循环\n uniform float width;///宽度\n uniform float speed;///速度\n uniform float alpha;///透明度\n uniform vec3 color1;///颜色1\n uniform vec3 color2;///颜色2\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\ntype WallManageOption = {\n visible?: boolean\n}\nclass WallManage {\n private scene: Scene\n readonly wallMesh: Map<string, Object3D> = new Map()\n private option: WallManageOption\n\n private time = 0\n\n constructor(gobal: Factory3D, options?: WallManageOption) {\n this.scene = gobal.scene.scene\n this.option = options || {}\n }\n\n generateWall() {\n // setInterval(() => {\n // this.time += 0.001\n // walllMaterial.uniforms.iTime.value = this.time\n // })\n\n wallPosition.forEach((item) => {\n const roundLineMesh = createRoundLineWallMesh(item.points.map(v => new Vector3(v[0], v[1], v[2])), {\n radius: 0,\n close: true,\n }, walllMaterial)\n roundLineMesh.visible = this.option?.visible ?? true\n this.wallMesh.set(item.id, roundLineMesh)\n this.scene.add(roundLineMesh)\n })\n }\n}\n\nexport default WallManage"],"mappings":";;;;;;;AAAA,SAASA,uBAAuB,QAAQ,kBAAkB;AAE1D,SAASC,cAAc,EAAEC,OAAO,QAAQ,eAAe;AAEvD,OAAOC,SAAS;
|
|
1
|
+
{"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","wallPosition","label","reform","title","id","belongTo","points","area","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","walllMaterial","uniforms","iTime","value","size","width","speed","alpha","color1","color2","vertexShader","fragmentShader","transparent","side","depthTest","WallManage","gobal","options","Map","scene","option","forEach","item","roundLineMesh","map","v","radius","close","visible","wallMesh","set","add"],"sources":["../../../src/factory/unit/wall.ts"],"sourcesContent":["import { createRoundLineWallMesh } from '@anov/3d-ability'\nimport type { Object3D, Scene } from '@anov/3d-core'\nimport { ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport type Factory3D from '../3d'\nimport regionMap from '../regionData'\n\n// import wallVertexShader from './glsl/wall/vertexShader.glsl'\n// import wallFragmentShader from './glsl/wall/fragmentShader.glsl'\n\nconst wallPosition = [\n {\n label: regionMap.reform.title,\n id: '1',\n belongTo: regionMap.reform.id,\n points: regionMap.reform.area,\n },\n {\n label: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n points: regionMap.reduction.area,\n },\n {\n label: regionMap.crudeOil.title,\n id: '3',\n belongTo: regionMap.crudeOil.id,\n points: regionMap.crudeOil.area,\n },\n {\n label: regionMap.catalyticCracking.title,\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n points: regionMap.catalyticCracking.area,\n },\n {\n label: regionMap.hydrocrackingUnit.title,\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n points: regionMap.hydrocrackingUnit.area,\n },\n {\n label: regionMap.cokingUnit.title,\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n points: regionMap.cokingUnit.area,\n },\n {\n label: regionMap.administrative.title,\n id: '7',\n belongTo: regionMap.administrative.id,\n points: regionMap.administrative.area,\n },\n]\n\nconst walllMaterial = new ShaderMaterial({\n uniforms: {\n iTime: {\n value: 0,\n },\n size: {\n value: 16.0,\n },\n width: {\n value: 0.4,\n },\n speed: {\n value: 1.0,\n },\n alpha: {\n value: 0.2,\n },\n color1: {\n value: [0.0, 0.9, 0.0],\n },\n color2: {\n value: [0.0, 0.2, 0.8],\n },\n },\n vertexShader: `varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `uniform float iTime;\n uniform float size;////循环\n uniform float width;///宽度\n uniform float speed;///速度\n uniform float alpha;///透明度\n uniform vec3 color1;///颜色1\n uniform vec3 color2;///颜色2\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\ntype WallManageOption = {\n visible?: boolean\n}\nclass WallManage {\n private scene: Scene\n readonly wallMesh: Map<string, Object3D> = new Map()\n private option: WallManageOption\n\n private time = 0\n\n constructor(gobal: Factory3D, options?: WallManageOption) {\n this.scene = gobal.scene.scene\n this.option = options || {}\n }\n\n generateWall() {\n // setInterval(() => {\n // this.time += 0.001\n // walllMaterial.uniforms.iTime.value = this.time\n // })\n\n wallPosition.forEach((item) => {\n const roundLineMesh = createRoundLineWallMesh(item.points.map(v => new Vector3(v[0], v[1], v[2])), {\n radius: 0,\n close: true,\n }, walllMaterial)\n roundLineMesh.visible = this.option?.visible ?? true\n this.wallMesh.set(item.id, roundLineMesh)\n this.scene.add(roundLineMesh)\n })\n }\n}\n\nexport default WallManage"],"mappings":"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"}
|
|
@@ -94,11 +94,13 @@ var switchMaterialV2 = function switchMaterialV2(mesh, material, options) {
|
|
|
94
94
|
worldPosition.distanceTo(new Vector3(0, 0, 0));
|
|
95
95
|
if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value) currentMaterial.depthWrite = false;
|
|
96
96
|
if (oldShader.uniforms.time.value > end) {
|
|
97
|
-
(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
requestAnimationFrame(function () {
|
|
98
|
+
(options === null || options === void 0 ? void 0 : options.callback) && options.callback();
|
|
99
|
+
requestAnimationFrame(function () {
|
|
100
|
+
mesh.material = lastMaterial;
|
|
101
|
+
oldShader.uniforms.time.value = 0;
|
|
102
|
+
});
|
|
103
|
+
});
|
|
102
104
|
cancellation();
|
|
103
105
|
}
|
|
104
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","use","switchMaterial","mesh","material","options","lastMaterial","clone","currentMaterial","speed","start","end","transparent","oldShader","onBeforeCompile","shader","uniforms","time","value","min_length","vertexShader","replace","join","fragmentShader","cancellation","useframe","worldPosition","getWorldPosition","x","depthWrite","callback","setTimeout","switchMaterialV2","center","y","z","distanceTo"],"sources":["../../../src/factory/utils/switchMaterial.ts"],"sourcesContent":["import type { Material, Object3D, Shader } from '@anov/3d-core'\nimport { Vector3, use } from '@anov/3d-core'\n\ntype SwitchMaterialOptions = {\n speed?: number\n start?: number\n end?: number\n callback?: () => void\n}\n\nconst switchMaterial = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: start }\n shader.uniforms.speed = { value: 1.0 }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n if(vWorldPosition.x < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n if (worldPosition.x < start + oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\n/**\n * todo 代码合并\n * @param mesh\n * @param material\n * @param options\n */\nconst switchMaterialV2 = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: 0 }\n shader.uniforms.speed = { value: 1.0 }\n shader.uniforms.center = { value: { x: 0, y: 0, z: 0 } }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float center;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n\n if(distance(vec3(vWorldPosition.x,0,vWorldPosition.z), vec3(0,0,0)) < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n worldPosition.distanceTo(new Vector3(0, 0, 0))\n\n if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n
|
|
1
|
+
{"version":3,"names":["Vector3","use","switchMaterial","mesh","material","options","lastMaterial","clone","currentMaterial","speed","start","end","transparent","oldShader","onBeforeCompile","shader","uniforms","time","value","min_length","vertexShader","replace","join","fragmentShader","cancellation","useframe","worldPosition","getWorldPosition","x","depthWrite","callback","setTimeout","switchMaterialV2","center","y","z","distanceTo","requestAnimationFrame"],"sources":["../../../src/factory/utils/switchMaterial.ts"],"sourcesContent":["import type { Material, Object3D, Shader } from '@anov/3d-core'\nimport { Vector3, use } from '@anov/3d-core'\n\ntype SwitchMaterialOptions = {\n speed?: number\n start?: number\n end?: number\n callback?: () => void\n}\n\nconst switchMaterial = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: start }\n shader.uniforms.speed = { value: 1.0 }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n if(vWorldPosition.x < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n if (worldPosition.x < start + oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\n/**\n * todo 代码合并\n * @param mesh\n * @param material\n * @param options\n */\nconst switchMaterialV2 = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: 0 }\n shader.uniforms.speed = { value: 1.0 }\n shader.uniforms.center = { value: { x: 0, y: 0, z: 0 } }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float center;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n\n if(distance(vec3(vWorldPosition.x,0,vWorldPosition.z), vec3(0,0,0)) < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n worldPosition.distanceTo(new Vector3(0, 0, 0))\n\n if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n requestAnimationFrame(() => {\n options?.callback && options.callback()\n\n requestAnimationFrame(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n })\n })\n\n cancellation()\n }\n }\n })\n}\n\nexport default switchMaterialV2"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d",
|
|
3
|
-
"version": "0.0.4-
|
|
3
|
+
"version": "0.0.4-alpha32",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"localforage": "^1.10.0",
|
|
22
22
|
"uuid": "^9.0.1",
|
|
23
23
|
"@anov/3d-ability": "^0.0.4-alpha12",
|
|
24
|
-
"@anov/3d-core": "^0.0.4-
|
|
24
|
+
"@anov/3d-core": "^0.0.4-alpha22"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/uuid": "^9.0.7"
|