@anov/3d-ability 0.0.89 → 0.0.91
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/business/Area/Fence/FenceBase.d.ts +3 -3
- package/dist/business/Area/Fence/FenceBase.js +6 -6
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +4 -3
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +4 -3
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +4 -3
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.d.ts +3 -3
- package/dist/business/Area/FillArea/FillAreaBase.js +6 -6
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/index.js +4 -4
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Area/type.d.ts +2 -2
- package/dist/business/Area/type.js.map +1 -1
- package/dist/business/Base/ObjectLayer.d.ts +2 -4
- package/dist/business/Base/ObjectLayer.js +3 -24
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.d.ts +4 -4
- package/dist/business/Batch/index.js +17 -17
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Flyline/bubble/CircleBubble.d.ts +3 -0
- package/dist/business/Flyline/bubble/CircleBubble.js +11 -0
- package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -0
- package/dist/business/Flyline/bubble/index.d.ts +3 -0
- package/dist/business/Flyline/bubble/index.js +27 -0
- package/dist/business/Flyline/bubble/index.js.map +1 -0
- package/dist/business/Flyline/index.d.ts +23 -0
- package/dist/business/{Poi/Dom → Flyline}/index.js +142 -92
- package/dist/business/Flyline/index.js.map +1 -0
- package/dist/business/Flyline/line/ArcLine.d.ts +41 -0
- package/dist/business/Flyline/line/ArcLine.js +315 -0
- package/dist/business/Flyline/line/ArcLine.js.map +1 -0
- package/dist/business/Flyline/line/index.d.ts +4 -0
- package/dist/business/Flyline/line/index.js +28 -0
- package/dist/business/Flyline/line/index.js.map +1 -0
- package/dist/business/Flyline/type.d.ts +29 -0
- package/dist/business/Flyline/type.js +2 -0
- package/dist/business/Flyline/type.js.map +1 -0
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/Poi/index.d.ts +37 -3
- package/dist/business/Poi/index.js +345 -3
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/{Plane/link → link}/Cylinder.d.ts +7 -4
- package/dist/business/Poi/{Plane/link → link}/Cylinder.js +29 -17
- package/dist/business/Poi/link/Cylinder.js.map +1 -0
- package/dist/business/Poi/{Plane/link → link}/Pyramid.d.ts +6 -4
- package/dist/business/Poi/{Plane/link → link}/Pyramid.js +23 -13
- package/dist/business/Poi/link/Pyramid.js.map +1 -0
- package/dist/business/Poi/link/index.d.ts +23 -0
- package/dist/business/Poi/{Plane/link → link}/index.js +35 -11
- package/dist/business/Poi/link/index.js.map +1 -0
- package/dist/business/Poi/particle/SingleCircle.d.ts +13 -0
- package/dist/business/Poi/{Plane/particle → particle}/SingleCircle.js +42 -21
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -0
- package/dist/business/Poi/particle/index.d.ts +17 -0
- package/dist/business/Poi/{Plane/particle → particle}/index.js +30 -6
- package/dist/business/Poi/particle/index.js.map +1 -0
- package/dist/business/Poi/{Plane/shader → shader}/circle.d.ts +4 -0
- package/dist/business/Poi/shader/circle.js +15 -0
- package/dist/business/Poi/shader/circle.js.map +1 -0
- package/dist/business/Poi/shader/cylinder.js.map +1 -0
- package/dist/business/Poi/{Plane/title → title}/Border.d.ts +1 -1
- package/dist/business/Poi/{Plane/title → title}/Border.js +3 -3
- package/dist/business/Poi/title/Border.js.map +1 -0
- package/dist/business/Poi/{Plane/title → title}/Ellipse.d.ts +1 -1
- package/dist/business/Poi/{Plane/title → title}/Ellipse.js +3 -3
- package/dist/business/Poi/title/Ellipse.js.map +1 -0
- package/dist/business/Poi/title/index.d.ts +48 -0
- package/dist/business/Poi/{Plane/title → title}/index.js +142 -59
- package/dist/business/Poi/title/index.js.map +1 -0
- package/dist/business/Poi/tools.js.map +1 -0
- package/dist/business/Poi/{Plane/types.d.ts → types.d.ts} +7 -9
- package/dist/business/Poi/types.js.map +1 -0
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.d.ts +4 -0
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +24 -3
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/index.d.ts +1 -0
- package/dist/business/index.js +1 -0
- package/dist/business/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/business/Poi/Dom/index.d.ts +0 -18
- package/dist/business/Poi/Dom/index.js.map +0 -1
- package/dist/business/Poi/Dom/types.d.ts +0 -6
- package/dist/business/Poi/Dom/types.js.map +0 -1
- package/dist/business/Poi/Plane/index.d.ts +0 -40
- package/dist/business/Poi/Plane/index.js +0 -354
- package/dist/business/Poi/Plane/index.js.map +0 -1
- package/dist/business/Poi/Plane/link/Cylinder.js.map +0 -1
- package/dist/business/Poi/Plane/link/Pyramid.js.map +0 -1
- package/dist/business/Poi/Plane/link/index.d.ts +0 -19
- package/dist/business/Poi/Plane/link/index.js.map +0 -1
- package/dist/business/Poi/Plane/particle/SingleCircle.d.ts +0 -9
- package/dist/business/Poi/Plane/particle/SingleCircle.js.map +0 -1
- package/dist/business/Poi/Plane/particle/index.d.ts +0 -13
- package/dist/business/Poi/Plane/particle/index.js.map +0 -1
- package/dist/business/Poi/Plane/shader/circle.js +0 -11
- package/dist/business/Poi/Plane/shader/circle.js.map +0 -1
- package/dist/business/Poi/Plane/shader/cylinder.js.map +0 -1
- package/dist/business/Poi/Plane/title/Border.js.map +0 -1
- package/dist/business/Poi/Plane/title/Ellipse.js.map +0 -1
- package/dist/business/Poi/Plane/title/index.d.ts +0 -36
- package/dist/business/Poi/Plane/title/index.js.map +0 -1
- package/dist/business/Poi/Plane/types.js +0 -2
- package/dist/business/Poi/Plane/types.js.map +0 -1
- package/dist/business/Poi/Utils/tools.js.map +0 -1
- /package/dist/business/Poi/{Plane/shader → shader}/cylinder.d.ts +0 -0
- /package/dist/business/Poi/{Plane/shader → shader}/cylinder.js +0 -0
- /package/dist/business/Poi/{Utils/tools.d.ts → tools.d.ts} +0 -0
- /package/dist/business/Poi/{Utils/tools.js → tools.js} +0 -0
- /package/dist/business/Poi/{Dom/types.js → types.js} +0 -0
|
@@ -9,14 +9,14 @@ declare class FenceBase extends ObjectLayer {
|
|
|
9
9
|
_corner: number;
|
|
10
10
|
_close: boolean;
|
|
11
11
|
_points: Vector3[];
|
|
12
|
-
|
|
12
|
+
_uri: string;
|
|
13
13
|
_option: FenceOption;
|
|
14
14
|
_listeners: Set<unknown>;
|
|
15
15
|
private _areaInstance;
|
|
16
16
|
constructor(option: FenceOption, _areaInstance: Object3D);
|
|
17
17
|
get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]>;
|
|
18
|
-
get
|
|
19
|
-
set
|
|
18
|
+
get uri(): string;
|
|
19
|
+
set uri(value: string);
|
|
20
20
|
get height(): number;
|
|
21
21
|
set height(newValue: number);
|
|
22
22
|
get color(): string;
|
|
@@ -28,7 +28,7 @@ var FenceBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
28
28
|
_defineProperty(_assertThisInitialized(_this), "_corner", void 0);
|
|
29
29
|
_defineProperty(_assertThisInitialized(_this), "_close", void 0);
|
|
30
30
|
_defineProperty(_assertThisInitialized(_this), "_points", void 0);
|
|
31
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
31
|
+
_defineProperty(_assertThisInitialized(_this), "_uri", void 0);
|
|
32
32
|
_defineProperty(_assertThisInitialized(_this), "_option", void 0);
|
|
33
33
|
_defineProperty(_assertThisInitialized(_this), "_listeners", new Set());
|
|
34
34
|
_defineProperty(_assertThisInitialized(_this), "_areaInstance", void 0);
|
|
@@ -45,14 +45,14 @@ var FenceBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
45
45
|
return this._mesh;
|
|
46
46
|
}
|
|
47
47
|
}, {
|
|
48
|
-
key: "
|
|
48
|
+
key: "uri",
|
|
49
49
|
get: function get() {
|
|
50
|
-
return this.
|
|
50
|
+
return this._uri;
|
|
51
51
|
},
|
|
52
52
|
set: function set(value) {
|
|
53
53
|
var _this2 = this;
|
|
54
|
-
if (this.
|
|
55
|
-
this.
|
|
54
|
+
if (this._uri === value) return;
|
|
55
|
+
this._uri = value;
|
|
56
56
|
// eslint-disable-next-line max-statements-per-line
|
|
57
57
|
this._listeners.forEach(function (cb) {
|
|
58
58
|
cb.call(_this2._areaInstance);
|
|
@@ -159,7 +159,7 @@ var FenceBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
159
159
|
this._height = option.height;
|
|
160
160
|
this._color = option.color;
|
|
161
161
|
this._points = option.points;
|
|
162
|
-
this.
|
|
162
|
+
this._uri = option.uri;
|
|
163
163
|
}
|
|
164
164
|
}, {
|
|
165
165
|
key: "delete",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ObjectLayer","hexToRGBA","parseRGBA","FenceBase","_ObjectLayer","_inherits","_super","_createSuper","option","_areaInstance","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Set","_option","_initParams","_createClass","key","get","_mesh","
|
|
1
|
+
{"version":3,"names":["ObjectLayer","hexToRGBA","parseRGBA","FenceBase","_ObjectLayer","_inherits","_super","_createSuper","option","_areaInstance","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Set","_option","_initParams","_createClass","key","get","_mesh","_uri","set","value","_this2","_listeners","forEach","cb","_height","newValue","_this3","_color","childrens","children","item","index","uniforms","material","color1","_parseRGBA","r","g","b","colorTemp","Number","toFixed","_alpha","alpha","_corner","_close","corner","close","height","color","_points","points","uri","_delete","remove","removeFromParent","dispose","delete","clear","addReloadListener","callback","add"],"sources":["../../../../src/business/Area/Fence/FenceBase.ts"],"sourcesContent":["import type { Group, Mesh, Object3D, ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport _ from 'lodash'\nimport { Color, use } from '@anov/3d-core'\nimport ObjectLayer from '../../Base/ObjectLayer'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\n\nclass FenceBase extends ObjectLayer {\n public _mesh!: Mesh\n public _height: number\n public _alpha: number\n public _color: string\n public _corner: number\n public _close: boolean\n public _points!: Vector3[]\n public _uri: string\n public _option: FenceOption\n public _listeners = new Set()\n\n private _areaInstance: Object3D\n constructor(option: FenceOption, _areaInstance: Object3D) {\n super()\n this._option = option\n // 属性赋值\n this._initParams(option)\n this._areaInstance = _areaInstance\n // this.setValues(_.mergeWith({}, defaultOption, option))\n }\n\n public get mesh() {\n return this._mesh\n }\n\n public get uri() {\n return this._uri\n }\n\n public set uri(value: string) {\n if (this._uri === value)\n return\n this._uri = value\n // eslint-disable-next-line max-statements-per-line\n this._listeners.forEach((cb: Function) => { cb.call(this._areaInstance) })\n }\n\n // Getter and Setter for fenceHeight property\n get height(): number {\n return this._height\n }\n\n set height(newValue: number) {\n if (this._height === newValue)\n return\n\n this._height = newValue\n\n // eslint-disable-next-line max-statements-per-line\n this._listeners.forEach((cb: Function) => { cb.call(this._areaInstance) })\n // if (this._mesh) {\n // const childrens = this._mesh.children\n // childrens.forEach((item, index) => {\n // const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n // if (uniforms.height)\n // uniforms.height.value = newValue\n // })\n // }\n }\n\n // Getter and Setter for fenceColor property\n get color(): string {\n return this._color\n }\n\n set color(newValue: string) {\n if (this._color === newValue)\n return\n\n this._color = newValue\n if (this._mesh) {\n const childrens = this._mesh.children\n childrens.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n if (uniforms.color1) {\n const { r, g, b } = parseRGBA(hexToRGBA(newValue))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n uniforms.color1.value = colorTemp\n }\n\n // uniforms.color2.value = new Color(newValue)\n })\n }\n }\n\n // Getter and Setter for fenceAlpha property\n get alpha(): number {\n return this._alpha\n }\n\n set alpha(newValue: number) {\n if (this._alpha === newValue)\n return\n\n this._alpha = newValue\n if (this._mesh) {\n const childrens = this._mesh.children\n childrens.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n if (uniforms.alpha)\n uniforms.alpha.value = newValue\n })\n }\n }\n\n get corner(): number {\n return this._corner\n }\n\n set corner(newValue: number) {\n if (this._corner === newValue)\n return\n\n this._corner = newValue\n }\n\n get close(): boolean {\n return this._close\n }\n\n set close(newValue: boolean) {\n if (this._close === newValue)\n return\n\n this._close = newValue\n }\n\n _initParams(option: FenceOption) {\n this._alpha = option.alpha\n this._corner = option.corner\n this._close = option.close\n this._height = option.height\n this._color = option.color\n this._points = option.points as unknown as Vector3[]\n this._uri = option.uri\n }\n\n public delete() {\n this._mesh.remove()\n this._mesh.removeFromParent()\n }\n\n // 销毁\n public dispose() {\n this.delete()\n this._listeners.clear()\n }\n\n // 注册监听\n public addReloadListener(callback: Function) {\n this._listeners.add(callback)\n }\n}\n\nexport default FenceBase\n"],"mappings":"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"}
|
|
@@ -93,15 +93,16 @@ var Fence_Base_01 = /*#__PURE__*/function (_FenceBase) {
|
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
// 顶点着色器
|
|
96
|
-
vertexShader: "\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n
|
|
96
|
+
vertexShader: "\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n #include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // \u4F7F\u7528\u6A21\u578B\u77E9\u9635\u65CB\u8F6C\u6CD5\u7EBF\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n ",
|
|
97
97
|
// 片元着色器
|
|
98
|
-
fragmentShader: "\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; //\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n // uniform float button;\n uniform float _height;\n uniform float iTime;\n uniform float _alpha;\n uniform vec3 color1;\n \n void main() {\n vec3 color2=vec3(0.,0.4235,0.749);\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.))*_alpha *step(button,myWp.y);\n \n }\n ",
|
|
98
|
+
fragmentShader: "\n #include <common>\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; //\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n // uniform float button;\n uniform float _height;\n uniform float iTime;\n uniform float _alpha;\n uniform vec3 color1;\n \n void main() {\n vec3 color2=vec3(0.,0.4235,0.749);\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.))*_alpha *step(button,myWp.y);\n \n }\n ",
|
|
99
99
|
// 设置材质为透明
|
|
100
100
|
transparent: true,
|
|
101
101
|
// 设置材质双面渲染,确保从正反两面都能正确显示
|
|
102
102
|
side: 2,
|
|
103
103
|
// 关闭深度测试
|
|
104
|
-
depthTest:
|
|
104
|
+
depthTest: true,
|
|
105
|
+
depthWrite: false
|
|
105
106
|
});
|
|
106
107
|
return material;
|
|
107
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ShaderMaterial","use","createRoundLineWallMesh","hexToRGBA","parseRGBA","FenceBase","Fence_Base_01","_FenceBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createFenceMesh","_points","_corner","_close","_height","_color","_alpha","add","points","radius","arguments","length","undefined","close","height","color","alpha","material","createFenceMaterial","mesh","useframe","children","forEach","item","index","uniforms","iTime","_parseRGBA","r","g","b","colorTemp","Number","toFixed","color1","vertexShader","fragmentShader","transparent","side","depthTest"],"sources":["../../../../src/business/Area/Fence/fence_base_01.ts"],"sourcesContent":["import type { Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ShaderMaterial, use } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '../../Utils/round-curve'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\nimport FenceBase from './FenceBase'\n\nclass Fence_Base_01 extends FenceBase {\n constructor(option: FenceOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createFenceMesh(\n this._points,\n this._corner,\n this._close,\n this._height,\n this._color,\n this._alpha,\n )\n this._mesh && this.add(this._mesh)\n }\n\n // 创建围栏网格对象\n createFenceMesh(points: Vector3[], radius = 0, close = true, height: number, color: string, alpha: number) {\n if (!points)\n return\n\n // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundLineWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\n use.useframe(() => {\n mesh.children.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.01\n })\n })\n return mesh\n }\n\n // 创建围栏材质\n createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial {\n const { r, g, b } = parseRGBA(hexToRGBA(color))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n // 创建一个ShaderMaterial实例,用于自定义围栏的渲染效果\n const material = new ShaderMaterial({\n uniforms: {\n // 材质颜色\n color1: {\n value: colorTemp,\n }, // 材质颜色2,用于渐变\n _alpha: { value: alpha },\n _height: { value: height },\n iTime: { value: 0.0 },\n },\n // 顶点着色器\n vertexShader: `\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n
|
|
1
|
+
{"version":3,"names":["ShaderMaterial","use","createRoundLineWallMesh","hexToRGBA","parseRGBA","FenceBase","Fence_Base_01","_FenceBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createFenceMesh","_points","_corner","_close","_height","_color","_alpha","add","points","radius","arguments","length","undefined","close","height","color","alpha","material","createFenceMaterial","mesh","useframe","children","forEach","item","index","uniforms","iTime","_parseRGBA","r","g","b","colorTemp","Number","toFixed","color1","vertexShader","fragmentShader","transparent","side","depthTest","depthWrite"],"sources":["../../../../src/business/Area/Fence/fence_base_01.ts"],"sourcesContent":["import type { Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ShaderMaterial, use } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '../../Utils/round-curve'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\nimport FenceBase from './FenceBase'\n\nclass Fence_Base_01 extends FenceBase {\n constructor(option: FenceOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createFenceMesh(\n this._points,\n this._corner,\n this._close,\n this._height,\n this._color,\n this._alpha,\n )\n this._mesh && this.add(this._mesh)\n }\n\n // 创建围栏网格对象\n createFenceMesh(points: Vector3[], radius = 0, close = true, height: number, color: string, alpha: number) {\n if (!points)\n return\n\n // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundLineWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\n use.useframe(() => {\n mesh.children.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.01\n })\n })\n return mesh\n }\n\n // 创建围栏材质\n createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial {\n const { r, g, b } = parseRGBA(hexToRGBA(color))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n // 创建一个ShaderMaterial实例,用于自定义围栏的渲染效果\n const material = new ShaderMaterial({\n uniforms: {\n // 材质颜色\n color1: {\n value: colorTemp,\n }, // 材质颜色2,用于渐变\n _alpha: { value: alpha },\n _height: { value: height },\n iTime: { value: 0.0 },\n },\n // 顶点着色器\n vertexShader: `\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n #include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // 使用模型矩阵旋转法线\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n `,\n // 片元着色器\n fragmentShader: `\n #include <common>\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; //\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n // uniform float button;\n uniform float _height;\n uniform float iTime;\n uniform float _alpha;\n uniform vec3 color1;\n \n void main() {\n vec3 color2=vec3(0.,0.4235,0.749);\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.))*_alpha *step(button,myWp.y);\n \n }\n `,\n // 设置材质为透明\n transparent: true,\n // 设置材质双面渲染,确保从正反两面都能正确显示\n side: 2,\n // 关闭深度测试\n depthTest: true,\n depthWrite: false,\n })\n\n return material\n }\n}\n\nexport default Fence_Base_01\n"],"mappings":"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"}
|
|
@@ -92,15 +92,16 @@ var Fence_Feeting_01 = /*#__PURE__*/function (_FenceBase) {
|
|
|
92
92
|
}
|
|
93
93
|
},
|
|
94
94
|
// 顶点着色器
|
|
95
|
-
vertexShader: "\n
|
|
95
|
+
vertexShader: "\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n \t#include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // \u4F7F\u7528\u6A21\u578B\u77E9\u9635\u65CB\u8F6C\u6CD5\u7EBF\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n ",
|
|
96
96
|
// 片元着色器
|
|
97
|
-
fragmentShader: "\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n \n uniform float _alpha;\n uniform float _height;\n uniform vec3 color1;\n uniform float iTime;\n \n\n\nconst int largeBlockCount = 80;\nconst int smallBlockCount = 20;\nconst int layerBlockCount = 10; // \u6DFB\u52A0\u7684\u4E24\u5C42\u65B9\u5757\n\nconst float largeBlockSpeed = .10;\nconst float smallBlockSpeed = .20;\nconst float layerBlockSpeed = .15; // \u5C42\u7684\u6D6E\u52A8\u901F\u5EA6\n\nconst float largeBlockSizeMin = 0.002;\nconst float largeBlockSizeMax = 0.03;\nconst float smallBlockSizeMin = 0.003;\nconst float smallBlockSizeMax = 0.008;\nconst float layerBlockSizeMin = 0.005;\nconst float layerBlockSizeMax = 0.01; // \u4E24\u5C42\u65B9\u5757\u7684\u5927\u5C0F\u8303\u56F4\n\nconst vec3 largeBlockColor = vec3(0.3, 0.2, 0.3);\nconst vec3 smallBlockColor = vec3(0.7, 0.6, 0.9);\nconst vec3 layerBlockColor = vec3(0.9, 0.7, 0.5); // \u65B0\u589E\u5C42\u7684\u989C\u8272\n\nfloat hash11(float p) {\nreturn fract(sin(p) * 43758.5453);\n}\n\nvec4 mainImage( vec2 uv) {\n// vec2 uv = fragCoord.xy / iResolution.xy;\nvec3 color = vec3(0.0, 0.0, 0.0); // Background color\n\n// Large blocks\nfor (int i = 0; i < largeBlockCount; ++i) {\n float id = float(i);\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * largeBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(largeBlockSizeMin, largeBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize);\n color = mix(color, largeBlockColor, inside);\n}\n\n// Small blocks\nfor (int i = 0; i < smallBlockCount; ++i) {\n float id = float(i + largeBlockCount); // Offset for unique small block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * smallBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(smallBlockSizeMin, smallBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize+hash11(id )*0.01);\n color = mix(color, smallBlockColor, inside);\n}\n\n// Layer blocks\nfor (int i = 0; i < layerBlockCount; ++i) {\n float id = float(i + largeBlockCount + smallBlockCount); // Offset for unique layer block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * layerBlockSpeed)); // Float upwards with time\n\n // Randomize the size with a slight stretch for length/width variation\n float blockSizeX = mix(layerBlockSizeMin, layerBlockSizeMax, hash11(id));\n float blockSizeY = blockSizeX * (0.8 + 0.4 * hash11(id + 0.3)); // Randomize aspect ratio\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSizeX+hash11(id )*0.02) * step(dist.y, blockSizeY);\n color = mix(color, layerBlockColor, inside);\n}\n return vec4(color, 1.0);\n\n}\n\n void main() {\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.)) *step(button,myWp.y);///0.6,0.1,0.01\n \n if (abs(vNormal.x) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.zy)).x *pow(gl_FragColor.a,.1) ); /////vec4(0.9,0.8,0.3,1.)\n }\n if (abs(vNormal.z) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.xy)).x *pow(gl_FragColor.a,.1) ); \n }\n gl_FragColor.a *= _alpha;\n\n }\n ",
|
|
97
|
+
fragmentShader: "\n #include <common>\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n \n uniform float _alpha;\n uniform float _height;\n uniform vec3 color1;\n uniform float iTime;\n \n\n\nconst int largeBlockCount = 80;\nconst int smallBlockCount = 20;\nconst int layerBlockCount = 10; // \u6DFB\u52A0\u7684\u4E24\u5C42\u65B9\u5757\n\nconst float largeBlockSpeed = .10;\nconst float smallBlockSpeed = .20;\nconst float layerBlockSpeed = .15; // \u5C42\u7684\u6D6E\u52A8\u901F\u5EA6\n\nconst float largeBlockSizeMin = 0.002;\nconst float largeBlockSizeMax = 0.03;\nconst float smallBlockSizeMin = 0.003;\nconst float smallBlockSizeMax = 0.008;\nconst float layerBlockSizeMin = 0.005;\nconst float layerBlockSizeMax = 0.01; // \u4E24\u5C42\u65B9\u5757\u7684\u5927\u5C0F\u8303\u56F4\n\nconst vec3 largeBlockColor = vec3(0.3, 0.2, 0.3);\nconst vec3 smallBlockColor = vec3(0.7, 0.6, 0.9);\nconst vec3 layerBlockColor = vec3(0.9, 0.7, 0.5); // \u65B0\u589E\u5C42\u7684\u989C\u8272\n\nfloat hash11(float p) {\nreturn fract(sin(p) * 43758.5453);\n}\n\nvec4 mainImage( vec2 uv) {\n// vec2 uv = fragCoord.xy / iResolution.xy;\nvec3 color = vec3(0.0, 0.0, 0.0); // Background color\n\n// Large blocks\nfor (int i = 0; i < largeBlockCount; ++i) {\n float id = float(i);\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * largeBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(largeBlockSizeMin, largeBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize);\n color = mix(color, largeBlockColor, inside);\n}\n\n// Small blocks\nfor (int i = 0; i < smallBlockCount; ++i) {\n float id = float(i + largeBlockCount); // Offset for unique small block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * smallBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(smallBlockSizeMin, smallBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize+hash11(id )*0.01);\n color = mix(color, smallBlockColor, inside);\n}\n\n// Layer blocks\nfor (int i = 0; i < layerBlockCount; ++i) {\n float id = float(i + largeBlockCount + smallBlockCount); // Offset for unique layer block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * layerBlockSpeed)); // Float upwards with time\n\n // Randomize the size with a slight stretch for length/width variation\n float blockSizeX = mix(layerBlockSizeMin, layerBlockSizeMax, hash11(id));\n float blockSizeY = blockSizeX * (0.8 + 0.4 * hash11(id + 0.3)); // Randomize aspect ratio\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSizeX+hash11(id )*0.02) * step(dist.y, blockSizeY);\n color = mix(color, layerBlockColor, inside);\n}\n return vec4(color, 1.0);\n\n}\n\n void main() {\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.)) *step(button,myWp.y);///0.6,0.1,0.01\n \n if (abs(vNormal.x) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.zy)).x *pow(gl_FragColor.a,.1) ); /////vec4(0.9,0.8,0.3,1.)\n }\n if (abs(vNormal.z) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.xy)).x *pow(gl_FragColor.a,.1) ); \n }\n gl_FragColor.a *= _alpha;\n\n }\n ",
|
|
98
98
|
// 设置材质为透明
|
|
99
99
|
transparent: true,
|
|
100
100
|
// 设置材质双面渲染,确保从正反两面都能正确显示
|
|
101
101
|
side: 2,
|
|
102
102
|
// 关闭深度测试
|
|
103
|
-
depthTest:
|
|
103
|
+
depthTest: true,
|
|
104
|
+
depthWrite: false
|
|
104
105
|
});
|
|
105
106
|
return material;
|
|
106
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ShaderMaterial","use","createRoundLineWallMesh","hexToRGBA","parseRGBA","FenceBase","Fence_Feeting_01","_FenceBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createFenceMesh","_points","_corner","_close","_height","_color","_alpha","add","points","radius","arguments","length","undefined","close","height","color","alpha","material","createFenceMaterial","mesh","useframe","children","forEach","item","index","uniforms","iTime","_parseRGBA","r","g","b","colorTemp","Number","toFixed","color1","vertexShader","fragmentShader","transparent","side","depthTest"],"sources":["../../../../src/business/Area/Fence/fence_feeting_01.ts"],"sourcesContent":["import type { Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ShaderMaterial, use } from '@anov/3d-core'\n\nimport { createRoundLineWallMesh } from '../../Utils/round-curve'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\nimport FenceBase from './FenceBase'\n\nclass Fence_Feeting_01 extends FenceBase {\n constructor(option: FenceOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createFenceMesh(\n this._points,\n this._corner,\n this._close,\n this._height,\n this._color,\n this._alpha,\n )\n this._mesh && this.add(this._mesh)\n }\n\n // 创建围栏网格对象\n createFenceMesh(points: Vector3[], radius = 0, close = true, height: number, color: string, alpha: number) {\n if (!points)\n return\n\n // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundLineWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\n use.useframe(() => {\n mesh.children.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.002\n })\n })\n return mesh\n }\n\n // 创建围栏材质\n createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial {\n const { r, g, b } = parseRGBA(hexToRGBA(color))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n // 创建一个ShaderMaterial实例,用于自定义围栏的渲染效果\n const material = new ShaderMaterial({\n uniforms: {\n // 材质颜色\n color1: {\n value: colorTemp,\n }, // 材质颜色2,用于渐变\n _alpha: { value: alpha },\n _height: { value: height },\n iTime: { value: 0.0 },\n },\n // 顶点着色器\n vertexShader: `\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // 使用模型矩阵旋转法线\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n `,\n // 片元着色器\n fragmentShader: `\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n \n uniform float _alpha;\n uniform float _height;\n uniform vec3 color1;\n uniform float iTime;\n \n\n\nconst int largeBlockCount = 80;\nconst int smallBlockCount = 20;\nconst int layerBlockCount = 10; // 添加的两层方块\n\nconst float largeBlockSpeed = .10;\nconst float smallBlockSpeed = .20;\nconst float layerBlockSpeed = .15; // 层的浮动速度\n\nconst float largeBlockSizeMin = 0.002;\nconst float largeBlockSizeMax = 0.03;\nconst float smallBlockSizeMin = 0.003;\nconst float smallBlockSizeMax = 0.008;\nconst float layerBlockSizeMin = 0.005;\nconst float layerBlockSizeMax = 0.01; // 两层方块的大小范围\n\nconst vec3 largeBlockColor = vec3(0.3, 0.2, 0.3);\nconst vec3 smallBlockColor = vec3(0.7, 0.6, 0.9);\nconst vec3 layerBlockColor = vec3(0.9, 0.7, 0.5); // 新增层的颜色\n\nfloat hash11(float p) {\nreturn fract(sin(p) * 43758.5453);\n}\n\nvec4 mainImage( vec2 uv) {\n// vec2 uv = fragCoord.xy / iResolution.xy;\nvec3 color = vec3(0.0, 0.0, 0.0); // Background color\n\n// Large blocks\nfor (int i = 0; i < largeBlockCount; ++i) {\n float id = float(i);\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * largeBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(largeBlockSizeMin, largeBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize);\n color = mix(color, largeBlockColor, inside);\n}\n\n// Small blocks\nfor (int i = 0; i < smallBlockCount; ++i) {\n float id = float(i + largeBlockCount); // Offset for unique small block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * smallBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(smallBlockSizeMin, smallBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize+hash11(id )*0.01);\n color = mix(color, smallBlockColor, inside);\n}\n\n// Layer blocks\nfor (int i = 0; i < layerBlockCount; ++i) {\n float id = float(i + largeBlockCount + smallBlockCount); // Offset for unique layer block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * layerBlockSpeed)); // Float upwards with time\n\n // Randomize the size with a slight stretch for length/width variation\n float blockSizeX = mix(layerBlockSizeMin, layerBlockSizeMax, hash11(id));\n float blockSizeY = blockSizeX * (0.8 + 0.4 * hash11(id + 0.3)); // Randomize aspect ratio\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSizeX+hash11(id )*0.02) * step(dist.y, blockSizeY);\n color = mix(color, layerBlockColor, inside);\n}\n return vec4(color, 1.0);\n\n}\n\n void main() {\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.)) *step(button,myWp.y);///0.6,0.1,0.01\n \n if (abs(vNormal.x) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.zy)).x *pow(gl_FragColor.a,.1) ); /////vec4(0.9,0.8,0.3,1.)\n }\n if (abs(vNormal.z) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.xy)).x *pow(gl_FragColor.a,.1) ); \n }\n gl_FragColor.a *= _alpha;\n\n }\n `,\n // 设置材质为透明\n transparent: true,\n // 设置材质双面渲染,确保从正反两面都能正确显示\n side: 2,\n // 关闭深度测试\n depthTest: false,\n })\n return material\n }\n}\n\nexport default Fence_Feeting_01\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["ShaderMaterial","use","createRoundLineWallMesh","hexToRGBA","parseRGBA","FenceBase","Fence_Feeting_01","_FenceBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createFenceMesh","_points","_corner","_close","_height","_color","_alpha","add","points","radius","arguments","length","undefined","close","height","color","alpha","material","createFenceMaterial","mesh","useframe","children","forEach","item","index","uniforms","iTime","_parseRGBA","r","g","b","colorTemp","Number","toFixed","color1","vertexShader","fragmentShader","transparent","side","depthTest","depthWrite"],"sources":["../../../../src/business/Area/Fence/fence_feeting_01.ts"],"sourcesContent":["import type { Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ShaderMaterial, use } from '@anov/3d-core'\n\nimport { createRoundLineWallMesh } from '../../Utils/round-curve'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\nimport FenceBase from './FenceBase'\n\nclass Fence_Feeting_01 extends FenceBase {\n constructor(option: FenceOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createFenceMesh(\n this._points,\n this._corner,\n this._close,\n this._height,\n this._color,\n this._alpha,\n )\n this._mesh && this.add(this._mesh)\n }\n\n // 创建围栏网格对象\n createFenceMesh(points: Vector3[], radius = 0, close = true, height: number, color: string, alpha: number) {\n if (!points)\n return\n\n // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundLineWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\n use.useframe(() => {\n mesh.children.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.002\n })\n })\n return mesh\n }\n\n // 创建围栏材质\n createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial {\n const { r, g, b } = parseRGBA(hexToRGBA(color))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n // 创建一个ShaderMaterial实例,用于自定义围栏的渲染效果\n const material = new ShaderMaterial({\n uniforms: {\n // 材质颜色\n color1: {\n value: colorTemp,\n }, // 材质颜色2,用于渐变\n _alpha: { value: alpha },\n _height: { value: height },\n iTime: { value: 0.0 },\n },\n // 顶点着色器\n vertexShader: `\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n \t#include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // 使用模型矩阵旋转法线\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n `,\n // 片元着色器\n fragmentShader: `\n #include <common>\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n \n uniform float _alpha;\n uniform float _height;\n uniform vec3 color1;\n uniform float iTime;\n \n\n\nconst int largeBlockCount = 80;\nconst int smallBlockCount = 20;\nconst int layerBlockCount = 10; // 添加的两层方块\n\nconst float largeBlockSpeed = .10;\nconst float smallBlockSpeed = .20;\nconst float layerBlockSpeed = .15; // 层的浮动速度\n\nconst float largeBlockSizeMin = 0.002;\nconst float largeBlockSizeMax = 0.03;\nconst float smallBlockSizeMin = 0.003;\nconst float smallBlockSizeMax = 0.008;\nconst float layerBlockSizeMin = 0.005;\nconst float layerBlockSizeMax = 0.01; // 两层方块的大小范围\n\nconst vec3 largeBlockColor = vec3(0.3, 0.2, 0.3);\nconst vec3 smallBlockColor = vec3(0.7, 0.6, 0.9);\nconst vec3 layerBlockColor = vec3(0.9, 0.7, 0.5); // 新增层的颜色\n\nfloat hash11(float p) {\nreturn fract(sin(p) * 43758.5453);\n}\n\nvec4 mainImage( vec2 uv) {\n// vec2 uv = fragCoord.xy / iResolution.xy;\nvec3 color = vec3(0.0, 0.0, 0.0); // Background color\n\n// Large blocks\nfor (int i = 0; i < largeBlockCount; ++i) {\n float id = float(i);\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * largeBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(largeBlockSizeMin, largeBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize);\n color = mix(color, largeBlockColor, inside);\n}\n\n// Small blocks\nfor (int i = 0; i < smallBlockCount; ++i) {\n float id = float(i + largeBlockCount); // Offset for unique small block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * smallBlockSpeed)); // Float upwards with time\n\n float blockSize = mix(smallBlockSizeMin, smallBlockSizeMax, hash11(id));\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSize) * step(dist.y, blockSize+hash11(id )*0.01);\n color = mix(color, smallBlockColor, inside);\n}\n\n// Layer blocks\nfor (int i = 0; i < layerBlockCount; ++i) {\n float id = float(i + largeBlockCount + smallBlockCount); // Offset for unique layer block IDs\n vec2 randomPos = vec2(hash11(id + 0.1), hash11(id + 0.2));\n randomPos = fract(randomPos + vec2(0.,iTime * layerBlockSpeed)); // Float upwards with time\n\n // Randomize the size with a slight stretch for length/width variation\n float blockSizeX = mix(layerBlockSizeMin, layerBlockSizeMax, hash11(id));\n float blockSizeY = blockSizeX * (0.8 + 0.4 * hash11(id + 0.3)); // Randomize aspect ratio\n\n vec2 dist = abs(uv - randomPos);\n float inside = step(dist.x, blockSizeX+hash11(id )*0.02) * step(dist.y, blockSizeY);\n color = mix(color, layerBlockColor, inside);\n}\n return vec4(color, 1.0);\n\n}\n\n void main() {\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n gl_FragColor = vec4(color1,pow(1.-clamp(myWp.y,0.,1.),2.)) *step(button,myWp.y);///0.6,0.1,0.01\n \n if (abs(vNormal.x) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.zy)).x *pow(gl_FragColor.a,.1) ); /////vec4(0.9,0.8,0.3,1.)\n }\n if (abs(vNormal.z) > 0.99) { \n gl_FragColor =mix(gl_FragColor,vec4(color1+vec3(0.2,0.7,0.2),1.*myWp.y) ,mainImage(fract(myWp.xy)).x *pow(gl_FragColor.a,.1) ); \n }\n gl_FragColor.a *= _alpha;\n\n }\n `,\n // 设置材质为透明\n transparent: true,\n // 设置材质双面渲染,确保从正反两面都能正确显示\n side: 2,\n // 关闭深度测试\n depthTest: true,\n depthWrite: false,\n })\n return material\n }\n}\n\nexport default Fence_Feeting_01\n"],"mappings":"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"}
|
|
@@ -92,15 +92,16 @@ var Fence_Roll_01 = /*#__PURE__*/function (_FenceBase) {
|
|
|
92
92
|
}
|
|
93
93
|
},
|
|
94
94
|
// 顶点着色器
|
|
95
|
-
vertexShader: "\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n
|
|
95
|
+
vertexShader: "\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // \u7528\u4E8E\u4F20\u9012\u6CD5\u7EBF\u65B9\u5411\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n \t#include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // \u4F7F\u7528\u6A21\u578B\u77E9\u9635\u65CB\u8F6C\u6CD5\u7EBF\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n ",
|
|
96
96
|
// 片元着色器
|
|
97
|
-
fragmentShader: "\n
|
|
97
|
+
fragmentShader: "\n #include <common>\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; //\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n // uniform float button;\n uniform float _height;\n uniform float iTime;\n uniform float _alpha;\n uniform vec3 color1;\n \n void main() {\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n vec3 myWp_s=(vWorldPosition-button)*3./_height; \n float Grandient= pow(1.-clamp(myWp.y,0.,1.),1.5); \n float Grandient_s= pow(1.-fract(myWp_s.y-iTime),0.4); \n gl_FragColor = vec4(color1,Grandient*Grandient_s*(0.8+sin(iTime*5.0)*0.3) ) *_alpha *step(button,myWp.y);\n \n }\n ",
|
|
98
98
|
// 设置材质为透明
|
|
99
99
|
transparent: true,
|
|
100
100
|
// 设置材质双面渲染,确保从正反两面都能正确显示
|
|
101
101
|
side: 2,
|
|
102
102
|
// 关闭深度测试
|
|
103
|
-
depthTest:
|
|
103
|
+
depthTest: true,
|
|
104
|
+
depthWrite: false
|
|
104
105
|
});
|
|
105
106
|
return material;
|
|
106
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ShaderMaterial","use","createRoundLineWallMesh","hexToRGBA","parseRGBA","FenceBase","Fence_Roll_01","_FenceBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createFenceMesh","_points","_corner","_close","_height","_color","_alpha","add","points","radius","arguments","length","undefined","close","height","color","alpha","material","createFenceMaterial","mesh","useframe","children","forEach","item","index","uniforms","iTime","_parseRGBA","r","g","b","colorTemp","Number","toFixed","color1","vertexShader","fragmentShader","transparent","side","depthTest"],"sources":["../../../../src/business/Area/Fence/fence_roll_01.ts"],"sourcesContent":["import type { Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ShaderMaterial, use } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '../../Utils/round-curve'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\nimport FenceBase from './FenceBase'\n\nclass Fence_Roll_01 extends FenceBase {\n constructor(option: FenceOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createFenceMesh(\n this._points,\n this._corner,\n this._close,\n this._height,\n this._color,\n this._alpha,\n )\n this._mesh && this.add(this._mesh)\n }\n\n // 创建围栏网格对象\n createFenceMesh(points: Vector3[], radius = 0, close = true, height: number, color: string, alpha: number) {\n if (!points)\n return\n\n // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundLineWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\n use.useframe(() => {\n mesh.children.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.002\n })\n })\n return mesh\n }\n\n // 创建围栏材质\n createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial {\n const { r, g, b } = parseRGBA(hexToRGBA(color))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n // 创建一个ShaderMaterial实例,用于自定义围栏的渲染效果\n const material = new ShaderMaterial({\n uniforms: {\n // 材质颜色\n color1: {\n value: colorTemp,\n }, // 材质颜色2,用于渐变\n _alpha: { value: alpha },\n _height: { value: height },\n iTime: { value: 0.0 },\n },\n // 顶点着色器\n vertexShader: `\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n
|
|
1
|
+
{"version":3,"names":["ShaderMaterial","use","createRoundLineWallMesh","hexToRGBA","parseRGBA","FenceBase","Fence_Roll_01","_FenceBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createFenceMesh","_points","_corner","_close","_height","_color","_alpha","add","points","radius","arguments","length","undefined","close","height","color","alpha","material","createFenceMaterial","mesh","useframe","children","forEach","item","index","uniforms","iTime","_parseRGBA","r","g","b","colorTemp","Number","toFixed","color1","vertexShader","fragmentShader","transparent","side","depthTest","depthWrite"],"sources":["../../../../src/business/Area/Fence/fence_roll_01.ts"],"sourcesContent":["import type { Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ShaderMaterial, use } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '../../Utils/round-curve'\nimport type { FenceOption } from '../type'\nimport { hexToRGBA, parseRGBA } from '../tool'\nimport FenceBase from './FenceBase'\n\nclass Fence_Roll_01 extends FenceBase {\n constructor(option: FenceOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createFenceMesh(\n this._points,\n this._corner,\n this._close,\n this._height,\n this._color,\n this._alpha,\n )\n this._mesh && this.add(this._mesh)\n }\n\n // 创建围栏网格对象\n createFenceMesh(points: Vector3[], radius = 0, close = true, height: number, color: string, alpha: number) {\n if (!points)\n return\n\n // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundLineWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\n use.useframe(() => {\n mesh.children.forEach((item, index) => {\n const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.002\n })\n })\n return mesh\n }\n\n // 创建围栏材质\n createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial {\n const { r, g, b } = parseRGBA(hexToRGBA(color))\n const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }\n // 创建一个ShaderMaterial实例,用于自定义围栏的渲染效果\n const material = new ShaderMaterial({\n uniforms: {\n // 材质颜色\n color1: {\n value: colorTemp,\n }, // 材质颜色2,用于渐变\n _alpha: { value: alpha },\n _height: { value: height },\n iTime: { value: 0.0 },\n },\n // 顶点着色器\n vertexShader: `\n #include <common>\n #include <logdepthbuf_pars_vertex>\n varying vec3 vNormal; // 用于传递法线方向\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n void main() {\n \t#include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n // gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n vNormal = normalize(mat3(modelMatrix) * normal); // 使用模型矩阵旋转法线\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = modelPosition.xyz;\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n }\n `,\n // 片元着色器\n fragmentShader: `\n #include <common>\n #include <logdepthbuf_pars_fragment>\n varying vec3 vNormal; //\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n // uniform float button;\n uniform float _height;\n uniform float iTime;\n uniform float _alpha;\n uniform vec3 color1;\n \n void main() {\n #include <logdepthbuf_fragment>\n // float height = 50.;\n float button = 0.;\n vec3 myWp=(vWorldPosition-button)/_height; \n vec3 myWp_s=(vWorldPosition-button)*3./_height; \n float Grandient= pow(1.-clamp(myWp.y,0.,1.),1.5); \n float Grandient_s= pow(1.-fract(myWp_s.y-iTime),0.4); \n gl_FragColor = vec4(color1,Grandient*Grandient_s*(0.8+sin(iTime*5.0)*0.3) ) *_alpha *step(button,myWp.y);\n \n }\n `,\n // 设置材质为透明\n transparent: true,\n // 设置材质双面渲染,确保从正反两面都能正确显示\n side: 2,\n // 关闭深度测试\n depthTest: true,\n depthWrite: false,\n })\n return material\n }\n}\n\nexport default Fence_Roll_01\n"],"mappings":"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"}
|
|
@@ -8,14 +8,14 @@ declare class FillAreaBase extends ObjectLayer {
|
|
|
8
8
|
_corner: number;
|
|
9
9
|
_close: boolean;
|
|
10
10
|
_points: Vector3[];
|
|
11
|
-
|
|
11
|
+
_uri: string;
|
|
12
12
|
_option: FillAreaOption;
|
|
13
13
|
_listeners: Set<unknown>;
|
|
14
14
|
private _areaInstance;
|
|
15
15
|
constructor(option: FillAreaOption, areaInstance: Object3D);
|
|
16
16
|
get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]> | Line2;
|
|
17
|
-
get
|
|
18
|
-
set
|
|
17
|
+
get uri(): string;
|
|
18
|
+
set uri(value: string);
|
|
19
19
|
get alpha(): number;
|
|
20
20
|
set alpha(newValue: number);
|
|
21
21
|
get color(): string;
|
|
@@ -27,7 +27,7 @@ var FillAreaBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
27
27
|
_defineProperty(_assertThisInitialized(_this), "_corner", void 0);
|
|
28
28
|
_defineProperty(_assertThisInitialized(_this), "_close", void 0);
|
|
29
29
|
_defineProperty(_assertThisInitialized(_this), "_points", void 0);
|
|
30
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
30
|
+
_defineProperty(_assertThisInitialized(_this), "_uri", void 0);
|
|
31
31
|
_defineProperty(_assertThisInitialized(_this), "_option", void 0);
|
|
32
32
|
_defineProperty(_assertThisInitialized(_this), "_listeners", new Set());
|
|
33
33
|
_defineProperty(_assertThisInitialized(_this), "_areaInstance", void 0);
|
|
@@ -45,14 +45,14 @@ var FillAreaBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
45
45
|
return this._mesh;
|
|
46
46
|
}
|
|
47
47
|
}, {
|
|
48
|
-
key: "
|
|
48
|
+
key: "uri",
|
|
49
49
|
get: function get() {
|
|
50
|
-
return this.
|
|
50
|
+
return this._uri;
|
|
51
51
|
},
|
|
52
52
|
set: function set(value) {
|
|
53
53
|
var _this2 = this;
|
|
54
|
-
if (this.
|
|
55
|
-
this.
|
|
54
|
+
if (this._uri === value) return;
|
|
55
|
+
this._uri = value;
|
|
56
56
|
// eslint-disable-next-line max-statements-per-line
|
|
57
57
|
this._listeners.forEach(function (cb) {
|
|
58
58
|
cb.call(_this2._areaInstance);
|
|
@@ -108,7 +108,7 @@ var FillAreaBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
108
108
|
this._close = option.close;
|
|
109
109
|
this._corner = option.corner;
|
|
110
110
|
this._points = option.points;
|
|
111
|
-
this.
|
|
111
|
+
this._uri = option.uri;
|
|
112
112
|
}
|
|
113
113
|
}, {
|
|
114
114
|
key: "delete",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","ObjectLayer","FillAreaBase","_ObjectLayer","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Set","_option","_initParams","_areaInstance","_createClass","key","get","_mesh","
|
|
1
|
+
{"version":3,"names":["Color","ObjectLayer","FillAreaBase","_ObjectLayer","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Set","_option","_initParams","_areaInstance","_createClass","key","get","_mesh","_uri","set","value","_this2","_listeners","forEach","cb","_alpha","newValue","material","opacity","_color","color","_corner","_close","alpha","close","corner","_points","points","uri","_delete","remove","removeFromParent","dispose","delete","clear","addReloadListener","callback","add"],"sources":["../../../../src/business/Area/FillArea/FillAreaBase.ts"],"sourcesContent":["import type { Line2, Mesh, MeshBasicMaterial, Object3D, Vector3 } from '@anov/3d-core'\nimport { Color } from '@anov/3d-core'\n\nimport _ from 'lodash'\nimport ObjectLayer from '../../Base/ObjectLayer'\nimport type { FillAreaOption } from '../type'\n\nclass FillAreaBase extends ObjectLayer {\n public _mesh!: Mesh | Line2\n public _alpha: number\n public _color: string\n public _corner: number\n public _close: boolean\n public _points!: Vector3[]\n public _uri: string\n public _option: FillAreaOption\n public _listeners = new Set()\n\n private _areaInstance: Object3D\n\n constructor(option: FillAreaOption, areaInstance: Object3D) {\n super()\n this._option = option\n // 属性赋值\n this._initParams(option)\n this._areaInstance = areaInstance\n // 属性赋值\n // this.setValues(_.mergeWith({}, defaultOption, option))\n }\n\n public get mesh() {\n return this._mesh\n }\n\n public get uri() {\n return this._uri\n }\n\n public set uri(value: string) {\n if (this._uri === value)\n return\n this._uri = value\n // eslint-disable-next-line max-statements-per-line\n this._listeners.forEach((cb: Function) => { cb.call(this._areaInstance) })\n }\n\n // Getter and Setter for alpha property\n get alpha(): number {\n return this._alpha\n }\n\n set alpha(newValue: number) {\n if (this._alpha === newValue)\n return\n\n this._alpha = newValue\n if (this._mesh)\n (this._mesh.material as MeshBasicMaterial).opacity = newValue\n }\n\n // Getter and Setter for color property\n get color(): string {\n return this._color\n }\n\n set color(newValue: string) {\n if (this._color === newValue)\n return\n\n this._color = newValue\n if (this._mesh)\n (this._mesh.material as MeshBasicMaterial).color = new Color(newValue)\n }\n\n get corner(): number {\n return this._corner\n }\n\n set corner(newValue: number) {\n if (this._corner === newValue)\n return\n\n this._corner = newValue\n }\n\n get close(): boolean {\n return this._close\n }\n\n set close(newValue: boolean) {\n if (this._close === newValue)\n return\n\n this._close = newValue\n }\n\n _initParams(option: FillAreaOption) {\n this._alpha = option.alpha\n this._color = option.color\n this._close = option.close\n this._corner = option.corner\n this._points = option.points as unknown as Vector3[]\n this._uri = option.uri\n }\n\n public delete() {\n this._mesh.remove()\n this._mesh.removeFromParent()\n }\n\n // 销毁\n public dispose() {\n this.delete()\n this._listeners.clear()\n }\n\n // 注册监听\n public addReloadListener(callback: Function) {\n this._listeners.add(callback)\n }\n}\n\nexport default FillAreaBase"],"mappings":"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"}
|
|
@@ -133,14 +133,14 @@ var FillAreaStrategy = {
|
|
|
133
133
|
var DEFAULT_OPTION = {
|
|
134
134
|
style: 'area_base_01',
|
|
135
135
|
fence: {
|
|
136
|
-
|
|
136
|
+
uri: 'base',
|
|
137
137
|
height: 70,
|
|
138
138
|
alpha: 1,
|
|
139
139
|
color: '#006CBF',
|
|
140
140
|
visible: true
|
|
141
141
|
},
|
|
142
142
|
fillArea: {
|
|
143
|
-
|
|
143
|
+
uri: 'face',
|
|
144
144
|
visible: true,
|
|
145
145
|
alpha: 1,
|
|
146
146
|
color: '#006CBF',
|
|
@@ -533,8 +533,8 @@ var Area = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
533
533
|
var currentFenceStyle = '';
|
|
534
534
|
var currentFillAreaStyle = '';
|
|
535
535
|
if (this.style === 'area_dynamic_mode') {
|
|
536
|
-
currentFenceStyle = this._fence.
|
|
537
|
-
currentFillAreaStyle = this._fillArea.
|
|
536
|
+
currentFenceStyle = this._fence.uri;
|
|
537
|
+
currentFillAreaStyle = this._fillArea.uri;
|
|
538
538
|
} else {
|
|
539
539
|
var _STYLE_DATA$this$styl = _slicedToArray(STYLE_DATA[this.style], 2);
|
|
540
540
|
currentFenceStyle = _STYLE_DATA$this$styl[0];
|