@anov/3d-ability 0.0.115 → 0.0.117
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 → fence}/FenceBase.js +38 -22
- package/dist/business/Area/fence/FenceBase.js.map +1 -0
- package/dist/business/Area/{Fence → fence}/fence_base_01.d.ts +2 -2
- package/dist/business/Area/{Fence → fence}/fence_base_01.js +18 -6
- package/dist/business/Area/fence/fence_base_01.js.map +1 -0
- package/dist/business/Area/{Fence → fence}/fence_feeting_01.d.ts +2 -2
- package/dist/business/Area/{Fence → fence}/fence_feeting_01.js +37 -7
- package/dist/business/Area/fence/fence_feeting_01.js.map +1 -0
- package/dist/business/Area/{Fence → fence}/fence_roll_01.d.ts +2 -2
- package/dist/business/Area/{Fence → fence}/fence_roll_01.js +38 -7
- package/dist/business/Area/fence/fence_roll_01.js.map +1 -0
- package/dist/business/Area/{FillArea → fillArea}/FillAreaBase.js.map +1 -1
- package/dist/business/Area/{FillArea → fillArea}/fillArea_face_01.d.ts +2 -3
- package/dist/business/Area/{FillArea → fillArea}/fillArea_face_01.js +7 -8
- package/dist/business/Area/fillArea/fillArea_face_01.js.map +1 -0
- package/dist/business/Area/{FillArea → fillArea}/fillArea_line_01.js +16 -8
- package/dist/business/Area/fillArea/fillArea_line_01.js.map +1 -0
- package/dist/business/Area/index.js +5 -5
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Batch/index.d.ts +8 -0
- package/dist/business/Batch/index.js +80 -6
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.js +1 -1
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.js +1 -1
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/Mark/index.js +2 -4
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.d.ts +2 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +81 -49
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.d.ts +17 -6
- package/dist/business/MaterialSwitch/inject.js +160 -114
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.d.ts +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
- package/dist/business/Poi/index.js +4 -1
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.d.ts +2 -0
- package/dist/business/Poi/link/Pyramid.js +53 -23
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/particle/DoubleCircle.js +1 -1
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.js +2 -2
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.js +1 -1
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/shader/circle.js +1 -1
- package/dist/business/Poi/shader/circle.js.map +1 -1
- package/dist/business/Poi/shader/doubleCircle.js +1 -1
- package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
- package/dist/business/Spline/index.d.ts +25 -10
- package/dist/business/Spline/index.js +222 -40
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/Spline/types.d.ts +14 -8
- package/dist/business/Spline/types.js.map +1 -1
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +10 -1
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.d.ts +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
- package/dist/business/Utils/constant.js +2 -2
- package/dist/business/Utils/constant.js.map +1 -1
- package/dist/business/Utils/round-curve.d.ts +4 -2
- package/dist/business/Utils/round-curve.js +131 -2
- package/dist/business/Utils/round-curve.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.d.ts +12 -2
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +107 -59
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.d.ts +7 -7
- package/dist/core/Material/SurfaceMaterial/index.js +16 -14
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.js +5 -1
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.js +7 -2
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/sky.js +1 -1
- package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js +27 -20
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/utils/index.js.map +1 -0
- package/package.json +3 -3
- package/dist/business/Area/Fence/FenceBase.js.map +0 -1
- package/dist/business/Area/Fence/fence_base_01.js.map +0 -1
- package/dist/business/Area/Fence/fence_feeting_01.js.map +0 -1
- package/dist/business/Area/Fence/fence_roll_01.js.map +0 -1
- package/dist/business/Area/FillArea/fillArea_face_01.js.map +0 -1
- package/dist/business/Area/FillArea/fillArea_line_01.js.map +0 -1
- package/dist/business/Utils/constant.d.ts +0 -1
- package/dist/core/Utils/index.js.map +0 -1
- /package/dist/business/Area/{Fence → fence}/FenceBase.d.ts +0 -0
- /package/dist/business/Area/{FillArea → fillArea}/FillAreaBase.d.ts +0 -0
- /package/dist/business/Area/{FillArea → fillArea}/FillAreaBase.js +0 -0
- /package/dist/business/Area/{FillArea → fillArea}/fillArea_line_01.d.ts +0 -0
- /package/dist/{core/Utils → utils}/index.d.ts +0 -0
- /package/dist/{core/Utils → utils}/index.js +0 -0
|
@@ -94,24 +94,35 @@ var FenceBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
94
94
|
if (this._color === newValue) return;
|
|
95
95
|
this._color = newValue;
|
|
96
96
|
if (this._mesh) {
|
|
97
|
-
|
|
98
|
-
childrens
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
r: Number((Number(r) / 255).toFixed(4)),
|
|
107
|
-
g: Number((Number(g) / 255).toFixed(4)),
|
|
108
|
-
b: Number((Number(b) / 255).toFixed(4))
|
|
109
|
-
};
|
|
110
|
-
uniforms.color1.value = colorTemp;
|
|
111
|
-
}
|
|
97
|
+
// const childrens = this._mesh.children
|
|
98
|
+
// const childrens = this._mesh.children
|
|
99
|
+
// childrens.forEach((item, index) => {
|
|
100
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
101
|
+
// if (uniforms.color1) {
|
|
102
|
+
// const { r, g, b } = parseRGBA(hexToRGBA(newValue))
|
|
103
|
+
// const colorTemp = { r: Number((Number(r) / 255).toFixed(4)), g: Number((Number(g) / 255).toFixed(4)), b: Number((Number(b) / 255).toFixed(4)) }
|
|
104
|
+
// uniforms.color1.value = colorTemp
|
|
105
|
+
// }
|
|
112
106
|
|
|
113
|
-
|
|
114
|
-
})
|
|
107
|
+
// // uniforms.color2.value = new Color(newValue)
|
|
108
|
+
// })
|
|
109
|
+
// childrens.forEach((item, index) => {
|
|
110
|
+
var uniforms = this._mesh.material.uniforms;
|
|
111
|
+
if (uniforms.color1) {
|
|
112
|
+
var _parseRGBA = parseRGBA(hexToRGBA(newValue)),
|
|
113
|
+
r = _parseRGBA.r,
|
|
114
|
+
g = _parseRGBA.g,
|
|
115
|
+
b = _parseRGBA.b;
|
|
116
|
+
var colorTemp = {
|
|
117
|
+
r: Number((Number(r) / 255).toFixed(4)),
|
|
118
|
+
g: Number((Number(g) / 255).toFixed(4)),
|
|
119
|
+
b: Number((Number(b) / 255).toFixed(4))
|
|
120
|
+
};
|
|
121
|
+
uniforms.color1.value = colorTemp;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// uniforms.color2.value = new Color(newValue)
|
|
125
|
+
// })
|
|
115
126
|
}
|
|
116
127
|
}
|
|
117
128
|
|
|
@@ -125,11 +136,16 @@ var FenceBase = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
125
136
|
if (this._alpha === newValue) return;
|
|
126
137
|
this._alpha = newValue;
|
|
127
138
|
if (this._mesh) {
|
|
128
|
-
|
|
129
|
-
childrens.forEach(
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
139
|
+
// const childrens = this._mesh.children
|
|
140
|
+
// childrens.forEach((item, index) => {
|
|
141
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
142
|
+
// if (uniforms.alpha)
|
|
143
|
+
// uniforms.alpha.value = newValue
|
|
144
|
+
// })
|
|
145
|
+
// childrens.forEach((item, index) => {
|
|
146
|
+
var uniforms = this._mesh.material.uniforms;
|
|
147
|
+
if (uniforms.alpha) uniforms.alpha.value = newValue;
|
|
148
|
+
// })
|
|
133
149
|
}
|
|
134
150
|
}
|
|
135
151
|
}, {
|
|
@@ -0,0 +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","_uri","set","value","_this2","_listeners","forEach","cb","_height","newValue","_this3","_color","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 // 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 // childrens.forEach((item, index) => {\n const uniforms = ((this._mesh 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 // childrens.forEach((item, index) => {\n const uniforms = ((this._mesh 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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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Object3D, Vector3 } from '@anov/3d-core';
|
|
1
|
+
import type { Mesh, Object3D, Vector3 } from '@anov/3d-core';
|
|
2
2
|
import { ShaderMaterial } from '@anov/3d-core';
|
|
3
3
|
import type { FenceOption } from '../type';
|
|
4
4
|
import FenceBase from './FenceBase';
|
|
5
5
|
declare class Fence_Base_01 extends FenceBase {
|
|
6
6
|
constructor(option: FenceOption, areaInstance: Object3D);
|
|
7
7
|
create(): void;
|
|
8
|
-
createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number):
|
|
8
|
+
createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
|
|
9
9
|
createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial;
|
|
10
10
|
}
|
|
11
11
|
export default Fence_Base_01;
|
|
@@ -12,7 +12,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
|
12
12
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
13
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
14
14
|
import { ShaderMaterial, use } from '@anov/3d-core';
|
|
15
|
-
import {
|
|
15
|
+
import { createRoundedClosedWallMesh } from "../../Utils/round-curve";
|
|
16
16
|
import { hexToRGBA, parseRGBA } from "../tool";
|
|
17
17
|
import FenceBase from "./FenceBase";
|
|
18
18
|
var Fence_Base_01 = /*#__PURE__*/function (_FenceBase) {
|
|
@@ -47,16 +47,28 @@ var Fence_Base_01 = /*#__PURE__*/function (_FenceBase) {
|
|
|
47
47
|
var material = this.createFenceMaterial(height, color, alpha);
|
|
48
48
|
|
|
49
49
|
// 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质
|
|
50
|
-
var mesh =
|
|
50
|
+
var mesh = createRoundedClosedWallMesh(points, {
|
|
51
51
|
radius: radius,
|
|
52
52
|
height: height,
|
|
53
53
|
close: close
|
|
54
54
|
}, material);
|
|
55
|
+
// const mesh = createRoundLineWallMesh(
|
|
56
|
+
// points,
|
|
57
|
+
// {
|
|
58
|
+
// radius,
|
|
59
|
+
// height,
|
|
60
|
+
// close,
|
|
61
|
+
// },
|
|
62
|
+
// material,
|
|
63
|
+
// )
|
|
55
64
|
use.useframe(function () {
|
|
56
|
-
mesh.children.forEach(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
})
|
|
65
|
+
// mesh.children.forEach((item, index) => {
|
|
66
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
67
|
+
// uniforms.iTime.value += 0.01
|
|
68
|
+
// })
|
|
69
|
+
|
|
70
|
+
var uniforms = mesh.material.uniforms;
|
|
71
|
+
uniforms.iTime.value += 0.01;
|
|
60
72
|
});
|
|
61
73
|
return mesh;
|
|
62
74
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ShaderMaterial","use","createRoundedClosedWallMesh","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","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, createRoundedClosedWallMesh } from '../../Utils/round-curve'\n\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 = createRoundedClosedWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\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 const uniforms = ((mesh as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.01\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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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Object3D, Vector3 } from '@anov/3d-core';
|
|
1
|
+
import type { Mesh, Object3D, Vector3 } from '@anov/3d-core';
|
|
2
2
|
import { ShaderMaterial } from '@anov/3d-core';
|
|
3
3
|
import type { FenceOption } from '../type';
|
|
4
4
|
import FenceBase from './FenceBase';
|
|
5
5
|
declare class Fence_Feeting_01 extends FenceBase {
|
|
6
6
|
constructor(option: FenceOption, areaInstance: Object3D);
|
|
7
7
|
create(): void;
|
|
8
|
-
createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number):
|
|
8
|
+
createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
|
|
9
9
|
createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial;
|
|
10
10
|
}
|
|
11
11
|
export default Fence_Feeting_01;
|
|
@@ -12,7 +12,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
|
12
12
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
13
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
14
14
|
import { ShaderMaterial, use } from '@anov/3d-core';
|
|
15
|
-
import {
|
|
15
|
+
import { createRoundedClosedWallMesh } from "../../Utils/round-curve";
|
|
16
16
|
import { hexToRGBA, parseRGBA } from "../tool";
|
|
17
17
|
import FenceBase from "./FenceBase";
|
|
18
18
|
var Fence_Feeting_01 = /*#__PURE__*/function (_FenceBase) {
|
|
@@ -42,21 +42,51 @@ var Fence_Feeting_01 = /*#__PURE__*/function (_FenceBase) {
|
|
|
42
42
|
var color = arguments.length > 4 ? arguments[4] : undefined;
|
|
43
43
|
var alpha = arguments.length > 5 ? arguments[5] : undefined;
|
|
44
44
|
if (!points) return;
|
|
45
|
-
|
|
46
45
|
// 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质
|
|
47
46
|
var material = this.createFenceMaterial(height, color, alpha);
|
|
47
|
+
|
|
48
48
|
// 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质
|
|
49
|
-
var mesh =
|
|
49
|
+
var mesh = createRoundedClosedWallMesh(points, {
|
|
50
50
|
radius: radius,
|
|
51
51
|
height: height,
|
|
52
52
|
close: close
|
|
53
53
|
}, material);
|
|
54
|
+
// const mesh = createRoundLineWallMesh(
|
|
55
|
+
// points,
|
|
56
|
+
// {
|
|
57
|
+
// radius,
|
|
58
|
+
// height,
|
|
59
|
+
// close,
|
|
60
|
+
// },
|
|
61
|
+
// material,
|
|
62
|
+
// )
|
|
54
63
|
use.useframe(function () {
|
|
55
|
-
mesh.children.forEach(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
})
|
|
64
|
+
// mesh.children.forEach((item, index) => {
|
|
65
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
66
|
+
// uniforms.iTime.value += 0.01
|
|
67
|
+
// })
|
|
68
|
+
|
|
69
|
+
var uniforms = mesh.material.uniforms;
|
|
70
|
+
uniforms.iTime.value += 0.002;
|
|
59
71
|
});
|
|
72
|
+
// 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质
|
|
73
|
+
// const material = this.createFenceMaterial(height, color, alpha)
|
|
74
|
+
// // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质
|
|
75
|
+
// const mesh = createRoundLineWallMesh(
|
|
76
|
+
// points,
|
|
77
|
+
// {
|
|
78
|
+
// radius,
|
|
79
|
+
// height,
|
|
80
|
+
// close,
|
|
81
|
+
// },
|
|
82
|
+
// material,
|
|
83
|
+
// )
|
|
84
|
+
// use.useframe(() => {
|
|
85
|
+
// mesh.children.forEach((item, index) => {
|
|
86
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
87
|
+
// uniforms.iTime.value += 0.002
|
|
88
|
+
// })
|
|
89
|
+
// })
|
|
60
90
|
return mesh;
|
|
61
91
|
}
|
|
62
92
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ShaderMaterial","use","createRoundedClosedWallMesh","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","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, createRoundedClosedWallMesh } 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 // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundedClosedWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\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 const uniforms = ((mesh as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.002\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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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Object3D, Vector3 } from '@anov/3d-core';
|
|
1
|
+
import type { Mesh, Object3D, Vector3 } from '@anov/3d-core';
|
|
2
2
|
import { ShaderMaterial } from '@anov/3d-core';
|
|
3
3
|
import type { FenceOption } from '../type';
|
|
4
4
|
import FenceBase from './FenceBase';
|
|
5
5
|
declare class Fence_Roll_01 extends FenceBase {
|
|
6
6
|
constructor(option: FenceOption, areaInstance: Object3D);
|
|
7
7
|
create(): void;
|
|
8
|
-
createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number):
|
|
8
|
+
createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
|
|
9
9
|
createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial;
|
|
10
10
|
}
|
|
11
11
|
export default Fence_Roll_01;
|
|
@@ -12,7 +12,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
|
12
12
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
13
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
14
14
|
import { ShaderMaterial, use } from '@anov/3d-core';
|
|
15
|
-
import {
|
|
15
|
+
import { createRoundedClosedWallMesh } from "../../Utils/round-curve";
|
|
16
16
|
import { hexToRGBA, parseRGBA } from "../tool";
|
|
17
17
|
import FenceBase from "./FenceBase";
|
|
18
18
|
var Fence_Roll_01 = /*#__PURE__*/function (_FenceBase) {
|
|
@@ -42,21 +42,52 @@ var Fence_Roll_01 = /*#__PURE__*/function (_FenceBase) {
|
|
|
42
42
|
var color = arguments.length > 4 ? arguments[4] : undefined;
|
|
43
43
|
var alpha = arguments.length > 5 ? arguments[5] : undefined;
|
|
44
44
|
if (!points) return;
|
|
45
|
-
|
|
46
45
|
// 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质
|
|
47
46
|
var material = this.createFenceMaterial(height, color, alpha);
|
|
47
|
+
|
|
48
48
|
// 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质
|
|
49
|
-
var mesh =
|
|
49
|
+
var mesh = createRoundedClosedWallMesh(points, {
|
|
50
50
|
radius: radius,
|
|
51
51
|
height: height,
|
|
52
52
|
close: close
|
|
53
53
|
}, material);
|
|
54
|
+
// const mesh = createRoundLineWallMesh(
|
|
55
|
+
// points,
|
|
56
|
+
// {
|
|
57
|
+
// radius,
|
|
58
|
+
// height,
|
|
59
|
+
// close,
|
|
60
|
+
// },
|
|
61
|
+
// material,
|
|
62
|
+
// )
|
|
54
63
|
use.useframe(function () {
|
|
55
|
-
mesh.children.forEach(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
})
|
|
64
|
+
// mesh.children.forEach((item, index) => {
|
|
65
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
66
|
+
// uniforms.iTime.value += 0.01
|
|
67
|
+
// })
|
|
68
|
+
|
|
69
|
+
var uniforms = mesh.material.uniforms;
|
|
70
|
+
uniforms.iTime.value += 0.002;
|
|
59
71
|
});
|
|
72
|
+
|
|
73
|
+
// // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质
|
|
74
|
+
// const material = this.createFenceMaterial(height, color, alpha)
|
|
75
|
+
// // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质
|
|
76
|
+
// const mesh = createRoundLineWallMesh(
|
|
77
|
+
// points,
|
|
78
|
+
// {
|
|
79
|
+
// radius,
|
|
80
|
+
// height,
|
|
81
|
+
// close,
|
|
82
|
+
// },
|
|
83
|
+
// material,
|
|
84
|
+
// )
|
|
85
|
+
// use.useframe(() => {
|
|
86
|
+
// mesh.children.forEach((item, index) => {
|
|
87
|
+
// const uniforms = ((item as Mesh).material as ShaderMaterial).uniforms
|
|
88
|
+
// uniforms.iTime.value += 0.002
|
|
89
|
+
// })
|
|
90
|
+
// })
|
|
60
91
|
return mesh;
|
|
61
92
|
}
|
|
62
93
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ShaderMaterial","use","createRoundedClosedWallMesh","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","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, createRoundedClosedWallMesh } 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 // 创建围栏使用的材质,调用createFenceMaterial方法生成ShaderMaterial类型的材质\n const material = this.createFenceMaterial(height, color, alpha)\n\n // 使用createRoundLineWallMesh函数创建围栏的网格物体,传入点数组、半径、高度、是否闭合等参数以及创建好的材质\n const mesh = createRoundedClosedWallMesh(\n points,\n {\n radius,\n height,\n close,\n },\n material,\n )\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 const uniforms = ((mesh as Mesh).material as ShaderMaterial).uniforms\n uniforms.iTime.value += 0.002\n })\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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"}
|
|
@@ -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","_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/
|
|
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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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { Object3D, Vector3 } from '@anov/3d-core';
|
|
2
|
-
import { Mesh } from '@anov/3d-core';
|
|
3
|
-
import * as THREE from '@anov/3d-core';
|
|
2
|
+
import { ExtrudeGeometry, Mesh, MeshBasicMaterial } from '@anov/3d-core';
|
|
4
3
|
import type { FillAreaOption } from '../type';
|
|
5
4
|
import FillAreaBase from './FillAreaBase';
|
|
6
5
|
declare class FillArea_Face_01 extends FillAreaBase {
|
|
7
6
|
constructor(option: FillAreaOption, areaInstance: Object3D);
|
|
8
7
|
create(): void;
|
|
9
|
-
createMesh(points: Vector3[], color: string, alpha: number): Mesh<
|
|
8
|
+
createMesh(points: Vector3[], color: string, alpha: number): Mesh<ExtrudeGeometry, MeshBasicMaterial>;
|
|
10
9
|
}
|
|
11
10
|
export default FillArea_Face_01;
|
|
@@ -12,7 +12,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
|
|
|
12
12
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
13
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
14
14
|
import { Color, ExtrudeGeometry, Mesh, MeshBasicMaterial, Shape, Vector2 } from '@anov/3d-core';
|
|
15
|
-
import {
|
|
15
|
+
import { createRoundedClosedCurve } from "../../Utils/round-curve";
|
|
16
16
|
import FillAreaBase from "./FillAreaBase";
|
|
17
17
|
var FillArea_Face_01 = /*#__PURE__*/function (_FillAreaBase) {
|
|
18
18
|
_inherits(FillArea_Face_01, _FillAreaBase);
|
|
@@ -52,13 +52,12 @@ var FillArea_Face_01 = /*#__PURE__*/function (_FillAreaBase) {
|
|
|
52
52
|
// shape.lineTo(points[i].x, points[i].z)
|
|
53
53
|
// // 闭合形状路径,确保形状是封闭的,以便后续挤出操作生成正确的几何体
|
|
54
54
|
// shape.closePath()
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
var
|
|
61
|
-
var points2D = currentPoints.map(function (p) {
|
|
55
|
+
// const roundLineGeometry = new RoundLineGeometry(points, { radius: this._corner, close: this._close })
|
|
56
|
+
// const curve = roundLineGeometry.curve
|
|
57
|
+
var curvePath = createRoundedClosedCurve(points, this._corner, this._close);
|
|
58
|
+
var pathPoints = curvePath.getPoints(1000);
|
|
59
|
+
// const currentPoints = curve.getPoints(1000)
|
|
60
|
+
var points2D = pathPoints.map(function (p) {
|
|
62
61
|
return new Vector2(p.x, p.z);
|
|
63
62
|
});
|
|
64
63
|
// 创建一个Shape并添加封闭路径
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Color","ExtrudeGeometry","Mesh","MeshBasicMaterial","Shape","Vector2","createRoundedClosedCurve","FillAreaBase","FillArea_Face_01","_FillAreaBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createMesh","_points","_color","_alpha","add","points","color","alpha","material","transparent","opacity","side","curvePath","_corner","_close","pathPoints","getPoints","points2D","map","p","x","z","shape","extrudeSettings","steps","bevelEnabled","depth","extrudePath","undefined","geometry","mesh","rotateX","Math","PI"],"sources":["../../../../src/business/Area/fillArea/fillArea_face_01.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, ExtrudeGeometry, Mesh, MeshBasicMaterial, Shape, Vector2 } from '@anov/3d-core'\nimport * as THREE from '@anov/3d-core'\nimport type { FillAreaOption } from '../type'\nimport { RoundLineGeometry, createRoundedClosedCurve } from '../../Utils/round-curve'\nimport FillAreaBase from './FillAreaBase'\n\nclass FillArea_Face_01 extends FillAreaBase {\n constructor(option: FillAreaOption, areaInstance: Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createMesh(this._points, this._color, this._alpha)\n this._mesh && this.add(this._mesh)\n }\n\n createMesh(points: Vector3[], color: string, alpha: number) {\n if (!points)\n return\n\n // 创建材质\n const material = new MeshBasicMaterial({ color: new Color(color), transparent: true, opacity: alpha, side: 2 })\n // // 创建一个Shape对象,用于定义填充区域的平面形状\n // const shape = new Shape()\n // // 将第一个点的x、z坐标作为Shape的起始位置\n // shape.moveTo(points[0].x, points[0].z)\n\n // // 遍历剩余的点,依次将它们的x、z坐标连接起来,构成封闭的平面形状\n // for (let i = 1; i < points.length; i++)\n // shape.lineTo(points[i].x, points[i].z)\n // // 闭合形状路径,确保形状是封闭的,以便后续挤出操作生成正确的几何体\n // shape.closePath()\n // const roundLineGeometry = new RoundLineGeometry(points, { radius: this._corner, close: this._close })\n // const curve = roundLineGeometry.curve\n const curvePath = createRoundedClosedCurve(points, this._corner, this._close)\n const pathPoints = curvePath.getPoints(1000)\n // const currentPoints = curve.getPoints(1000)\n const points2D = pathPoints.map((p: any) => new Vector2(p.x, p.z))\n // 创建一个Shape并添加封闭路径\n const shape = new Shape(points2D)\n // 定义挤出几何体的基本设置,包括步数、是否启用斜角、挤出深度以及挤出路径等\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n depth: 1,\n extrudePath: undefined,\n }\n\n // 生成填充区域的几何体\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // 生成填充区域的网格物体\n const mesh = new Mesh(geometry, material)\n // 将填充区域的网格物体绕x轴旋转90度\n mesh.rotateX(Math.PI / 2)\n\n return mesh\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 // (this.mesh.material as MeshBasicMaterial).color = new Color(newValue)\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 // (this.mesh.material as MeshBasicMaterial).opacity = newValue\n // }\n}\n\nexport default FillArea_Face_01"],"mappings":";;;;;;;;;;;;;AACA,SAASA,KAAK,EAAEC,eAAe,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,KAAK,EAAEC,OAAO,QAAQ,eAAe;AAG/F,SAA4BC,wBAAwB;AACpD,OAAOC,YAAY;AAAsB,IAEnCC,gBAAgB,0BAAAC,aAAA;EAAAC,SAAA,CAAAF,gBAAA,EAAAC,aAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,gBAAA;EACpB,SAAAA,iBAAYK,MAAsB,EAAEC,YAAsB,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAR,gBAAA;IAC1DO,KAAA,GAAAJ,MAAA,CAAAM,IAAA,OAAMJ,MAAM,EAAEC,YAAY;IAC1BC,KAAA,CAAKG,MAAM,CAAC,CAAC;IAAA,OAAAH,KAAA;EACf;EAACI,YAAA,CAAAX,gBAAA;IAAAY,GAAA;IAAAC,KAAA,EAED,SAAAH,OAAA,EAAS;MACP,IAAI,CAACI,KAAK,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAACC,OAAO,EAAE,IAAI,CAACC,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;MACpE,IAAI,CAACJ,KAAK,IAAI,IAAI,CAACK,GAAG,CAAC,IAAI,CAACL,KAAK,CAAC;IACpC;EAAC;IAAAF,GAAA;IAAAC,KAAA,EAED,SAAAE,WAAWK,MAAiB,EAAEC,KAAa,EAAEC,KAAa,EAAE;MAC1D,IAAI,CAACF,MAAM,EACT;;MAEF;MACA,IAAMG,QAAQ,GAAG,IAAI5B,iBAAiB,CAAC;QAAE0B,KAAK,EAAE,IAAI7B,KAAK,CAAC6B,KAAK,CAAC;QAAEG,WAAW,EAAE,IAAI;QAAEC,OAAO,EAAEH,KAAK;QAAEI,IAAI,EAAE;MAAE,CAAC,CAAC;MAC/G;MACA;MACA;MACA;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAMC,SAAS,GAAG7B,wBAAwB,CAACsB,MAAM,EAAE,IAAI,CAACQ,OAAO,EAAE,IAAI,CAACC,MAAM,CAAC;MAC7E,IAAMC,UAAU,GAAGH,SAAS,CAACI,SAAS,CAAC,IAAI,CAAC;MAC5C;MACA,IAAMC,QAAQ,GAAGF,UAAU,CAACG,GAAG,CAAC,UAACC,CAAM;QAAA,OAAK,IAAIrC,OAAO,CAACqC,CAAC,CAACC,CAAC,EAAED,CAAC,CAACE,CAAC,CAAC;MAAA,EAAC;MAClE;MACA,IAAMC,KAAK,GAAG,IAAIzC,KAAK,CAACoC,QAAQ,CAAC;MACjC;MACA,IAAMM,eAAe,GAAG;QACtBC,KAAK,EAAE,GAAG;QACVC,YAAY,EAAE,KAAK;QACnBC,KAAK,EAAE,CAAC;QACRC,WAAW,EAAEC;MACf,CAAC;;MAED;MACA,IAAMC,QAAQ,GAAG,IAAInD,eAAe,CAAC4C,KAAK,EAAEC,eAAe,CAAC;MAC5D;MACA,IAAMO,IAAI,GAAG,IAAInD,IAAI,CAACkD,QAAQ,EAAErB,QAAQ,CAAC;MACzC;MACAsB,IAAI,CAACC,OAAO,CAACC,IAAI,CAACC,EAAE,GAAG,CAAC,CAAC;MAEzB,OAAOH,IAAI;IACb;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;IACA;EAAA;EAAA,OAAA7C,gBAAA;AAAA,EA/E6BD,YAAY;AAkF3C,eAAeC,gBAAgB"}
|
|
@@ -13,7 +13,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
13
13
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
14
14
|
import { Color, Line2, LineGeometry, LineMaterial, Vector2, Vector3 } from '@anov/3d-core';
|
|
15
15
|
import * as THREE from '@anov/3d-core';
|
|
16
|
-
import {
|
|
16
|
+
import { createRoundedClosedCurve } from "../../Utils/round-curve";
|
|
17
17
|
import FillAreaBase from "./FillAreaBase";
|
|
18
18
|
var FillArea_Line_01 = /*#__PURE__*/function (_FillAreaBase) {
|
|
19
19
|
_inherits(FillArea_Line_01, _FillAreaBase);
|
|
@@ -47,14 +47,22 @@ var FillArea_Line_01 = /*#__PURE__*/function (_FillAreaBase) {
|
|
|
47
47
|
linewidth: 15,
|
|
48
48
|
resolution: new Vector2(window.innerWidth, window.innerHeight)
|
|
49
49
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
// const roundLineGeometry = new RoundLineGeometry(points, { radius: this._corner, close: this._close })
|
|
51
|
+
// const curve = roundLineGeometry.curve
|
|
52
|
+
// const currentPoints = curve.getPoints(1000)
|
|
53
|
+
// // 将点转换为二维坐标(只保留x和y)
|
|
54
|
+
// const points3D = currentPoints.map((p: Point) => new Vector3(p.x, 0, p.z))
|
|
55
|
+
// const geometry = new LineGeometry()
|
|
56
|
+
// geometry.setPositions(points3D.flatMap((p: Point) => [p.x, 0, p.z])) // 将二维坐标转换为一维数组
|
|
57
|
+
// // 创建一个线的网格物体(区别于原来的面的网格物体)
|
|
58
|
+
// const mesh = new Line2(geometry, material)
|
|
59
|
+
|
|
60
|
+
var curvePath = createRoundedClosedCurve(points, this._corner, this._close);
|
|
61
|
+
var pathPoints = curvePath.getPoints(1000);
|
|
62
|
+
// const geometry = new THREE.BufferGeometry().setFromPoints(pathPoints)
|
|
63
|
+
// const mesh = new Line2(geometry, material)
|
|
56
64
|
// 将点转换为二维坐标(只保留x和y)
|
|
57
|
-
var points3D =
|
|
65
|
+
var points3D = pathPoints.map(function (p) {
|
|
58
66
|
return new Vector3(p.x, 0, p.z);
|
|
59
67
|
});
|
|
60
68
|
var geometry = new LineGeometry();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Color","Line2","LineGeometry","LineMaterial","Vector2","Vector3","THREE","createRoundedClosedCurve","FillAreaBase","FillArea_Line_01","_FillAreaBase","_inherits","_super","_createSuper","option","areaInstance","_this","_classCallCheck","call","create","_createClass","key","value","_mesh","createMesh","_points","_color","_alpha","add","points","color","alpha","material","getHex","transparent","opacity","blending","NormalBlending","depthTest","alphaTest","linewidth","resolution","window","innerWidth","innerHeight","curvePath","_corner","_close","pathPoints","getPoints","points3D","map","p","x","z","geometry","setPositions","flatMap","mesh"],"sources":["../../../../src/business/Area/fillArea/fillArea_line_01.ts"],"sourcesContent":["import { Color, Line, Line2, LineGeometry, LineMaterial, Mesh, Vector2, Vector3 } from '@anov/3d-core'\n\nimport * as THREE from '@anov/3d-core'\nimport type { FillAreaOption } from '../type'\nimport { RoundLineGeometry, createRoundedClosedCurve } from '../../Utils/round-curve'\nimport FillAreaBase from './FillAreaBase'\n\ninterface Point {\n x: number\n y: number\n z: number\n}\nclass FillArea_Line_01 extends FillAreaBase {\n constructor(option: FillAreaOption, areaInstance: THREE.Object3D) {\n super(option, areaInstance)\n this.create()\n }\n\n create() {\n this._mesh = this.createMesh(this._points, this._color, this._alpha)\n this._mesh && this.add(this._mesh)\n }\n\n createMesh(points: Vector3[], color: string, alpha: number) {\n if (!points)\n return\n // 创建材质,这里设置为线的材质,比如LineMaterial\n const material = new LineMaterial({\n color: new Color(color).getHex(),\n transparent: true,\n opacity: alpha,\n blending: THREE.NormalBlending, // 启用混合模式以使透明度生效\n depthTest: false,\n alphaTest: 0.01,\n linewidth: 15,\n resolution: new Vector2(window.innerWidth, window.innerHeight),\n })\n // const roundLineGeometry = new RoundLineGeometry(points, { radius: this._corner, close: this._close })\n // const curve = roundLineGeometry.curve\n // const currentPoints = curve.getPoints(1000)\n // // 将点转换为二维坐标(只保留x和y)\n // const points3D = currentPoints.map((p: Point) => new Vector3(p.x, 0, p.z))\n // const geometry = new LineGeometry()\n // geometry.setPositions(points3D.flatMap((p: Point) => [p.x, 0, p.z])) // 将二维坐标转换为一维数组\n // // 创建一个线的网格物体(区别于原来的面的网格物体)\n // const mesh = new Line2(geometry, material)\n\n const curvePath = createRoundedClosedCurve(points, this._corner, this._close)\n const pathPoints = curvePath.getPoints(1000)\n // const geometry = new THREE.BufferGeometry().setFromPoints(pathPoints)\n // const mesh = new Line2(geometry, material)\n // 将点转换为二维坐标(只保留x和y)\n const points3D = pathPoints.map((p: Point) => new Vector3(p.x, 0, p.z))\n const geometry = new LineGeometry()\n geometry.setPositions(points3D.flatMap((p: Point) => [p.x, 0, p.z])) // 将二维坐标转换为一维数组\n // 创建一个线的网格物体(区别于原来的面的网格物体)\n const mesh = new Line2(geometry, material)\n return mesh\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 // this.mesh.material.color = new Color(newValue)\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 // this.mesh.material.opacity = newValue\n // }\n}\n\nexport default FillArea_Line_01"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,KAAK,EAAQC,KAAK,EAAEC,YAAY,EAAEC,YAAY,EAAQC,OAAO,EAAEC,OAAO,QAAQ,eAAe;AAEtG,OAAO,KAAKC,KAAK,MAAM,eAAe;AAEtC,SAA4BC,wBAAwB;AACpD,OAAOC,YAAY;AAAsB,IAOnCC,gBAAgB,0BAAAC,aAAA;EAAAC,SAAA,CAAAF,gBAAA,EAAAC,aAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,gBAAA;EACpB,SAAAA,iBAAYK,MAAsB,EAAEC,YAA4B,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAR,gBAAA;IAChEO,KAAA,GAAAJ,MAAA,CAAAM,IAAA,OAAMJ,MAAM,EAAEC,YAAY;IAC1BC,KAAA,CAAKG,MAAM,CAAC,CAAC;IAAA,OAAAH,KAAA;EACf;EAACI,YAAA,CAAAX,gBAAA;IAAAY,GAAA;IAAAC,KAAA,EAED,SAAAH,OAAA,EAAS;MACP,IAAI,CAACI,KAAK,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAACC,OAAO,EAAE,IAAI,CAACC,MAAM,EAAE,IAAI,CAACC,MAAM,CAAC;MACpE,IAAI,CAACJ,KAAK,IAAI,IAAI,CAACK,GAAG,CAAC,IAAI,CAACL,KAAK,CAAC;IACpC;EAAC;IAAAF,GAAA;IAAAC,KAAA,EAED,SAAAE,WAAWK,MAAiB,EAAEC,KAAa,EAAEC,KAAa,EAAE;MAC1D,IAAI,CAACF,MAAM,EACT;MACF;MACA,IAAMG,QAAQ,GAAG,IAAI7B,YAAY,CAAC;QAChC2B,KAAK,EAAE,IAAI9B,KAAK,CAAC8B,KAAK,CAAC,CAACG,MAAM,CAAC,CAAC;QAChCC,WAAW,EAAE,IAAI;QACjBC,OAAO,EAAEJ,KAAK;QACdK,QAAQ,EAAE9B,KAAK,CAAC+B,cAAc;QAAE;QAChCC,SAAS,EAAE,KAAK;QAChBC,SAAS,EAAE,IAAI;QACfC,SAAS,EAAE,EAAE;QACbC,UAAU,EAAE,IAAIrC,OAAO,CAACsC,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW;MAC/D,CAAC,CAAC;MACF;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA,IAAMC,SAAS,GAAGtC,wBAAwB,CAACsB,MAAM,EAAE,IAAI,CAACiB,OAAO,EAAE,IAAI,CAACC,MAAM,CAAC;MAC7E,IAAMC,UAAU,GAAGH,SAAS,CAACI,SAAS,CAAC,IAAI,CAAC;MAC5C;MACA;MACA;MACA,IAAMC,QAAQ,GAAGF,UAAU,CAACG,GAAG,CAAC,UAACC,CAAQ;QAAA,OAAK,IAAI/C,OAAO,CAAC+C,CAAC,CAACC,CAAC,EAAE,CAAC,EAAED,CAAC,CAACE,CAAC,CAAC;MAAA,EAAC;MACvE,IAAMC,QAAQ,GAAG,IAAIrD,YAAY,CAAC,CAAC;MACnCqD,QAAQ,CAACC,YAAY,CAACN,QAAQ,CAACO,OAAO,CAAC,UAACL,CAAQ;QAAA,OAAK,CAACA,CAAC,CAACC,CAAC,EAAE,CAAC,EAAED,CAAC,CAACE,CAAC,CAAC;MAAA,EAAC,CAAC,EAAC;MACrE;MACA,IAAMI,IAAI,GAAG,IAAIzD,KAAK,CAACsD,QAAQ,EAAEvB,QAAQ,CAAC;MAC1C,OAAO0B,IAAI;IACb;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;IACA;EAAA;EAAA,OAAAjD,gBAAA;AAAA,EA1E6BD,YAAY;AA6E3C,eAAeC,gBAAgB"}
|
|
@@ -33,7 +33,7 @@ var FenceStrategy = {
|
|
|
33
33
|
while (1) switch (_context.prev = _context.next) {
|
|
34
34
|
case 0:
|
|
35
35
|
_context.next = 2;
|
|
36
|
-
return import("./
|
|
36
|
+
return import("./fence/fence_base_01");
|
|
37
37
|
case 2:
|
|
38
38
|
return _context.abrupt("return", _context.sent.default);
|
|
39
39
|
case 3:
|
|
@@ -53,7 +53,7 @@ var FenceStrategy = {
|
|
|
53
53
|
while (1) switch (_context2.prev = _context2.next) {
|
|
54
54
|
case 0:
|
|
55
55
|
_context2.next = 2;
|
|
56
|
-
return import("./
|
|
56
|
+
return import("./fence/fence_feeting_01");
|
|
57
57
|
case 2:
|
|
58
58
|
return _context2.abrupt("return", _context2.sent.default);
|
|
59
59
|
case 3:
|
|
@@ -73,7 +73,7 @@ var FenceStrategy = {
|
|
|
73
73
|
while (1) switch (_context3.prev = _context3.next) {
|
|
74
74
|
case 0:
|
|
75
75
|
_context3.next = 2;
|
|
76
|
-
return import("./
|
|
76
|
+
return import("./fence/fence_roll_01");
|
|
77
77
|
case 2:
|
|
78
78
|
return _context3.abrupt("return", _context3.sent.default);
|
|
79
79
|
case 3:
|
|
@@ -95,7 +95,7 @@ var FillAreaStrategy = {
|
|
|
95
95
|
while (1) switch (_context4.prev = _context4.next) {
|
|
96
96
|
case 0:
|
|
97
97
|
_context4.next = 2;
|
|
98
|
-
return import("./
|
|
98
|
+
return import("./fillArea/fillArea_line_01");
|
|
99
99
|
case 2:
|
|
100
100
|
return _context4.abrupt("return", _context4.sent.default);
|
|
101
101
|
case 3:
|
|
@@ -115,7 +115,7 @@ var FillAreaStrategy = {
|
|
|
115
115
|
while (1) switch (_context5.prev = _context5.next) {
|
|
116
116
|
case 0:
|
|
117
117
|
_context5.next = 2;
|
|
118
|
-
return import("./
|
|
118
|
+
return import("./fillArea/fillArea_face_01");
|
|
119
119
|
case 2:
|
|
120
120
|
return _context5.abrupt("return", _context5.sent.default);
|
|
121
121
|
case 3:
|