@anov/3d 0.0.4-alpha31 → 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.
|
@@ -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,8 +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
|
|
11
|
+
|
|
12
|
+
// import wallVertexShader from './glsl/wall/vertexShader.glsl'
|
|
13
|
+
// import wallFragmentShader from './glsl/wall/fragmentShader.glsl'
|
|
14
|
+
|
|
13
15
|
var wallPosition = [{
|
|
14
16
|
label: regionMap.reform.title,
|
|
15
17
|
id: '1',
|
|
@@ -70,8 +72,8 @@ var walllMaterial = new ShaderMaterial({
|
|
|
70
72
|
value: [0.0, 0.2, 0.8]
|
|
71
73
|
}
|
|
72
74
|
},
|
|
73
|
-
vertexShader:
|
|
74
|
-
fragmentShader:
|
|
75
|
+
vertexShader: "varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
|
|
76
|
+
fragmentShader: "uniform float iTime;\n uniform float size;////\u5FAA\u73AF\n uniform float width;///\u5BBD\u5EA6\n uniform float speed;///\u901F\u5EA6\n uniform float alpha;///\u900F\u660E\u5EA6\n uniform vec3 color1;///\u989C\u82721\n uniform vec3 color2;///\u989C\u82722\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 ",
|
|
75
77
|
transparent: true,
|
|
76
78
|
side: 2,
|
|
77
79
|
depthTest: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","
|
|
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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"}
|
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",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"@tweenjs/tween.js": "^21.0.0",
|
|
21
21
|
"localforage": "^1.10.0",
|
|
22
22
|
"uuid": "^9.0.1",
|
|
23
|
-
"@anov/3d-
|
|
24
|
-
"@anov/3d-
|
|
23
|
+
"@anov/3d-ability": "^0.0.4-alpha12",
|
|
24
|
+
"@anov/3d-core": "^0.0.4-alpha22"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/uuid": "^9.0.7"
|