@anov/3d-ability 0.0.141 → 0.0.143

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.
Files changed (257) hide show
  1. package/dist/business/Animation/motion/index.js +56 -35
  2. package/dist/business/Animation/motion/index.js.map +1 -1
  3. package/dist/business/Animation/type.js +2 -2
  4. package/dist/business/Area/Fence/FenceBase.js +187 -146
  5. package/dist/business/Area/Fence/FenceBase.js.map +1 -1
  6. package/dist/business/Area/Fence/fence_base_01.js +112 -120
  7. package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
  8. package/dist/business/Area/Fence/fence_feeting_01.js +130 -218
  9. package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
  10. package/dist/business/Area/Fence/fence_roll_01.js +130 -140
  11. package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
  12. package/dist/business/Area/FillArea/FillAreaBase.js +126 -87
  13. package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
  14. package/dist/business/Area/FillArea/fillArea_face_01.js +98 -72
  15. package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
  16. package/dist/business/Area/FillArea/fillArea_line_01.js +94 -66
  17. package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
  18. package/dist/business/Area/index.js +483 -267
  19. package/dist/business/Area/index.js.map +1 -1
  20. package/dist/business/Area/tool.js +26 -14
  21. package/dist/business/Area/tool.js.map +1 -1
  22. package/dist/business/Base/ObjectLayer.js +46 -21
  23. package/dist/business/Base/ObjectLayer.js.map +1 -1
  24. package/dist/business/Batch/index.js +234 -189
  25. package/dist/business/Batch/index.js.map +1 -1
  26. package/dist/business/Box/index.js +81 -52
  27. package/dist/business/Box/index.js.map +1 -1
  28. package/dist/business/Cylinder/index.js +79 -51
  29. package/dist/business/Cylinder/index.js.map +1 -1
  30. package/dist/business/Flyline/bubble/CircleBubble.js +9 -1
  31. package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
  32. package/dist/business/Flyline/bubble/index.js +21 -7
  33. package/dist/business/Flyline/bubble/index.js.map +1 -1
  34. package/dist/business/Flyline/index.js +162 -96
  35. package/dist/business/Flyline/index.js.map +1 -1
  36. package/dist/business/Flyline/line/ArcLine.js +291 -208
  37. package/dist/business/Flyline/line/ArcLine.js.map +1 -1
  38. package/dist/business/Flyline/line/index.js +22 -8
  39. package/dist/business/Flyline/line/index.js.map +1 -1
  40. package/dist/business/HeatMap/HeatMap.js +467 -380
  41. package/dist/business/HeatMap/HeatMap.js.map +1 -1
  42. package/dist/business/HeatMap/core.js +525 -405
  43. package/dist/business/HeatMap/core.js.map +1 -1
  44. package/dist/business/HeatMap/shader.js +3 -69
  45. package/dist/business/HeatMap/shader.js.map +1 -1
  46. package/dist/business/InfoPanel/index.js +242 -201
  47. package/dist/business/InfoPanel/index.js.map +1 -1
  48. package/dist/business/Line/index.js +88 -55
  49. package/dist/business/Line/index.js.map +1 -1
  50. package/dist/business/Mark/KeyframeAnimation.js +176 -145
  51. package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
  52. package/dist/business/Mark/index.js +294 -196
  53. package/dist/business/Mark/index.js.map +1 -1
  54. package/dist/business/Mark/shader/tanhao.js +3 -36
  55. package/dist/business/Mark/shader/tanhao.js.map +1 -1
  56. package/dist/business/Mark/type.js +1 -1
  57. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +551 -377
  58. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  59. package/dist/business/MaterialSwitch/inject.js +58 -92
  60. package/dist/business/MaterialSwitch/inject.js.map +1 -1
  61. package/dist/business/MaterialSwitch/shader/finalFade.js +2 -74
  62. package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
  63. package/dist/business/MaterialSwitch/shader/ground.js +16 -95
  64. package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
  65. package/dist/business/MaterialSwitch/shader/groundBase64.js +3 -9
  66. package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
  67. package/dist/business/MaterialSwitch/shader/realFade.js +9 -48
  68. package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
  69. package/dist/business/Plane/index.js +78 -51
  70. package/dist/business/Plane/index.js.map +1 -1
  71. package/dist/business/Poi/index.js +336 -248
  72. package/dist/business/Poi/index.js.map +1 -1
  73. package/dist/business/Poi/link/Cylinder.js +89 -56
  74. package/dist/business/Poi/link/Cylinder.js.map +1 -1
  75. package/dist/business/Poi/link/Pyramid.js +165 -104
  76. package/dist/business/Poi/link/Pyramid.js.map +1 -1
  77. package/dist/business/Poi/link/index.js +114 -54
  78. package/dist/business/Poi/link/index.js.map +1 -1
  79. package/dist/business/Poi/panel/index.js +373 -315
  80. package/dist/business/Poi/panel/index.js.map +1 -1
  81. package/dist/business/Poi/panel/utils.js +10 -5
  82. package/dist/business/Poi/panel/utils.js.map +1 -1
  83. package/dist/business/Poi/particle/DoubleCircle.js +107 -71
  84. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  85. package/dist/business/Poi/particle/DynamicCircle.js +111 -75
  86. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  87. package/dist/business/Poi/particle/SingleCircle.js +98 -62
  88. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  89. package/dist/business/Poi/particle/index.js +117 -49
  90. package/dist/business/Poi/particle/index.js.map +1 -1
  91. package/dist/business/Poi/shader/circle.js +3 -31
  92. package/dist/business/Poi/shader/circle.js.map +1 -1
  93. package/dist/business/Poi/shader/cylinder.js +3 -37
  94. package/dist/business/Poi/shader/cylinder.js.map +1 -1
  95. package/dist/business/Poi/shader/doubleCircle.js +3 -55
  96. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  97. package/dist/business/Poi/shader/dynamicCircle.js +3 -67
  98. package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
  99. package/dist/business/Poi/title/Border.js +27 -7
  100. package/dist/business/Poi/title/Border.js.map +1 -1
  101. package/dist/business/Poi/title/Ellipse.js +27 -7
  102. package/dist/business/Poi/title/Ellipse.js.map +1 -1
  103. package/dist/business/Poi/title/index.js +292 -208
  104. package/dist/business/Poi/title/index.js.map +1 -1
  105. package/dist/business/Poi/tools.js +17 -18
  106. package/dist/business/Poi/tools.js.map +1 -1
  107. package/dist/business/Sphere/index.js +72 -47
  108. package/dist/business/Sphere/index.js.map +1 -1
  109. package/dist/business/Spline/index.js +245 -190
  110. package/dist/business/Spline/index.js.map +1 -1
  111. package/dist/business/SplitBuilding/index.js +536 -327
  112. package/dist/business/SplitBuilding/index.js.map +1 -1
  113. package/dist/business/SplitBuilding/type.js +2 -2
  114. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +275 -218
  115. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  116. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +177 -132
  117. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  118. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -51
  119. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  120. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +1 -6
  121. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
  122. package/dist/business/TrafficComponents/base.js +55 -32
  123. package/dist/business/TrafficComponents/base.js.map +1 -1
  124. package/dist/business/TrafficComponents/utils.d.ts +1 -1
  125. package/dist/business/TrafficComponents/utils.js +25 -26
  126. package/dist/business/TrafficComponents/utils.js.map +1 -1
  127. package/dist/business/Utils/Curve.js +56 -40
  128. package/dist/business/Utils/Curve.js.map +1 -1
  129. package/dist/business/Utils/constant.js +1 -1
  130. package/dist/business/Utils/constant.js.map +1 -1
  131. package/dist/business/Utils/defineProps.js +14 -13
  132. package/dist/business/Utils/defineProps.js.map +1 -1
  133. package/dist/business/Utils/round-curve.js +153 -127
  134. package/dist/business/Utils/round-curve.js.map +1 -1
  135. package/dist/business/VideoPanel/index.js +319 -258
  136. package/dist/business/VideoPanel/index.js.map +1 -1
  137. package/dist/business/Water/index.js +108 -78
  138. package/dist/business/Water/index.js.map +1 -1
  139. package/dist/business/Water/types.js +1 -1
  140. package/dist/business/Water/types.js.map +1 -1
  141. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +449 -383
  142. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  143. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +142 -107
  144. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  145. package/dist/core/Controls/FirstViewControl/index.js +96 -84
  146. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  147. package/dist/core/Controls/ThirdViewControl/action/input.js +98 -77
  148. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  149. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  150. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  151. package/dist/core/Controls/ThirdViewControl/index.js +28 -19
  152. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  153. package/dist/core/Controls/ThirdViewControl/player/animation.js +155 -126
  154. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  155. package/dist/core/Controls/ThirdViewControl/player/camera.js +63 -47
  156. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  157. package/dist/core/Controls/ThirdViewControl/player/control.js +49 -39
  158. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  159. package/dist/core/Controls/ThirdViewControl/player.js +91 -66
  160. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  161. package/dist/core/Controls/base.js +30 -14
  162. package/dist/core/Controls/base.js.map +1 -1
  163. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +131 -92
  164. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  165. package/dist/core/Debug/PerformanceInfo/Performance.js +47 -22
  166. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  167. package/dist/core/Light/PointLight/PointLightExt.js +21 -4
  168. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  169. package/dist/core/Material/FinirMaterial/FinirMaterial.js +57 -37
  170. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  171. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +153 -116
  172. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  173. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +1 -95
  174. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  175. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +1 -26
  176. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  177. package/dist/core/Material/SurfaceMaterial/index.js +172 -76
  178. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  179. package/dist/core/Material/decorators.js +11 -6
  180. package/dist/core/Material/decorators.js.map +1 -1
  181. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +12 -16
  182. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  183. package/dist/core/PostEffects/addBrightnessContrastPass.js +13 -17
  184. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  185. package/dist/core/PostEffects/bloomPass.js +10 -17
  186. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  187. package/dist/core/PostEffects/bloomSelect.js +43 -60
  188. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  189. package/dist/core/PostEffects/colorifyPass.js +13 -17
  190. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  191. package/dist/core/PostEffects/index.js +22 -28
  192. package/dist/core/PostEffects/index.js.map +1 -1
  193. package/dist/core/PostEffects/outlinePass.js +50 -37
  194. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  195. package/dist/core/PostEffects/postprocessing.js +12 -14
  196. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  197. package/dist/core/PostEffects/saoPass.js +10 -15
  198. package/dist/core/PostEffects/saoPass.js.map +1 -1
  199. package/dist/core/PostEffects/shader/colorify.js +3 -22
  200. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  201. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +3 -27
  202. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  203. package/dist/core/PostEffects/shader/mapping.js +3 -66
  204. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  205. package/dist/core/PostEffects/shader/thermalMaging.js +3 -28
  206. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  207. package/dist/core/SceneEffect/grow/grow.js +101 -85
  208. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  209. package/dist/core/SceneEffect/grow/style_down.js +77 -60
  210. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  211. package/dist/core/SceneEffect/grow/style_up.js +81 -64
  212. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  213. package/dist/core/SceneEffect/grow/type.js +2 -2
  214. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  215. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +76 -51
  216. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  217. package/dist/core/WeatherSystem/hdr/index.js +105 -69
  218. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  219. package/dist/core/WeatherSystem/index.js +124 -77
  220. package/dist/core/WeatherSystem/index.js.map +1 -1
  221. package/dist/core/WeatherSystem/objects/fog/index.js +80 -52
  222. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  223. package/dist/core/WeatherSystem/objects/rain/index.js +84 -72
  224. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  225. package/dist/core/WeatherSystem/objects/rain/lineRain.js +118 -88
  226. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  227. package/dist/core/WeatherSystem/objects/rain/plane.js +146 -116
  228. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  229. package/dist/core/WeatherSystem/objects/rain/point.js +148 -100
  230. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  231. package/dist/core/WeatherSystem/objects/sky/cloud.js +104 -71
  232. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  233. package/dist/core/WeatherSystem/objects/sky/index.js +84 -66
  234. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  235. package/dist/core/WeatherSystem/objects/sky/outline.js +45 -25
  236. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  237. package/dist/core/WeatherSystem/shaders/cloud.js +3 -74
  238. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  239. package/dist/core/WeatherSystem/shaders/fog.js +3 -103
  240. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  241. package/dist/core/WeatherSystem/shaders/rain.js +7 -206
  242. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  243. package/dist/core/WeatherSystem/shaders/sky.js +3 -87
  244. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  245. package/dist/core/WeatherSystem/sky/index.js +135 -104
  246. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  247. package/dist/core/WeatherSystem/utils/constant.js +38 -44
  248. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  249. package/dist/core/WeatherSystem/utils/math.js +25 -18
  250. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  251. package/dist/core/WeatherSystem/utils/type.js +1 -1
  252. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  253. package/dist/core/WeatherSystem/weather/index.js +141 -96
  254. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  255. package/dist/utils/index.js +1 -1
  256. package/dist/utils/index.js.map +1 -1
  257. package/package.json +3 -3
@@ -1,6 +1,23 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
6
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
7
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
9
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
12
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
15
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
16
+ 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; } }
17
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
1
18
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
- 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); }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
+ 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); }
4
21
  /* eslint-disable no-void */
5
22
 
6
23
  import { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core';
@@ -13,25 +30,28 @@ import { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32
13
30
  * @param height
14
31
  * @param depth
15
32
  */
16
- const createBoxGeometryByPoints = (a, b, height = 30, depth = 10, material) => {
17
- const width = a.distanceTo(b);
18
- const box = new BoxGeometry(width, height, depth);
19
- let currentMaterial = new MeshBasicMaterial({
33
+ var createBoxGeometryByPoints = function createBoxGeometryByPoints(a, b) {
34
+ var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
35
+ var depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
36
+ var material = arguments.length > 4 ? arguments[4] : undefined;
37
+ var width = a.distanceTo(b);
38
+ var box = new BoxGeometry(width, height, depth);
39
+ var currentMaterial = new MeshBasicMaterial({
20
40
  color: new Color('#fff')
21
41
  });
22
42
  if (material) currentMaterial = material;
23
- const mesh = new Mesh(box, currentMaterial);
24
- const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5);
43
+ var mesh = new Mesh(box, currentMaterial);
44
+ var midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5);
25
45
  mesh.position.x = midpoint.x;
26
46
  mesh.position.y = midpoint.y + height / 2;
27
47
  mesh.position.z = midpoint.z;
28
- const direction = new Vector3();
48
+ var direction = new Vector3();
29
49
  direction.subVectors(a, b);
30
50
  direction.normalize();
31
- const axis = new Vector3(0, 1, 0); // axis
32
- const angle = new Vector3(1, 0, 0).angleTo(direction);
33
- const quaternion = new Quaternion().setFromAxisAngle(axis, angle);
34
- const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion);
51
+ var axis = new Vector3(0, 1, 0); // axis
52
+ var angle = new Vector3(1, 0, 0).angleTo(direction);
53
+ var quaternion = new Quaternion().setFromAxisAngle(axis, angle);
54
+ var newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion);
35
55
  if (!newDirection.angleTo(direction)) mesh.rotateOnAxis(axis, angle);else mesh.rotateOnAxis(axis, -angle);
36
56
  return mesh;
37
57
  };
@@ -42,8 +62,10 @@ const createBoxGeometryByPoints = (a, b, height = 30, depth = 10, material) => {
42
62
  * @param h
43
63
  * @returns
44
64
  */
45
- const rectangle = (w = 0.1, h = 50) => {
46
- const shape = new Shape();
65
+ var rectangle = function rectangle() {
66
+ var w = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1;
67
+ var h = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
68
+ var shape = new Shape();
47
69
  shape.moveTo(0, 0);
48
70
  shape.lineTo(0, w);
49
71
  shape.lineTo(h, w);
@@ -51,7 +73,7 @@ const rectangle = (w = 0.1, h = 50) => {
51
73
  shape.lineTo(0, 0);
52
74
  return shape;
53
75
  };
54
- const defMaterial = new ShaderMaterial({
76
+ var defMaterial = new ShaderMaterial({
55
77
  uniforms: {
56
78
  u_color: {
57
79
  value: new Color('#fab73f')
@@ -63,25 +85,8 @@ const defMaterial = new ShaderMaterial({
63
85
  value: 1.0
64
86
  }
65
87
  },
66
- vertexShader: `
67
- uniform float u_height;
68
- uniform float u_speed;
69
- varying float v_opacity;
70
-
71
- void main() {
72
- v_opacity = mix(1.0, 0.0, position.y / u_height);
73
-
74
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
75
- }`,
76
- fragmentShader: `
77
- uniform vec3 u_color;
78
- uniform float u_opacity;
79
- varying float v_opacity;
80
-
81
- void main() {
82
- gl_FragColor = vec4(u_color, 1.0);
83
- }
84
- `,
88
+ vertexShader: "\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
89
+ fragmentShader: "\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n ",
85
90
  transparent: true,
86
91
  side: 2,
87
92
  depthTest: false
@@ -96,120 +101,137 @@ const defMaterial = new ShaderMaterial({
96
101
  * @param close
97
102
  * @returns
98
103
  */
99
- const createCurve = (points, radius = 20, height = 50, close = false, material) => {
104
+ var createCurve = function createCurve(points) {
105
+ var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
106
+ var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
107
+ var close = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
108
+ var material = arguments.length > 4 ? arguments[4] : undefined;
100
109
  if (!material) material = defMaterial;
101
- const curve = new CurvePath();
102
- const shape = rectangle(0.1, height);
110
+ var curve = new CurvePath();
111
+ var shape = rectangle(0.1, height);
103
112
  if (points.length < 2) throw new Error('At least two points are required to create a curve');
104
113
  if (points.length === 2) {
105
- const line = new LineCurve3(points[0], points[1]);
114
+ var line = new LineCurve3(points[0], points[1]);
106
115
  curve.curves.push(line);
107
116
  return [curve];
108
117
  }
109
- const lines = [];
110
- for (let i = 0; i < points.length - 1; i++) {
118
+ var lines = [];
119
+ for (var i = 0; i < points.length - 1; i++) {
111
120
  if (i === 0) {
112
- const dir = points[0].clone().sub(points[1]).normalize();
113
- const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius));
114
- let firstPoint = points[0];
121
+ var dir = points[0].clone().sub(points[1]).normalize();
122
+ var realEndPoints = points[1].clone().add(dir.multiplyScalar(radius));
123
+ var firstPoint = points[0];
115
124
  if (close) firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius));
116
125
  lines.push(new LineCurve3(firstPoint, realEndPoints));
117
126
  } else if (i === points.length - 1) {
118
127
  //
119
128
  } else {
120
- const dir1 = points[i - 1].clone().sub(points[i]).normalize();
121
- const dir2 = points[i + 1].clone().sub(points[i]).normalize();
122
- const dir3 = points[i].clone().sub(points[i + 1]).normalize();
123
- const nextDir1 = dir2.clone();
124
- const nextDir2 = points[i].clone().sub(points[i + 1]).normalize();
125
- const p1 = points[i].clone().add(dir1.multiplyScalar(radius));
126
- const p2 = points[i].clone();
127
- const p3 = points[i].clone().add(dir2.multiplyScalar(radius));
128
- const beziercurve = new QuadraticBezierCurve3(p1, p2, p3);
129
- const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius));
130
- const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius));
129
+ var dir1 = points[i - 1].clone().sub(points[i]).normalize();
130
+ var dir2 = points[i + 1].clone().sub(points[i]).normalize();
131
+ var dir3 = points[i].clone().sub(points[i + 1]).normalize();
132
+ var nextDir1 = dir2.clone();
133
+ var nextDir2 = points[i].clone().sub(points[i + 1]).normalize();
134
+ var p1 = points[i].clone().add(dir1.multiplyScalar(radius));
135
+ var p2 = points[i].clone();
136
+ var p3 = points[i].clone().add(dir2.multiplyScalar(radius));
137
+ var beziercurve = new QuadraticBezierCurve3(p1, p2, p3);
138
+ var realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius));
139
+ var _realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius));
131
140
  lines.push(beziercurve);
132
- lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1 ? close ? points[i + 1].clone().add(dir3.multiplyScalar(radius)) : points[i + 1] : realEndPoints));
141
+ lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1 ? close ? points[i + 1].clone().add(dir3.multiplyScalar(radius)) : points[i + 1] : _realEndPoints));
133
142
  }
134
143
  }
135
144
  if (close) {
136
145
  // first point
137
- const dir1 = points[1].clone().sub(points[0]).normalize();
138
- const dir2 = points[points.length - 1].clone().sub(points[0]).normalize();
139
- const p1 = points[0].clone().add(dir1.multiplyScalar(radius));
140
- const p2 = points[0];
141
- const p3 = points[0].clone().add(dir2.multiplyScalar(radius));
142
- const beziercurve = new QuadraticBezierCurve3(p3, p2, p1);
146
+ var _dir = points[1].clone().sub(points[0]).normalize();
147
+ var _dir2 = points[points.length - 1].clone().sub(points[0]).normalize();
148
+ var _p = points[0].clone().add(_dir.multiplyScalar(radius));
149
+ var _p2 = points[0];
150
+ var _p3 = points[0].clone().add(_dir2.multiplyScalar(radius));
151
+ var _beziercurve = new QuadraticBezierCurve3(_p3, _p2, _p);
143
152
 
144
153
  // last point
145
- const dir3 = points[0].clone().sub(points[points.length - 1]).normalize();
146
- const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize();
147
- const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius));
148
- const p5 = points[points.length - 1];
149
- const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius));
150
- const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4);
154
+ var _dir3 = points[0].clone().sub(points[points.length - 1]).normalize();
155
+ var dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize();
156
+ var p4 = points[points.length - 1].clone().add(_dir3.multiplyScalar(radius));
157
+ var p5 = points[points.length - 1];
158
+ var p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius));
159
+ var beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4);
151
160
 
152
161
  // last line
153
- const laseLine = new LineCurve3(p4, p3);
162
+ var laseLine = new LineCurve3(p4, _p3);
154
163
  lines.push(beziercurve2);
155
164
  lines.push(laseLine);
156
- lines.push(beziercurve);
165
+ lines.push(_beziercurve);
157
166
  }
158
- const group = new Group();
159
- lines.forEach(line => {
167
+ var group = new Group();
168
+ lines.forEach(function (line) {
160
169
  curve.curves.push(line);
161
170
  if (line.type === 'QuadraticBezierCurve3') {
162
- const extrudeSettings = {
171
+ var extrudeSettings = {
163
172
  steps: 100,
164
173
  bevelEnabled: false,
165
174
  extrudePath: line
166
175
  };
167
- const geometry = new ExtrudeGeometry(shape, extrudeSettings);
168
- const arcWall = new Mesh(geometry, material);
176
+ var geometry = new ExtrudeGeometry(shape, extrudeSettings);
177
+ var arcWall = new Mesh(geometry, material);
169
178
  arcWall.translateY(arcWall.position.y + height);
170
179
  if (radius) group.add(arcWall);
171
180
  } else {
172
- const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material);
181
+ var mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material);
173
182
  group.add(mesh);
174
183
  }
175
184
  });
176
185
  return [curve, group];
177
186
  };
178
- class RoundLineGeometry extends BufferGeometry {
179
- constructor(points, option) {
187
+ var RoundLineGeometry = /*#__PURE__*/function (_BufferGeometry) {
188
+ _inherits(RoundLineGeometry, _BufferGeometry);
189
+ var _super = _createSuper(RoundLineGeometry);
190
+ function RoundLineGeometry(points, option) {
180
191
  var _option$radius;
181
- super();
182
- _defineProperty(this, "curve", void 0);
183
- const [curve] = createCurve(points, (_option$radius = option.radius) !== null && _option$radius !== void 0 ? _option$radius : 20, void 0, option.close || false);
184
- const currentPoints = curve.getPoints(option.pointNum || 1000);
185
- const geometry = new BufferGeometry();
192
+ var _this;
193
+ _classCallCheck(this, RoundLineGeometry);
194
+ _this = _super.call(this);
195
+ _defineProperty(_assertThisInitialized(_this), "curve", void 0);
196
+ var _createCurve = createCurve(points, (_option$radius = option.radius) !== null && _option$radius !== void 0 ? _option$radius : 20, void 0, option.close || false),
197
+ _createCurve2 = _slicedToArray(_createCurve, 1),
198
+ curve = _createCurve2[0];
199
+ var currentPoints = curve.getPoints(option.pointNum || 1000);
200
+ var geometry = new BufferGeometry();
186
201
  geometry.setFromPoints(currentPoints);
187
- this.curve = curve;
202
+ _this.curve = curve;
203
+ return _this;
188
204
  }
189
- }
190
- const createRoundLineWallMesh = (points, option, material) => {
205
+ return _createClass(RoundLineGeometry);
206
+ }(BufferGeometry);
207
+ var createRoundLineWallMesh = function createRoundLineWallMesh(points, option, material) {
191
208
  var _option$radius2, _option$height;
192
- const [_, group] = createCurve(points, (_option$radius2 = option.radius) !== null && _option$radius2 !== void 0 ? _option$radius2 : 20, (_option$height = option.height) !== null && _option$height !== void 0 ? _option$height : 50, option.close || false, material);
209
+ var _createCurve3 = createCurve(points, (_option$radius2 = option.radius) !== null && _option$radius2 !== void 0 ? _option$radius2 : 20, (_option$height = option.height) !== null && _option$height !== void 0 ? _option$height : 50, option.close || false, material),
210
+ _createCurve4 = _slicedToArray(_createCurve3, 2),
211
+ _ = _createCurve4[0],
212
+ group = _createCurve4[1];
193
213
  return group;
194
214
  };
195
- const createRoundedClosedCurve = (points, radius = 20, closed = true) => {
196
- const curves = [];
197
- const total = points.length;
198
- let lastP2 = null;
215
+ var createRoundedClosedCurve = function createRoundedClosedCurve(points) {
216
+ var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
217
+ var closed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
218
+ var curves = [];
219
+ var total = points.length;
220
+ var lastP2 = null;
199
221
  // 👇 避免 radius = 0 时直线退化问题
200
- const safeRadius = radius === 0 ? 0.0001 : radius;
201
- for (let i = 0; i < total; i++) {
202
- const curr = points[i];
203
- const hasPrev = i > 0;
204
- const hasNext = i < total - 1;
222
+ var safeRadius = radius === 0 ? 0.0001 : radius;
223
+ for (var i = 0; i < total; i++) {
224
+ var curr = points[i];
225
+ var hasPrev = i > 0;
226
+ var hasNext = i < total - 1;
205
227
  if (hasPrev && hasNext || closed) {
206
- const pPrev = points[(i - 1 + total) % total];
207
- const pNext = points[(i + 1) % total];
208
- const v1 = curr.clone().sub(pPrev).normalize();
209
- const v2 = pNext.clone().sub(curr).normalize();
210
- const tangentLength = Math.min(safeRadius, curr.distanceTo(pPrev) / 2, curr.distanceTo(pNext) / 2);
211
- const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength));
212
- const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength));
228
+ var pPrev = points[(i - 1 + total) % total];
229
+ var pNext = points[(i + 1) % total];
230
+ var v1 = curr.clone().sub(pPrev).normalize();
231
+ var v2 = pNext.clone().sub(curr).normalize();
232
+ var tangentLength = Math.min(safeRadius, curr.distanceTo(pPrev) / 2, curr.distanceTo(pNext) / 2);
233
+ var p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength));
234
+ var p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength));
213
235
  if (lastP2) curves.push(new LineCurve3(lastP2.clone(), p1.clone()));else if (!closed && i === 1) curves.push(new LineCurve3(points[0].clone(), p1.clone()));
214
236
  curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()));
215
237
  lastP2 = p2;
@@ -218,17 +240,19 @@ const createRoundedClosedCurve = (points, radius = 20, closed = true) => {
218
240
  }
219
241
  }
220
242
  if (closed && lastP2) {
221
- const first = points[0];
222
- const prev = points[points.length - 1];
223
- const next = points[1];
224
- const v1 = first.clone().sub(prev).normalize();
225
- const v2 = next.clone().sub(first).normalize();
226
- const tangentLength = Math.min(safeRadius, first.distanceTo(prev) / 2, first.distanceTo(next) / 2);
227
- const firstP1 = first.clone().sub(v1.clone().multiplyScalar(tangentLength));
243
+ var first = points[0];
244
+ var prev = points[points.length - 1];
245
+ var next = points[1];
246
+ var _v = first.clone().sub(prev).normalize();
247
+ var _v2 = next.clone().sub(first).normalize();
248
+ var _tangentLength = Math.min(safeRadius, first.distanceTo(prev) / 2, first.distanceTo(next) / 2);
249
+ var firstP1 = first.clone().sub(_v.clone().multiplyScalar(_tangentLength));
228
250
  curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()));
229
251
  }
230
- const path = new CurvePath();
231
- curves.forEach(c => path.add(c));
252
+ var path = new CurvePath();
253
+ curves.forEach(function (c) {
254
+ return path.add(c);
255
+ });
232
256
  return path;
233
257
  // for (let i = 0; i < total; i++) {
234
258
  // const prev = points[(i - 1 + total) % total]
@@ -266,27 +290,29 @@ const createRoundedClosedCurve = (points, radius = 20, closed = true) => {
266
290
  // curves.forEach(c => path.add(c))
267
291
  // return path
268
292
  };
269
- const createRoundedClosedWallMesh = (points, option, material) => {
293
+ var createRoundedClosedWallMesh = function createRoundedClosedWallMesh(points, option, material) {
270
294
  if (!material) material = defMaterial;
271
295
  // const shape = rectangle(0.1, option.height)
272
296
  if (points.length < 2) throw new Error('At least two points are required to create a curve');
273
- const curvePath = createRoundedClosedCurve(points, option.radius, option.close);
274
- const divisions = 1000;
297
+ var curvePath = createRoundedClosedCurve(points, option.radius, option.close);
298
+ var divisions = 1000;
275
299
  // const upVec = new Vector3(0, 1, 0)
276
- const bottomPoints = curvePath.getSpacedPoints(divisions);
277
- const topPoints = bottomPoints.map(p => new Vector3(p.x, p.y + option.height, p.z));
300
+ var bottomPoints = curvePath.getSpacedPoints(divisions);
301
+ var topPoints = bottomPoints.map(function (p) {
302
+ return new Vector3(p.x, p.y + option.height, p.z);
303
+ });
278
304
 
279
305
  // 构建侧面 geometry
280
- const sideGeometry = new BufferGeometry();
281
- const positions = [];
282
- const indices = [];
283
- for (let i = 0; i < divisions; i++) {
284
- const b0 = bottomPoints[i];
285
- const b1 = bottomPoints[i + 1];
286
- const t0 = topPoints[i];
287
- const t1 = topPoints[i + 1];
306
+ var sideGeometry = new BufferGeometry();
307
+ var positions = [];
308
+ var indices = [];
309
+ for (var i = 0; i < divisions; i++) {
310
+ var b0 = bottomPoints[i];
311
+ var b1 = bottomPoints[i + 1];
312
+ var t0 = topPoints[i];
313
+ var t1 = topPoints[i + 1];
288
314
  if (!b1 || !t1) break;
289
- const baseIndex = positions.length / 3;
315
+ var baseIndex = positions.length / 3;
290
316
  positions.push(b0.x, b0.y, b0.z); // 0
291
317
  positions.push(b1.x, b1.y, b1.z); // 1
292
318
  positions.push(t1.x, t1.y, t1.z); // 2
@@ -303,7 +329,7 @@ const createRoundedClosedWallMesh = (points, option, material) => {
303
329
  // const sideMaterial = new THREE.MeshNormalMaterial({
304
330
  // side: THREE.DoubleSide,
305
331
  // })
306
- const sideMesh = new Mesh(sideGeometry, material);
332
+ var sideMesh = new Mesh(sideGeometry, material);
307
333
  // const extrudeSettings = {
308
334
  // steps: 200,
309
335
  // bevelEnabled: false,
@@ -1 +1 @@
1
- {"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Float32BufferAttribute","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","length","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","constructor","option","_option$radius","_defineProperty","currentPoints","getPoints","pointNum","setFromPoints","createRoundLineWallMesh","_option$radius2","_option$height","_","createRoundedClosedCurve","closed","total","lastP2","safeRadius","curr","hasPrev","hasNext","pPrev","pNext","tangentLength","Math","min","first","prev","next","firstP1","path","c","createRoundedClosedWallMesh","curvePath","divisions","bottomPoints","getSpacedPoints","topPoints","map","p","sideGeometry","positions","indices","b0","b1","t0","t1","baseIndex","setAttribute","setIndex","computeVertexNormals","sideMesh"],"sources":["../../../src/business/Utils/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport type { Curve } from '@anov/3d-core'\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, MeshNormalMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\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 const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n public curve: any\n\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n this.curve = curve\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nconst createRoundedClosedCurve = (points: Vector3[], radius = 20, closed = true) => {\n const curves: Curve<Vector3>[] = []\n const total = points.length\n let lastP2: Vector3 | null = null\n // 👇 避免 radius = 0 时直线退化问题\n const safeRadius = radius === 0 ? 0.0001 : radius\n\n for (let i = 0; i < total; i++) {\n const curr = points[i]\n const hasPrev = i > 0\n const hasNext = i < total - 1\n\n if ((hasPrev && hasNext) || closed) {\n const pPrev = points[(i - 1 + total) % total]\n const pNext = points[(i + 1) % total]\n\n const v1 = curr.clone().sub(pPrev).normalize()\n const v2 = pNext.clone().sub(curr).normalize()\n const tangentLength = Math.min(\n safeRadius,\n curr.distanceTo(pPrev) / 2,\n curr.distanceTo(pNext) / 2,\n )\n\n const p1 = curr\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n const p2 = curr\n .clone()\n .add(v2.clone().multiplyScalar(tangentLength))\n\n if (lastP2)\n curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n else if (!closed && i === 1)\n curves.push(new LineCurve3(points[0].clone(), p1.clone()))\n\n curves.push(\n new QuadraticBezierCurve3(\n p1.clone(),\n curr.clone(),\n p2.clone(),\n ),\n )\n lastP2 = p2\n }\n else if (!hasNext && lastP2) {\n curves.push(new LineCurve3(lastP2.clone(), curr.clone()))\n }\n }\n\n if (closed && lastP2) {\n const first = points[0]\n const prev = points[points.length - 1]\n const next = points[1]\n\n const v1 = first.clone().sub(prev).normalize()\n const v2 = next.clone().sub(first).normalize()\n\n const tangentLength = Math.min(\n safeRadius,\n first.distanceTo(prev) / 2,\n first.distanceTo(next) / 2,\n )\n const firstP1 = first\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()))\n }\n\n const path = new CurvePath<Vector3>()\n curves.forEach(c => path.add(c))\n return path\n // for (let i = 0; i < total; i++) {\n // const prev = points[(i - 1 + total) % total]\n // const curr = points[i]\n // const next = points[(i + 1) % total]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n\n // const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n // const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength))\n\n // if (lastP2)\n // curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n\n // curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()))\n // lastP2 = p2\n // }\n\n // const prev = points[(total - 1 + total) % total]\n // const curr = points[0]\n // const next = points[1]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n // const firstP1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n\n // curves.push(new LineCurve3(lastP2!.clone(), firstP1.clone()))\n\n // const path = new CurvePath<THREE.Vector3>()\n // curves.forEach(c => path.add(c))\n // return path\n}\n\nconst createRoundedClosedWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n // const shape = rectangle(0.1, option.height)\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n const curvePath = createRoundedClosedCurve(points, option.radius, option.close)\n const divisions = 1000\n // const upVec = new Vector3(0, 1, 0)\n const bottomPoints = curvePath.getSpacedPoints(divisions)\n const topPoints = bottomPoints.map(\n p => new Vector3(p.x, p.y + option.height, p.z),\n )\n\n // 构建侧面 geometry\n const sideGeometry = new BufferGeometry()\n const positions = []\n const indices = []\n\n for (let i = 0; i < divisions; i++) {\n const b0 = bottomPoints[i]\n const b1 = bottomPoints[i + 1]\n const t0 = topPoints[i]\n const t1 = topPoints[i + 1]\n\n if (!b1 || !t1)\n break\n\n const baseIndex = positions.length / 3\n\n positions.push(b0.x, b0.y, b0.z) // 0\n positions.push(b1.x, b1.y, b1.z) // 1\n positions.push(t1.x, t1.y, t1.z) // 2\n positions.push(t0.x, t0.y, t0.z) // 3\n\n // 两个三角形组成一个四边面\n indices.push(baseIndex, baseIndex + 1, baseIndex + 2)\n indices.push(baseIndex, baseIndex + 2, baseIndex + 3)\n }\n\n sideGeometry.setAttribute(\n 'position',\n new Float32BufferAttribute(positions, 3),\n )\n sideGeometry.setIndex(indices)\n sideGeometry.computeVertexNormals()\n\n // const sideMaterial = new THREE.MeshNormalMaterial({\n // side: THREE.DoubleSide,\n // })\n const sideMesh = new Mesh(sideGeometry, material)\n // const extrudeSettings = {\n // steps: 200,\n // bevelEnabled: false,\n // extrudePath: curvePath,\n // }\n // const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // const material1 = new MeshNormalMaterial({ wireframe: false })\n // const arcWall = new Mesh(geometry, material)\n // arcWall.translateY(arcWall.position.y + option.height)\n return sideMesh\n}\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n createRoundedClosedWallMesh,\n createRoundedClosedCurve,\n}"],"mappings":"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"}
1
+ {"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Float32BufferAttribute","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","arguments","length","undefined","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","_BufferGeometry","_inherits","_super","_createSuper","option","_option$radius","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createCurve","_createCurve2","_slicedToArray","currentPoints","getPoints","pointNum","setFromPoints","_createClass","createRoundLineWallMesh","_option$radius2","_option$height","_createCurve3","_createCurve4","_","createRoundedClosedCurve","closed","total","lastP2","safeRadius","curr","hasPrev","hasNext","pPrev","pNext","tangentLength","Math","min","first","prev","next","firstP1","path","c","createRoundedClosedWallMesh","curvePath","divisions","bottomPoints","getSpacedPoints","topPoints","map","p","sideGeometry","positions","indices","b0","b1","t0","t1","baseIndex","setAttribute","setIndex","computeVertexNormals","sideMesh"],"sources":["../../../src/business/Utils/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport type { Curve } from '@anov/3d-core'\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, MeshNormalMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\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 const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n public curve: any\n\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n this.curve = curve\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nconst createRoundedClosedCurve = (points: Vector3[], radius = 20, closed = true) => {\n const curves: Curve<Vector3>[] = []\n const total = points.length\n let lastP2: Vector3 | null = null\n // 👇 避免 radius = 0 时直线退化问题\n const safeRadius = radius === 0 ? 0.0001 : radius\n\n for (let i = 0; i < total; i++) {\n const curr = points[i]\n const hasPrev = i > 0\n const hasNext = i < total - 1\n\n if ((hasPrev && hasNext) || closed) {\n const pPrev = points[(i - 1 + total) % total]\n const pNext = points[(i + 1) % total]\n\n const v1 = curr.clone().sub(pPrev).normalize()\n const v2 = pNext.clone().sub(curr).normalize()\n const tangentLength = Math.min(\n safeRadius,\n curr.distanceTo(pPrev) / 2,\n curr.distanceTo(pNext) / 2,\n )\n\n const p1 = curr\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n const p2 = curr\n .clone()\n .add(v2.clone().multiplyScalar(tangentLength))\n\n if (lastP2)\n curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n else if (!closed && i === 1)\n curves.push(new LineCurve3(points[0].clone(), p1.clone()))\n\n curves.push(\n new QuadraticBezierCurve3(\n p1.clone(),\n curr.clone(),\n p2.clone(),\n ),\n )\n lastP2 = p2\n }\n else if (!hasNext && lastP2) {\n curves.push(new LineCurve3(lastP2.clone(), curr.clone()))\n }\n }\n\n if (closed && lastP2) {\n const first = points[0]\n const prev = points[points.length - 1]\n const next = points[1]\n\n const v1 = first.clone().sub(prev).normalize()\n const v2 = next.clone().sub(first).normalize()\n\n const tangentLength = Math.min(\n safeRadius,\n first.distanceTo(prev) / 2,\n first.distanceTo(next) / 2,\n )\n const firstP1 = first\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()))\n }\n\n const path = new CurvePath<Vector3>()\n curves.forEach(c => path.add(c))\n return path\n // for (let i = 0; i < total; i++) {\n // const prev = points[(i - 1 + total) % total]\n // const curr = points[i]\n // const next = points[(i + 1) % total]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n\n // const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n // const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength))\n\n // if (lastP2)\n // curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n\n // curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()))\n // lastP2 = p2\n // }\n\n // const prev = points[(total - 1 + total) % total]\n // const curr = points[0]\n // const next = points[1]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n // const firstP1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n\n // curves.push(new LineCurve3(lastP2!.clone(), firstP1.clone()))\n\n // const path = new CurvePath<THREE.Vector3>()\n // curves.forEach(c => path.add(c))\n // return path\n}\n\nconst createRoundedClosedWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n // const shape = rectangle(0.1, option.height)\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n const curvePath = createRoundedClosedCurve(points, option.radius, option.close)\n const divisions = 1000\n // const upVec = new Vector3(0, 1, 0)\n const bottomPoints = curvePath.getSpacedPoints(divisions)\n const topPoints = bottomPoints.map(\n p => new Vector3(p.x, p.y + option.height, p.z),\n )\n\n // 构建侧面 geometry\n const sideGeometry = new BufferGeometry()\n const positions = []\n const indices = []\n\n for (let i = 0; i < divisions; i++) {\n const b0 = bottomPoints[i]\n const b1 = bottomPoints[i + 1]\n const t0 = topPoints[i]\n const t1 = topPoints[i + 1]\n\n if (!b1 || !t1)\n break\n\n const baseIndex = positions.length / 3\n\n positions.push(b0.x, b0.y, b0.z) // 0\n positions.push(b1.x, b1.y, b1.z) // 1\n positions.push(t1.x, t1.y, t1.z) // 2\n positions.push(t0.x, t0.y, t0.z) // 3\n\n // 两个三角形组成一个四边面\n indices.push(baseIndex, baseIndex + 1, baseIndex + 2)\n indices.push(baseIndex, baseIndex + 2, baseIndex + 3)\n }\n\n sideGeometry.setAttribute(\n 'position',\n new Float32BufferAttribute(positions, 3),\n )\n sideGeometry.setIndex(indices)\n sideGeometry.computeVertexNormals()\n\n // const sideMaterial = new THREE.MeshNormalMaterial({\n // side: THREE.DoubleSide,\n // })\n const sideMesh = new Mesh(sideGeometry, material)\n // const extrudeSettings = {\n // steps: 200,\n // bevelEnabled: false,\n // extrudePath: curvePath,\n // }\n // const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // const material1 = new MeshNormalMaterial({ wireframe: false })\n // const arcWall = new Mesh(geometry, material)\n // arcWall.translateY(arcWall.position.y + option.height)\n return sideMesh\n}\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n createRoundedClosedWallMesh,\n createRoundedClosedCurve,\n}"],"mappings":"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"}