@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
|
@@ -15,9 +15,36 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
15
15
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
16
16
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
17
17
|
import { CurvePath, LineCurve3, QuadraticBezierCurve3 } from '@anov/3d-core';
|
|
18
|
+
var calculateDistance = function calculateDistance(p1, p2) {
|
|
19
|
+
return p1.clone().sub(p2).length();
|
|
20
|
+
};
|
|
21
|
+
|
|
18
22
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
23
|
+
* calculateSafeRadius
|
|
24
|
+
* @param points
|
|
25
|
+
* @param radius
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
var calculateSafeRadius = function calculateSafeRadius(points, radius) {
|
|
29
|
+
if (points.length <= 2) return [radius, radius];
|
|
30
|
+
var safeRadii = new Array(points.length).fill(radius);
|
|
31
|
+
for (var i = 1; i < points.length - 1; i++) {
|
|
32
|
+
var prevDist = calculateDistance(points[i], points[i - 1]);
|
|
33
|
+
var nextDist = calculateDistance(points[i], points[i + 1]);
|
|
34
|
+
var maxSafeRadius = Math.min(prevDist / 2, nextDist / 2, radius);
|
|
35
|
+
safeRadii[i] = maxSafeRadius;
|
|
36
|
+
}
|
|
37
|
+
if (points.length > 2) {
|
|
38
|
+
var firstDist = calculateDistance(points[0], points[1]);
|
|
39
|
+
var lastDist = calculateDistance(points[points.length - 1], points[points.length - 2]);
|
|
40
|
+
safeRadii[0] = Math.min(firstDist / 2, radius);
|
|
41
|
+
safeRadii[points.length - 1] = Math.min(lastDist / 2, radius);
|
|
42
|
+
}
|
|
43
|
+
return safeRadii;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* 创建圆角拐角曲线
|
|
21
48
|
* @param points
|
|
22
49
|
* @param radius
|
|
23
50
|
* @param close
|
|
@@ -29,78 +56,76 @@ export var createRoundedCornersCurve = function createRoundedCornersCurve(points
|
|
|
29
56
|
var curve = new CurvePath();
|
|
30
57
|
if (points.length < 2) throw new Error('At least two points are required to create a curve');
|
|
31
58
|
if (points.length === 2) {
|
|
32
|
-
|
|
33
|
-
curve.curves.push(line);
|
|
59
|
+
curve.curves.push(new LineCurve3(points[0], points[1]));
|
|
34
60
|
return curve;
|
|
35
61
|
}
|
|
62
|
+
var safeRadii = calculateSafeRadius(points, radius);
|
|
36
63
|
var lines = [];
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
lines.push(new LineCurve3(firstPoint, realEndPoints));
|
|
44
|
-
} else if (i === points.length - 1) {
|
|
45
|
-
//
|
|
46
|
-
} else {
|
|
47
|
-
var dir1 = points[i - 1].clone().sub(points[i]).normalize();
|
|
48
|
-
var dir2 = points[i + 1].clone().sub(points[i]).normalize();
|
|
49
|
-
var dir3 = points[i].clone().sub(points[i + 1]).normalize();
|
|
50
|
-
var nextDir1 = dir2.clone();
|
|
51
|
-
var nextDir2 = points[i].clone().sub(points[i + 1]).normalize();
|
|
52
|
-
var p1 = points[i].clone().add(dir1.multiplyScalar(radius));
|
|
53
|
-
var p2 = points[i].clone();
|
|
54
|
-
var p3 = points[i].clone().add(dir2.multiplyScalar(radius));
|
|
55
|
-
var beziercurve = new QuadraticBezierCurve3(p1, p2, p3);
|
|
56
|
-
var realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius));
|
|
57
|
-
var _realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius));
|
|
58
|
-
lines.push(beziercurve);
|
|
59
|
-
lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1 ? close ? points[i + 1].clone().add(dir3.multiplyScalar(radius)) : points[i + 1] : _realEndPoints));
|
|
60
|
-
}
|
|
64
|
+
var lastIndex = points.length - 1;
|
|
65
|
+
if (close && points.length > 2) {
|
|
66
|
+
var firstLastDist = calculateDistance(points[0], points[lastIndex]);
|
|
67
|
+
var safeConnectRadius = Math.min(firstLastDist / 2, radius);
|
|
68
|
+
safeRadii[0] = Math.min(safeRadii[0], safeConnectRadius);
|
|
69
|
+
safeRadii[lastIndex] = Math.min(safeRadii[lastIndex], safeConnectRadius);
|
|
61
70
|
}
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
var
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var
|
|
73
|
-
var
|
|
74
|
-
var
|
|
75
|
-
var
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
lines.push(beziercurve2);
|
|
82
|
-
lines.push(laseLine);
|
|
83
|
-
lines.push(_beziercurve);
|
|
71
|
+
if (points.length > 2) {
|
|
72
|
+
var dir = points[0].clone().sub(points[1]).normalize();
|
|
73
|
+
var realEndPoints = points[1].clone().add(dir.multiplyScalar(safeRadii[1]));
|
|
74
|
+
var firstPoint = points[0];
|
|
75
|
+
if (close) firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(safeRadii[0]));
|
|
76
|
+
lines.push(new LineCurve3(firstPoint, realEndPoints));
|
|
77
|
+
}
|
|
78
|
+
for (var i = 1; i < lastIndex; i++) {
|
|
79
|
+
var dir1 = points[i - 1].clone().sub(points[i]).normalize();
|
|
80
|
+
var dir2 = points[i + 1].clone().sub(points[i]).normalize();
|
|
81
|
+
var dir3 = points[i].clone().sub(points[i + 1]).normalize();
|
|
82
|
+
var p1 = points[i].clone().add(dir1.multiplyScalar(safeRadii[i]));
|
|
83
|
+
var p2 = points[i].clone();
|
|
84
|
+
var p3 = points[i].clone().add(dir2.multiplyScalar(safeRadii[i]));
|
|
85
|
+
var bezierCurve = new QuadraticBezierCurve3(p1, p2, p3);
|
|
86
|
+
lines.push(bezierCurve);
|
|
87
|
+
var nextRadius = safeRadii[i + 1];
|
|
88
|
+
var nextEndPoint = i === lastIndex - 1 && close ? points[i + 1].clone().add(dir3.multiplyScalar(nextRadius)) : i === lastIndex - 1 ? points[i + 1] : points[i + 1].clone().add(dir3.multiplyScalar(nextRadius));
|
|
89
|
+
lines.push(new LineCurve3(p3, nextEndPoint));
|
|
84
90
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
if (close && points.length > 2) {
|
|
92
|
+
var lastDir1 = points[0].clone().sub(points[lastIndex]).normalize();
|
|
93
|
+
var lastDir2 = points[lastIndex - 1].clone().sub(points[lastIndex]).normalize();
|
|
94
|
+
var lastP1 = points[lastIndex].clone().add(lastDir2.multiplyScalar(safeRadii[lastIndex]));
|
|
95
|
+
var lastP2 = points[lastIndex].clone();
|
|
96
|
+
var lastP3 = points[lastIndex].clone().add(lastDir1.multiplyScalar(safeRadii[lastIndex]));
|
|
97
|
+
var lastBezier = new QuadraticBezierCurve3(lastP1, lastP2, lastP3);
|
|
98
|
+
lines.push(lastBezier);
|
|
99
|
+
var firstDir1 = points[1].clone().sub(points[0]).normalize();
|
|
100
|
+
var firstDir2 = points[lastIndex].clone().sub(points[0]).normalize();
|
|
101
|
+
var firstP1 = points[0].clone().add(firstDir2.multiplyScalar(safeRadii[0]));
|
|
102
|
+
var firstP2 = points[0].clone();
|
|
103
|
+
var firstP3 = points[0].clone().add(firstDir1.multiplyScalar(safeRadii[0]));
|
|
104
|
+
lines.push(new LineCurve3(lastP3, firstP1));
|
|
105
|
+
lines.push(new QuadraticBezierCurve3(firstP1, firstP2, firstP3));
|
|
106
|
+
}
|
|
107
|
+
curve.curves = [].concat(lines);
|
|
88
108
|
return curve;
|
|
89
109
|
};
|
|
90
|
-
var recreateCurve = function recreateCurve(target,
|
|
110
|
+
var recreateCurve = function recreateCurve(target, _propertyKey, descriptor) {
|
|
91
111
|
var originalMethod = descriptor.value;
|
|
92
112
|
var handleFunction = function handleFunction(fn) {
|
|
93
113
|
return function () {
|
|
94
114
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
95
115
|
args[_key] = arguments[_key];
|
|
96
116
|
}
|
|
97
|
-
var res = fn.apply(
|
|
98
|
-
|
|
117
|
+
var res = fn.apply(this, args);
|
|
118
|
+
this.curves = createRoundedCornersCurve(this._points, this._radius, this._close).curves;
|
|
99
119
|
return res;
|
|
100
120
|
};
|
|
101
121
|
};
|
|
102
|
-
if (originalMethod)
|
|
122
|
+
if (originalMethod) descriptor.value = handleFunction(originalMethod);else descriptor.set = handleFunction(descriptor.set);
|
|
123
|
+
return descriptor;
|
|
103
124
|
};
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* 圆角拐角曲线类
|
|
128
|
+
*/
|
|
104
129
|
export var RoundedCornersCurve = (_class = /*#__PURE__*/function (_CurvePath) {
|
|
105
130
|
_inherits(RoundedCornersCurve, _CurvePath);
|
|
106
131
|
var _super = _createSuper(RoundedCornersCurve);
|
|
@@ -120,6 +145,14 @@ export var RoundedCornersCurve = (_class = /*#__PURE__*/function (_CurvePath) {
|
|
|
120
145
|
return _this;
|
|
121
146
|
}
|
|
122
147
|
_createClass(RoundedCornersCurve, [{
|
|
148
|
+
key: "points",
|
|
149
|
+
get: function get() {
|
|
150
|
+
return this._points.slice();
|
|
151
|
+
},
|
|
152
|
+
set: function set(points) {
|
|
153
|
+
this._points = points;
|
|
154
|
+
}
|
|
155
|
+
}, {
|
|
123
156
|
key: "radius",
|
|
124
157
|
get: function get() {
|
|
125
158
|
return this._radius;
|
|
@@ -138,9 +171,24 @@ export var RoundedCornersCurve = (_class = /*#__PURE__*/function (_CurvePath) {
|
|
|
138
171
|
}, {
|
|
139
172
|
key: "clone",
|
|
140
173
|
value: function clone() {
|
|
141
|
-
return new this.constructor(this._points
|
|
174
|
+
return new this.constructor(this._points.map(function (p) {
|
|
175
|
+
return p.clone();
|
|
176
|
+
}), this._radius, this._close);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* updatePoint
|
|
181
|
+
* @param index
|
|
182
|
+
* @param point
|
|
183
|
+
*/
|
|
184
|
+
}, {
|
|
185
|
+
key: "updatePoint",
|
|
186
|
+
value: function updatePoint(index, point) {
|
|
187
|
+
if (index < 0 || index >= this._points.length) throw new Error("Point index out of range: ".concat(index));
|
|
188
|
+
this._points[index] = point;
|
|
189
|
+
this.curves = createRoundedCornersCurve(this._points, this._radius, this._close).curves;
|
|
142
190
|
}
|
|
143
191
|
}]);
|
|
144
192
|
return RoundedCornersCurve;
|
|
145
|
-
}(CurvePath), (_applyDecoratedDescriptor(_class.prototype, "radius", [recreateCurve], Object.getOwnPropertyDescriptor(_class.prototype, "radius"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "close", [recreateCurve], Object.getOwnPropertyDescriptor(_class.prototype, "close"), _class.prototype)), _class);
|
|
193
|
+
}(CurvePath), (_applyDecoratedDescriptor(_class.prototype, "points", [recreateCurve], Object.getOwnPropertyDescriptor(_class.prototype, "points"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "radius", [recreateCurve], Object.getOwnPropertyDescriptor(_class.prototype, "radius"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "close", [recreateCurve], Object.getOwnPropertyDescriptor(_class.prototype, "close"), _class.prototype)), _class);
|
|
146
194
|
//# sourceMappingURL=RoundedCornersCurve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CurvePath","LineCurve3","QuadraticBezierCurve3","createRoundedCornersCurve","points","radius","arguments","length","undefined","close","curve","Error","line","curves","push","lines","i","dir","clone","sub","normalize","realEndPoints","add","multiplyScalar","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","forEach","recreateCurve","target","propertyKey","descriptor","originalMethod","value","handleFunction","fn","_len","args","Array","_key","res","apply","_points","_radius","_close","set","RoundedCornersCurve","_class","_CurvePath","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createClass","key","get","constructor","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor"],"sources":["../../../../src/core/Curve/RoundedCornersCurve/RoundedCornersCurve.ts"],"sourcesContent":["import { CurvePath, LineCurve3, QuadraticBezierCurve3 } from '@anov/3d-core'\nimport type { Vector3 } from '@anov/3d-core'\nimport type { RoundedCornersCurveInterface } from '.'\n\n/**\n * create rounded corners curve\n * notics: at least three points\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nexport const createRoundedCornersCurve = (points: Vector3[], radius = 20, close = true) => {\n const curve = new CurvePath() as CurvePath<Vector3>\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n const line = new LineCurve3(points[0], points[1])\n curve.curves.push(line)\n\n return curve\n }\n\n const lines = []\n\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius))\n\n let firstPoint = points[0]\n\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n else if (i === points.length - 1) {\n //\n }\n else {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const nextDir1 = dir2.clone()\n const nextDir2 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p1, p2, p3)\n\n const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius))\n const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius))\n\n lines.push(beziercurve)\n lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1\n ? close\n ? points[i + 1].clone().add(dir3.multiplyScalar(radius))\n : points[i + 1]\n : realEndPoints))\n }\n }\n\n if (close) {\n // first point\n const dir1 = points[1].clone().sub(points[0]).normalize()\n const dir2 = points[points.length - 1].clone().sub(points[0]).normalize()\n\n const p1 = points[0].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[0]\n const p3 = points[0].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p3, p2, p1)\n\n // last point\n const dir3 = points[0].clone().sub(points[points.length - 1]).normalize()\n const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize()\n\n const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius))\n const p5 = points[points.length - 1]\n const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius))\n\n const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4)\n\n // last line\n const laseLine = new LineCurve3(p4, p3)\n\n lines.push(beziercurve2)\n lines.push(laseLine)\n lines.push(beziercurve)\n }\n\n lines.forEach((line) => {\n curve.curves.push(line)\n })\n\n return curve\n}\n\nconst recreateCurve = (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value\n\n const handleFunction = fn => function (...args: any[]) {\n const res = fn.apply(target, args)\n target.curves = createRoundedCornersCurve(target._points, target._radius, target._close).curves\n return res\n }\n\n if (originalMethod)\n originalMethod.value = handleFunction(originalMethod)\n else\n descriptor.set = handleFunction(descriptor.set)\n}\n\nexport class RoundedCornersCurve extends CurvePath<Vector3> implements RoundedCornersCurveInterface {\n private _points: Vector3[]\n private _radius = 20\n private _close = true\n\n get radius() {\n return this._radius\n }\n\n @recreateCurve\n set radius(radius: number) {\n this._radius = radius\n }\n\n get close() {\n return this._close\n }\n\n @recreateCurve\n set close(close: boolean) {\n this._close = close\n }\n\n constructor(points: Vector3[], radius = 20, close = true) {\n super()\n\n this._points = points\n this._radius = radius\n this._close = close\n\n this.curves = createRoundedCornersCurve(this._points, this._radius, this._close).curves\n }\n\n override clone(): this {\n return new (this.constructor as any)(this._points, this._radius, this._close)\n }\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["CurvePath","LineCurve3","QuadraticBezierCurve3","calculateDistance","p1","p2","clone","sub","length","calculateSafeRadius","points","radius","safeRadii","Array","fill","i","prevDist","nextDist","maxSafeRadius","Math","min","firstDist","lastDist","createRoundedCornersCurve","arguments","undefined","close","curve","Error","curves","push","lines","lastIndex","firstLastDist","safeConnectRadius","dir","normalize","realEndPoints","add","multiplyScalar","firstPoint","dir1","dir2","dir3","p3","bezierCurve","nextRadius","nextEndPoint","lastDir1","lastDir2","lastP1","lastP2","lastP3","lastBezier","firstDir1","firstDir2","firstP1","firstP2","firstP3","concat","recreateCurve","target","_propertyKey","descriptor","originalMethod","value","handleFunction","fn","_len","args","_key","res","apply","_points","_radius","_close","set","RoundedCornersCurve","_class","_CurvePath","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createClass","key","get","slice","constructor","map","p","updatePoint","index","point","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor"],"sources":["../../../../src/core/Curve/RoundedCornersCurve/RoundedCornersCurve.ts"],"sourcesContent":["import { CurvePath, LineCurve3, QuadraticBezierCurve3 } from '@anov/3d-core'\nimport type { Vector3 } from '@anov/3d-core'\nimport type { RoundedCornersCurveInterface } from '.'\n\nconst calculateDistance = (p1: Vector3, p2: Vector3): number => {\n return p1.clone().sub(p2).length()\n}\n\n/**\n * calculateSafeRadius\n * @param points\n * @param radius\n * @returns\n */\nconst calculateSafeRadius = (points: Vector3[], radius: number): number[] => {\n if (points.length <= 2)\n return [radius, radius]\n\n const safeRadii: number[] = new Array(points.length).fill(radius)\n\n for (let i = 1; i < points.length - 1; i++) {\n const prevDist = calculateDistance(points[i], points[i - 1])\n const nextDist = calculateDistance(points[i], points[i + 1])\n\n const maxSafeRadius = Math.min(prevDist / 2, nextDist / 2, radius)\n safeRadii[i] = maxSafeRadius\n }\n\n if (points.length > 2) {\n const firstDist = calculateDistance(points[0], points[1])\n const lastDist = calculateDistance(points[points.length - 1], points[points.length - 2])\n\n safeRadii[0] = Math.min(firstDist / 2, radius)\n safeRadii[points.length - 1] = Math.min(lastDist / 2, radius)\n }\n\n return safeRadii\n}\n\n/**\n * 创建圆角拐角曲线\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nexport const createRoundedCornersCurve = (points: Vector3[], radius = 20, close = true) => {\n const curve = new CurvePath() as CurvePath<Vector3>\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n curve.curves.push(new LineCurve3(points[0], points[1]))\n return curve\n }\n\n const safeRadii = calculateSafeRadius(points, radius)\n\n const lines = []\n const lastIndex = points.length - 1\n\n if (close && points.length > 2) {\n const firstLastDist = calculateDistance(points[0], points[lastIndex])\n const safeConnectRadius = Math.min(firstLastDist / 2, radius)\n safeRadii[0] = Math.min(safeRadii[0], safeConnectRadius)\n safeRadii[lastIndex] = Math.min(safeRadii[lastIndex], safeConnectRadius)\n }\n\n if (points.length > 2) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(safeRadii[1]))\n\n let firstPoint = points[0]\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(safeRadii[0]))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n\n for (let i = 1; i < lastIndex; i++) {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(safeRadii[i]))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(safeRadii[i]))\n\n const bezierCurve = new QuadraticBezierCurve3(p1, p2, p3)\n lines.push(bezierCurve)\n\n const nextRadius = safeRadii[i + 1]\n const nextEndPoint = (i === lastIndex - 1 && close)\n ? points[i + 1].clone().add(dir3.multiplyScalar(nextRadius))\n : (i === lastIndex - 1)\n ? points[i + 1]\n : points[i + 1].clone().add(dir3.multiplyScalar(nextRadius))\n\n lines.push(new LineCurve3(p3, nextEndPoint))\n }\n\n if (close && points.length > 2) {\n const lastDir1 = points[0].clone().sub(points[lastIndex]).normalize()\n const lastDir2 = points[lastIndex - 1].clone().sub(points[lastIndex]).normalize()\n\n const lastP1 = points[lastIndex].clone().add(lastDir2.multiplyScalar(safeRadii[lastIndex]))\n const lastP2 = points[lastIndex].clone()\n const lastP3 = points[lastIndex].clone().add(lastDir1.multiplyScalar(safeRadii[lastIndex]))\n\n const lastBezier = new QuadraticBezierCurve3(lastP1, lastP2, lastP3)\n lines.push(lastBezier)\n\n const firstDir1 = points[1].clone().sub(points[0]).normalize()\n const firstDir2 = points[lastIndex].clone().sub(points[0]).normalize()\n\n const firstP1 = points[0].clone().add(firstDir2.multiplyScalar(safeRadii[0]))\n const firstP2 = points[0].clone()\n const firstP3 = points[0].clone().add(firstDir1.multiplyScalar(safeRadii[0]))\n\n lines.push(new LineCurve3(lastP3, firstP1))\n lines.push(new QuadraticBezierCurve3(firstP1, firstP2, firstP3))\n }\n\n curve.curves = [...lines]\n return curve\n}\n\nconst recreateCurve = (target: any, _propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod = descriptor.value\n\n const handleFunction = (fn: Function) => function (...args: any[]) {\n const res = fn.apply(this, args)\n this.curves = createRoundedCornersCurve(this._points, this._radius, this._close).curves\n return res\n }\n\n if (originalMethod)\n descriptor.value = handleFunction(originalMethod)\n else\n descriptor.set = handleFunction(descriptor.set)\n\n return descriptor\n}\n\n/**\n * 圆角拐角曲线类\n */\nexport class RoundedCornersCurve extends CurvePath<Vector3> implements RoundedCornersCurveInterface {\n private _points: Vector3[]\n private _radius = 20\n private _close = true\n\n get points(): Vector3[] {\n return this._points.slice()\n }\n\n @recreateCurve\n set points(points: Vector3[]) {\n this._points = points\n }\n\n get radius(): number {\n return this._radius\n }\n\n @recreateCurve\n set radius(radius: number) {\n this._radius = radius\n }\n\n get close(): boolean {\n return this._close\n }\n\n @recreateCurve\n set close(close: boolean) {\n this._close = close\n }\n\n constructor(points: Vector3[], radius = 20, close = true) {\n super()\n\n this._points = points\n this._radius = radius\n this._close = close\n\n this.curves = createRoundedCornersCurve(this._points, this._radius, this._close).curves\n }\n\n override clone(): this {\n return new (this.constructor as any)(this._points.map(p => p.clone()), this._radius, this._close)\n }\n\n /**\n * updatePoint\n * @param index\n * @param point\n */\n updatePoint(index: number, point: Vector3): void {\n if (index < 0 || index >= this._points.length)\n throw new Error(`Point index out of range: ${index}`)\n\n this._points[index] = point\n this.curves = createRoundedCornersCurve(this._points, this._radius, this._close).curves\n }\n}"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { MeshPhysicalMaterial } from '@anov/3d-core';
|
|
2
2
|
export declare enum EMaterialType {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Plaster = "Plaster",// 涂料
|
|
4
|
+
Wood = "Wood",// 木质材质
|
|
5
|
+
Water = "Water",// 水材质
|
|
6
|
+
Glass = "Glass",// 玻璃材质
|
|
7
|
+
Iron = "Iron",// 金属材质
|
|
8
|
+
Moss = "Moss",// 苔藓材质
|
|
9
|
+
Emissive = "Emissive"
|
|
10
10
|
}
|
|
11
11
|
export declare class SurfaceMaterial {
|
|
12
12
|
private static cache;
|
|
@@ -12,29 +12,31 @@ import { LoaderModule } from '@anov/3d-core';
|
|
|
12
12
|
import { SOURCE_BASE_PATH } from "../../../business/Utils/constant";
|
|
13
13
|
var load = new LoaderModule();
|
|
14
14
|
export var EMaterialType = /*#__PURE__*/function (EMaterialType) {
|
|
15
|
-
EMaterialType["
|
|
16
|
-
EMaterialType["
|
|
17
|
-
EMaterialType["
|
|
18
|
-
EMaterialType["
|
|
19
|
-
EMaterialType["
|
|
20
|
-
EMaterialType["
|
|
21
|
-
EMaterialType["
|
|
15
|
+
EMaterialType["Plaster"] = "Plaster";
|
|
16
|
+
EMaterialType["Wood"] = "Wood";
|
|
17
|
+
EMaterialType["Water"] = "Water";
|
|
18
|
+
EMaterialType["Glass"] = "Glass";
|
|
19
|
+
EMaterialType["Iron"] = "Iron";
|
|
20
|
+
EMaterialType["Moss"] = "Moss";
|
|
21
|
+
EMaterialType["Emissive"] = "Emissive";
|
|
22
22
|
return EMaterialType;
|
|
23
23
|
}({}); // 发光材质(适用于夜晚窗户)
|
|
24
24
|
var SOURCE_PATH = {
|
|
25
|
-
|
|
25
|
+
Plaster: "".concat(SOURCE_BASE_PATH, "/material/plaster.glb"),
|
|
26
26
|
// 涂料
|
|
27
|
-
|
|
27
|
+
Wood: "".concat(SOURCE_BASE_PATH, "/material/wood.glb"),
|
|
28
28
|
// 木质材质
|
|
29
|
-
|
|
29
|
+
Water: "".concat(SOURCE_BASE_PATH, "/material/water.glb"),
|
|
30
30
|
// 水材质
|
|
31
|
-
|
|
31
|
+
Glass: "".concat(SOURCE_BASE_PATH, "/material/glass.glb"),
|
|
32
32
|
// 玻璃材质
|
|
33
|
-
|
|
33
|
+
Iron: "".concat(SOURCE_BASE_PATH, "/material/iron.glb"),
|
|
34
34
|
// 金属材质
|
|
35
|
-
|
|
35
|
+
Moss: "".concat(SOURCE_BASE_PATH, "/material/moss.glb"),
|
|
36
36
|
// 苔藓材质
|
|
37
|
-
|
|
37
|
+
Emissive: "".concat(SOURCE_BASE_PATH, "/material/emissive.glb"),
|
|
38
|
+
// 发光材质(适用于夜晚窗户)
|
|
39
|
+
Fresnel_Transparent: "".concat(SOURCE_BASE_PATH, "/material/emissive2.glb")
|
|
38
40
|
};
|
|
39
41
|
export var SurfaceMaterial = /*#__PURE__*/function () {
|
|
40
42
|
function SurfaceMaterial() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","LoaderModule","SOURCE_BASE_PATH","load","EMaterialType","SOURCE_PATH","plaster","concat","wood","water","glass","iron","moss","emissive","SurfaceMaterial","_getMaterial","_callee","id","material","_callee$","_context","cache","has","get","clone","loadModelMaterial","set","t0","console","getMaterial","_x","_getMaterialAll","_callee3","_this","materials","_callee3$","_context3","all","map","_ref","_callee2","_callee2$","_context2","_x2","getMaterialAll","_loadModelMaterial","_callee4","_mesh","uri","model","mesh","_callee4$","_context4","loadGLTF","url","draco","onLoad","gltf","scene","onError","traverse","child","_x3","Map"],"sources":["../../../../src/core/Material/SurfaceMaterial/index.ts"],"sourcesContent":["import type { Mesh, MeshPhysicalMaterial, Object3D } from '@anov/3d-core'\nimport { LoaderModule } from '@anov/3d-core'\nimport { SOURCE_BASE_PATH } from '../../../business/Utils/constant'\n\nconst load = new LoaderModule()\nexport enum EMaterialType {\n plaster = 'plaster', // 涂料\n wood = 'wood', // 木质材质\n water = 'water', // 水材质\n glass = 'glass', // 玻璃材质\n iron = 'iron', // 金属材质\n moss = 'moss', // 苔藓材质\n emissive = 'emissive', // 发光材质(适用于夜晚窗户)\n}\n\nconst SOURCE_PATH = {\n plaster: `${SOURCE_BASE_PATH}/material/plaster.glb`, // 涂料\n wood: `${SOURCE_BASE_PATH}/material/wood.glb`, // 木质材质\n water: `${SOURCE_BASE_PATH}/material/water.glb`, // 水材质\n glass: `${SOURCE_BASE_PATH}/material/glass.glb`, // 玻璃材质\n iron: `${SOURCE_BASE_PATH}/material/iron.glb`, // 金属材质\n moss: `${SOURCE_BASE_PATH}/material/moss.glb`, // 苔藓材质\n emissive: `${SOURCE_BASE_PATH}/material/emissive.glb`, // 发光材质(适用于夜晚窗户)\n}\n\nexport class SurfaceMaterial {\n private static cache = new Map<string, MeshPhysicalMaterial>()\n\n static async getMaterial(id: string) {\n if (this.cache.has(id))\n return this.cache.get(id).clone()!\n\n try {\n const material = await this.loadModelMaterial(id)\n this.cache.set(id, material)\n return material.clone()\n }\n catch (error) {\n console.error(`Failed to load material ${id}:`, error)\n throw error\n }\n }\n\n static async getMaterialAll() {\n const materials = await Promise.all(Object.keys(SOURCE_PATH).map(async key => await this.getMaterial(key)))\n return materials\n }\n\n static async loadModelMaterial(id: string): Promise<MeshPhysicalMaterial> {\n const uri = SOURCE_PATH[id]\n if (!uri)\n throw new Error(`Invalid material ID: ${id}`)\n\n const model = await new Promise<Object3D>((resolve, reject) => {\n load.loadGLTF({\n url: uri,\n draco: true,\n onLoad: gltf => resolve(gltf.scene.clone(true)),\n onError: err => reject(err),\n })\n })\n\n let mesh: Mesh | null = null\n model.traverse((child) => {\n if (!mesh && child.type === 'Mesh')\n mesh = child as Mesh\n })\n if (!mesh?.material)\n throw new Error(`No valid material found in ${id}`)\n\n return mesh.material as MeshPhysicalMaterial\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","LoaderModule","SOURCE_BASE_PATH","load","EMaterialType","SOURCE_PATH","Plaster","concat","Wood","Water","Glass","Iron","Moss","Emissive","Fresnel_Transparent","SurfaceMaterial","_getMaterial","_callee","id","material","_callee$","_context","cache","has","get","clone","loadModelMaterial","set","t0","console","getMaterial","_x","_getMaterialAll","_callee3","_this","materials","_callee3$","_context3","all","map","_ref","_callee2","_callee2$","_context2","_x2","getMaterialAll","_loadModelMaterial","_callee4","_mesh","uri","model","mesh","_callee4$","_context4","loadGLTF","url","draco","onLoad","gltf","scene","onError","traverse","child","_x3","Map"],"sources":["../../../../src/core/Material/SurfaceMaterial/index.ts"],"sourcesContent":["import type { Mesh, MeshPhysicalMaterial, Object3D } from '@anov/3d-core'\nimport { LoaderModule, utils } from '@anov/3d-core'\nimport { SOURCE_BASE_PATH } from '../../../business/Utils/constant'\n\nconst load = new LoaderModule()\nexport enum EMaterialType {\n Plaster = 'Plaster', // 涂料\n Wood = 'Wood', // 木质材质\n Water = 'Water', // 水材质\n Glass = 'Glass', // 玻璃材质\n Iron = 'Iron', // 金属材质\n Moss = 'Moss', // 苔藓材质\n Emissive = 'Emissive', // 发光材质(适用于夜晚窗户)\n}\n\nconst SOURCE_PATH = {\n Plaster: `${SOURCE_BASE_PATH}/material/plaster.glb`, // 涂料\n Wood: `${SOURCE_BASE_PATH}/material/wood.glb`, // 木质材质\n Water: `${SOURCE_BASE_PATH}/material/water.glb`, // 水材质\n Glass: `${SOURCE_BASE_PATH}/material/glass.glb`, // 玻璃材质\n Iron: `${SOURCE_BASE_PATH}/material/iron.glb`, // 金属材质\n Moss: `${SOURCE_BASE_PATH}/material/moss.glb`, // 苔藓材质\n Emissive: `${SOURCE_BASE_PATH}/material/emissive.glb`, // 发光材质(适用于夜晚窗户)\n Fresnel_Transparent: `${SOURCE_BASE_PATH}/material/emissive2.glb`,\n}\n\nexport class SurfaceMaterial {\n private static cache = new Map<string, MeshPhysicalMaterial>()\n\n static async getMaterial(id: string) {\n if (this.cache.has(id))\n return this.cache.get(id).clone()!\n\n try {\n const material = await this.loadModelMaterial(id)\n this.cache.set(id, material)\n return material.clone()\n }\n catch (error) {\n console.error(`Failed to load material ${id}:`, error)\n throw error\n }\n }\n\n static async getMaterialAll() {\n const materials = await Promise.all(Object.keys(SOURCE_PATH).map(async key => await this.getMaterial(key)))\n return materials\n }\n\n static async loadModelMaterial(id: string): Promise<MeshPhysicalMaterial> {\n const uri = SOURCE_PATH[id]\n if (!uri)\n throw new Error(`Invalid material ID: ${id}`)\n\n const model = await new Promise<Object3D>((resolve, reject) => {\n load.loadGLTF({\n url: uri,\n draco: true,\n onLoad: gltf => resolve(gltf.scene.clone(true)),\n onError: err => reject(err),\n })\n })\n\n let mesh: Mesh | null = null\n model.traverse((child) => {\n if (!mesh && child.type === 'Mesh')\n mesh = child as Mesh\n })\n if (!mesh?.material)\n throw new Error(`No valid material found in ${id}`)\n\n return mesh.material as MeshPhysicalMaterial\n }\n}\n"],"mappings":"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"}
|
|
@@ -40,7 +40,11 @@ export var createHighSelectedTool = function createHighSelectedTool(highParams)
|
|
|
40
40
|
camera = _useScene.camera;
|
|
41
41
|
var composer = storeManagement.get('composer');
|
|
42
42
|
if (!scene || !camera) throw new Error('scene or camera is not defined,');
|
|
43
|
-
if (!composer)
|
|
43
|
+
if (!composer) {
|
|
44
|
+
console.error('composer is not defined, please initPostEffects first');
|
|
45
|
+
return null;
|
|
46
|
+
// throw new Error('composer is not defined, please initPostEffects first')
|
|
47
|
+
}
|
|
44
48
|
var outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera);
|
|
45
49
|
outlinePass.edgeStrength = lastHighParams.edgeStrength;
|
|
46
50
|
outlinePass.edgeGlow = lastHighParams.edgeGlow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OutlinePassExtend","OutputPass","Vector2","lib","use","utils","EffectPass","storeManagement","ShaderPass","GammaCorrectionShader","useScene","baseHighParams","edgeStrength","edgeGlow","edgeThickness","visibleEdgeColor","hiddenEdgeColor","createHighSelectedTool","highParams","lastHighParams","_objectSpread","_useScene","scene","camera","composer","get","Error","outlinePass","window","innerWidth","innerHeight","pulsePeriod","set","addPass","gammaCorrectionShader","object3dArray","selectedObjects","OutlinePass","_EffectPass","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createClass","key","value"],"sources":["../../../src/core/PostEffects/outlinePass.ts"],"sourcesContent":["import type { Camera, Object3D, Scene } from '@anov/3d-core'\nimport { OutlinePassExtend, OutputPass, Vector2, lib, use, utils } from '@anov/3d-core'\nimport { EffectPass } from 'postprocessing'\n\ntype HighParamsType = {\n edgeStrength?: number // 边缘强度\n edgeGlow?: number // 缓缓接近\n edgeThickness?: number // 边缘厚度\n pulsePeriod?: number // 脉冲周期\n visibleEdgeColor?: string // 可见边缘颜色\n hiddenEdgeColor?: string // 隐藏边缘颜色\n}\n\nconst { storeManagement } = utils\nconst { ShaderPass, GammaCorrectionShader } = lib\nconst { useScene } = use\n\nconst baseHighParams: HighParamsType = {\n edgeStrength: 10,\n edgeGlow: 1,\n edgeThickness: 3,\n visibleEdgeColor: '#FF5713',\n hiddenEdgeColor: '#FF5713',\n}\n\n/**\n *\n * @param highParams\n * @returns\n */\nexport const createHighSelectedTool = (highParams?: HighParamsType) => {\n const lastHighParams = {\n ...baseHighParams,\n ...highParams,\n }\n\n const { scene, camera } = useScene()\n const composer = storeManagement.get('composer') as lib.EffectComposer | undefined\n\n if (!scene || !camera)\n throw new Error('scene or camera is not defined,')\n\n if (!composer)\n throw new Error('composer is not defined, please initPostEffects first')\n\n const outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera)\n\n outlinePass.edgeStrength = lastHighParams.edgeStrength\n outlinePass.edgeGlow = lastHighParams.edgeGlow\n outlinePass.edgeThickness = lastHighParams.edgeThickness\n lastHighParams.pulsePeriod && (outlinePass.pulsePeriod = lastHighParams.pulsePeriod)\n outlinePass.visibleEdgeColor.set(lastHighParams.visibleEdgeColor)\n\n composer.addPass(outlinePass)\n composer.addPass(new OutputPass())\n\n const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader)\n\n // if (!storeManagement.get<boolean>('__&&__gammaCorrectionShader')) {\n // composer.addPass(gammaCorrectionShader)\n // storeManagement.set('__&&__gammaCorrectionShader', true)\n // }\n\n return (object3dArray: Object3D[]) => {\n outlinePass.selectedObjects = object3dArray\n }\n}\n\nexport class OutlinePass extends EffectPass {\n private outlinePass: OutlinePassExtend\n\n constructor(scene: Scene, camera: Camera) {\n super()\n\n this.outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera)\n\n this.outlinePass.edgeStrength = baseHighParams.edgeStrength\n this.outlinePass.edgeGlow = baseHighParams.edgeGlow\n this.outlinePass.edgeThickness = baseHighParams.edgeThickness\n this.outlinePass.visibleEdgeColor.set(baseHighParams.visibleEdgeColor)\n this.outlinePass.hiddenEdgeColor.set(baseHighParams.hiddenEdgeColor)\n }\n\n public selectedObjects(object3dArray: Object3D[]) {\n this.outlinePass.selectedObjects = object3dArray\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA,SAASA,iBAAiB,EAAEC,UAAU,EAAEC,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AACvF,SAASC,UAAU,QAAQ,gBAAgB;AAW3C,IAAQC,eAAe,GAAKF,KAAK,CAAzBE,eAAe;AACvB,IAAQC,UAAU,GAA4BL,GAAG,CAAzCK,UAAU;EAAEC,qBAAqB,GAAKN,GAAG,CAA7BM,qBAAqB;AACzC,IAAQC,QAAQ,GAAKN,GAAG,CAAhBM,QAAQ;AAEhB,IAAMC,cAA8B,GAAG;EACrCC,YAAY,EAAE,EAAE;EAChBC,QAAQ,EAAE,CAAC;EACXC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,SAAS;EAC3BC,eAAe,EAAE;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIC,UAA2B,EAAK;EACrE,IAAMC,cAAc,GAAAC,aAAA,CAAAA,aAAA,KACfT,cAAc,GACdO,UAAU,CACd;EAED,IAAAG,SAAA,GAA0BX,QAAQ,CAAC,CAAC;IAA5BY,KAAK,GAAAD,SAAA,CAALC,KAAK;IAAEC,MAAM,GAAAF,SAAA,CAANE,MAAM;EACrB,IAAMC,QAAQ,GAAGjB,eAAe,CAACkB,GAAG,CAAC,UAAU,CAAmC;EAElF,IAAI,CAACH,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAIG,KAAK,CAAC,iCAAiC,CAAC;EAEpD,IAAI,CAACF,QAAQ,
|
|
1
|
+
{"version":3,"names":["OutlinePassExtend","OutputPass","Vector2","lib","use","utils","EffectPass","storeManagement","ShaderPass","GammaCorrectionShader","useScene","baseHighParams","edgeStrength","edgeGlow","edgeThickness","visibleEdgeColor","hiddenEdgeColor","createHighSelectedTool","highParams","lastHighParams","_objectSpread","_useScene","scene","camera","composer","get","Error","console","error","outlinePass","window","innerWidth","innerHeight","pulsePeriod","set","addPass","gammaCorrectionShader","object3dArray","selectedObjects","OutlinePass","_EffectPass","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createClass","key","value"],"sources":["../../../src/core/PostEffects/outlinePass.ts"],"sourcesContent":["import type { Camera, Object3D, Scene } from '@anov/3d-core'\nimport { OutlinePassExtend, OutputPass, Vector2, lib, use, utils } from '@anov/3d-core'\nimport { EffectPass } from 'postprocessing'\n\ntype HighParamsType = {\n edgeStrength?: number // 边缘强度\n edgeGlow?: number // 缓缓接近\n edgeThickness?: number // 边缘厚度\n pulsePeriod?: number // 脉冲周期\n visibleEdgeColor?: string // 可见边缘颜色\n hiddenEdgeColor?: string // 隐藏边缘颜色\n}\n\nconst { storeManagement } = utils\nconst { ShaderPass, GammaCorrectionShader } = lib\nconst { useScene } = use\n\nconst baseHighParams: HighParamsType = {\n edgeStrength: 10,\n edgeGlow: 1,\n edgeThickness: 3,\n visibleEdgeColor: '#FF5713',\n hiddenEdgeColor: '#FF5713',\n}\n\n/**\n *\n * @param highParams\n * @returns\n */\nexport const createHighSelectedTool = (highParams?: HighParamsType) => {\n const lastHighParams = {\n ...baseHighParams,\n ...highParams,\n }\n\n const { scene, camera } = useScene()\n const composer = storeManagement.get('composer') as lib.EffectComposer | undefined\n\n if (!scene || !camera)\n throw new Error('scene or camera is not defined,')\n\n if (!composer) {\n console.error('composer is not defined, please initPostEffects first')\n return null\n // throw new Error('composer is not defined, please initPostEffects first')\n }\n\n const outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera)\n\n outlinePass.edgeStrength = lastHighParams.edgeStrength\n outlinePass.edgeGlow = lastHighParams.edgeGlow\n outlinePass.edgeThickness = lastHighParams.edgeThickness\n lastHighParams.pulsePeriod && (outlinePass.pulsePeriod = lastHighParams.pulsePeriod)\n outlinePass.visibleEdgeColor.set(lastHighParams.visibleEdgeColor)\n\n composer.addPass(outlinePass)\n composer.addPass(new OutputPass())\n\n const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader)\n\n // if (!storeManagement.get<boolean>('__&&__gammaCorrectionShader')) {\n // composer.addPass(gammaCorrectionShader)\n // storeManagement.set('__&&__gammaCorrectionShader', true)\n // }\n\n return (object3dArray: Object3D[]) => {\n outlinePass.selectedObjects = object3dArray\n }\n}\n\nexport class OutlinePass extends EffectPass {\n private outlinePass: OutlinePassExtend\n\n constructor(scene: Scene, camera: Camera) {\n super()\n\n this.outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera)\n\n this.outlinePass.edgeStrength = baseHighParams.edgeStrength\n this.outlinePass.edgeGlow = baseHighParams.edgeGlow\n this.outlinePass.edgeThickness = baseHighParams.edgeThickness\n this.outlinePass.visibleEdgeColor.set(baseHighParams.visibleEdgeColor)\n this.outlinePass.hiddenEdgeColor.set(baseHighParams.hiddenEdgeColor)\n }\n\n public selectedObjects(object3dArray: Object3D[]) {\n this.outlinePass.selectedObjects = object3dArray\n }\n}\n"],"mappings":"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"}
|
|
@@ -57,9 +57,11 @@ var RainMesh = /*#__PURE__*/function (_Mesh) {
|
|
|
57
57
|
side: 2,
|
|
58
58
|
blending: 2,
|
|
59
59
|
transparent: true,
|
|
60
|
-
depthWrite: false
|
|
60
|
+
depthWrite: false,
|
|
61
|
+
depthTest: true
|
|
61
62
|
});
|
|
62
63
|
var plane = new Mesh(geometry, material);
|
|
64
|
+
plane.renderOrder = 10;
|
|
63
65
|
plane.position.set(x, y, z);
|
|
64
66
|
plane.rotation.set(rotationX, rotationY, rotationZ);
|
|
65
67
|
return plane;
|
|
@@ -74,9 +76,11 @@ var RainMesh = /*#__PURE__*/function (_Mesh) {
|
|
|
74
76
|
side: 2,
|
|
75
77
|
blending: 2,
|
|
76
78
|
transparent: true,
|
|
77
|
-
depthWrite:
|
|
79
|
+
depthWrite: true,
|
|
80
|
+
depthTest: true
|
|
78
81
|
});
|
|
79
82
|
var plane = new Mesh(geometry, material);
|
|
83
|
+
plane.renderOrder = 10;
|
|
80
84
|
plane.position.set(x, y, z);
|
|
81
85
|
plane.rotation.set(rotationX, rotationY, rotationZ);
|
|
82
86
|
return plane;
|
|
@@ -109,6 +113,7 @@ var RainMesh = /*#__PURE__*/function (_Mesh) {
|
|
|
109
113
|
});
|
|
110
114
|
var rain2dGeometry = new PlaneGeometry(100, 100);
|
|
111
115
|
var rain2d = new Mesh(rain2dGeometry, material2d);
|
|
116
|
+
rain2d.renderOrder = 10;
|
|
112
117
|
group.add(rain2d);
|
|
113
118
|
_this.add(group);
|
|
114
119
|
return _this;
|