dcsConfig.ts 82 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866
  1. /*
  2. * @Description:
  3. * @Version: 1.668
  4. * @Autor: 地虎降天龙
  5. * @Date: 2025-12-29 09:16:25
  6. * @LastEditors: 地虎降天龙
  7. * @LastEditTime: 2026-05-22 12:24:29
  8. */
  9. import {
  10. GNM_EXPRESSION_OPTIONS,
  11. GNM_HEAD_DEFAULTS,
  12. } from './components/gnmHeadComponent/defaults'
  13. const config = {
  14. name: 'baseSample',
  15. version: '2.2.2',
  16. description: `<div style="font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;">
  17. <style>
  18. .eco-title {
  19. font-size: 16px;
  20. margin-bottom: 12px;
  21. font-weight: 600;
  22. }
  23. .eco-grid {
  24. display: grid;
  25. grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  26. gap: 10px;
  27. }
  28. .eco-item {
  29. text-decoration: none;
  30. color: #222;
  31. padding: 6px 8px;
  32. border-radius: 8px;
  33. border: 1px solid #f0f0f0;
  34. background: #fafafa;
  35. transition: all 0.2s ease;
  36. display: block;
  37. }
  38. .eco-item:hover {
  39. transform: translateY(-2px);
  40. border-color: #d0d7ff;
  41. background: #f5f7ff;
  42. box-shadow: 0 6px 16px rgba(0,0,0,0.06);
  43. }
  44. .eco-name {
  45. font-size: 14px;
  46. font-weight: 600;
  47. margin-bottom: 4px;
  48. }
  49. .eco-link {
  50. font-size: 12px;
  51. color: #888;
  52. word-break: break-all;
  53. }
  54. </style>
  55. <div class="eco-wrap">
  56. <div class="eco-title">✨ 持续打通多个生态</div>
  57. <div class="eco-grid">
  58. <a class="eco-item" href="https://opensource.icegl.cn/#/plugins/loadDynamicComponent/readConfig" target="_blank">
  59. <div class="eco-name">🌈 tvt.js 开源基座</div>
  60. <div class="eco-link">opensource.icegl.cn</div>
  61. </a>
  62. <a class="eco-item" href="https://zone3deditor.icegl.cn/#/plugins/zone3Deditor/index" target="_blank">
  63. <div class="eco-name">🏞️ 区域三维场景编辑器</div>
  64. <div class="eco-link">zone3deditor.icegl.cn</div>
  65. </a>
  66. <a class="eco-item" href="https://gisplaneeditor.icegl.cn/#/plugins/gisPlaneEditor/index" target="_blank">
  67. <div class="eco-name">🗺️ GIS地理空间编辑器</div>
  68. <div class="eco-link">gisplaneeditor.icegl.cn</div>
  69. </a>
  70. </div>
  71. </div>
  72. </div>`,
  73. components: [
  74. {
  75. name: '测试组件',
  76. type: 'testBase',
  77. comFile: './src/components/testBase.vue',
  78. previewPath: './preview/testBase.png',
  79. default: {},
  80. defaultObject3D: {},
  81. config: {},
  82. },
  83. {
  84. name: '矩形跑光组件',
  85. type: 'rectangleShimmerComponent',
  86. comFile: './src/components/rectangleShimmerComponent.vue',
  87. previewPath: './preview/rectangleShimmerComponent.png',
  88. default: {
  89. gradientLength: 2.6,
  90. height: 1.4,
  91. length: 4,
  92. lineColor: '#ffd166',
  93. lineSpeed: 0.95,
  94. lineWidth: 0.035,
  95. segmentCount: 6,
  96. wallBottomColor: '#0d1f8f',
  97. wallBottomOpacity: 0.92,
  98. wallGradientProgress: 68,
  99. wallTopColor: '#57f3ff',
  100. wallTopOpacity: 0.18,
  101. width: 2.6,
  102. },
  103. defaultObject3D: {},
  104. config: {
  105. length: { name: '长度', com: 'Slider', min: 0.4, max: 10, step: 0.1 },
  106. width: { name: '宽度', com: 'Slider', min: 0.4, max: 10, step: 0.1 },
  107. height: { name: '高度', com: 'Slider', min: 0.2, max: 5, step: 0.05 },
  108. wallBottomColor: { name: '墙体底色', com: 'ColorPicker' },
  109. wallBottomOpacity: { name: '墙体底部透明', com: 'Slider', min: 0, max: 1, step: 0.01 },
  110. wallGradientProgress: { name: '渐变进程%', com: 'Slider', min: 0, max: 100, step: 1 },
  111. wallTopColor: { name: '墙体顶色', com: 'ColorPicker' },
  112. wallTopOpacity: { name: '墙体顶部透明', com: 'Slider', min: 0, max: 1, step: 0.01 },
  113. lineColor: { name: '跑线颜色', com: 'ColorPicker' },
  114. lineWidth: { name: '线宽', com: 'Slider', min: 0.01, max: 0.3, step: 0.005 },
  115. lineSpeed: { name: '跑线速度', com: 'Slider', min: 0, max: 6, step: 0.05 },
  116. gradientLength: { name: '渐变长度', com: 'Slider', min: 0.1, max: 8, step: 0.05 },
  117. segmentCount: { name: '线段数量', com: 'Slider', min: 1, max: 8, step: 1 },
  118. },
  119. },
  120. {
  121. name: '梦幻流体面板',
  122. type: 'dreamyFluidPanelComponent',
  123. comFile: './src/components/dreamyFluidPanelComponent.vue',
  124. previewPath: './preview/dreamyFluidPanelComponent.png',
  125. default: {
  126. baseColor: '#10204f',
  127. highlightColor: '#ffe7ba',
  128. length: 4,
  129. opacity: 0.92,
  130. sequinSize: 0.38,
  131. sheenColor: '#6fd8ff',
  132. shimmerSpeed: 1.15,
  133. sparkleIntensity: 1.05,
  134. tileDensity: 28,
  135. waveIntensity: 0.92,
  136. waveSpeed: 0.86,
  137. width: 4,
  138. },
  139. defaultObject3D: {
  140. position: { x: 0, y: 0.105, z: 0 },
  141. scale: { x: 1, y: 1, z: 1 },
  142. rotation: { x: 0, y: 0, z: 0 },
  143. },
  144. config: {
  145. length: { name: '面板长度', com: 'Slider', min: 0.5, max: 20, step: 0.1 },
  146. width: { name: '面板宽度', com: 'Slider', min: 0.5, max: 20, step: 0.1 },
  147. tileDensity: { name: '亮片密度', com: 'Slider', min: 8, max: 72, step: 1 },
  148. sequinSize: { name: '亮片大小', com: 'Slider', min: 0.15, max: 0.48, step: 0.005 },
  149. waveSpeed: { name: '波动速度', com: 'Slider', min: 0, max: 4, step: 0.05 },
  150. waveIntensity: { name: '波动强度', com: 'Slider', min: 0, max: 2.5, step: 0.05 },
  151. shimmerSpeed: { name: '细闪速度', com: 'Slider', min: 0, max: 4, step: 0.05 },
  152. sparkleIntensity: { name: '高光强度', com: 'Slider', min: 0, max: 3, step: 0.05 },
  153. opacity: { name: '整体透明', com: 'Slider', min: 0.08, max: 1, step: 0.01 },
  154. baseColor: { name: '基础色', com: 'ColorPicker' },
  155. sheenColor: { name: '流光色', com: 'ColorPicker' },
  156. highlightColor: { name: '高光色', com: 'ColorPicker' },
  157. },
  158. },
  159. {
  160. name: '梦幻流体马赛克面板',
  161. type: 'giltMosaicGroundPanelComponent',
  162. comFile: './src/components/giltMosaicGroundPanelComponent.vue',
  163. previewPath: './preview/giltMosaicGroundPanelComponent.gif',
  164. default: {
  165. animationMode: 1,
  166. baseColor: '#5e411f',
  167. groutColor: '#110b06',
  168. groutWidth: 0.06,
  169. highlightColor: '#ffdba6',
  170. length: 4,
  171. lightSpeed: 0.4,
  172. opacity: 0.94,
  173. sheenColor: '#e5aa55',
  174. sparkleIntensity: 1,
  175. tileDensity: 18,
  176. waveDelay: 1.5,
  177. waveDirection: 0,
  178. waveSpeed: 4,
  179. width: 4,
  180. },
  181. defaultObject3D: {
  182. position: { x: 0, y: 0.105, z: 0 },
  183. scale: { x: 1, y: 1, z: 1 },
  184. rotation: { x: 0, y: 0, z: 0 },
  185. },
  186. config: {
  187. length: { name: '面板长度', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  188. width: { name: '面板宽度', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  189. tileDensity: { name: '砖片密度', com: 'Slider', min: 6, max: 64, step: 1 },
  190. lightSpeed: { name: '光动速度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  191. animationMode: { name: '翻折强度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  192. waveSpeed: { name: '扫波时长', com: 'Slider', min: 0.3, max: 12, step: 0.05 },
  193. waveDelay: { name: '波间停顿', com: 'Slider', min: 0, max: 6, step: 0.05 },
  194. waveDirection: {
  195. name: '波方向',
  196. com: 'Select',
  197. options: [
  198. { label: '左到右', value: 0 },
  199. { label: '右到左', value: 1 },
  200. { label: '上到下', value: 2 },
  201. { label: '下到上', value: 3 },
  202. ],
  203. },
  204. sparkleIntensity: { name: '高光强度', com: 'Slider', min: 0, max: 3, step: 0.05 },
  205. groutWidth: { name: '砖缝宽度', com: 'Slider', min: 0.01, max: 0.18, step: 0.005 },
  206. opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  207. baseColor: { name: '基底色', com: 'ColorPicker' },
  208. groutColor: { name: '砖缝色', com: 'ColorPicker' },
  209. sheenColor: { name: '流光色', com: 'ColorPicker' },
  210. highlightColor: { name: '高光色', com: 'ColorPicker' },
  211. },
  212. },
  213. {
  214. name: '芯片地板',
  215. type: 'chipFloorGroundComponent',
  216. comFile: './src/components/chipFloorGroundComponent.vue',
  217. previewPath: './preview/chipFloorGroundComponent.png',
  218. default: {
  219. "baseColor": "#090909",
  220. "chipHeight": 0.034800000000000005,
  221. "dotDensity": 20,
  222. "dotOpacity": 0.07,
  223. "glowColor": "#31bcff",
  224. "glowIntensity": 1.1999999999999997,
  225. "iterations": 3,
  226. "particleColor": "#ff00d9",
  227. "particleDensity": 2.2999999999999994,
  228. "particleSize": 0.015,
  229. "particleSpeed": 0.09999999999999992,
  230. "patternScale": 0.5443000000000001,
  231. "size": 40,
  232. "traceColor": "#000000",
  233. "trailColor": "#e6ff00",
  234. "trailLength": 30,
  235. "trailSpeed": 0.35000000000000003
  236. },
  237. defaultObject3D: {
  238. position: { x: 0, y: 0.02, z: 0 },
  239. scale: { x: 1, y: 1, z: 1 },
  240. rotation: { x: 0, y: 0, z: 0 },
  241. },
  242. config: {
  243. size: { name: '地板尺寸', com: 'Slider', min: 4, max: 40, step: 0.1 },
  244. iterations: { name: '细节层级', com: 'Slider', min: 2, max: 10, step: 1 },
  245. patternScale: { name: '网格缩放', com: 'Slider', min: 0.1, max: 3, step: 0.01 },
  246. chipHeight: { name: '芯片高度', com: 'Slider', min: 0, max: 0.8, step: 0.001 },
  247. glowIntensity: { name: '沟槽辉光', com: 'Slider', min: 0, max: 5, step: 0.01 },
  248. dotDensity: { name: '点阵密度', com: 'Slider', min: 20, max: 120, step: 1 },
  249. dotOpacity: { name: '点阵透明', com: 'Slider', min: 0, max: 1, step: 0.01 },
  250. trailSpeed: { name: '数据轨迹速度', com: 'Slider', min: 0, max: 10, step: 0.05 },
  251. trailLength: { name: '轨迹衰减', com: 'Slider', min: 2, max: 30, step: 0.1 },
  252. particleSpeed: { name: '粒子速度', com: 'Slider', min: 0, max: 5, step: 0.05 },
  253. particleDensity: { name: '粒子密度', com: 'Slider', min: 1, max: 30, step: 0.1 },
  254. particleSize: { name: '粒子大小', com: 'Slider', min: 0.001, max: 0.02, step: 0.001 },
  255. baseColor: { name: '基底颜色', com: 'ColorPicker' },
  256. traceColor: { name: '片面亮色', com: 'ColorPicker' },
  257. glowColor: { name: '沟槽光色', com: 'ColorPicker' },
  258. trailColor: { name: '数据轨迹颜色', com: 'ColorPicker' },
  259. particleColor: { name: '粒子颜色', com: 'ColorPicker' },
  260. },
  261. },
  262. {
  263. name: '高级动态草地',
  264. type: 'advancedDynamicGrassComponent',
  265. comFile: './src/components/advancedDynamicGrassComponent/index.vue',
  266. previewPath: './preview/advancedDynamicGrassComponent.svg',
  267. description: '移植自 three-stylized 的高级草地组件,保留确定性起伏地形、实例化草叶、动态风场与程序化野花;不创建或配置 Sun、背景、环境、相机与控制器,适合直接加入区域场景编辑器。',
  268. default: {
  269. terrainWidth: 8,
  270. terrainDepth: 8,
  271. terrainSegments: 72,
  272. seed: 17,
  273. terrainDegree: 0.8,
  274. groundColor: '#557d24',
  275. density: 40,
  276. bladeHeight: 1.5,
  277. bladeWidth: 0.1,
  278. windStrength: 0.22,
  279. windSpeed: 1.1,
  280. windFrequency: 0.55,
  281. windTurbulence: 0.24,
  282. windDirection: 32,
  283. brightness: 0.35,
  284. grassBottomColor: '#4f7c13',
  285. grassTopColor: '#b8da57',
  286. grassBacklightColor: '#c1e54d',
  287. wildflowersEnabled: true,
  288. wildflowerDensity: 0.84,
  289. wildflowerMaxCount: 240,
  290. },
  291. defaultObject3D: {
  292. position: { x: 0, y: 0, z: 0 },
  293. scale: { x: 1, y: 1, z: 1 },
  294. rotation: { x: 0, y: 0, z: 0 },
  295. },
  296. config: {
  297. terrainWidth: { name: '地形宽度', com: 'Slider', min: 2, max: 40, step: 0.5 },
  298. terrainDepth: { name: '地形深度', com: 'Slider', min: 2, max: 40, step: 0.5 },
  299. terrainSegments: { name: '地形精度', com: 'Slider', min: 8, max: 160, step: 1 },
  300. seed: { name: '随机种子', com: 'Slider', min: 0, max: 10000, step: 1 },
  301. terrainDegree: { name: '地形起伏', com: 'Slider', min: 0, max: 1, step: 0.01 },
  302. density: { name: '草叶密度', com: 'Slider', min: 1, max: 60, step: 1 },
  303. bladeHeight: { name: '草叶高度', com: 'Slider', min: 0.1, max: 3, step: 0.02 },
  304. bladeWidth: { name: '草叶宽度', com: 'Slider', min: 0.01, max: 0.16, step: 0.001 },
  305. windStrength: { name: '风力强度', com: 'Slider', min: 0, max: 0.8, step: 0.01 },
  306. windSpeed: { name: '风速', com: 'Slider', min: 0, max: 5, step: 0.05 },
  307. windFrequency: { name: '风浪频率', com: 'Slider', min: 0, max: 3, step: 0.01 },
  308. windTurbulence: { name: '风场扰动', com: 'Slider', min: 0, max: 1, step: 0.01 },
  309. windDirection: { name: '风向角度', com: 'Slider', min: 0, max: 360, step: 1 },
  310. brightness: { name: '草地亮度', com: 'Slider', min: 0.1, max: 2, step: 0.01 },
  311. groundColor: { name: '地面颜色', com: 'ColorPicker' },
  312. grassBottomColor: { name: '草根颜色', com: 'ColorPicker' },
  313. grassTopColor: { name: '草尖颜色', com: 'ColorPicker' },
  314. grassBacklightColor: { name: '草叶透光色', com: 'ColorPicker' },
  315. wildflowersEnabled: { name: '显示野花', com: 'Switch' },
  316. wildflowerDensity: { name: '野花密度', com: 'Slider', min: 0, max: 5, step: 0.05 },
  317. wildflowerMaxCount: { name: '野花上限', com: 'Slider', min: 0, max: 2000, step: 10 },
  318. },
  319. },
  320. {
  321. name: '流动烟雾组件',
  322. type: 'flowingSmokeComponent',
  323. comFile: './src/components/flowingSmokeComponent.vue',
  324. previewPath: './preview/flowingSmokeComponent.png',
  325. default: {
  326. color: '#aeb4b8',
  327. density: 0.38,
  328. directionX: -0.08,
  329. directionY: 1,
  330. directionZ: 0.03,
  331. emitterRadius: 0.12,
  332. flowRate: 0.16,
  333. lifeRange: 3.2,
  334. opacity: 0.26,
  335. particleSize: 0.22,
  336. sizeGrowth: 2.2,
  337. spread: 0.22,
  338. turbulence: 0.14,
  339. },
  340. defaultObject3D: {
  341. position: { x: 0, y: 0.15, z: 0 },
  342. scale: { x: 1, y: 1, z: 1 },
  343. rotation: { x: 0, y: 0, z: 0 },
  344. },
  345. config: {
  346. flowRate: { name: '流动速率', com: 'Slider', min: 0.02, max: 2, step: 0.01 },
  347. density: { name: '烟雾密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  348. color: { name: '烟雾颜色', com: 'ColorPicker' },
  349. emitterRadius: { name: '烟囱口半径', com: 'Slider', min: 0.01, max: 1.5, step: 0.01 },
  350. spread: { name: '扩散宽度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  351. turbulence: { name: '飘动幅度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  352. opacity: { name: '透明强度', com: 'Slider', min: 0.01, max: 1, step: 0.01 },
  353. particleSize: { name: '基础粒径', com: 'Slider', min: 0.02, max: 3, step: 0.01 },
  354. sizeGrowth: { name: '粒径增长', com: 'Slider', min: 1, max: 4, step: 0.05 },
  355. lifeRange: { name: '烟雾长度', com: 'Slider', min: 0.5, max: 14, step: 0.1 },
  356. directionX: { name: '方向X', com: 'Slider', min: -1, max: 1, step: 0.05 },
  357. directionY: { name: '方向Y', com: 'Slider', min: -1, max: 1, step: 0.05 },
  358. directionZ: { name: '方向Z', com: 'Slider', min: -1, max: 1, step: 0.05 },
  359. },
  360. },
  361. {
  362. name: '喷火组件',
  363. type: 'flameJetComponent',
  364. comFile: './src/components/flameJetComponent.vue',
  365. previewPath: './preview/flameJetComponent.gif',
  366. description: '基于 fragment shader 的喷火效果组件,沿 +X 方向喷射,支持长度、扰动、颜色梯度等参数调节。',
  367. default: {
  368. coreColor: '#ffc738',
  369. crossPlane: true,
  370. intensity: 1.55,
  371. jetSpeed: 1.7,
  372. length: 6,
  373. midColor: '#ff660d',
  374. noiseScale: 1,
  375. outerColor: '#d80f04',
  376. taperPower: 1.2,
  377. turbulence: 1,
  378. width: 2.2,
  379. },
  380. defaultObject3D: {
  381. position: { x: 0, y: 0.6, z: 0 },
  382. scale: { x: 1, y: 1, z: 1 },
  383. rotation: { x: 0, y: 0, z: 0 },
  384. },
  385. config: {
  386. length: { name: '火焰长度', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  387. width: { name: '火焰宽度', com: 'Slider', min: 0.2, max: 12, step: 0.1 },
  388. jetSpeed: { name: '喷射速度', com: 'Slider', min: 0, max: 8, step: 0.05 },
  389. turbulence: { name: '扰动强度', com: 'Slider', min: 0, max: 3, step: 0.05 },
  390. noiseScale: { name: '噪声密度', com: 'Slider', min: 0.1, max: 4, step: 0.05 },
  391. taperPower: { name: '收尖程度', com: 'Slider', min: 0.2, max: 5, step: 0.05 },
  392. intensity: { name: '辉光强度', com: 'Slider', min: 0.1, max: 4, step: 0.05 },
  393. crossPlane: { name: '十字面片', com: 'Switch' },
  394. coreColor: { name: '焰心色', com: 'ColorPicker' },
  395. midColor: { name: '焰中色', com: 'ColorPicker' },
  396. outerColor: { name: '焰边色', com: 'ColorPicker' },
  397. },
  398. },
  399. {
  400. name: '三维流体火焰',
  401. type: 'volumetricFluidFlameComponent',
  402. comFile: './src/components/volumetricFluidFlameComponent.vue',
  403. previewPath: './preview/volumetricFluidFlameComponent.png',
  404. description: '基于 GPU atlas 体素仿真的三维体积火焰组件,默认采用较低成本的模拟分辨率、压力迭代和光线步数。',
  405. default: {
  406. absorption: 7.5,
  407. brightness: 1.45,
  408. buoyancy: 2.3,
  409. colorMode: 0,
  410. curlStrength: 2.4,
  411. dissipation: 0.982,
  412. emitStrength: 3.1,
  413. flameHeight: 0.58,
  414. flameScaleX: 1,
  415. flameScaleY: 1.15,
  416. flameScaleZ: 1,
  417. flameWidth: 0.52,
  418. groundOpacity: 0.82,
  419. groundSize: 8,
  420. groundVisible: true,
  421. pressureIterations: 8,
  422. rayMarchSteps: 64,
  423. simulationFps: 30,
  424. simulationResolution: 32,
  425. turbulence: 0.48,
  426. volumeScale: 2.1,
  427. },
  428. defaultObject3D: {
  429. position: { x: 0, y: 0, z: 0 },
  430. scale: { x: 1, y: 1, z: 1 },
  431. rotation: { x: 0, y: 0, z: 0 },
  432. },
  433. config: {
  434. colorMode: {
  435. name: '颜色预设',
  436. com: 'Select',
  437. options: [
  438. { label: '火焰', value: 0 },
  439. { label: '蓝色等离子', value: 1 },
  440. { label: '绿色毒焰', value: 2 },
  441. { label: '白色蒸汽', value: 3 },
  442. { label: '紫色炼狱', value: 4 },
  443. ],
  444. },
  445. resetFluid: { name: '重置流体', com: 'ActionButton', action: 'resetFluidAction' },
  446. volumeScale: { name: '整体尺寸', com: 'Slider', min: 0.5, max: 6, step: 0.05 },
  447. flameWidth: { name: '火焰宽度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  448. flameHeight: { name: '火焰高度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  449. flameScaleX: { name: '形变 X', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 },
  450. flameScaleY: { name: '形变 Y', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 },
  451. flameScaleZ: { name: '形变 Z', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 },
  452. emitStrength: { name: '喷发强度', com: 'Slider', min: 0.2, max: 8, step: 0.05 },
  453. buoyancy: { name: '上升浮力', com: 'Slider', min: 0, max: 8, step: 0.05 },
  454. curlStrength: { name: '涡旋强度', com: 'Slider', min: 0, max: 8, step: 0.05 },
  455. turbulence: { name: '扰动强度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  456. dissipation: { name: '耗散系数', com: 'Slider', min: 0.9, max: 0.999, step: 0.001 },
  457. brightness: { name: '亮度', com: 'Slider', min: 0.3, max: 4, step: 0.05 },
  458. absorption: { name: '吸收密度', com: 'Slider', min: 2, max: 20, step: 0.1 },
  459. simulationResolution: {
  460. name: '模拟分辨率',
  461. com: 'Select',
  462. options: [
  463. { label: '16³ 最快', value: 16 },
  464. { label: '24³ 轻量', value: 24 },
  465. { label: '32³ 默认', value: 32 },
  466. { label: '48³ 精细', value: 48 },
  467. { label: '64³ 高质', value: 64 },
  468. ],
  469. },
  470. simulationFps: { name: '模拟帧率', com: 'Slider', min: 10, max: 60, step: 1 },
  471. pressureIterations: { name: '压力迭代', com: 'Slider', min: 1, max: 24, step: 1 },
  472. rayMarchSteps: { name: '体渲染步数', com: 'Slider', min: 24, max: 128, step: 1 },
  473. groundVisible: { name: '地面辉光', com: 'Switch' },
  474. groundSize: { name: '地面范围', com: 'Slider', min: 2, max: 30, step: 0.5 },
  475. groundOpacity: { name: '地面透明', com: 'Slider', min: 0, max: 1, step: 0.01 },
  476. },
  477. },
  478. {
  479. name: '液体气泡组件',
  480. type: 'liquidBubbleComponent',
  481. comFile: './src/components/liquidBubbleComponent/index.vue',
  482. previewPath: './preview/liquidBubbleComponent.gif',
  483. description: '静止液体体块内部持续冒泡的效果组件,支持长方体与圆柱体两种形状。',
  484. default: {
  485. shapeType: 'cylinder',
  486. width: 1.6,
  487. depth: 1.4,
  488. height: 3.2,
  489. radius: 1.07,
  490. liquidColor: '#b93838',
  491. liquidTopColor: '#de9221',
  492. bubbleColor: '#fff8e8',
  493. opacity: 0.5099999999999999,
  494. bubbleCount: 80,
  495. bubbleOpacity: 0.44999999999999996,
  496. bubbleSpeed: 0.1,
  497. bubbleSize: 0.08199999999999999,
  498. bubbleSpread: 0.76,
  499. },
  500. defaultObject3D: {
  501. position: { x: 0, y: 0, z: 0 },
  502. scale: { x: 1, y: 1, z: 1 },
  503. rotation: { x: 0, y: 0, z: 0 },
  504. },
  505. config: {
  506. shapeType: {
  507. name: '形状',
  508. com: 'Select',
  509. options: [
  510. { label: '圆柱体', value: 'cylinder' },
  511. { label: '长方体', value: 'box' },
  512. ],
  513. },
  514. width: { name: '长方体宽度', com: 'Slider', min: 0.4, max: 8, step: 0.05 },
  515. depth: { name: '长方体深度', com: 'Slider', min: 0.4, max: 8, step: 0.05 },
  516. height: { name: '高度', com: 'Slider', min: 0.8, max: 8, step: 0.05 },
  517. radius: { name: '圆柱体半径', com: 'Slider', min: 0.2, max: 4, step: 0.05 },
  518. liquidColor: { name: '液体底色', com: 'ColorPicker' },
  519. liquidTopColor: { name: '液体顶色', com: 'ColorPicker' },
  520. bubbleColor: { name: '气泡颜色', com: 'ColorPicker' },
  521. opacity: { name: '液体透明度', com: 'Slider', min: 0.08, max: 0.95, step: 0.01 },
  522. bubbleCount: { name: '气泡数量', com: 'Slider', min: 0, max: 240, step: 1 },
  523. bubbleOpacity: { name: '气泡透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  524. bubbleSpeed: { name: '气泡速度', com: 'Slider', min: 0.1, max: 4, step: 0.05 },
  525. bubbleSize: { name: '气泡大小', com: 'Slider', min: 0.001, max: 0.3, step: 0.001 },
  526. bubbleSpread: { name: '气泡扩散', com: 'Slider', min: 0.02, max: 1.2, step: 0.01 },
  527. },
  528. },
  529. {
  530. name: '流动液体容器组件',
  531. type: 'liquidContainerComponent',
  532. comFile: './src/components/liquidContainerComponent/index.vue',
  533. previewPath: './preview/liquidContainerComponent.gif',
  534. default: {
  535. shapeType: 'cylinderTank',
  536. vasePreset: 'roundPot',
  537. length: 2.4,
  538. width: 1.6,
  539. height: 2.8,
  540. radius: 1,
  541. fillLevel: 0.64,
  542. waveSpeed: 1.15,
  543. waveAmplitude: 0.08,
  544. waveFrequency: 3.4,
  545. waveRandomness: 0.46,
  546. baseColor: '#1f7ae0',
  547. topColor: '#6fe7ff',
  548. edgeColor: '#d7fbff',
  549. shellColor: '#d7f5ff',
  550. shellOpacity: 0.24,
  551. density: 0.72,
  552. opacity: 0.78,
  553. bubbleEnabled: true,
  554. bubbleCount: 56,
  555. bubbleSizeMin: 0.005,
  556. bubbleSizeMax: 0.016,
  557. bubbleRandomness: 0.72,
  558. bubbleRiseSpeed: 0.72,
  559. bubbleColor: '#f5feff',
  560. clipX: 1,
  561. clipZ: 1,
  562. },
  563. defaultObject3D: {
  564. position: { x: 0, y: 0, z: 0 },
  565. scale: { x: 1, y: 1, z: 1 },
  566. rotation: { x: 0, y: 0, z: 0 },
  567. },
  568. config: {
  569. shapeType: {
  570. name: '容器形状',
  571. com: 'Select',
  572. options: ['cylinderTank', 'rectTank', 'vaseTank'].map(item => ({
  573. label: item,
  574. value: item,
  575. })),
  576. },
  577. vasePreset: {
  578. name: '壶形预设',
  579. com: 'Select',
  580. options: ['roundPot', 'slenderBottle', 'bulbFlask'].map(item => ({
  581. label: item,
  582. value: item,
  583. })),
  584. },
  585. length: { name: '矩形长度', com: 'Slider', min: 0.8, max: 8, step: 0.05 },
  586. width: { name: '矩形宽度', com: 'Slider', min: 0.6, max: 6, step: 0.05 },
  587. height: { name: '容器高度', com: 'Slider', min: 1, max: 8, step: 0.05 },
  588. radius: { name: '圆形半径', com: 'Slider', min: 0.35, max: 3.5, step: 0.05 },
  589. fillLevel: { name: '液位高度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  590. waveSpeed: { name: '波动速度', com: 'Slider', min: 0, max: 6, step: 0.05 },
  591. waveAmplitude: { name: '波动振幅', com: 'Slider', min: 0, max: 0.24, step: 0.005 },
  592. waveFrequency: { name: '波动频率', com: 'Slider', min: 0.5, max: 10, step: 0.1 },
  593. waveRandomness: { name: '波动随机性', com: 'Slider', min: 0, max: 1, step: 0.01 },
  594. baseColor: { name: '液体底色', com: 'ColorPicker' },
  595. topColor: { name: '液体顶色', com: 'ColorPicker' },
  596. edgeColor: { name: '液面边缘色', com: 'ColorPicker' },
  597. shellColor: { name: '外壳颜色', com: 'ColorPicker' },
  598. shellOpacity: { name: '外壳透明', com: 'Slider', min: 0, max: 1, step: 0.01 },
  599. density: { name: '密度成色', com: 'Slider', min: 0.1, max: 1, step: 0.01 },
  600. opacity: { name: '液体透明', com: 'Slider', min: 0.08, max: 1, step: 0.01 },
  601. bubbleEnabled: { name: '开启气泡', com: 'Switch' },
  602. bubbleCount: { name: '气泡数量', com: 'Slider', min: 0, max: 160, step: 1 },
  603. bubbleSizeMin: { name: '最小气泡', com: 'Slider', min: 0.001, max: 0.05, step: 0.0005 },
  604. bubbleSizeMax: { name: '最大气泡', com: 'Slider', min: 0.002, max: 0.06, step: 0.0005 },
  605. bubbleRandomness: { name: '气泡随机性', com: 'Slider', min: 0, max: 1, step: 0.01 },
  606. bubbleRiseSpeed: { name: '气泡上浮速', com: 'Slider', min: 0.1, max: 3, step: 0.05 },
  607. bubbleColor: { name: '气泡颜色', com: 'ColorPicker' },
  608. clipX: { name: 'X方向裁切', com: 'Slider', min: 0, max: 1, step: 0.01 },
  609. clipZ: { name: 'Z方向裁切', com: 'Slider', min: 0, max: 1, step: 0.01 },
  610. },
  611. },
  612. {
  613. name: '动态旋转基座',
  614. type: 'dynamicRotatingBase',
  615. comFile: './src/components/dynamicRotatingBase.vue',
  616. previewPath: './preview/dynamicRotatingBase.png',
  617. default: {
  618. type: 'imgA',
  619. color: '#fff',
  620. opacity: 0.95,
  621. rotationZ: 0.01,
  622. videoLoop: false,
  623. },
  624. defaultObject3D: {
  625. position: { x: 0, y: 0.2, z: 0 },
  626. scale: { x: 0.5, y: 0.5, z: 0.5 },
  627. rotation: { x: -Math.PI / 2, y: 0, z: 0 },
  628. },
  629. config: {
  630. type: {
  631. name: '类型',
  632. com: 'Select',
  633. options: ['imgA', 'imgB', 'imgC'].map(item => ({
  634. label: item,
  635. value: item,
  636. })),
  637. },
  638. color: { name: '颜色', com: 'ColorPicker' },
  639. videoLoop: { name: '视频重复', com: 'Switch' },
  640. rotationZ: { name: '自转速度', com: 'Slider', min: -0.1, max: 0.1, step: 0.01 },
  641. opacity: { name: '透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  642. },
  643. },
  644. {
  645. name: '艺术三维饼图',
  646. type: 'PieChartArt',
  647. comFile: './src/components/PieChartArt/index.vue',
  648. previewPath: './preview/PieChartArt.svg',
  649. description: 'WebGL 版 3D 艺术饼图,默认使用 Market Share 数据;应用 JSON 后会直接重建新图形。',
  650. default: {
  651. jsonText: `{
  652. "title": "Market Share",
  653. "unit": "%",
  654. "slices": [
  655. { "label": "Apple", "value": 30 },
  656. { "label": "Samsung", "value": 22 },
  657. { "label": "Xiaomi", "value": 10 },
  658. { "label": "OPPO", "value": 20 },
  659. { "label": "vivo", "value": 18 }
  660. ]
  661. }`,
  662. "height": 1.25,
  663. "radius": 3.1,
  664. "innerRadius": 1.9500000000000004,
  665. "gap": 0.12999999999999998,
  666. "bevel": 0.3,
  667. "sideSegments": 84,
  668. "bevelSegments": 5,
  669. "smoothShading": true,
  670. "creaseAngle": 84,
  671. "labelFontSize": 3,
  672. "gradientDirection": "vertical",
  673. "gradientFromY": 0,
  674. "gradientToY": 1,
  675. "gradientCurve": 0.29000000000000004,
  676. "colorScheme": "candy",
  677. "roughness": 0.34,
  678. "metalness": 0,
  679. "envMapIntensity": 2.7399999999999998,
  680. "jsonError": "",
  681. "jsonTextChangeNumber": 0
  682. },
  683. defaultObject3D: {
  684. position: { x: 0, y: 0.02, z: 0 },
  685. scale: { x: 0.75, y: 0.75, z: 0.75 },
  686. rotation: { x: 0, y: 0, z: 0 },
  687. },
  688. config: {
  689. jsonText: { name: '表数据 JSON', com: 'jsonText' },
  690. height: { name: 'Chart 高度', com: 'Slider', min: 0.25, max: 6, step: 0.05 },
  691. radius: { name: 'Chart 半径', com: 'Slider', min: 0.8, max: 12, step: 0.05 },
  692. innerRadius: { name: 'Chart 内半径', com: 'Slider', min: 0, max: 10, step: 0.05 },
  693. gap: { name: 'Chart 间隙', com: 'Slider', min: 0, max: 0.22, step: 0.005 },
  694. bevel: { name: 'Chart 倒角', com: 'Slider', min: 0, max: 0.6, step: 0.01 },
  695. sideSegments: { name: 'Chart 侧边分段', com: 'Slider', min: 8, max: 256, step: 4 },
  696. bevelSegments: { name: 'Chart 倒角分段', com: 'Slider', min: 1, max: 8, step: 1 },
  697. smoothShading: { name: 'Chart 平滑着色', com: 'Switch' },
  698. creaseAngle: { name: 'Chart 折痕角度', com: 'Slider', min: 0, max: 180, step: 1 },
  699. labelFontSize: { name: 'Chart 标签字号', com: 'Slider', min: 0.8, max: 4, step: 0.05 },
  700. gradientDirection: {
  701. name: 'Gradient 方向',
  702. com: 'Select',
  703. options: [
  704. { label: 'Vertical (Y)', value: 'vertical' },
  705. { label: 'Radial', value: 'radial' },
  706. { label: 'Angular', value: 'angular' },
  707. ],
  708. },
  709. gradientFromY: { name: 'Gradient From Y', com: 'Slider', min: 0, max: 1, step: 0.01 },
  710. gradientToY: { name: 'Gradient To Y', com: 'Slider', min: 0, max: 1, step: 0.01 },
  711. gradientCurve: { name: 'Gradient Curve', com: 'Slider', min: 0.1, max: 3, step: 0.01 },
  712. colorScheme: {
  713. name: 'Gradient 色系',
  714. com: 'Select',
  715. options: [
  716. { label: 'Market Neon', value: 'marketNeon' },
  717. { label: 'Aurora', value: 'aurora' },
  718. { label: 'Sunset', value: 'sunset' },
  719. { label: 'Jewel', value: 'jewel' },
  720. { label: 'Candy', value: 'candy' },
  721. ],
  722. },
  723. roughness: { name: 'Material Roughness', com: 'Slider', min: 0, max: 1, step: 0.01 },
  724. metalness: { name: 'Material Metalness', com: 'Slider', min: 0, max: 1, step: 0.01 },
  725. envMapIntensity: { name: 'Material Env Intensity', com: 'Slider', min: 0, max: 3, step: 0.01 },
  726. },
  727. },
  728. {
  729. name: '圆形动态粒子图表',
  730. type: 'circularParticleChartComponent',
  731. comFile: './src/components/circularParticleChartComponent.vue',
  732. previewPath: './preview/circularParticleChartComponent.png',
  733. description: '自发光圆形粒子图表,带可反向的扫描动效和中心标题/单位文字;不依赖灯光、环境贴图或场景镜面。',
  734. default: {
  735. "particleSize": 8.3,
  736. "particleColor": "#fc33ff",
  737. "scanSpeed": 0.36,
  738. "titleText": "圆形",
  739. "titleSize": 45,
  740. "unitText": "粒子图表",
  741. "unitSize": 19,
  742. "textColor": "#ffffff",
  743. "line2": 0.015,
  744. "lineColor": "#004940"
  745. },
  746. defaultObject3D: {
  747. position: { x: 0, y: 0.04, z: 0 },
  748. scale: { x: 1, y: 1, z: 1 },
  749. rotation: { x: 0, y: 0, z: 0 },
  750. },
  751. config: {
  752. particleSize: { name: '粒子大小', com: 'Slider', min: 1, max: 28, step: 0.1 },
  753. particleColor: { name: '粒子颜色', com: 'ColorPicker' },
  754. scanSpeed: { name: '扫描速度', com: 'Slider', min: -1, max: 1, step: 0.01 },
  755. titleText: { name: '标题文字', com: 'Text' },
  756. titleSize: { name: '标题大小', com: 'Slider', min: 10, max: 96, step: 1 },
  757. unitText: { name: '单位文字', com: 'Text' },
  758. unitSize: { name: '单位大小', com: 'Slider', min: 8, max: 64, step: 1 },
  759. textColor: { name: '文字颜色', com: 'ColorPicker' },
  760. line2: { name: 'line2', com: 'Slider', min: 0.006, max: 0.18, step: 0.001 },
  761. lineColor: { name: '边框线颜色', com: 'ColorPicker' },
  762. },
  763. },
  764. {
  765. name: '简单柱体图表',
  766. type: 'simpleColumn',
  767. comFile: './src/components/simpleColumn/index.vue',
  768. previewPath: './preview/simpleColumn.png',
  769. default: {
  770. spacing: 0, // 间距
  771. distribution: 'proportional', // 布局方式
  772. width: 4 / 3, // 宽度
  773. titleSize: 10, // 标题大小
  774. fontColor: '#ffffff',
  775. materialType: 'MeshPhysicalMaterial',
  776. metalness: 0.5,
  777. roughness: 0.5,
  778. clearcoat: 0.2,
  779. clearcoatRoughness: 0.1,
  780. reflectivity: 0.5,
  781. opacity: 1,
  782. jsonText: `[
  783. { value: 43, title: '%',color:'#5072c4' },
  784. { value: 24, title: '%', color:'#92cb79' },
  785. { value: 12, title: '%', color:'#fcc660' },
  786. { value: 39, title: '%', color:'#f8285b' },
  787. { value: 14, title: '%', color:'#ff0ecb' },
  788. ]`,
  789. },
  790. defaultObject3D: {
  791. position: { x: 0, y: 0.1, z: 0 },
  792. scale: { x: 1, y: 1, z: 1 },
  793. rotation: { x: 0, y: Math.PI / 2, z: 0 },
  794. },
  795. config: {
  796. spacing: { name: '柱体间距', com: 'Slider', min: 0, max: 1, step: 0.01 },
  797. distribution: {
  798. name: '布局方式',
  799. com: 'Select',
  800. options: ['uniform', 'proportional'].map(item => ({
  801. label: item,
  802. value: item,
  803. })),
  804. },
  805. width: { name: '总宽度', com: 'Slider', min: 0.01, max: 3, step: 0.01 },
  806. titleSize: { name: '标题大小', com: 'Slider', min: 1, max: 32, step: 0.2 },
  807. fontColor: { name: '字体颜色', com: 'ColorPicker' },
  808. materialType: {
  809. name: '材质类型',
  810. com: 'Select',
  811. options: ['MeshBasicMaterial', 'MeshLambertMaterial', 'MeshPhongMaterial', 'MeshStandardMaterial', 'MeshPhysicalMaterial', 'MeshToonMaterial', 'MeshGlassMaterial'].map(item => ({
  812. label: item,
  813. value: item,
  814. })),
  815. },
  816. metalness: { name: '金属度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  817. roughness: { name: '粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  818. clearcoat: { name: '清晰度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  819. clearcoatRoughness: { name: '清晰度粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  820. reflectivity: { name: '反射率', com: 'Slider', min: 0, max: 1, step: 0.01 },
  821. opacity: { name: '透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  822. jsonText: { name: '数据配置', com: 'jsonText' },
  823. },
  824. },
  825. {
  826. name: '高级树组件',
  827. type: 'ezTreeCom',
  828. comFile: './src/components/ezTreeCom.vue',
  829. previewPath: './preview/ezTreeCom.png',
  830. description: `<a style="color: #5384ff;" href="https://github.com/dgreenheck/ez-tree" target="_blank">开源 ez-tree</a> 组件,实现高级树模型展示,<a style="color: #03765b;" href="https://www.eztree.dev" target="_blank">配置生成器</a>,SavePreset 导出配置。`,
  831. default: {
  832. isUpdate: true,
  833. jsonText: `{
  834. "seed": 36330,
  835. "type": "deciduous",
  836. "bark": {
  837. "type": "oak",
  838. "tint": 13552830,
  839. "flatShading": false,
  840. "textured": true,
  841. "textureScale": {
  842. "x": 0.5,
  843. "y": 5
  844. }
  845. },
  846. "branch": {
  847. "levels": 3,
  848. "angle": {
  849. "1": 48,
  850. "2": 75,
  851. "3": 60
  852. },
  853. "children": {
  854. "0": 7,
  855. "1": 4,
  856. "2": 3
  857. },
  858. "force": {
  859. "direction": {
  860. "x": 0,
  861. "y": 1,
  862. "z": 0
  863. },
  864. "strength": -0.06
  865. },
  866. "gnarliness": {
  867. "0": 0.03,
  868. "1": 0.25,
  869. "2": 0.2,
  870. "3": 0.09
  871. },
  872. "length": {
  873. "0": 43.47,
  874. "1": 27.14,
  875. "2": 9.51,
  876. "3": 4.6
  877. },
  878. "radius": {
  879. "0": 2,
  880. "1": 0.63,
  881. "2": 0.76,
  882. "3": 0.7
  883. },
  884. "sections": {
  885. "0": 12,
  886. "1": 8,
  887. "2": 6,
  888. "3": 4
  889. },
  890. "segments": {
  891. "0": 12,
  892. "1": 6,
  893. "2": 4,
  894. "3": 3
  895. },
  896. "start": {
  897. "1": 0.23,
  898. "2": 0.33,
  899. "3": 0
  900. },
  901. "taper": {
  902. "0": 0.7,
  903. "1": 0.7,
  904. "2": 0.7,
  905. "3": 0.7
  906. },
  907. "twist": {
  908. "0": 0.09,
  909. "1": -0.07,
  910. "2": 0,
  911. "3": 0
  912. }
  913. },
  914. "leaves": {
  915. "type": "ash",
  916. "billboard": "double",
  917. "angle": 55,
  918. "count": 16,
  919. "start": 0,
  920. "size": 2.67,
  921. "sizeVariance": 0.72,
  922. "tint": 16777215,
  923. "alphaTest": 0.5
  924. },
  925. "trellis": {
  926. "enabled": false,
  927. "position": {
  928. "x": 0,
  929. "y": 0,
  930. "z": -2
  931. },
  932. "width": 10,
  933. "height": 20,
  934. "spacing": 2,
  935. "force": {
  936. "strength": 0.02,
  937. "maxDistance": 3,
  938. "falloff": 1
  939. },
  940. "cylinderRadius": 0.05,
  941. "visible": true,
  942. "color": 9127187
  943. }
  944. }`,
  945. },
  946. defaultObject3D: {},
  947. config: {
  948. randomizeAction: {
  949. name: '随机生成树',
  950. com: 'ActionButton',
  951. action: 'randomizeTreeConfig',
  952. },
  953. isUpdate: { name: '摆动', com: 'Switch' },
  954. jsonText: { name: 'ez-tree配置', com: 'jsonText' },
  955. },
  956. },
  957. {
  958. name: '超级能量盾组件',
  959. type: 'superEnergyShieldComponent',
  960. comFile: './src/components/superEnergyShieldComponent.vue',
  961. previewPath: './preview/superEnergyShieldComponent.gif',
  962. default: {
  963. color: '#26aeff',
  964. edgeWidth: 0.06,
  965. enableSelfHit: false,
  966. fadeStart: 0,
  967. flashIntensity: 0.11,
  968. flashSpeed: 0.6,
  969. flowIntensity: 4,
  970. flowScale: 2.4,
  971. flowSpeed: 1.13,
  972. fresnelPower: 1.8,
  973. fresnelStrength: 1.75,
  974. hexOpacity: 0.13,
  975. hexScale: 3,
  976. hitDuration: 1.8,
  977. hitImpactRadius: 0.3,
  978. hitIntensity: 4.1,
  979. hitMaxRadius: 0.85,
  980. hitRingSpeed: 1.75,
  981. hitRingWidth: 0.12,
  982. noiseEdgeColor: '#26aeff',
  983. noiseEdgeIntensity: 10,
  984. noiseEdgeSmoothness: 0.5,
  985. noiseEdgeWidth: 0.02,
  986. noiseScale: 1.3,
  987. opacity: 0.76,
  988. showHex: true,
  989. },
  990. defaultObject3D: {
  991. position: { x: 0, y: 2, z: 0 },
  992. scale: { x: 1, y: 1, z: 1 },
  993. rotation: { x: 0, y: 0, z: 0 },
  994. },
  995. config: {
  996. color: { name: '护盾颜色', com: 'ColorPicker' },
  997. opacity: { name: '整体透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  998. showHex: { name: '显示六边形', com: 'Switch' },
  999. hexScale: { name: '六边形密度', com: 'Slider', min: 1, max: 20, step: 0.5 },
  1000. hexOpacity: { name: '六边形强度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1001. edgeWidth: { name: '六边形边缘宽度', com: 'Slider', min: 0.01, max: 0.2, step: 0.005 },
  1002. fresnelPower: { name: '菲涅耳幂值', com: 'Slider', min: 0.5, max: 5, step: 0.1 },
  1003. fresnelStrength: { name: '菲涅耳强度', com: 'Slider', min: 0, max: 3, step: 0.05 },
  1004. fadeStart: { name: '底部渐隐起点', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1005. flashSpeed: { name: '光闪速度', com: 'Slider', min: 0.5, max: 8, step: 0.1 },
  1006. flashIntensity: { name: '光闪强度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1007. noiseScale: { name: '噪声缩放', com: 'Slider', min: 0.5, max: 10, step: 0.1 },
  1008. noiseEdgeColor: { name: '噪声边缘颜色', com: 'ColorPicker' },
  1009. noiseEdgeWidth: { name: '噪声边缘宽度', com: 'Slider', min: 0.01, max: 0.5, step: 0.01 },
  1010. noiseEdgeIntensity: { name: '噪声边缘强度', com: 'Slider', min: 0, max: 10, step: 0.1 },
  1011. noiseEdgeSmoothness: { name: '噪声边缘柔滑', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1012. flowScale: { name: '流动噪声缩放', com: 'Slider', min: 0.1, max: 8, step: 0.1 },
  1013. flowSpeed: { name: '流动速度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1014. flowIntensity: { name: '流动强度', com: 'Slider', min: 0, max: 4, step: 0.05 },
  1015. hitRingSpeed: { name: '冲击环扩散速度', com: 'Slider', min: 0.1, max: 6, step: 0.05 },
  1016. hitRingWidth: { name: '冲击环宽度', com: 'Slider', min: 0.01, max: 0.5, step: 0.01 },
  1017. hitMaxRadius: { name: '冲击最大扩散半径', com: 'Slider', min: 0.2, max: 3.14, step: 0.05 },
  1018. hitDuration: { name: '冲击持续时间', com: 'Slider', min: 0.5, max: 6, step: 0.1 },
  1019. hitIntensity: { name: '冲击强度', com: 'Slider', min: 0, max: 8, step: 0.1 },
  1020. hitImpactRadius: { name: '命中区域半径', com: 'Slider', min: 0.1, max: 1.5, step: 0.05 },
  1021. enableSelfHit: { name: '启用自点击冲击', com: 'Switch' },
  1022. },
  1023. },
  1024. {
  1025. name: '光速护盾展开组件',
  1026. type: 'lightSpeedShieldDeployComponent',
  1027. comFile: './src/components/lightSpeedShieldDeployComponent.vue',
  1028. previewPath: './preview/lightSpeedShieldDeployComponent.jpg',
  1029. default: {
  1030. autoAnimate: true,
  1031. collapseDuration: 0.35,
  1032. coreColor: '#69f6ff',
  1033. coreIntensity: 2.2,
  1034. coreRadiusRatio: 0.58,
  1035. deployDuration: 0.86,
  1036. deployProgress: 1,
  1037. deployToken: 0,
  1038. fresnelStrength: 1.9,
  1039. hexColor: '#2e91ff',
  1040. hexOpacity: 0.86,
  1041. hexScale: 5.7,
  1042. hexWidth: 0.075,
  1043. holdDuration: 1.15,
  1044. hotColor: '#e7ffff',
  1045. noiseScale: 2.1,
  1046. noiseSpeed: 0.62,
  1047. opacity: 0.78,
  1048. pulseIntensity: 0.8,
  1049. pulseSpeed: 1.15,
  1050. radius: 1.8,
  1051. rimColor: '#baf7ff',
  1052. shellColor: '#48c8ff',
  1053. startScale: 0.32,
  1054. sweepIntensity: 1.55,
  1055. sweepWidth: 0.18,
  1056. },
  1057. defaultObject3D: {
  1058. position: { x: 0, y: 1.8, z: 0 },
  1059. scale: { x: 1, y: 1, z: 1 },
  1060. rotation: { x: 0, y: 0, z: 0 },
  1061. },
  1062. config: {
  1063. autoAnimate: { name: '自动循环展开', com: 'Switch' },
  1064. triggerDeploy: { name: '重播展开', com: 'ActionButton', action: 'triggerDeployAction' },
  1065. deployProgress: { name: '手动展开进度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1066. deployDuration: { name: '展开时长', com: 'Slider', min: 0.12, max: 5, step: 0.01 },
  1067. holdDuration: { name: '保持时长', com: 'Slider', min: 0, max: 6, step: 0.05 },
  1068. collapseDuration: { name: '收回时长', com: 'Slider', min: 0.08, max: 3, step: 0.01 },
  1069. radius: { name: '护盾半径', com: 'Slider', min: 0.2, max: 8, step: 0.05 },
  1070. coreRadiusRatio: { name: '内核尺寸比例', com: 'Slider', min: 0.1, max: 0.95, step: 0.01 },
  1071. startScale: { name: '初始收束比例', com: 'Slider', min: 0.02, max: 1, step: 0.01 },
  1072. opacity: { name: '整体透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1073. shellColor: { name: '外壳颜色', com: 'ColorPicker' },
  1074. hexColor: { name: '六边形颜色', com: 'ColorPicker' },
  1075. rimColor: { name: '边缘辉光颜色', com: 'ColorPicker' },
  1076. coreColor: { name: '内核颜色', com: 'ColorPicker' },
  1077. hotColor: { name: '内核高光颜色', com: 'ColorPicker' },
  1078. hexScale: { name: '六边形密度', com: 'Slider', min: 1, max: 18, step: 0.1 },
  1079. hexWidth: { name: '六边形边宽', com: 'Slider', min: 0.01, max: 0.2, step: 0.005 },
  1080. hexOpacity: { name: '六边形强度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1081. fresnelStrength: { name: '菲涅尔强度', com: 'Slider', min: 0, max: 6, step: 0.05 },
  1082. sweepWidth: { name: '展开扫光宽度', com: 'Slider', min: 0.02, max: 0.8, step: 0.01 },
  1083. sweepIntensity: { name: '展开扫光强度', com: 'Slider', min: 0, max: 5, step: 0.05 },
  1084. noiseScale: { name: '流动噪声尺度', com: 'Slider', min: 0.1, max: 10, step: 0.1 },
  1085. noiseSpeed: { name: '流动噪声速度', com: 'Slider', min: 0, max: 4, step: 0.01 },
  1086. pulseSpeed: { name: '脉冲速度', com: 'Slider', min: 0, max: 5, step: 0.01 },
  1087. pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1088. coreIntensity: { name: '内核发光强度', com: 'Slider', min: 0, max: 8, step: 0.05 },
  1089. },
  1090. },
  1091. {
  1092. name: '箱式隔间容器',
  1093. type: 'binsContainerComponent',
  1094. comFile: './src/components/binsContainer/index.vue',
  1095. previewPath: './preview/binsContainerComponent.png',
  1096. default: {
  1097. width: 320,
  1098. height: 130,
  1099. depth: 560,
  1100. binColor: '#60a5fa',
  1101. radius: 25,
  1102. thickness: 5,
  1103. divideWidth: 0.55,
  1104. divideDepth: 0.45,
  1105. outerGap: 2.5,
  1106. innerGap: 2.5,
  1107. generationType: 'Recursive',
  1108. iterations: 1,
  1109. rows: 2,
  1110. cols: 2,
  1111. showOuterBox: true,
  1112. showInnerBins: true,
  1113. showMeasurements: true,
  1114. showIndexNumbers: true,
  1115. },
  1116. defaultObject3D: {
  1117. position: { x: 0, y: 0.12, z: 0 },
  1118. scale: { x: 1, y: 1, z: 1 },
  1119. rotation: { x: 0, y: 0, z: 0 },
  1120. },
  1121. config: {
  1122. width: { name: 'Box Width (mm)', com: 'Slider', min: 60, max: 1200, step: 1 },
  1123. height: { name: 'Box Height (mm)', com: 'Slider', min: 35, max: 450, step: 1 },
  1124. depth: { name: 'Box Depth (mm)', com: 'Slider', min: 100, max: 850, step: 1 },
  1125. binColor: { name: 'Bin Material Color', com: 'ColorPicker' },
  1126. radius: { name: 'Bin Radius (mm)', com: 'Slider', min: 0, max: 150, step: 1 },
  1127. thickness: { name: 'Bin Thickness (mm)', com: 'Slider', min: 2, max: 20, step: 0.1 },
  1128. divideWidth: { name: 'Width Division', com: 'Slider', min: 0.1, max: 0.9, step: 0.01 },
  1129. divideDepth: { name: 'Depth Division', com: 'Slider', min: 0.1, max: 0.9, step: 0.01 },
  1130. outerGap: { name: 'Outer Gap (mm)', com: 'Slider', min: 0, max: 20, step: 0.1 },
  1131. innerGap: { name: 'Inner Gap (mm)', com: 'Slider', min: 0, max: 20, step: 0.1 },
  1132. generationType: {
  1133. name: 'Generation Type',
  1134. com: 'Select',
  1135. options: ['Recursive', 'Grid'].map(item => ({
  1136. label: item,
  1137. value: item,
  1138. })),
  1139. },
  1140. iterations: { name: 'Iterations', com: 'Slider', min: 0, max: 3, step: 1 },
  1141. rows: { name: 'Rows', com: 'Slider', min: 1, max: 10, step: 1 },
  1142. cols: { name: 'Columns', com: 'Slider', min: 1, max: 10, step: 1 },
  1143. showOuterBox: { name: 'Show Outer Box', com: 'Switch' },
  1144. showInnerBins: { name: 'Show Inner Bins', com: 'Switch' },
  1145. showMeasurements: { name: 'Show Measurements', com: 'Switch' },
  1146. showIndexNumbers: { name: 'Show Index Numbers', com: 'Switch' },
  1147. },
  1148. },
  1149. {
  1150. name: '聚能光球汇聚组件',
  1151. type: 'chargeOrbGatherComponent',
  1152. comFile: './src/components/chargeOrbGatherComponent.vue',
  1153. previewPath: './preview/chargeOrbGatherComponent.gif',
  1154. default: {
  1155. autoAnimate: true,
  1156. chargeProgress: 0.72,
  1157. cycleDuration: 2.4,
  1158. orbMaxSize: 0.4,
  1159. glowEnabled: false,
  1160. glowSizeMult: 1.7,
  1161. glowColorInner: '#cb5151',
  1162. glowColorOuter: '#000000',
  1163. glowEmission: 1.6,
  1164. glowFalloffPower: 6,
  1165. glowEdgeSoftness: 4,
  1166. orbCoreColor: '#eaf8fc',
  1167. orbRimColor: '#0c61f5',
  1168. fresnelEmission: 1.8,
  1169. fresnelPower: 0.1,
  1170. bodyFalloff: 5.6,
  1171. coreFalloff: 4.4,
  1172. coreBoost: 2.3,
  1173. noiseColor: '#128bff',
  1174. noiseScale: 0.4,
  1175. noiseSpeed: 1.35,
  1176. flowIntensity: 4.7,
  1177. warpStrength: 2.3,
  1178. particleCount: 16,
  1179. particleWidth: 0.1,
  1180. particleLength: 0.13,
  1181. particleSpeed: 3.9,
  1182. particleSpawnRadius: 2.1,
  1183. particleColor: '#59afff',
  1184. particleLifetime: 0.6,
  1185. particleTurbulence: 1.1,
  1186. particleEmission: 3,
  1187. },
  1188. defaultObject3D: {
  1189. position: { x: 0, y: 1.15, z: 0 },
  1190. scale: { x: 1, y: 1, z: 1 },
  1191. rotation: { x: 0, y: 0, z: 0 },
  1192. },
  1193. config: {
  1194. autoAnimate: { name: '自动蓄力', com: 'Switch' },
  1195. chargeProgress: { name: '外部蓄力进度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1196. cycleDuration: { name: '自动循环时长', com: 'Slider', min: 0.6, max: 8, step: 0.05 },
  1197. orbMaxSize: { name: '光球最大尺寸', com: 'Slider', min: 0.01, max: 3, step: 0.01 },
  1198. glowEnabled: { name: '开启外层辉光', com: 'Switch' },
  1199. glowSizeMult: { name: '辉光尺寸倍率', com: 'Slider', min: 1, max: 10, step: 0.1 },
  1200. glowColorInner: { name: '辉光内层颜色', com: 'ColorPicker' },
  1201. glowColorOuter: { name: '辉光外层颜色', com: 'ColorPicker' },
  1202. glowEmission: { name: '辉光发光强度', com: 'Slider', min: 0, max: 8, step: 0.05 },
  1203. glowFalloffPower: { name: '辉光衰减曲线', com: 'Slider', min: 0.1, max: 8, step: 0.1 },
  1204. glowEdgeSoftness: { name: '辉光边缘柔化', com: 'Slider', min: 0.1, max: 8, step: 0.1 },
  1205. orbCoreColor: { name: '球心颜色', com: 'ColorPicker' },
  1206. orbRimColor: { name: '边缘颜色', com: 'ColorPicker' },
  1207. fresnelEmission: { name: '菲涅尔发光', com: 'Slider', min: 0.1, max: 30, step: 0.1 },
  1208. fresnelPower: { name: '菲涅尔曲线', com: 'Slider', min: 0.1, max: 4, step: 0.05 },
  1209. bodyFalloff: { name: '主体衰减', com: 'Slider', min: 0.1, max: 8, step: 0.1 },
  1210. coreFalloff: { name: '球心收束', com: 'Slider', min: 0.5, max: 10, step: 0.1 },
  1211. coreBoost: { name: '球心增强', com: 'Slider', min: 0, max: 10, step: 0.1 },
  1212. noiseColor: { name: '流动噪声颜色', com: 'ColorPicker' },
  1213. noiseScale: { name: '噪声尺度', com: 'Slider', min: 0.1, max: 20, step: 0.1 },
  1214. noiseSpeed: { name: '噪声速度', com: 'Slider', min: 0, max: 4, step: 0.05 },
  1215. flowIntensity: { name: '流动强度', com: 'Slider', min: 0, max: 15, step: 0.1 },
  1216. warpStrength: { name: '扭曲强度', com: 'Slider', min: 0, max: 8, step: 0.1 },
  1217. particleCount: { name: '粒子数量', com: 'Slider', min: 1, max: 40, step: 1 },
  1218. particleWidth: { name: '粒子宽度', com: 'Slider', min: 0.005, max: 0.3, step: 0.005 },
  1219. particleLength: { name: '粒子长度', com: 'Slider', min: 0.005, max: 0.5, step: 0.005 },
  1220. particleSpeed: { name: '粒子汇聚速度', com: 'Slider', min: 0.1, max: 10, step: 0.1 },
  1221. particleSpawnRadius: { name: '粒子生成半径', com: 'Slider', min: 0.1, max: 5, step: 0.05 },
  1222. particleColor: { name: '粒子颜色', com: 'ColorPicker' },
  1223. particleLifetime: { name: '粒子寿命', com: 'Slider', min: 0.1, max: 3, step: 0.05 },
  1224. particleTurbulence: { name: '粒子扰动', com: 'Slider', min: 0, max: 5, step: 0.05 },
  1225. particleEmission: { name: '粒子发光', com: 'Slider', min: 0.1, max: 20, step: 0.1 },
  1226. },
  1227. },
  1228. {
  1229. name: '充能爆裂环组件',
  1230. type: 'chargedBlastRingsComponent',
  1231. comFile: './src/components/chargedBlastRingsComponent.vue',
  1232. previewPath: './preview/chargedBlastRingsComponent.png',
  1233. default: {
  1234. autoPlay: true,
  1235. burstToken: 0,
  1236. loopInterval: 1.6,
  1237. fireDirectionX: 0,
  1238. fireDirectionY: 0,
  1239. fireDirectionZ: -1,
  1240. fireSpeed: 11,
  1241. maxDistance: 60,
  1242. carrierRadius: 0.5,
  1243. carrierTailLength: 1.2,
  1244. ringMaxRadius: 0.6,
  1245. ringTubeRatio: 0.15,
  1246. ringInterval: 0.27,
  1247. ringLifetime: 0.75,
  1248. ringSpeed: 3.5,
  1249. ringColorA: '#a9ffff',
  1250. ringColorB: '#03ffff',
  1251. ringEmission: 4,
  1252. ringGradientAngle: -30,
  1253. ringPeakAt: 2.5,
  1254. ringMaxCount: 2,
  1255. },
  1256. defaultObject3D: {
  1257. position: { x: 0, y: 1.15, z: 0 },
  1258. scale: { x: 1, y: 1, z: 1 },
  1259. rotation: { x: 0, y: 0, z: 0 },
  1260. },
  1261. config: {
  1262. autoPlay: { name: '自动循环发射', com: 'Switch' },
  1263. loopInterval: { name: '循环间隔', com: 'Slider', min: 0.2, max: 10, step: 0.05 },
  1264. fireDirectionX: { name: '发射方向 X', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1265. fireDirectionY: { name: '发射方向 Y', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1266. fireDirectionZ: { name: '发射方向 Z', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1267. fireSpeed: { name: '发射速度', com: 'Slider', min: 0.1, max: 60, step: 0.1 },
  1268. maxDistance: { name: '最远距离', com: 'Slider', min: 0.5, max: 120, step: 0.5 },
  1269. carrierRadius: { name: '环起始半径', com: 'Slider', min: 0.01, max: 2, step: 0.01 },
  1270. carrierTailLength: { name: '环回扫尾长', com: 'Slider', min: 0.05, max: 4, step: 0.05 },
  1271. ringMaxRadius: { name: '圆环最大尺寸', com: 'Slider', min: 0.01, max: 2, step: 0.01 },
  1272. ringTubeRatio: { name: '圆环厚度比', com: 'Slider', min: 0.01, max: 0.3, step: 0.01 },
  1273. ringInterval: { name: '生成间隔', com: 'Slider', min: 0.01, max: 2, step: 0.01 },
  1274. ringLifetime: { name: '圆环寿命', com: 'Slider', min: 0.05, max: 3, step: 0.05 },
  1275. ringSpeed: { name: '回扫速度', com: 'Slider', min: 0.1, max: 15, step: 0.1 },
  1276. ringColorA: { name: '圆环颜色 A', com: 'ColorPicker' },
  1277. ringColorB: { name: '圆环颜色 B', com: 'ColorPicker' },
  1278. ringEmission: { name: '圆环发光', com: 'Slider', min: 0, max: 20, step: 0.1 },
  1279. ringGradientAngle: { name: '渐变角度', com: 'Slider', min: -180, max: 180, step: 1 },
  1280. ringPeakAt: { name: '扩散峰值偏移', com: 'Slider', min: 1, max: 8, step: 0.1 },
  1281. ringMaxCount: { name: '同屏最大数量', com: 'Slider', min: 1, max: 16, step: 1 },
  1282. },
  1283. },
  1284. {
  1285. name: '充能爆裂炮弹组件',
  1286. type: 'chargedBlastProjectileComponent',
  1287. comFile: './src/components/chargedBlastProjectileComponent.vue',
  1288. previewPath: './preview/chargedBlastProjectileComponent.png',
  1289. default: {
  1290. autoPlay: true,
  1291. shotToken: 0,
  1292. loopInterval: 1.6,
  1293. fireDirectionX: 0,
  1294. fireDirectionY: 0,
  1295. fireDirectionZ: -1,
  1296. fireSpeed: 11,
  1297. maxDistance: 60,
  1298. projRadius: 0.5,
  1299. projTailLength: 1.2,
  1300. projColorA: '#0051dc',
  1301. projColorC: '#a9ffff',
  1302. projColorB: '#e0ffff',
  1303. projGradientSpeed: 1.9,
  1304. projBandWidth: 0.25,
  1305. projFresnelColor: '#abe5ff',
  1306. projFresnelPower: 2,
  1307. projFresnelEmit: 1.3,
  1308. projPulseScale: 1.2,
  1309. projPulseSpeed: 16,
  1310. trailColor: '#32bef0',
  1311. trailOpacity: 0.54,
  1312. trailWidth: 1.17,
  1313. trailLength: 3.2,
  1314. trailSegments: 20,
  1315. trailEdgeSoftness: 4.7,
  1316. },
  1317. defaultObject3D: {
  1318. position: { x: 0, y: 1.15, z: 0 },
  1319. scale: { x: 1, y: 1, z: 1 },
  1320. rotation: { x: 0, y: 0, z: 0 },
  1321. },
  1322. config: {
  1323. autoPlay: { name: '自动循环发射', com: 'Switch' },
  1324. loopInterval: { name: '循环间隔', com: 'Slider', min: 0.2, max: 10, step: 0.05 },
  1325. fireDirectionX: { name: '发射方向 X', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1326. fireDirectionY: { name: '发射方向 Y', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1327. fireDirectionZ: { name: '发射方向 Z', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1328. fireSpeed: { name: '发射速度', com: 'Slider', min: 0.1, max: 60, step: 0.1 },
  1329. maxDistance: { name: '最远距离', com: 'Slider', min: 0.5, max: 120, step: 0.5 },
  1330. triggerShot: { name: '发射一次', com: 'ActionButton', action: 'triggerShotAction' },
  1331. projRadius: { name: '炮弹半径', com: 'Slider', min: 0.01, max: 1, step: 0.01 },
  1332. projTailLength: { name: '炮弹尾长', com: 'Slider', min: 0.05, max: 3, step: 0.05 },
  1333. projColorA: { name: '炮弹颜色 A', com: 'ColorPicker' },
  1334. projColorC: { name: '炮弹颜色 C', com: 'ColorPicker' },
  1335. projColorB: { name: '炮弹颜色 B', com: 'ColorPicker' },
  1336. projGradientSpeed: { name: '渐变流速', com: 'Slider', min: 0, max: 10, step: 0.1 },
  1337. projBandWidth: { name: '色带宽度', com: 'Slider', min: 0.05, max: 3, step: 0.05 },
  1338. projFresnelColor: { name: '边缘颜色', com: 'ColorPicker' },
  1339. projFresnelPower: { name: '边缘曲线', com: 'Slider', min: 0.1, max: 10, step: 0.1 },
  1340. projFresnelEmit: { name: '边缘发光', com: 'Slider', min: 0, max: 5, step: 0.05 },
  1341. projPulseScale: { name: '脉冲缩放', com: 'Slider', min: 1, max: 2, step: 0.01 },
  1342. projPulseSpeed: { name: '脉冲速度', com: 'Slider', min: 0.5, max: 20, step: 0.1 },
  1343. trailColor: { name: '尾迹颜色', com: 'ColorPicker' },
  1344. trailOpacity: { name: '尾迹透明', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1345. trailWidth: { name: '尾迹宽度', com: 'Slider', min: 0.01, max: 2, step: 0.01 },
  1346. trailLength: { name: '尾迹长度', com: 'Slider', min: 0.1, max: 10, step: 0.1 },
  1347. trailSegments: { name: '尾迹分段', com: 'Slider', min: 3, max: 64, step: 1 },
  1348. trailEdgeSoftness: { name: '尾迹边缘柔化', com: 'Slider', min: 0.1, max: 8, step: 0.1 },
  1349. },
  1350. },
  1351. {
  1352. name: '充能爆裂释放组件',
  1353. type: 'chargedBlastReleaseComponent',
  1354. comFile: './src/components/chargedBlastReleaseComponent.vue',
  1355. previewPath: './preview/chargedBlastReleaseComponent.gif',
  1356. default: {
  1357. autoPlay: true,
  1358. shotToken: 0,
  1359. loopInterval: 1.6,
  1360. fireDirectionX: 0,
  1361. fireDirectionY: 0,
  1362. fireDirectionZ: -1,
  1363. fireSpeed: 11,
  1364. maxDistance: 60,
  1365. blastRadius: 0.5,
  1366. blastLength: 1.2,
  1367. blastColor: '#0051dc',
  1368. coreColor: '#a9ffff',
  1369. accentColor: '#e0ffff',
  1370. energy: 1,
  1371. pulseScale: 1.2,
  1372. ringInterval: 0.27,
  1373. },
  1374. defaultObject3D: {
  1375. position: { x: 0, y: 1.15, z: 0 },
  1376. scale: { x: 1, y: 1, z: 1 },
  1377. rotation: { x: 0, y: 0, z: 0 },
  1378. },
  1379. config: {
  1380. autoPlay: { name: '自动循环发射', com: 'Switch' },
  1381. loopInterval: { name: '循环间隔', com: 'Slider', min: 0.2, max: 10, step: 0.05 },
  1382. fireDirectionX: { name: '发射方向 X', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1383. fireDirectionY: { name: '发射方向 Y', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1384. fireDirectionZ: { name: '发射方向 Z', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1385. fireSpeed: { name: '发射速度', com: 'Slider', min: 0.1, max: 60, step: 0.1 },
  1386. maxDistance: { name: '最远距离', com: 'Slider', min: 0.5, max: 120, step: 0.5 },
  1387. triggerShot: { name: '发射一次', com: 'ActionButton', action: 'triggerShotAction' },
  1388. blastRadius: { name: '炮弹半径', com: 'Slider', min: 0.01, max: 1, step: 0.01 },
  1389. blastLength: { name: '炮弹尾长', com: 'Slider', min: 0.05, max: 3, step: 0.05 },
  1390. blastColor: { name: '主体颜色', com: 'ColorPicker' },
  1391. coreColor: { name: '能量颜色', com: 'ColorPicker' },
  1392. accentColor: { name: '高光颜色', com: 'ColorPicker' },
  1393. energy: { name: '整体能量', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 },
  1394. pulseScale: { name: '脉冲缩放', com: 'Slider', min: 1, max: 2, step: 0.01 },
  1395. ringInterval: { name: '环生成间隔', com: 'Slider', min: 0.01, max: 2, step: 0.01 },
  1396. },
  1397. },
  1398. {
  1399. name: '眩目光环',
  1400. type: 'vertigoHaloComponent',
  1401. comFile: './src/components/vertigoHaloComponent.vue',
  1402. previewPath: './preview/vertigoHaloComponent.svg',
  1403. default: {
  1404. voidColor: '#220033',
  1405. baseColor: '#cc1133',
  1406. accentColor: '#ff2244',
  1407. highlightColor: '#c8956c',
  1408. opacity: 0.92,
  1409. gradientSpeed: 0.2,
  1410. tunnelSpeed: 0.15,
  1411. rotationSpeed: 0.35,
  1412. ringFrequency: 10,
  1413. segmentCount: 16,
  1414. pulseIntensity: 1,
  1415. flashIntensity: 1,
  1416. edgeGlow: 1,
  1417. },
  1418. defaultObject3D: {
  1419. position: { x: 0, y: 0.08, z: 0 },
  1420. scale: { x: 1, y: 1, z: 1 },
  1421. rotation: { x: 0, y: 0, z: 0 },
  1422. },
  1423. config: {
  1424. gradientSpeed: { name: '渐变速度', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1425. tunnelSpeed: { name: '隧道推进', com: 'Slider', min: 0, max: 1.5, step: 0.01 },
  1426. rotationSpeed: { name: '旋转漂移', com: 'Slider', min: 0, max: 1.5, step: 0.01 },
  1427. ringFrequency: { name: '环带密度', com: 'Slider', min: 4, max: 24, step: 1 },
  1428. segmentCount: { name: '角向分段', com: 'Slider', min: 6, max: 32, step: 1 },
  1429. pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1430. flashIntensity: { name: '闪爆强度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1431. edgeGlow: { name: '边缘辉光', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1432. opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1433. voidColor: { name: '暗部颜色', com: 'ColorPicker' },
  1434. baseColor: { name: '主体颜色', com: 'ColorPicker' },
  1435. accentColor: { name: '霓虹颜色', com: 'ColorPicker' },
  1436. highlightColor: { name: '高光颜色', com: 'ColorPicker' },
  1437. },
  1438. },
  1439. {
  1440. name: '公交线网',
  1441. type: 'busLineNetworkComponent',
  1442. comFile: './src/components/busLineNetworkComponent.vue',
  1443. previewPath: './preview/busLineNetworkComponent.svg',
  1444. description: '基于 Mars3D 北京公交 GeoJSON 数据渲染的三维线网组件,支持原始定位、采样、分层高度与脉冲效果。',
  1445. default: {
  1446. baseHeight: 0.06,
  1447. colorTheme: 'green',
  1448. dataUrl: 'https://dcser.icegl.cn/data/bj-bus.json',
  1449. dataUrlDraft: 'https://dcser.icegl.cn/data/bj-bus.json',
  1450. heightGroups: 9,
  1451. heightStep: 0.055,
  1452. lineWidth: 0.01,
  1453. lineWidthScale: 1,
  1454. mapScale: 0.00003,
  1455. maxRoutes: 1222,
  1456. opacity: 0.82,
  1457. pointSampleStep: 2,
  1458. pulseIntensity: 0.28,
  1459. pulseSpeed: 0.55,
  1460. },
  1461. defaultObject3D: {
  1462. position: { x: 0, y: 0.02, z: 0 },
  1463. scale: { x: 1, y: 1, z: 1 },
  1464. rotation: { x: 0, y: 0, z: 0 },
  1465. },
  1466. config: {
  1467. dataUrlDraft: { name: '数据源URL', com: 'Text' },
  1468. applyDataUrl: { name: '确认生成', com: 'ActionButton', action: 'applyDataUrlAction' },
  1469. applyNativeGeoPosition: { name: '原始定位', com: 'ActionButton', action: 'applyNativeGeoPosition' },
  1470. mapScale: { name: '地图缩放', com: 'Slider', min: 0.000005, max: 0.00008, step: 0.000001 },
  1471. maxRoutes: { name: '线路数量', com: 'Slider', min: 10, max: 1222, step: 1 },
  1472. pointSampleStep: { name: '点采样步长', com: 'Slider', min: 1, max: 8, step: 1 },
  1473. heightGroups: { name: '分层数量', com: 'Slider', min: 1, max: 12, step: 1 },
  1474. baseHeight: { name: '基础高度', com: 'Slider', min: 0, max: 0.5, step: 0.005 },
  1475. heightStep: { name: '分层高度', com: 'Slider', min: 0, max: 0.2, step: 0.005 },
  1476. lineWidth: { name: '线宽', com: 'Slider', min: 0.001, max: 0.05, step: 0.001 },
  1477. lineWidthScale: { name: '线宽倍数', com: 'Slider', min: 1, max: 30, step: 1 },
  1478. opacity: { name: '透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1479. colorTheme: {
  1480. name: '配色',
  1481. com: 'Select',
  1482. options: [
  1483. { label: '绿阶', value: 'green' },
  1484. { label: '青蓝', value: 'cyan' },
  1485. { label: '暖光', value: 'warm' },
  1486. ],
  1487. },
  1488. pulseSpeed: { name: '脉冲速度', com: 'Slider', min: 0, max: 6, step: 0.05 },
  1489. pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1490. },
  1491. },
  1492. {
  1493. name: '光晕线',
  1494. type: 'polylineGlowComponent',
  1495. comFile: './src/components/polylineGlowComponent.vue',
  1496. previewPath: './preview/polylineGlowComponent.svg',
  1497. description: '参考 Mars3D PolylineGlow 发光线 (ex_4_1_1):基于 GeoJSON 数据源渲染,支持确认生成与原始定位。',
  1498. default: {
  1499. color: '#FF4500',
  1500. dataUrl: 'https://dcser.icegl.cn/data/wuhan-line3.json',
  1501. dataUrlDraft: 'https://dcser.icegl.cn/data/wuhan-line3.json',
  1502. glowColor: '#FFD27A',
  1503. glowPower: 0.1,
  1504. opacity: 0.9,
  1505. width: 0.05,
  1506. widthScale: 1,
  1507. },
  1508. defaultObject3D: {
  1509. position: { x: 0, y: 0.02, z: 0 },
  1510. scale: { x: 1, y: 1, z: 1 },
  1511. rotation: { x: 0, y: 0, z: 0 },
  1512. },
  1513. config: {
  1514. dataUrlDraft: { name: '数据源URL', com: 'Text' },
  1515. applyDataUrl: { name: '确认生成', com: 'ActionButton', action: 'applyDataUrlAction' },
  1516. applyNativeGeoPosition: { name: '原始定位', com: 'ActionButton', action: 'applyNativeGeoPosition' },
  1517. width: { name: '线宽', com: 'Slider', min: 0.001, max: 1, step: 0.001 },
  1518. widthScale: { name: '线宽倍数', com: 'Slider', min: 0.1, max: 30, step: 0.1 },
  1519. glowPower: { name: '发光强度', com: 'Slider', min: 0.01, max: 1, step: 0.01 },
  1520. opacity: { name: '透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1521. color: { name: '线本体颜色', com: 'ColorPicker' },
  1522. glowColor: { name: '反光颜色', com: 'ColorPicker' },
  1523. },
  1524. },
  1525. {
  1526. name: '电流纹波面板',
  1527. type: 'currentRipplePanelComponent',
  1528. comFile: './src/components/currentRipplePanelComponent.vue',
  1529. previewPath: './preview/currentRipplePanelComponent.gif',
  1530. default: {
  1531. baseColor: '#081321',
  1532. currentColor: '#18c8ff',
  1533. flowSpeed: 1,
  1534. gridDensity: 26,
  1535. highlightColor: '#f0fcff',
  1536. length: 4,
  1537. opacity: 0.95,
  1538. pulseFrequency: 0.48,
  1539. pulseIntensity: 1.12,
  1540. rippleScale: 1,
  1541. shimmerIntensity: 1.18,
  1542. width: 4,
  1543. wireWidth: 0.08,
  1544. },
  1545. defaultObject3D: {
  1546. position: { x: 0, y: 0.105, z: 0 },
  1547. scale: { x: 1, y: 1, z: 1 },
  1548. rotation: { x: 0, y: 0, z: 0 },
  1549. },
  1550. config: {
  1551. length: { name: '面板长度', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  1552. width: { name: '面板宽度', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  1553. gridDensity: { name: '网格密度', com: 'Slider', min: 6, max: 72, step: 1 },
  1554. wireWidth: { name: '导线宽度', com: 'Slider', min: 0.02, max: 0.22, step: 0.005 },
  1555. pulseFrequency: { name: '脉冲频率', com: 'Slider', min: 0.05, max: 3, step: 0.01 },
  1556. pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1557. rippleScale: { name: '纹波尺度', com: 'Slider', min: 0.4, max: 3, step: 0.01 },
  1558. flowSpeed: { name: '流动速度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1559. shimmerIntensity: { name: '高光强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1560. opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1561. baseColor: { name: '基底颜色', com: 'ColorPicker' },
  1562. currentColor: { name: '电流颜色', com: 'ColorPicker' },
  1563. highlightColor: { name: '高光颜色', com: 'ColorPicker' },
  1564. },
  1565. },
  1566. {
  1567. name: '月光涟漪水面',
  1568. type: 'moonlitRippleWaterPanelComponent',
  1569. comFile: './src/components/moonlitRippleWaterPanelComponent.vue',
  1570. previewPath: './preview/moonlitRippleWaterPanelComponent.gif',
  1571. default: {
  1572. cameraTilt: 0.15,
  1573. deepColor: '#07131f',
  1574. fresnelStrength: 1,
  1575. moonColor: '#eef6ff',
  1576. moonGlow: 1,
  1577. opacity: 0.95,
  1578. rippleSpeed: 0.5,
  1579. shallowColor: '#2f7ca6',
  1580. size: 4,
  1581. waveIntensity: 1,
  1582. },
  1583. defaultObject3D: {
  1584. position: { x: 0, y: 0.04, z: 0 },
  1585. scale: { x: 1, y: 1, z: 1 },
  1586. rotation: { x: 0, y: 0, z: 0 },
  1587. },
  1588. config: {
  1589. size: { name: '水面尺寸', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  1590. rippleSpeed: { name: '涟漪速度', com: 'Slider', min: 0.1, max: 1.5, step: 0.05 },
  1591. moonGlow: { name: '月光强度', com: 'Slider', min: 0.3, max: 2, step: 0.05 },
  1592. cameraTilt: { name: '视角倾斜', com: 'Slider', min: -0.3, max: 1, step: 0.01 },
  1593. waveIntensity: { name: '波浪强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1594. fresnelStrength: { name: '菲涅尔强度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1595. opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1596. deepColor: { name: '深水颜色', com: 'ColorPicker' },
  1597. shallowColor: { name: '浅水颜色', com: 'ColorPicker' },
  1598. moonColor: { name: '月光颜色', com: 'ColorPicker' },
  1599. },
  1600. },
  1601. {
  1602. name: '水滴玻璃材质',
  1603. type: 'waterDropGlassMaterialComponent',
  1604. comFile: './src/components/waterDropGlassMaterialComponent/index.vue',
  1605. previewPath: './preview/waterDropGlassMaterialComponent.gif',
  1606. default: {
  1607. "attenuationDistance": 3.26,
  1608. "clearcoat": 1,
  1609. "clearcoatRoughness": 0.3,
  1610. "collisionRadius": 0.47000000000000003,
  1611. "collisionRadiusIncrease": 0.0014,
  1612. "dropletGlow": 0.08,
  1613. "dropletRoughness": 0.21,
  1614. "dropletSizeMax": 5,
  1615. "dropletSizeMin": 2,
  1616. "dropletsRate": 120,
  1617. "glassColor": "#dff4ff",
  1618. "globalTimeScale": 1.43,
  1619. "ior": 2.174,
  1620. "length": 4.5,
  1621. "maxDropRadius": 50,
  1622. "metalness": 0.17,
  1623. "minDropRadius": 20,
  1624. "normalStrength": 1.37,
  1625. "opacity": 1,
  1626. "rainAmount": 1.1400000000000001,
  1627. "rainChance": 0.29999999999999993,
  1628. "rainLimit": 6,
  1629. "roughness": 0.18,
  1630. "thickness": 0.15,
  1631. "trailRate": 1,
  1632. "transmission": 0.98,
  1633. "width": 3.3000000000000003
  1634. },
  1635. defaultObject3D: {
  1636. position: { x: 0, y: 1.7, z: 0 },
  1637. scale: { x: 1, y: 1, z: 1 },
  1638. rotation: { x: 0, y: 0, z: 0 },
  1639. },
  1640. config: {
  1641. length: { name: '玻璃长度', com: 'Slider', min: 0.5, max: 12, step: 0.1 },
  1642. width: { name: '玻璃宽度', com: 'Slider', min: 0.5, max: 12, step: 0.1 },
  1643. thickness: { name: '玻璃厚度', com: 'Slider', min: 0.02, max: 1, step: 0.01 },
  1644. glassColor: { name: '玻璃染色', com: 'ColorPicker' },
  1645. transmission: { name: '透射强度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1646. ior: { name: '折射率', com: 'Slider', min: 1, max: 2.333, step: 0.001 },
  1647. roughness: { name: '基础粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1648. metalness: { name: '金属度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1649. clearcoat: { name: '清漆层', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1650. clearcoatRoughness: { name: '清漆粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1651. attenuationDistance: { name: '吸收距离', com: 'Slider', min: 0, max: 12, step: 0.01 },
  1652. normalStrength: { name: '雨滴法线强度', com: 'Slider', min: 0, max: 2, step: 0.01 },
  1653. dropletRoughness: { name: '雨滴粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1654. dropletGlow: { name: '雨滴高光增强', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1655. rainAmount: { name: '雨量强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1656. minDropRadius: { name: '最小雨滴半径', com: 'Slider', min: 6, max: 60, step: 1 },
  1657. maxDropRadius: { name: '最大雨滴半径', com: 'Slider', min: 10, max: 100, step: 1 },
  1658. rainChance: { name: '落滴概率', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1659. rainLimit: { name: '单帧落滴上限', com: 'Slider', min: 0, max: 20, step: 1 },
  1660. dropletsRate: { name: '微滴生成速率', com: 'Slider', min: 0, max: 400, step: 1 },
  1661. dropletSizeMin: { name: '微滴最小尺寸', com: 'Slider', min: 0.5, max: 12, step: 0.1 },
  1662. dropletSizeMax: { name: '微滴最大尺寸', com: 'Slider', min: 1, max: 18, step: 0.1 },
  1663. globalTimeScale: { name: '全局时间倍率', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1664. trailRate: { name: '拖尾速率', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1665. collisionRadius: { name: '碰撞半径', com: 'Slider', min: 0.1, max: 1.2, step: 0.01 },
  1666. collisionRadiusIncrease: { name: '碰撞增量', com: 'Slider', min: 0, max: 0.01, step: 0.0001 },
  1667. opacity: { name: '整体透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1668. },
  1669. },
  1670. {
  1671. name: '魔法炫光技能',
  1672. type: 'radiantSwirlSkillComponent',
  1673. comFile: './src/components/radiantSwirlSkillComponent.vue',
  1674. previewPath: './preview/radiantSwirlSkillComponent.png',
  1675. description: '基于 shader 的 4 阶段技能炫光效果:从散射光叶逐步汇聚到完整能量环与核心光球。',
  1676. default: {
  1677. animationSpeed: 0.6,
  1678. autoAnimate: true,
  1679. baseColor: '#0d3b1a',
  1680. bladeCount: 9,
  1681. coreColor: '#e8ffc7',
  1682. coreIntensity: 1.8,
  1683. glowColor: '#7cff4c',
  1684. highlightColor: '#d6ff86',
  1685. noiseScale: 1.2,
  1686. opacity: 1,
  1687. progress: 0.5,
  1688. radius: 4,
  1689. sparkleIntensity: 1,
  1690. swirlIntensity: 2.4,
  1691. },
  1692. defaultObject3D: {
  1693. position: { x: 0, y: 0.05, z: 0 },
  1694. scale: { x: 1, y: 1, z: 1 },
  1695. rotation: { x: 0, y: 0, z: 0 },
  1696. },
  1697. config: {
  1698. autoAnimate: { name: '自动循环', com: 'Switch' },
  1699. animationSpeed: { name: '动画速度', com: 'Slider', min: -1, max: 1, step: 0.01 },
  1700. progress: { name: '手动进度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1701. radius: { name: '可视范围', com: 'Slider', min: 0.5, max: 30, step: 0.1 },
  1702. bladeCount: { name: '叶片条数', com: 'Slider', min: 1, max: 32, step: 1 },
  1703. swirlIntensity: { name: '螺旋强度', com: 'Slider', min: 0, max: 8, step: 0.05 },
  1704. noiseScale: { name: '细节粒度', com: 'Slider', min: 0.1, max: 6, step: 0.05 },
  1705. coreIntensity: { name: '核心强度', com: 'Slider', min: 0, max: 6, step: 0.05 },
  1706. sparkleIntensity: { name: '火花亮度', com: 'Slider', min: 0, max: 4, step: 0.05 },
  1707. opacity: { name: '整体透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1708. baseColor: { name: '底色', com: 'ColorPicker' },
  1709. glowColor: { name: '叶片光色', com: 'ColorPicker' },
  1710. highlightColor: { name: '高光色', com: 'ColorPicker' },
  1711. coreColor: { name: '核心色', com: 'ColorPicker' },
  1712. },
  1713. },
  1714. {
  1715. name: '视频2D投射',
  1716. type: 'video2DProjectionComponent',
  1717. comFile: './src/components/video2DProjectionComponent.vue',
  1718. previewPath: './preview/video2DProjectionComponent.svg',
  1719. description: '参考 Mars3D Video2D 的视频投射可视化组件,使用 VideoTexture 将示例视频投射到视锥远端平面。',
  1720. default: {
  1721. angle: 46,
  1722. angle2: 25,
  1723. distance: 6,
  1724. flipX: false,
  1725. frustumColor: '#00ffff',
  1726. heading: 0,
  1727. opacity: 0.95,
  1728. pitch: -20,
  1729. showFrustum: true,
  1730. stRotationDegree: 0,
  1731. videoTint: '#ffffff',
  1732. },
  1733. defaultObject3D: {
  1734. position: { x: 0, y: 3, z: 0 },
  1735. scale: { x: 1, y: 1, z: 1 },
  1736. rotation: { x: 0, y: 0, z: 0 },
  1737. },
  1738. config: {
  1739. videoPlay: { name: '播放', com: 'ActionButton', action: 'videoPlay' },
  1740. videoPause: { name: '暂停', com: 'ActionButton', action: 'videoPause' },
  1741. videoStop: { name: '停止', com: 'ActionButton', action: 'videoStop' },
  1742. showFrustum: { name: '视锥线框', com: 'Switch' },
  1743. flipX: { name: '水平镜像', com: 'Switch' },
  1744. angle: { name: '水平张角°', com: 'Slider', min: 1, max: 120, step: 0.1 },
  1745. angle2: { name: '垂直张角°', com: 'Slider', min: 1, max: 120, step: 0.1 },
  1746. heading: { name: '方向角°', com: 'Slider', min: -180, max: 180, step: 0.1 },
  1747. pitch: { name: '俯仰角°', com: 'Slider', min: -89, max: 89, step: 0.1 },
  1748. distance: { name: '投射距离', com: 'Slider', min: 0.1, max: 100, step: 0.1 },
  1749. stRotationDegree: { name: '贴图旋转°', com: 'Slider', min: 0, max: 360, step: 1 },
  1750. opacity: { name: '视频透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1751. videoTint: { name: '视频染色', com: 'ColorPicker' },
  1752. frustumColor: { name: '视锥颜色', com: 'ColorPicker' },
  1753. },
  1754. },
  1755. {
  1756. name: '模型生三维粒子器',
  1757. type: 'modelParticleGeneratorComponent',
  1758. comFile: './src/components/modelParticleGeneratorComponent/index.vue',
  1759. previewPath: './preview/modelParticleGeneratorComponent.svg',
  1760. description: '通过 URL 加载一个 GLB 模型(支持 DRACO 压缩),对其网格表面采样,生成随风飘动的粒子拖尾效果。',
  1761. default: {
  1762. "modelUrl": "https://oss.icegl.cn/p/modelServer/models/3%E8%88%B9/models/游轮C.glb",
  1763. "modelUrlDraft": "https://oss.icegl.cn/p/modelServer/models/3%E8%88%B9/models/游轮C.glb",
  1764. "outlineDensity": 0.08,
  1765. "particleSpeed": 1.5,
  1766. "trailLength": 2.5,
  1767. "windAzimuth": -90,
  1768. "windElevation": 0,
  1769. "particleDensity": 0.62,
  1770. "trailDensity": 0.05,
  1771. "colorScheme": "ice",
  1772. "particleSize": 0.1,
  1773. "particleSizeMultiplier": 0.05,
  1774. "opacity": 1,
  1775. "turbulence": 0.05,
  1776. "showModel": true,
  1777. "modelOpacity": 1,
  1778. "offsetX": -1.3,
  1779. "offsetY": 0,
  1780. "offsetZ": 0
  1781. },
  1782. defaultObject3D: {
  1783. position: { x: 0, y: 0.5, z: 0 },
  1784. scale: { x: 1, y: 1, z: 1 },
  1785. rotation: { x: 0, y: 0, z: 0 },
  1786. },
  1787. config: {
  1788. modelUrlDraft: { name: '模型 URL', com: 'Text' },
  1789. applyModelUrl: { name: '确认生成', com: 'ActionButton', action: 'applyModelUrlAction' },
  1790. clearModel: { name: '清除模型', com: 'ActionButton', action: 'clearModel' },
  1791. showModel: { name: '显示模型', com: 'Switch' },
  1792. modelOpacity: { name: '模型透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1793. colorScheme: {
  1794. name: '渐变色系',
  1795. com: 'Select',
  1796. options: [
  1797. { label: '火焰', value: 'fire' },
  1798. { label: '冰蓝', value: 'ice' },
  1799. { label: '星云', value: 'nebula' },
  1800. { label: '毒绿', value: 'toxic' },
  1801. { label: '黄金', value: 'gold' },
  1802. { label: '彩虹', value: 'rainbow' },
  1803. ],
  1804. },
  1805. outlineDensity: { name: '轮廓抽稀密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1806. particleDensity: { name: '粒子密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1807. trailDensity: { name: '拖尾密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1808. particleSize: { name: '粒子尺寸', com: 'Slider', min: 0.1, max: 2, step: 0.01 },
  1809. particleSizeMultiplier: { name: '粒子大小倍数', com: 'Slider', min: 0.05, max: 20, step: 0.05 },
  1810. opacity: { name: '粒子不透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 },
  1811. particleSpeed: { name: '粒子速度', com: 'Slider', min: 0, max: 6, step: 0.05 },
  1812. trailLength: { name: '拖尾长度', com: 'Slider', min: 0.1, max: 20, step: 0.1 },
  1813. windAzimuth: { name: '风向方位角°', com: 'Slider', min: -180, max: 180, step: 1 },
  1814. windElevation: { name: '风向仰角°', com: 'Slider', min: -89, max: 89, step: 1 },
  1815. turbulence: { name: '扰动强度', com: 'Slider', min: 0, max: 4, step: 0.05 },
  1816. offsetX: { name: '粒子偏移 X', com: 'Slider', min: -10, max: 10, step: 0.05 },
  1817. offsetY: { name: '粒子偏移 Y', com: 'Slider', min: -10, max: 10, step: 0.05 },
  1818. offsetZ: { name: '粒子偏移 Z', com: 'Slider', min: -10, max: 10, step: 0.05 },
  1819. },
  1820. },
  1821. {
  1822. name: 'GNM 参数化人头',
  1823. type: 'gnmHeadComponent',
  1824. comFile: './src/components/gnmHeadComponent/index.vue',
  1825. previewPath: './preview/gnmHeadComponent.svg',
  1826. description: '基于 Google GNM Head 浏览器数值实现的参数化人头组件;动态载入后立即显示轻量 3D loading,主模型与语义采样器分阶段按需下载,支持确定性身份/表情、头眼姿态、皮肤透明度与非皮肤解剖显隐,不创建相机、灯光、控制器或场景级 UI。',
  1827. default: {
  1828. ...GNM_HEAD_DEFAULTS,
  1829. },
  1830. defaultObject3D: {
  1831. position: { x: 0, y: -1.15, z: 0 },
  1832. scale: { x: 5, y: 5, z: 5 },
  1833. rotation: { x: 0, y: 0, z: 0 },
  1834. },
  1835. config: {
  1836. headUrl: { name: '头部模型 URL', com: 'Text' },
  1837. samplerUrl: { name: '语义采样器 URL', com: 'Text' },
  1838. identitySeed: { name: '身份种子', com: 'Slider', min: 0, max: 100000, step: 1 },
  1839. identityStrength: { name: '身份强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1840. expressionSeed: { name: '表情种子', com: 'Slider', min: 0, max: 100000, step: 1 },
  1841. expressionClass: {
  1842. name: '表情类别',
  1843. com: 'Select',
  1844. options: GNM_EXPRESSION_OPTIONS.map(option => ({ ...option })),
  1845. },
  1846. expressionStrength: { name: '表情强度', com: 'Slider', min: 0, max: 3, step: 0.01 },
  1847. headPitch: { name: '头部俯仰°', com: 'Slider', min: -45, max: 45, step: 1 },
  1848. headYaw: { name: '头部偏航°', com: 'Slider', min: -70, max: 70, step: 1 },
  1849. headRoll: { name: '头部翻滚°', com: 'Slider', min: -45, max: 45, step: 1 },
  1850. eyePitch: { name: '眼球俯仰°', com: 'Slider', min: -35, max: 35, step: 1 },
  1851. eyeYaw: { name: '眼球偏航°', com: 'Slider', min: -45, max: 45, step: 1 },
  1852. skinColor: { name: '皮肤颜色', com: 'ColorPicker' },
  1853. irisColor: { name: '虹膜颜色', com: 'ColorPicker' },
  1854. roughness: { name: '材质粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1855. metalness: { name: '材质金属度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1856. skinOpacity: { name: '皮肤透明度', com: 'Slider', min: 0, max: 1, step: 0.01 },
  1857. showEyes: { name: '显示双眼', com: 'Switch' },
  1858. showTeethGums: { name: '显示牙齿牙龈', com: 'Switch' },
  1859. showTongue: { name: '显示舌头', com: 'Switch' },
  1860. },
  1861. },
  1862. ],
  1863. }
  1864. export default config