/* * @Description: * @Version: 1.668 * @Autor: 地虎降天龙 * @Date: 2025-12-29 09:16:25 * @LastEditors: 地虎降天龙 * @LastEditTime: 2026-05-22 12:24:29 */ import { GNM_EXPRESSION_OPTIONS, GNM_HEAD_DEFAULTS, } from './components/gnmHeadComponent/defaults' const config = { name: 'baseSample', version: '2.2.2', description: `
`, components: [ { name: '测试组件', type: 'testBase', comFile: './src/components/testBase.vue', previewPath: './preview/testBase.png', default: {}, defaultObject3D: {}, config: {}, }, { name: '矩形跑光组件', type: 'rectangleShimmerComponent', comFile: './src/components/rectangleShimmerComponent.vue', previewPath: './preview/rectangleShimmerComponent.png', default: { gradientLength: 2.6, height: 1.4, length: 4, lineColor: '#ffd166', lineSpeed: 0.95, lineWidth: 0.035, segmentCount: 6, wallBottomColor: '#0d1f8f', wallBottomOpacity: 0.92, wallGradientProgress: 68, wallTopColor: '#57f3ff', wallTopOpacity: 0.18, width: 2.6, }, defaultObject3D: {}, config: { length: { name: '长度', com: 'Slider', min: 0.4, max: 10, step: 0.1 }, width: { name: '宽度', com: 'Slider', min: 0.4, max: 10, step: 0.1 }, height: { name: '高度', com: 'Slider', min: 0.2, max: 5, step: 0.05 }, wallBottomColor: { name: '墙体底色', com: 'ColorPicker' }, wallBottomOpacity: { name: '墙体底部透明', com: 'Slider', min: 0, max: 1, step: 0.01 }, wallGradientProgress: { name: '渐变进程%', com: 'Slider', min: 0, max: 100, step: 1 }, wallTopColor: { name: '墙体顶色', com: 'ColorPicker' }, wallTopOpacity: { name: '墙体顶部透明', com: 'Slider', min: 0, max: 1, step: 0.01 }, lineColor: { name: '跑线颜色', com: 'ColorPicker' }, lineWidth: { name: '线宽', com: 'Slider', min: 0.01, max: 0.3, step: 0.005 }, lineSpeed: { name: '跑线速度', com: 'Slider', min: 0, max: 6, step: 0.05 }, gradientLength: { name: '渐变长度', com: 'Slider', min: 0.1, max: 8, step: 0.05 }, segmentCount: { name: '线段数量', com: 'Slider', min: 1, max: 8, step: 1 }, }, }, { name: '梦幻流体面板', type: 'dreamyFluidPanelComponent', comFile: './src/components/dreamyFluidPanelComponent.vue', previewPath: './preview/dreamyFluidPanelComponent.png', default: { baseColor: '#10204f', highlightColor: '#ffe7ba', length: 4, opacity: 0.92, sequinSize: 0.38, sheenColor: '#6fd8ff', shimmerSpeed: 1.15, sparkleIntensity: 1.05, tileDensity: 28, waveIntensity: 0.92, waveSpeed: 0.86, width: 4, }, defaultObject3D: { position: { x: 0, y: 0.105, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { length: { name: '面板长度', com: 'Slider', min: 0.5, max: 20, step: 0.1 }, width: { name: '面板宽度', com: 'Slider', min: 0.5, max: 20, step: 0.1 }, tileDensity: { name: '亮片密度', com: 'Slider', min: 8, max: 72, step: 1 }, sequinSize: { name: '亮片大小', com: 'Slider', min: 0.15, max: 0.48, step: 0.005 }, waveSpeed: { name: '波动速度', com: 'Slider', min: 0, max: 4, step: 0.05 }, waveIntensity: { name: '波动强度', com: 'Slider', min: 0, max: 2.5, step: 0.05 }, shimmerSpeed: { name: '细闪速度', com: 'Slider', min: 0, max: 4, step: 0.05 }, sparkleIntensity: { name: '高光强度', com: 'Slider', min: 0, max: 3, step: 0.05 }, opacity: { name: '整体透明', com: 'Slider', min: 0.08, max: 1, step: 0.01 }, baseColor: { name: '基础色', com: 'ColorPicker' }, sheenColor: { name: '流光色', com: 'ColorPicker' }, highlightColor: { name: '高光色', com: 'ColorPicker' }, }, }, { name: '梦幻流体马赛克面板', type: 'giltMosaicGroundPanelComponent', comFile: './src/components/giltMosaicGroundPanelComponent.vue', previewPath: './preview/giltMosaicGroundPanelComponent.gif', default: { animationMode: 1, baseColor: '#5e411f', groutColor: '#110b06', groutWidth: 0.06, highlightColor: '#ffdba6', length: 4, lightSpeed: 0.4, opacity: 0.94, sheenColor: '#e5aa55', sparkleIntensity: 1, tileDensity: 18, waveDelay: 1.5, waveDirection: 0, waveSpeed: 4, width: 4, }, defaultObject3D: { position: { x: 0, y: 0.105, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { length: { name: '面板长度', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, width: { name: '面板宽度', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, tileDensity: { name: '砖片密度', com: 'Slider', min: 6, max: 64, step: 1 }, lightSpeed: { name: '光动速度', com: 'Slider', min: 0, max: 3, step: 0.01 }, animationMode: { name: '翻折强度', com: 'Slider', min: 0, max: 1, step: 0.01 }, waveSpeed: { name: '扫波时长', com: 'Slider', min: 0.3, max: 12, step: 0.05 }, waveDelay: { name: '波间停顿', com: 'Slider', min: 0, max: 6, step: 0.05 }, waveDirection: { name: '波方向', com: 'Select', options: [ { label: '左到右', value: 0 }, { label: '右到左', value: 1 }, { label: '上到下', value: 2 }, { label: '下到上', value: 3 }, ], }, sparkleIntensity: { name: '高光强度', com: 'Slider', min: 0, max: 3, step: 0.05 }, groutWidth: { name: '砖缝宽度', com: 'Slider', min: 0.01, max: 0.18, step: 0.005 }, opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, baseColor: { name: '基底色', com: 'ColorPicker' }, groutColor: { name: '砖缝色', com: 'ColorPicker' }, sheenColor: { name: '流光色', com: 'ColorPicker' }, highlightColor: { name: '高光色', com: 'ColorPicker' }, }, }, { name: '芯片地板', type: 'chipFloorGroundComponent', comFile: './src/components/chipFloorGroundComponent.vue', previewPath: './preview/chipFloorGroundComponent.png', default: { "baseColor": "#090909", "chipHeight": 0.034800000000000005, "dotDensity": 20, "dotOpacity": 0.07, "glowColor": "#31bcff", "glowIntensity": 1.1999999999999997, "iterations": 3, "particleColor": "#ff00d9", "particleDensity": 2.2999999999999994, "particleSize": 0.015, "particleSpeed": 0.09999999999999992, "patternScale": 0.5443000000000001, "size": 40, "traceColor": "#000000", "trailColor": "#e6ff00", "trailLength": 30, "trailSpeed": 0.35000000000000003 }, defaultObject3D: { position: { x: 0, y: 0.02, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { size: { name: '地板尺寸', com: 'Slider', min: 4, max: 40, step: 0.1 }, iterations: { name: '细节层级', com: 'Slider', min: 2, max: 10, step: 1 }, patternScale: { name: '网格缩放', com: 'Slider', min: 0.1, max: 3, step: 0.01 }, chipHeight: { name: '芯片高度', com: 'Slider', min: 0, max: 0.8, step: 0.001 }, glowIntensity: { name: '沟槽辉光', com: 'Slider', min: 0, max: 5, step: 0.01 }, dotDensity: { name: '点阵密度', com: 'Slider', min: 20, max: 120, step: 1 }, dotOpacity: { name: '点阵透明', com: 'Slider', min: 0, max: 1, step: 0.01 }, trailSpeed: { name: '数据轨迹速度', com: 'Slider', min: 0, max: 10, step: 0.05 }, trailLength: { name: '轨迹衰减', com: 'Slider', min: 2, max: 30, step: 0.1 }, particleSpeed: { name: '粒子速度', com: 'Slider', min: 0, max: 5, step: 0.05 }, particleDensity: { name: '粒子密度', com: 'Slider', min: 1, max: 30, step: 0.1 }, particleSize: { name: '粒子大小', com: 'Slider', min: 0.001, max: 0.02, step: 0.001 }, baseColor: { name: '基底颜色', com: 'ColorPicker' }, traceColor: { name: '片面亮色', com: 'ColorPicker' }, glowColor: { name: '沟槽光色', com: 'ColorPicker' }, trailColor: { name: '数据轨迹颜色', com: 'ColorPicker' }, particleColor: { name: '粒子颜色', com: 'ColorPicker' }, }, }, { name: '高级动态草地', type: 'advancedDynamicGrassComponent', comFile: './src/components/advancedDynamicGrassComponent/index.vue', previewPath: './preview/advancedDynamicGrassComponent.svg', description: '移植自 three-stylized 的高级草地组件,保留确定性起伏地形、实例化草叶、动态风场与程序化野花;不创建或配置 Sun、背景、环境、相机与控制器,适合直接加入区域场景编辑器。', default: { terrainWidth: 8, terrainDepth: 8, terrainSegments: 72, seed: 17, terrainDegree: 0.8, groundColor: '#557d24', density: 40, bladeHeight: 1.5, bladeWidth: 0.1, windStrength: 0.22, windSpeed: 1.1, windFrequency: 0.55, windTurbulence: 0.24, windDirection: 32, brightness: 0.35, grassBottomColor: '#4f7c13', grassTopColor: '#b8da57', grassBacklightColor: '#c1e54d', wildflowersEnabled: true, wildflowerDensity: 0.84, wildflowerMaxCount: 240, }, defaultObject3D: { position: { x: 0, y: 0, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { terrainWidth: { name: '地形宽度', com: 'Slider', min: 2, max: 40, step: 0.5 }, terrainDepth: { name: '地形深度', com: 'Slider', min: 2, max: 40, step: 0.5 }, terrainSegments: { name: '地形精度', com: 'Slider', min: 8, max: 160, step: 1 }, seed: { name: '随机种子', com: 'Slider', min: 0, max: 10000, step: 1 }, terrainDegree: { name: '地形起伏', com: 'Slider', min: 0, max: 1, step: 0.01 }, density: { name: '草叶密度', com: 'Slider', min: 1, max: 60, step: 1 }, bladeHeight: { name: '草叶高度', com: 'Slider', min: 0.1, max: 3, step: 0.02 }, bladeWidth: { name: '草叶宽度', com: 'Slider', min: 0.01, max: 0.16, step: 0.001 }, windStrength: { name: '风力强度', com: 'Slider', min: 0, max: 0.8, step: 0.01 }, windSpeed: { name: '风速', com: 'Slider', min: 0, max: 5, step: 0.05 }, windFrequency: { name: '风浪频率', com: 'Slider', min: 0, max: 3, step: 0.01 }, windTurbulence: { name: '风场扰动', com: 'Slider', min: 0, max: 1, step: 0.01 }, windDirection: { name: '风向角度', com: 'Slider', min: 0, max: 360, step: 1 }, brightness: { name: '草地亮度', com: 'Slider', min: 0.1, max: 2, step: 0.01 }, groundColor: { name: '地面颜色', com: 'ColorPicker' }, grassBottomColor: { name: '草根颜色', com: 'ColorPicker' }, grassTopColor: { name: '草尖颜色', com: 'ColorPicker' }, grassBacklightColor: { name: '草叶透光色', com: 'ColorPicker' }, wildflowersEnabled: { name: '显示野花', com: 'Switch' }, wildflowerDensity: { name: '野花密度', com: 'Slider', min: 0, max: 5, step: 0.05 }, wildflowerMaxCount: { name: '野花上限', com: 'Slider', min: 0, max: 2000, step: 10 }, }, }, { name: '流动烟雾组件', type: 'flowingSmokeComponent', comFile: './src/components/flowingSmokeComponent.vue', previewPath: './preview/flowingSmokeComponent.png', default: { color: '#aeb4b8', density: 0.38, directionX: -0.08, directionY: 1, directionZ: 0.03, emitterRadius: 0.12, flowRate: 0.16, lifeRange: 3.2, opacity: 0.26, particleSize: 0.22, sizeGrowth: 2.2, spread: 0.22, turbulence: 0.14, }, defaultObject3D: { position: { x: 0, y: 0.15, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { flowRate: { name: '流动速率', com: 'Slider', min: 0.02, max: 2, step: 0.01 }, density: { name: '烟雾密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, color: { name: '烟雾颜色', com: 'ColorPicker' }, emitterRadius: { name: '烟囱口半径', com: 'Slider', min: 0.01, max: 1.5, step: 0.01 }, spread: { name: '扩散宽度', com: 'Slider', min: 0, max: 2, step: 0.01 }, turbulence: { name: '飘动幅度', com: 'Slider', min: 0, max: 2, step: 0.01 }, opacity: { name: '透明强度', com: 'Slider', min: 0.01, max: 1, step: 0.01 }, particleSize: { name: '基础粒径', com: 'Slider', min: 0.02, max: 3, step: 0.01 }, sizeGrowth: { name: '粒径增长', com: 'Slider', min: 1, max: 4, step: 0.05 }, lifeRange: { name: '烟雾长度', com: 'Slider', min: 0.5, max: 14, step: 0.1 }, directionX: { name: '方向X', com: 'Slider', min: -1, max: 1, step: 0.05 }, directionY: { name: '方向Y', com: 'Slider', min: -1, max: 1, step: 0.05 }, directionZ: { name: '方向Z', com: 'Slider', min: -1, max: 1, step: 0.05 }, }, }, { name: '喷火组件', type: 'flameJetComponent', comFile: './src/components/flameJetComponent.vue', previewPath: './preview/flameJetComponent.gif', description: '基于 fragment shader 的喷火效果组件,沿 +X 方向喷射,支持长度、扰动、颜色梯度等参数调节。', default: { coreColor: '#ffc738', crossPlane: true, intensity: 1.55, jetSpeed: 1.7, length: 6, midColor: '#ff660d', noiseScale: 1, outerColor: '#d80f04', taperPower: 1.2, turbulence: 1, width: 2.2, }, defaultObject3D: { position: { x: 0, y: 0.6, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { length: { name: '火焰长度', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, width: { name: '火焰宽度', com: 'Slider', min: 0.2, max: 12, step: 0.1 }, jetSpeed: { name: '喷射速度', com: 'Slider', min: 0, max: 8, step: 0.05 }, turbulence: { name: '扰动强度', com: 'Slider', min: 0, max: 3, step: 0.05 }, noiseScale: { name: '噪声密度', com: 'Slider', min: 0.1, max: 4, step: 0.05 }, taperPower: { name: '收尖程度', com: 'Slider', min: 0.2, max: 5, step: 0.05 }, intensity: { name: '辉光强度', com: 'Slider', min: 0.1, max: 4, step: 0.05 }, crossPlane: { name: '十字面片', com: 'Switch' }, coreColor: { name: '焰心色', com: 'ColorPicker' }, midColor: { name: '焰中色', com: 'ColorPicker' }, outerColor: { name: '焰边色', com: 'ColorPicker' }, }, }, { name: '三维流体火焰', type: 'volumetricFluidFlameComponent', comFile: './src/components/volumetricFluidFlameComponent.vue', previewPath: './preview/volumetricFluidFlameComponent.png', description: '基于 GPU atlas 体素仿真的三维体积火焰组件,默认采用较低成本的模拟分辨率、压力迭代和光线步数。', default: { absorption: 7.5, brightness: 1.45, buoyancy: 2.3, colorMode: 0, curlStrength: 2.4, dissipation: 0.982, emitStrength: 3.1, flameHeight: 0.58, flameScaleX: 1, flameScaleY: 1.15, flameScaleZ: 1, flameWidth: 0.52, groundOpacity: 0.82, groundSize: 8, groundVisible: true, pressureIterations: 8, rayMarchSteps: 64, simulationFps: 30, simulationResolution: 32, turbulence: 0.48, volumeScale: 2.1, }, defaultObject3D: { position: { x: 0, y: 0, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { colorMode: { name: '颜色预设', com: 'Select', options: [ { label: '火焰', value: 0 }, { label: '蓝色等离子', value: 1 }, { label: '绿色毒焰', value: 2 }, { label: '白色蒸汽', value: 3 }, { label: '紫色炼狱', value: 4 }, ], }, resetFluid: { name: '重置流体', com: 'ActionButton', action: 'resetFluidAction' }, volumeScale: { name: '整体尺寸', com: 'Slider', min: 0.5, max: 6, step: 0.05 }, flameWidth: { name: '火焰宽度', com: 'Slider', min: 0, max: 1, step: 0.01 }, flameHeight: { name: '火焰高度', com: 'Slider', min: 0, max: 1, step: 0.01 }, flameScaleX: { name: '形变 X', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 }, flameScaleY: { name: '形变 Y', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 }, flameScaleZ: { name: '形变 Z', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 }, emitStrength: { name: '喷发强度', com: 'Slider', min: 0.2, max: 8, step: 0.05 }, buoyancy: { name: '上升浮力', com: 'Slider', min: 0, max: 8, step: 0.05 }, curlStrength: { name: '涡旋强度', com: 'Slider', min: 0, max: 8, step: 0.05 }, turbulence: { name: '扰动强度', com: 'Slider', min: 0, max: 1, step: 0.01 }, dissipation: { name: '耗散系数', com: 'Slider', min: 0.9, max: 0.999, step: 0.001 }, brightness: { name: '亮度', com: 'Slider', min: 0.3, max: 4, step: 0.05 }, absorption: { name: '吸收密度', com: 'Slider', min: 2, max: 20, step: 0.1 }, simulationResolution: { name: '模拟分辨率', com: 'Select', options: [ { label: '16³ 最快', value: 16 }, { label: '24³ 轻量', value: 24 }, { label: '32³ 默认', value: 32 }, { label: '48³ 精细', value: 48 }, { label: '64³ 高质', value: 64 }, ], }, simulationFps: { name: '模拟帧率', com: 'Slider', min: 10, max: 60, step: 1 }, pressureIterations: { name: '压力迭代', com: 'Slider', min: 1, max: 24, step: 1 }, rayMarchSteps: { name: '体渲染步数', com: 'Slider', min: 24, max: 128, step: 1 }, groundVisible: { name: '地面辉光', com: 'Switch' }, groundSize: { name: '地面范围', com: 'Slider', min: 2, max: 30, step: 0.5 }, groundOpacity: { name: '地面透明', com: 'Slider', min: 0, max: 1, step: 0.01 }, }, }, { name: '液体气泡组件', type: 'liquidBubbleComponent', comFile: './src/components/liquidBubbleComponent/index.vue', previewPath: './preview/liquidBubbleComponent.gif', description: '静止液体体块内部持续冒泡的效果组件,支持长方体与圆柱体两种形状。', default: { shapeType: 'cylinder', width: 1.6, depth: 1.4, height: 3.2, radius: 1.07, liquidColor: '#b93838', liquidTopColor: '#de9221', bubbleColor: '#fff8e8', opacity: 0.5099999999999999, bubbleCount: 80, bubbleOpacity: 0.44999999999999996, bubbleSpeed: 0.1, bubbleSize: 0.08199999999999999, bubbleSpread: 0.76, }, defaultObject3D: { position: { x: 0, y: 0, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { shapeType: { name: '形状', com: 'Select', options: [ { label: '圆柱体', value: 'cylinder' }, { label: '长方体', value: 'box' }, ], }, width: { name: '长方体宽度', com: 'Slider', min: 0.4, max: 8, step: 0.05 }, depth: { name: '长方体深度', com: 'Slider', min: 0.4, max: 8, step: 0.05 }, height: { name: '高度', com: 'Slider', min: 0.8, max: 8, step: 0.05 }, radius: { name: '圆柱体半径', com: 'Slider', min: 0.2, max: 4, step: 0.05 }, liquidColor: { name: '液体底色', com: 'ColorPicker' }, liquidTopColor: { name: '液体顶色', com: 'ColorPicker' }, bubbleColor: { name: '气泡颜色', com: 'ColorPicker' }, opacity: { name: '液体透明度', com: 'Slider', min: 0.08, max: 0.95, step: 0.01 }, bubbleCount: { name: '气泡数量', com: 'Slider', min: 0, max: 240, step: 1 }, bubbleOpacity: { name: '气泡透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, bubbleSpeed: { name: '气泡速度', com: 'Slider', min: 0.1, max: 4, step: 0.05 }, bubbleSize: { name: '气泡大小', com: 'Slider', min: 0.001, max: 0.3, step: 0.001 }, bubbleSpread: { name: '气泡扩散', com: 'Slider', min: 0.02, max: 1.2, step: 0.01 }, }, }, { name: '流动液体容器组件', type: 'liquidContainerComponent', comFile: './src/components/liquidContainerComponent/index.vue', previewPath: './preview/liquidContainerComponent.gif', default: { shapeType: 'cylinderTank', vasePreset: 'roundPot', length: 2.4, width: 1.6, height: 2.8, radius: 1, fillLevel: 0.64, waveSpeed: 1.15, waveAmplitude: 0.08, waveFrequency: 3.4, waveRandomness: 0.46, baseColor: '#1f7ae0', topColor: '#6fe7ff', edgeColor: '#d7fbff', shellColor: '#d7f5ff', shellOpacity: 0.24, density: 0.72, opacity: 0.78, bubbleEnabled: true, bubbleCount: 56, bubbleSizeMin: 0.005, bubbleSizeMax: 0.016, bubbleRandomness: 0.72, bubbleRiseSpeed: 0.72, bubbleColor: '#f5feff', clipX: 1, clipZ: 1, }, defaultObject3D: { position: { x: 0, y: 0, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { shapeType: { name: '容器形状', com: 'Select', options: ['cylinderTank', 'rectTank', 'vaseTank'].map(item => ({ label: item, value: item, })), }, vasePreset: { name: '壶形预设', com: 'Select', options: ['roundPot', 'slenderBottle', 'bulbFlask'].map(item => ({ label: item, value: item, })), }, length: { name: '矩形长度', com: 'Slider', min: 0.8, max: 8, step: 0.05 }, width: { name: '矩形宽度', com: 'Slider', min: 0.6, max: 6, step: 0.05 }, height: { name: '容器高度', com: 'Slider', min: 1, max: 8, step: 0.05 }, radius: { name: '圆形半径', com: 'Slider', min: 0.35, max: 3.5, step: 0.05 }, fillLevel: { name: '液位高度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, waveSpeed: { name: '波动速度', com: 'Slider', min: 0, max: 6, step: 0.05 }, waveAmplitude: { name: '波动振幅', com: 'Slider', min: 0, max: 0.24, step: 0.005 }, waveFrequency: { name: '波动频率', com: 'Slider', min: 0.5, max: 10, step: 0.1 }, waveRandomness: { name: '波动随机性', com: 'Slider', min: 0, max: 1, step: 0.01 }, baseColor: { name: '液体底色', com: 'ColorPicker' }, topColor: { name: '液体顶色', com: 'ColorPicker' }, edgeColor: { name: '液面边缘色', com: 'ColorPicker' }, shellColor: { name: '外壳颜色', com: 'ColorPicker' }, shellOpacity: { name: '外壳透明', com: 'Slider', min: 0, max: 1, step: 0.01 }, density: { name: '密度成色', com: 'Slider', min: 0.1, max: 1, step: 0.01 }, opacity: { name: '液体透明', com: 'Slider', min: 0.08, max: 1, step: 0.01 }, bubbleEnabled: { name: '开启气泡', com: 'Switch' }, bubbleCount: { name: '气泡数量', com: 'Slider', min: 0, max: 160, step: 1 }, bubbleSizeMin: { name: '最小气泡', com: 'Slider', min: 0.001, max: 0.05, step: 0.0005 }, bubbleSizeMax: { name: '最大气泡', com: 'Slider', min: 0.002, max: 0.06, step: 0.0005 }, bubbleRandomness: { name: '气泡随机性', com: 'Slider', min: 0, max: 1, step: 0.01 }, bubbleRiseSpeed: { name: '气泡上浮速', com: 'Slider', min: 0.1, max: 3, step: 0.05 }, bubbleColor: { name: '气泡颜色', com: 'ColorPicker' }, clipX: { name: 'X方向裁切', com: 'Slider', min: 0, max: 1, step: 0.01 }, clipZ: { name: 'Z方向裁切', com: 'Slider', min: 0, max: 1, step: 0.01 }, }, }, { name: '动态旋转基座', type: 'dynamicRotatingBase', comFile: './src/components/dynamicRotatingBase.vue', previewPath: './preview/dynamicRotatingBase.png', default: { type: 'imgA', color: '#fff', opacity: 0.95, rotationZ: 0.01, videoLoop: false, }, defaultObject3D: { position: { x: 0, y: 0.2, z: 0 }, scale: { x: 0.5, y: 0.5, z: 0.5 }, rotation: { x: -Math.PI / 2, y: 0, z: 0 }, }, config: { type: { name: '类型', com: 'Select', options: ['imgA', 'imgB', 'imgC'].map(item => ({ label: item, value: item, })), }, color: { name: '颜色', com: 'ColorPicker' }, videoLoop: { name: '视频重复', com: 'Switch' }, rotationZ: { name: '自转速度', com: 'Slider', min: -0.1, max: 0.1, step: 0.01 }, opacity: { name: '透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, }, }, { name: '艺术三维饼图', type: 'PieChartArt', comFile: './src/components/PieChartArt/index.vue', previewPath: './preview/PieChartArt.svg', description: 'WebGL 版 3D 艺术饼图,默认使用 Market Share 数据;应用 JSON 后会直接重建新图形。', default: { jsonText: `{ "title": "Market Share", "unit": "%", "slices": [ { "label": "Apple", "value": 30 }, { "label": "Samsung", "value": 22 }, { "label": "Xiaomi", "value": 10 }, { "label": "OPPO", "value": 20 }, { "label": "vivo", "value": 18 } ] }`, "height": 1.25, "radius": 3.1, "innerRadius": 1.9500000000000004, "gap": 0.12999999999999998, "bevel": 0.3, "sideSegments": 84, "bevelSegments": 5, "smoothShading": true, "creaseAngle": 84, "labelFontSize": 3, "gradientDirection": "vertical", "gradientFromY": 0, "gradientToY": 1, "gradientCurve": 0.29000000000000004, "colorScheme": "candy", "roughness": 0.34, "metalness": 0, "envMapIntensity": 2.7399999999999998, "jsonError": "", "jsonTextChangeNumber": 0 }, defaultObject3D: { position: { x: 0, y: 0.02, z: 0 }, scale: { x: 0.75, y: 0.75, z: 0.75 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { jsonText: { name: '表数据 JSON', com: 'jsonText' }, height: { name: 'Chart 高度', com: 'Slider', min: 0.25, max: 6, step: 0.05 }, radius: { name: 'Chart 半径', com: 'Slider', min: 0.8, max: 12, step: 0.05 }, innerRadius: { name: 'Chart 内半径', com: 'Slider', min: 0, max: 10, step: 0.05 }, gap: { name: 'Chart 间隙', com: 'Slider', min: 0, max: 0.22, step: 0.005 }, bevel: { name: 'Chart 倒角', com: 'Slider', min: 0, max: 0.6, step: 0.01 }, sideSegments: { name: 'Chart 侧边分段', com: 'Slider', min: 8, max: 256, step: 4 }, bevelSegments: { name: 'Chart 倒角分段', com: 'Slider', min: 1, max: 8, step: 1 }, smoothShading: { name: 'Chart 平滑着色', com: 'Switch' }, creaseAngle: { name: 'Chart 折痕角度', com: 'Slider', min: 0, max: 180, step: 1 }, labelFontSize: { name: 'Chart 标签字号', com: 'Slider', min: 0.8, max: 4, step: 0.05 }, gradientDirection: { name: 'Gradient 方向', com: 'Select', options: [ { label: 'Vertical (Y)', value: 'vertical' }, { label: 'Radial', value: 'radial' }, { label: 'Angular', value: 'angular' }, ], }, gradientFromY: { name: 'Gradient From Y', com: 'Slider', min: 0, max: 1, step: 0.01 }, gradientToY: { name: 'Gradient To Y', com: 'Slider', min: 0, max: 1, step: 0.01 }, gradientCurve: { name: 'Gradient Curve', com: 'Slider', min: 0.1, max: 3, step: 0.01 }, colorScheme: { name: 'Gradient 色系', com: 'Select', options: [ { label: 'Market Neon', value: 'marketNeon' }, { label: 'Aurora', value: 'aurora' }, { label: 'Sunset', value: 'sunset' }, { label: 'Jewel', value: 'jewel' }, { label: 'Candy', value: 'candy' }, ], }, roughness: { name: 'Material Roughness', com: 'Slider', min: 0, max: 1, step: 0.01 }, metalness: { name: 'Material Metalness', com: 'Slider', min: 0, max: 1, step: 0.01 }, envMapIntensity: { name: 'Material Env Intensity', com: 'Slider', min: 0, max: 3, step: 0.01 }, }, }, { name: '圆形动态粒子图表', type: 'circularParticleChartComponent', comFile: './src/components/circularParticleChartComponent.vue', previewPath: './preview/circularParticleChartComponent.png', description: '自发光圆形粒子图表,带可反向的扫描动效和中心标题/单位文字;不依赖灯光、环境贴图或场景镜面。', default: { "particleSize": 8.3, "particleColor": "#fc33ff", "scanSpeed": 0.36, "titleText": "圆形", "titleSize": 45, "unitText": "粒子图表", "unitSize": 19, "textColor": "#ffffff", "line2": 0.015, "lineColor": "#004940" }, defaultObject3D: { position: { x: 0, y: 0.04, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { particleSize: { name: '粒子大小', com: 'Slider', min: 1, max: 28, step: 0.1 }, particleColor: { name: '粒子颜色', com: 'ColorPicker' }, scanSpeed: { name: '扫描速度', com: 'Slider', min: -1, max: 1, step: 0.01 }, titleText: { name: '标题文字', com: 'Text' }, titleSize: { name: '标题大小', com: 'Slider', min: 10, max: 96, step: 1 }, unitText: { name: '单位文字', com: 'Text' }, unitSize: { name: '单位大小', com: 'Slider', min: 8, max: 64, step: 1 }, textColor: { name: '文字颜色', com: 'ColorPicker' }, line2: { name: 'line2', com: 'Slider', min: 0.006, max: 0.18, step: 0.001 }, lineColor: { name: '边框线颜色', com: 'ColorPicker' }, }, }, { name: '简单柱体图表', type: 'simpleColumn', comFile: './src/components/simpleColumn/index.vue', previewPath: './preview/simpleColumn.png', default: { spacing: 0, // 间距 distribution: 'proportional', // 布局方式 width: 4 / 3, // 宽度 titleSize: 10, // 标题大小 fontColor: '#ffffff', materialType: 'MeshPhysicalMaterial', metalness: 0.5, roughness: 0.5, clearcoat: 0.2, clearcoatRoughness: 0.1, reflectivity: 0.5, opacity: 1, jsonText: `[ { value: 43, title: '%',color:'#5072c4' }, { value: 24, title: '%', color:'#92cb79' }, { value: 12, title: '%', color:'#fcc660' }, { value: 39, title: '%', color:'#f8285b' }, { value: 14, title: '%', color:'#ff0ecb' }, ]`, }, defaultObject3D: { position: { x: 0, y: 0.1, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: Math.PI / 2, z: 0 }, }, config: { spacing: { name: '柱体间距', com: 'Slider', min: 0, max: 1, step: 0.01 }, distribution: { name: '布局方式', com: 'Select', options: ['uniform', 'proportional'].map(item => ({ label: item, value: item, })), }, width: { name: '总宽度', com: 'Slider', min: 0.01, max: 3, step: 0.01 }, titleSize: { name: '标题大小', com: 'Slider', min: 1, max: 32, step: 0.2 }, fontColor: { name: '字体颜色', com: 'ColorPicker' }, materialType: { name: '材质类型', com: 'Select', options: ['MeshBasicMaterial', 'MeshLambertMaterial', 'MeshPhongMaterial', 'MeshStandardMaterial', 'MeshPhysicalMaterial', 'MeshToonMaterial', 'MeshGlassMaterial'].map(item => ({ label: item, value: item, })), }, metalness: { name: '金属度', com: 'Slider', min: 0, max: 1, step: 0.01 }, roughness: { name: '粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 }, clearcoat: { name: '清晰度', com: 'Slider', min: 0, max: 1, step: 0.01 }, clearcoatRoughness: { name: '清晰度粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 }, reflectivity: { name: '反射率', com: 'Slider', min: 0, max: 1, step: 0.01 }, opacity: { name: '透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, jsonText: { name: '数据配置', com: 'jsonText' }, }, }, { name: '高级树组件', type: 'ezTreeCom', comFile: './src/components/ezTreeCom.vue', previewPath: './preview/ezTreeCom.png', description: `开源 ez-tree 组件,实现高级树模型展示,配置生成器,SavePreset 导出配置。`, default: { isUpdate: true, jsonText: `{ "seed": 36330, "type": "deciduous", "bark": { "type": "oak", "tint": 13552830, "flatShading": false, "textured": true, "textureScale": { "x": 0.5, "y": 5 } }, "branch": { "levels": 3, "angle": { "1": 48, "2": 75, "3": 60 }, "children": { "0": 7, "1": 4, "2": 3 }, "force": { "direction": { "x": 0, "y": 1, "z": 0 }, "strength": -0.06 }, "gnarliness": { "0": 0.03, "1": 0.25, "2": 0.2, "3": 0.09 }, "length": { "0": 43.47, "1": 27.14, "2": 9.51, "3": 4.6 }, "radius": { "0": 2, "1": 0.63, "2": 0.76, "3": 0.7 }, "sections": { "0": 12, "1": 8, "2": 6, "3": 4 }, "segments": { "0": 12, "1": 6, "2": 4, "3": 3 }, "start": { "1": 0.23, "2": 0.33, "3": 0 }, "taper": { "0": 0.7, "1": 0.7, "2": 0.7, "3": 0.7 }, "twist": { "0": 0.09, "1": -0.07, "2": 0, "3": 0 } }, "leaves": { "type": "ash", "billboard": "double", "angle": 55, "count": 16, "start": 0, "size": 2.67, "sizeVariance": 0.72, "tint": 16777215, "alphaTest": 0.5 }, "trellis": { "enabled": false, "position": { "x": 0, "y": 0, "z": -2 }, "width": 10, "height": 20, "spacing": 2, "force": { "strength": 0.02, "maxDistance": 3, "falloff": 1 }, "cylinderRadius": 0.05, "visible": true, "color": 9127187 } }`, }, defaultObject3D: {}, config: { randomizeAction: { name: '随机生成树', com: 'ActionButton', action: 'randomizeTreeConfig', }, isUpdate: { name: '摆动', com: 'Switch' }, jsonText: { name: 'ez-tree配置', com: 'jsonText' }, }, }, { name: '超级能量盾组件', type: 'superEnergyShieldComponent', comFile: './src/components/superEnergyShieldComponent.vue', previewPath: './preview/superEnergyShieldComponent.gif', default: { color: '#26aeff', edgeWidth: 0.06, enableSelfHit: false, fadeStart: 0, flashIntensity: 0.11, flashSpeed: 0.6, flowIntensity: 4, flowScale: 2.4, flowSpeed: 1.13, fresnelPower: 1.8, fresnelStrength: 1.75, hexOpacity: 0.13, hexScale: 3, hitDuration: 1.8, hitImpactRadius: 0.3, hitIntensity: 4.1, hitMaxRadius: 0.85, hitRingSpeed: 1.75, hitRingWidth: 0.12, noiseEdgeColor: '#26aeff', noiseEdgeIntensity: 10, noiseEdgeSmoothness: 0.5, noiseEdgeWidth: 0.02, noiseScale: 1.3, opacity: 0.76, showHex: true, }, defaultObject3D: { position: { x: 0, y: 2, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { color: { name: '护盾颜色', com: 'ColorPicker' }, opacity: { name: '整体透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, showHex: { name: '显示六边形', com: 'Switch' }, hexScale: { name: '六边形密度', com: 'Slider', min: 1, max: 20, step: 0.5 }, hexOpacity: { name: '六边形强度', com: 'Slider', min: 0, max: 1, step: 0.01 }, edgeWidth: { name: '六边形边缘宽度', com: 'Slider', min: 0.01, max: 0.2, step: 0.005 }, fresnelPower: { name: '菲涅耳幂值', com: 'Slider', min: 0.5, max: 5, step: 0.1 }, fresnelStrength: { name: '菲涅耳强度', com: 'Slider', min: 0, max: 3, step: 0.05 }, fadeStart: { name: '底部渐隐起点', com: 'Slider', min: -1, max: 1, step: 0.01 }, flashSpeed: { name: '光闪速度', com: 'Slider', min: 0.5, max: 8, step: 0.1 }, flashIntensity: { name: '光闪强度', com: 'Slider', min: 0, max: 1, step: 0.01 }, noiseScale: { name: '噪声缩放', com: 'Slider', min: 0.5, max: 10, step: 0.1 }, noiseEdgeColor: { name: '噪声边缘颜色', com: 'ColorPicker' }, noiseEdgeWidth: { name: '噪声边缘宽度', com: 'Slider', min: 0.01, max: 0.5, step: 0.01 }, noiseEdgeIntensity: { name: '噪声边缘强度', com: 'Slider', min: 0, max: 10, step: 0.1 }, noiseEdgeSmoothness: { name: '噪声边缘柔滑', com: 'Slider', min: 0, max: 1, step: 0.01 }, flowScale: { name: '流动噪声缩放', com: 'Slider', min: 0.1, max: 8, step: 0.1 }, flowSpeed: { name: '流动速度', com: 'Slider', min: 0, max: 2, step: 0.01 }, flowIntensity: { name: '流动强度', com: 'Slider', min: 0, max: 4, step: 0.05 }, hitRingSpeed: { name: '冲击环扩散速度', com: 'Slider', min: 0.1, max: 6, step: 0.05 }, hitRingWidth: { name: '冲击环宽度', com: 'Slider', min: 0.01, max: 0.5, step: 0.01 }, hitMaxRadius: { name: '冲击最大扩散半径', com: 'Slider', min: 0.2, max: 3.14, step: 0.05 }, hitDuration: { name: '冲击持续时间', com: 'Slider', min: 0.5, max: 6, step: 0.1 }, hitIntensity: { name: '冲击强度', com: 'Slider', min: 0, max: 8, step: 0.1 }, hitImpactRadius: { name: '命中区域半径', com: 'Slider', min: 0.1, max: 1.5, step: 0.05 }, enableSelfHit: { name: '启用自点击冲击', com: 'Switch' }, }, }, { name: '光速护盾展开组件', type: 'lightSpeedShieldDeployComponent', comFile: './src/components/lightSpeedShieldDeployComponent.vue', previewPath: './preview/lightSpeedShieldDeployComponent.jpg', default: { autoAnimate: true, collapseDuration: 0.35, coreColor: '#69f6ff', coreIntensity: 2.2, coreRadiusRatio: 0.58, deployDuration: 0.86, deployProgress: 1, deployToken: 0, fresnelStrength: 1.9, hexColor: '#2e91ff', hexOpacity: 0.86, hexScale: 5.7, hexWidth: 0.075, holdDuration: 1.15, hotColor: '#e7ffff', noiseScale: 2.1, noiseSpeed: 0.62, opacity: 0.78, pulseIntensity: 0.8, pulseSpeed: 1.15, radius: 1.8, rimColor: '#baf7ff', shellColor: '#48c8ff', startScale: 0.32, sweepIntensity: 1.55, sweepWidth: 0.18, }, defaultObject3D: { position: { x: 0, y: 1.8, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { autoAnimate: { name: '自动循环展开', com: 'Switch' }, triggerDeploy: { name: '重播展开', com: 'ActionButton', action: 'triggerDeployAction' }, deployProgress: { name: '手动展开进度', com: 'Slider', min: 0, max: 1, step: 0.01 }, deployDuration: { name: '展开时长', com: 'Slider', min: 0.12, max: 5, step: 0.01 }, holdDuration: { name: '保持时长', com: 'Slider', min: 0, max: 6, step: 0.05 }, collapseDuration: { name: '收回时长', com: 'Slider', min: 0.08, max: 3, step: 0.01 }, radius: { name: '护盾半径', com: 'Slider', min: 0.2, max: 8, step: 0.05 }, coreRadiusRatio: { name: '内核尺寸比例', com: 'Slider', min: 0.1, max: 0.95, step: 0.01 }, startScale: { name: '初始收束比例', com: 'Slider', min: 0.02, max: 1, step: 0.01 }, opacity: { name: '整体透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, shellColor: { name: '外壳颜色', com: 'ColorPicker' }, hexColor: { name: '六边形颜色', com: 'ColorPicker' }, rimColor: { name: '边缘辉光颜色', com: 'ColorPicker' }, coreColor: { name: '内核颜色', com: 'ColorPicker' }, hotColor: { name: '内核高光颜色', com: 'ColorPicker' }, hexScale: { name: '六边形密度', com: 'Slider', min: 1, max: 18, step: 0.1 }, hexWidth: { name: '六边形边宽', com: 'Slider', min: 0.01, max: 0.2, step: 0.005 }, hexOpacity: { name: '六边形强度', com: 'Slider', min: 0, max: 2, step: 0.01 }, fresnelStrength: { name: '菲涅尔强度', com: 'Slider', min: 0, max: 6, step: 0.05 }, sweepWidth: { name: '展开扫光宽度', com: 'Slider', min: 0.02, max: 0.8, step: 0.01 }, sweepIntensity: { name: '展开扫光强度', com: 'Slider', min: 0, max: 5, step: 0.05 }, noiseScale: { name: '流动噪声尺度', com: 'Slider', min: 0.1, max: 10, step: 0.1 }, noiseSpeed: { name: '流动噪声速度', com: 'Slider', min: 0, max: 4, step: 0.01 }, pulseSpeed: { name: '脉冲速度', com: 'Slider', min: 0, max: 5, step: 0.01 }, pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, coreIntensity: { name: '内核发光强度', com: 'Slider', min: 0, max: 8, step: 0.05 }, }, }, { name: '箱式隔间容器', type: 'binsContainerComponent', comFile: './src/components/binsContainer/index.vue', previewPath: './preview/binsContainerComponent.png', default: { width: 320, height: 130, depth: 560, binColor: '#60a5fa', radius: 25, thickness: 5, divideWidth: 0.55, divideDepth: 0.45, outerGap: 2.5, innerGap: 2.5, generationType: 'Recursive', iterations: 1, rows: 2, cols: 2, showOuterBox: true, showInnerBins: true, showMeasurements: true, showIndexNumbers: true, }, defaultObject3D: { position: { x: 0, y: 0.12, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { width: { name: 'Box Width (mm)', com: 'Slider', min: 60, max: 1200, step: 1 }, height: { name: 'Box Height (mm)', com: 'Slider', min: 35, max: 450, step: 1 }, depth: { name: 'Box Depth (mm)', com: 'Slider', min: 100, max: 850, step: 1 }, binColor: { name: 'Bin Material Color', com: 'ColorPicker' }, radius: { name: 'Bin Radius (mm)', com: 'Slider', min: 0, max: 150, step: 1 }, thickness: { name: 'Bin Thickness (mm)', com: 'Slider', min: 2, max: 20, step: 0.1 }, divideWidth: { name: 'Width Division', com: 'Slider', min: 0.1, max: 0.9, step: 0.01 }, divideDepth: { name: 'Depth Division', com: 'Slider', min: 0.1, max: 0.9, step: 0.01 }, outerGap: { name: 'Outer Gap (mm)', com: 'Slider', min: 0, max: 20, step: 0.1 }, innerGap: { name: 'Inner Gap (mm)', com: 'Slider', min: 0, max: 20, step: 0.1 }, generationType: { name: 'Generation Type', com: 'Select', options: ['Recursive', 'Grid'].map(item => ({ label: item, value: item, })), }, iterations: { name: 'Iterations', com: 'Slider', min: 0, max: 3, step: 1 }, rows: { name: 'Rows', com: 'Slider', min: 1, max: 10, step: 1 }, cols: { name: 'Columns', com: 'Slider', min: 1, max: 10, step: 1 }, showOuterBox: { name: 'Show Outer Box', com: 'Switch' }, showInnerBins: { name: 'Show Inner Bins', com: 'Switch' }, showMeasurements: { name: 'Show Measurements', com: 'Switch' }, showIndexNumbers: { name: 'Show Index Numbers', com: 'Switch' }, }, }, { name: '聚能光球汇聚组件', type: 'chargeOrbGatherComponent', comFile: './src/components/chargeOrbGatherComponent.vue', previewPath: './preview/chargeOrbGatherComponent.gif', default: { autoAnimate: true, chargeProgress: 0.72, cycleDuration: 2.4, orbMaxSize: 0.4, glowEnabled: false, glowSizeMult: 1.7, glowColorInner: '#cb5151', glowColorOuter: '#000000', glowEmission: 1.6, glowFalloffPower: 6, glowEdgeSoftness: 4, orbCoreColor: '#eaf8fc', orbRimColor: '#0c61f5', fresnelEmission: 1.8, fresnelPower: 0.1, bodyFalloff: 5.6, coreFalloff: 4.4, coreBoost: 2.3, noiseColor: '#128bff', noiseScale: 0.4, noiseSpeed: 1.35, flowIntensity: 4.7, warpStrength: 2.3, particleCount: 16, particleWidth: 0.1, particleLength: 0.13, particleSpeed: 3.9, particleSpawnRadius: 2.1, particleColor: '#59afff', particleLifetime: 0.6, particleTurbulence: 1.1, particleEmission: 3, }, defaultObject3D: { position: { x: 0, y: 1.15, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { autoAnimate: { name: '自动蓄力', com: 'Switch' }, chargeProgress: { name: '外部蓄力进度', com: 'Slider', min: 0, max: 1, step: 0.01 }, cycleDuration: { name: '自动循环时长', com: 'Slider', min: 0.6, max: 8, step: 0.05 }, orbMaxSize: { name: '光球最大尺寸', com: 'Slider', min: 0.01, max: 3, step: 0.01 }, glowEnabled: { name: '开启外层辉光', com: 'Switch' }, glowSizeMult: { name: '辉光尺寸倍率', com: 'Slider', min: 1, max: 10, step: 0.1 }, glowColorInner: { name: '辉光内层颜色', com: 'ColorPicker' }, glowColorOuter: { name: '辉光外层颜色', com: 'ColorPicker' }, glowEmission: { name: '辉光发光强度', com: 'Slider', min: 0, max: 8, step: 0.05 }, glowFalloffPower: { name: '辉光衰减曲线', com: 'Slider', min: 0.1, max: 8, step: 0.1 }, glowEdgeSoftness: { name: '辉光边缘柔化', com: 'Slider', min: 0.1, max: 8, step: 0.1 }, orbCoreColor: { name: '球心颜色', com: 'ColorPicker' }, orbRimColor: { name: '边缘颜色', com: 'ColorPicker' }, fresnelEmission: { name: '菲涅尔发光', com: 'Slider', min: 0.1, max: 30, step: 0.1 }, fresnelPower: { name: '菲涅尔曲线', com: 'Slider', min: 0.1, max: 4, step: 0.05 }, bodyFalloff: { name: '主体衰减', com: 'Slider', min: 0.1, max: 8, step: 0.1 }, coreFalloff: { name: '球心收束', com: 'Slider', min: 0.5, max: 10, step: 0.1 }, coreBoost: { name: '球心增强', com: 'Slider', min: 0, max: 10, step: 0.1 }, noiseColor: { name: '流动噪声颜色', com: 'ColorPicker' }, noiseScale: { name: '噪声尺度', com: 'Slider', min: 0.1, max: 20, step: 0.1 }, noiseSpeed: { name: '噪声速度', com: 'Slider', min: 0, max: 4, step: 0.05 }, flowIntensity: { name: '流动强度', com: 'Slider', min: 0, max: 15, step: 0.1 }, warpStrength: { name: '扭曲强度', com: 'Slider', min: 0, max: 8, step: 0.1 }, particleCount: { name: '粒子数量', com: 'Slider', min: 1, max: 40, step: 1 }, particleWidth: { name: '粒子宽度', com: 'Slider', min: 0.005, max: 0.3, step: 0.005 }, particleLength: { name: '粒子长度', com: 'Slider', min: 0.005, max: 0.5, step: 0.005 }, particleSpeed: { name: '粒子汇聚速度', com: 'Slider', min: 0.1, max: 10, step: 0.1 }, particleSpawnRadius: { name: '粒子生成半径', com: 'Slider', min: 0.1, max: 5, step: 0.05 }, particleColor: { name: '粒子颜色', com: 'ColorPicker' }, particleLifetime: { name: '粒子寿命', com: 'Slider', min: 0.1, max: 3, step: 0.05 }, particleTurbulence: { name: '粒子扰动', com: 'Slider', min: 0, max: 5, step: 0.05 }, particleEmission: { name: '粒子发光', com: 'Slider', min: 0.1, max: 20, step: 0.1 }, }, }, { name: '充能爆裂环组件', type: 'chargedBlastRingsComponent', comFile: './src/components/chargedBlastRingsComponent.vue', previewPath: './preview/chargedBlastRingsComponent.png', default: { autoPlay: true, burstToken: 0, loopInterval: 1.6, fireDirectionX: 0, fireDirectionY: 0, fireDirectionZ: -1, fireSpeed: 11, maxDistance: 60, carrierRadius: 0.5, carrierTailLength: 1.2, ringMaxRadius: 0.6, ringTubeRatio: 0.15, ringInterval: 0.27, ringLifetime: 0.75, ringSpeed: 3.5, ringColorA: '#a9ffff', ringColorB: '#03ffff', ringEmission: 4, ringGradientAngle: -30, ringPeakAt: 2.5, ringMaxCount: 2, }, defaultObject3D: { position: { x: 0, y: 1.15, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { autoPlay: { name: '自动循环发射', com: 'Switch' }, loopInterval: { name: '循环间隔', com: 'Slider', min: 0.2, max: 10, step: 0.05 }, fireDirectionX: { name: '发射方向 X', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireDirectionY: { name: '发射方向 Y', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireDirectionZ: { name: '发射方向 Z', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireSpeed: { name: '发射速度', com: 'Slider', min: 0.1, max: 60, step: 0.1 }, maxDistance: { name: '最远距离', com: 'Slider', min: 0.5, max: 120, step: 0.5 }, carrierRadius: { name: '环起始半径', com: 'Slider', min: 0.01, max: 2, step: 0.01 }, carrierTailLength: { name: '环回扫尾长', com: 'Slider', min: 0.05, max: 4, step: 0.05 }, ringMaxRadius: { name: '圆环最大尺寸', com: 'Slider', min: 0.01, max: 2, step: 0.01 }, ringTubeRatio: { name: '圆环厚度比', com: 'Slider', min: 0.01, max: 0.3, step: 0.01 }, ringInterval: { name: '生成间隔', com: 'Slider', min: 0.01, max: 2, step: 0.01 }, ringLifetime: { name: '圆环寿命', com: 'Slider', min: 0.05, max: 3, step: 0.05 }, ringSpeed: { name: '回扫速度', com: 'Slider', min: 0.1, max: 15, step: 0.1 }, ringColorA: { name: '圆环颜色 A', com: 'ColorPicker' }, ringColorB: { name: '圆环颜色 B', com: 'ColorPicker' }, ringEmission: { name: '圆环发光', com: 'Slider', min: 0, max: 20, step: 0.1 }, ringGradientAngle: { name: '渐变角度', com: 'Slider', min: -180, max: 180, step: 1 }, ringPeakAt: { name: '扩散峰值偏移', com: 'Slider', min: 1, max: 8, step: 0.1 }, ringMaxCount: { name: '同屏最大数量', com: 'Slider', min: 1, max: 16, step: 1 }, }, }, { name: '充能爆裂炮弹组件', type: 'chargedBlastProjectileComponent', comFile: './src/components/chargedBlastProjectileComponent.vue', previewPath: './preview/chargedBlastProjectileComponent.png', default: { autoPlay: true, shotToken: 0, loopInterval: 1.6, fireDirectionX: 0, fireDirectionY: 0, fireDirectionZ: -1, fireSpeed: 11, maxDistance: 60, projRadius: 0.5, projTailLength: 1.2, projColorA: '#0051dc', projColorC: '#a9ffff', projColorB: '#e0ffff', projGradientSpeed: 1.9, projBandWidth: 0.25, projFresnelColor: '#abe5ff', projFresnelPower: 2, projFresnelEmit: 1.3, projPulseScale: 1.2, projPulseSpeed: 16, trailColor: '#32bef0', trailOpacity: 0.54, trailWidth: 1.17, trailLength: 3.2, trailSegments: 20, trailEdgeSoftness: 4.7, }, defaultObject3D: { position: { x: 0, y: 1.15, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { autoPlay: { name: '自动循环发射', com: 'Switch' }, loopInterval: { name: '循环间隔', com: 'Slider', min: 0.2, max: 10, step: 0.05 }, fireDirectionX: { name: '发射方向 X', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireDirectionY: { name: '发射方向 Y', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireDirectionZ: { name: '发射方向 Z', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireSpeed: { name: '发射速度', com: 'Slider', min: 0.1, max: 60, step: 0.1 }, maxDistance: { name: '最远距离', com: 'Slider', min: 0.5, max: 120, step: 0.5 }, triggerShot: { name: '发射一次', com: 'ActionButton', action: 'triggerShotAction' }, projRadius: { name: '炮弹半径', com: 'Slider', min: 0.01, max: 1, step: 0.01 }, projTailLength: { name: '炮弹尾长', com: 'Slider', min: 0.05, max: 3, step: 0.05 }, projColorA: { name: '炮弹颜色 A', com: 'ColorPicker' }, projColorC: { name: '炮弹颜色 C', com: 'ColorPicker' }, projColorB: { name: '炮弹颜色 B', com: 'ColorPicker' }, projGradientSpeed: { name: '渐变流速', com: 'Slider', min: 0, max: 10, step: 0.1 }, projBandWidth: { name: '色带宽度', com: 'Slider', min: 0.05, max: 3, step: 0.05 }, projFresnelColor: { name: '边缘颜色', com: 'ColorPicker' }, projFresnelPower: { name: '边缘曲线', com: 'Slider', min: 0.1, max: 10, step: 0.1 }, projFresnelEmit: { name: '边缘发光', com: 'Slider', min: 0, max: 5, step: 0.05 }, projPulseScale: { name: '脉冲缩放', com: 'Slider', min: 1, max: 2, step: 0.01 }, projPulseSpeed: { name: '脉冲速度', com: 'Slider', min: 0.5, max: 20, step: 0.1 }, trailColor: { name: '尾迹颜色', com: 'ColorPicker' }, trailOpacity: { name: '尾迹透明', com: 'Slider', min: 0, max: 1, step: 0.01 }, trailWidth: { name: '尾迹宽度', com: 'Slider', min: 0.01, max: 2, step: 0.01 }, trailLength: { name: '尾迹长度', com: 'Slider', min: 0.1, max: 10, step: 0.1 }, trailSegments: { name: '尾迹分段', com: 'Slider', min: 3, max: 64, step: 1 }, trailEdgeSoftness: { name: '尾迹边缘柔化', com: 'Slider', min: 0.1, max: 8, step: 0.1 }, }, }, { name: '充能爆裂释放组件', type: 'chargedBlastReleaseComponent', comFile: './src/components/chargedBlastReleaseComponent.vue', previewPath: './preview/chargedBlastReleaseComponent.gif', default: { autoPlay: true, shotToken: 0, loopInterval: 1.6, fireDirectionX: 0, fireDirectionY: 0, fireDirectionZ: -1, fireSpeed: 11, maxDistance: 60, blastRadius: 0.5, blastLength: 1.2, blastColor: '#0051dc', coreColor: '#a9ffff', accentColor: '#e0ffff', energy: 1, pulseScale: 1.2, ringInterval: 0.27, }, defaultObject3D: { position: { x: 0, y: 1.15, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { autoPlay: { name: '自动循环发射', com: 'Switch' }, loopInterval: { name: '循环间隔', com: 'Slider', min: 0.2, max: 10, step: 0.05 }, fireDirectionX: { name: '发射方向 X', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireDirectionY: { name: '发射方向 Y', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireDirectionZ: { name: '发射方向 Z', com: 'Slider', min: -1, max: 1, step: 0.01 }, fireSpeed: { name: '发射速度', com: 'Slider', min: 0.1, max: 60, step: 0.1 }, maxDistance: { name: '最远距离', com: 'Slider', min: 0.5, max: 120, step: 0.5 }, triggerShot: { name: '发射一次', com: 'ActionButton', action: 'triggerShotAction' }, blastRadius: { name: '炮弹半径', com: 'Slider', min: 0.01, max: 1, step: 0.01 }, blastLength: { name: '炮弹尾长', com: 'Slider', min: 0.05, max: 3, step: 0.05 }, blastColor: { name: '主体颜色', com: 'ColorPicker' }, coreColor: { name: '能量颜色', com: 'ColorPicker' }, accentColor: { name: '高光颜色', com: 'ColorPicker' }, energy: { name: '整体能量', com: 'Slider', min: 0.3, max: 2.5, step: 0.01 }, pulseScale: { name: '脉冲缩放', com: 'Slider', min: 1, max: 2, step: 0.01 }, ringInterval: { name: '环生成间隔', com: 'Slider', min: 0.01, max: 2, step: 0.01 }, }, }, { name: '眩目光环', type: 'vertigoHaloComponent', comFile: './src/components/vertigoHaloComponent.vue', previewPath: './preview/vertigoHaloComponent.svg', default: { voidColor: '#220033', baseColor: '#cc1133', accentColor: '#ff2244', highlightColor: '#c8956c', opacity: 0.92, gradientSpeed: 0.2, tunnelSpeed: 0.15, rotationSpeed: 0.35, ringFrequency: 10, segmentCount: 16, pulseIntensity: 1, flashIntensity: 1, edgeGlow: 1, }, defaultObject3D: { position: { x: 0, y: 0.08, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { gradientSpeed: { name: '渐变速度', com: 'Slider', min: -1, max: 1, step: 0.01 }, tunnelSpeed: { name: '隧道推进', com: 'Slider', min: 0, max: 1.5, step: 0.01 }, rotationSpeed: { name: '旋转漂移', com: 'Slider', min: 0, max: 1.5, step: 0.01 }, ringFrequency: { name: '环带密度', com: 'Slider', min: 4, max: 24, step: 1 }, segmentCount: { name: '角向分段', com: 'Slider', min: 6, max: 32, step: 1 }, pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 2, step: 0.01 }, flashIntensity: { name: '闪爆强度', com: 'Slider', min: 0, max: 2, step: 0.01 }, edgeGlow: { name: '边缘辉光', com: 'Slider', min: 0, max: 2, step: 0.01 }, opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, voidColor: { name: '暗部颜色', com: 'ColorPicker' }, baseColor: { name: '主体颜色', com: 'ColorPicker' }, accentColor: { name: '霓虹颜色', com: 'ColorPicker' }, highlightColor: { name: '高光颜色', com: 'ColorPicker' }, }, }, { name: '公交线网', type: 'busLineNetworkComponent', comFile: './src/components/busLineNetworkComponent.vue', previewPath: './preview/busLineNetworkComponent.svg', description: '基于 Mars3D 北京公交 GeoJSON 数据渲染的三维线网组件,支持原始定位、采样、分层高度与脉冲效果。', default: { baseHeight: 0.06, colorTheme: 'green', dataUrl: 'https://dcser.icegl.cn/data/bj-bus.json', dataUrlDraft: 'https://dcser.icegl.cn/data/bj-bus.json', heightGroups: 9, heightStep: 0.055, lineWidth: 0.01, lineWidthScale: 1, mapScale: 0.00003, maxRoutes: 1222, opacity: 0.82, pointSampleStep: 2, pulseIntensity: 0.28, pulseSpeed: 0.55, }, defaultObject3D: { position: { x: 0, y: 0.02, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { dataUrlDraft: { name: '数据源URL', com: 'Text' }, applyDataUrl: { name: '确认生成', com: 'ActionButton', action: 'applyDataUrlAction' }, applyNativeGeoPosition: { name: '原始定位', com: 'ActionButton', action: 'applyNativeGeoPosition' }, mapScale: { name: '地图缩放', com: 'Slider', min: 0.000005, max: 0.00008, step: 0.000001 }, maxRoutes: { name: '线路数量', com: 'Slider', min: 10, max: 1222, step: 1 }, pointSampleStep: { name: '点采样步长', com: 'Slider', min: 1, max: 8, step: 1 }, heightGroups: { name: '分层数量', com: 'Slider', min: 1, max: 12, step: 1 }, baseHeight: { name: '基础高度', com: 'Slider', min: 0, max: 0.5, step: 0.005 }, heightStep: { name: '分层高度', com: 'Slider', min: 0, max: 0.2, step: 0.005 }, lineWidth: { name: '线宽', com: 'Slider', min: 0.001, max: 0.05, step: 0.001 }, lineWidthScale: { name: '线宽倍数', com: 'Slider', min: 1, max: 30, step: 1 }, opacity: { name: '透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, colorTheme: { name: '配色', com: 'Select', options: [ { label: '绿阶', value: 'green' }, { label: '青蓝', value: 'cyan' }, { label: '暖光', value: 'warm' }, ], }, pulseSpeed: { name: '脉冲速度', com: 'Slider', min: 0, max: 6, step: 0.05 }, pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 1, step: 0.01 }, }, }, { name: '光晕线', type: 'polylineGlowComponent', comFile: './src/components/polylineGlowComponent.vue', previewPath: './preview/polylineGlowComponent.svg', description: '参考 Mars3D PolylineGlow 发光线 (ex_4_1_1):基于 GeoJSON 数据源渲染,支持确认生成与原始定位。', default: { color: '#FF4500', dataUrl: 'https://dcser.icegl.cn/data/wuhan-line3.json', dataUrlDraft: 'https://dcser.icegl.cn/data/wuhan-line3.json', glowColor: '#FFD27A', glowPower: 0.1, opacity: 0.9, width: 0.05, widthScale: 1, }, defaultObject3D: { position: { x: 0, y: 0.02, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { dataUrlDraft: { name: '数据源URL', com: 'Text' }, applyDataUrl: { name: '确认生成', com: 'ActionButton', action: 'applyDataUrlAction' }, applyNativeGeoPosition: { name: '原始定位', com: 'ActionButton', action: 'applyNativeGeoPosition' }, width: { name: '线宽', com: 'Slider', min: 0.001, max: 1, step: 0.001 }, widthScale: { name: '线宽倍数', com: 'Slider', min: 0.1, max: 30, step: 0.1 }, glowPower: { name: '发光强度', com: 'Slider', min: 0.01, max: 1, step: 0.01 }, opacity: { name: '透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, color: { name: '线本体颜色', com: 'ColorPicker' }, glowColor: { name: '反光颜色', com: 'ColorPicker' }, }, }, { name: '电流纹波面板', type: 'currentRipplePanelComponent', comFile: './src/components/currentRipplePanelComponent.vue', previewPath: './preview/currentRipplePanelComponent.gif', default: { baseColor: '#081321', currentColor: '#18c8ff', flowSpeed: 1, gridDensity: 26, highlightColor: '#f0fcff', length: 4, opacity: 0.95, pulseFrequency: 0.48, pulseIntensity: 1.12, rippleScale: 1, shimmerIntensity: 1.18, width: 4, wireWidth: 0.08, }, defaultObject3D: { position: { x: 0, y: 0.105, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { length: { name: '面板长度', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, width: { name: '面板宽度', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, gridDensity: { name: '网格密度', com: 'Slider', min: 6, max: 72, step: 1 }, wireWidth: { name: '导线宽度', com: 'Slider', min: 0.02, max: 0.22, step: 0.005 }, pulseFrequency: { name: '脉冲频率', com: 'Slider', min: 0.05, max: 3, step: 0.01 }, pulseIntensity: { name: '脉冲强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, rippleScale: { name: '纹波尺度', com: 'Slider', min: 0.4, max: 3, step: 0.01 }, flowSpeed: { name: '流动速度', com: 'Slider', min: 0, max: 3, step: 0.01 }, shimmerIntensity: { name: '高光强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, baseColor: { name: '基底颜色', com: 'ColorPicker' }, currentColor: { name: '电流颜色', com: 'ColorPicker' }, highlightColor: { name: '高光颜色', com: 'ColorPicker' }, }, }, { name: '月光涟漪水面', type: 'moonlitRippleWaterPanelComponent', comFile: './src/components/moonlitRippleWaterPanelComponent.vue', previewPath: './preview/moonlitRippleWaterPanelComponent.gif', default: { cameraTilt: 0.15, deepColor: '#07131f', fresnelStrength: 1, moonColor: '#eef6ff', moonGlow: 1, opacity: 0.95, rippleSpeed: 0.5, shallowColor: '#2f7ca6', size: 4, waveIntensity: 1, }, defaultObject3D: { position: { x: 0, y: 0.04, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { size: { name: '水面尺寸', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, rippleSpeed: { name: '涟漪速度', com: 'Slider', min: 0.1, max: 1.5, step: 0.05 }, moonGlow: { name: '月光强度', com: 'Slider', min: 0.3, max: 2, step: 0.05 }, cameraTilt: { name: '视角倾斜', com: 'Slider', min: -0.3, max: 1, step: 0.01 }, waveIntensity: { name: '波浪强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, fresnelStrength: { name: '菲涅尔强度', com: 'Slider', min: 0, max: 2, step: 0.01 }, opacity: { name: '整体透明', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, deepColor: { name: '深水颜色', com: 'ColorPicker' }, shallowColor: { name: '浅水颜色', com: 'ColorPicker' }, moonColor: { name: '月光颜色', com: 'ColorPicker' }, }, }, { name: '水滴玻璃材质', type: 'waterDropGlassMaterialComponent', comFile: './src/components/waterDropGlassMaterialComponent/index.vue', previewPath: './preview/waterDropGlassMaterialComponent.gif', default: { "attenuationDistance": 3.26, "clearcoat": 1, "clearcoatRoughness": 0.3, "collisionRadius": 0.47000000000000003, "collisionRadiusIncrease": 0.0014, "dropletGlow": 0.08, "dropletRoughness": 0.21, "dropletSizeMax": 5, "dropletSizeMin": 2, "dropletsRate": 120, "glassColor": "#dff4ff", "globalTimeScale": 1.43, "ior": 2.174, "length": 4.5, "maxDropRadius": 50, "metalness": 0.17, "minDropRadius": 20, "normalStrength": 1.37, "opacity": 1, "rainAmount": 1.1400000000000001, "rainChance": 0.29999999999999993, "rainLimit": 6, "roughness": 0.18, "thickness": 0.15, "trailRate": 1, "transmission": 0.98, "width": 3.3000000000000003 }, defaultObject3D: { position: { x: 0, y: 1.7, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { length: { name: '玻璃长度', com: 'Slider', min: 0.5, max: 12, step: 0.1 }, width: { name: '玻璃宽度', com: 'Slider', min: 0.5, max: 12, step: 0.1 }, thickness: { name: '玻璃厚度', com: 'Slider', min: 0.02, max: 1, step: 0.01 }, glassColor: { name: '玻璃染色', com: 'ColorPicker' }, transmission: { name: '透射强度', com: 'Slider', min: 0, max: 1, step: 0.01 }, ior: { name: '折射率', com: 'Slider', min: 1, max: 2.333, step: 0.001 }, roughness: { name: '基础粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 }, metalness: { name: '金属度', com: 'Slider', min: 0, max: 1, step: 0.01 }, clearcoat: { name: '清漆层', com: 'Slider', min: 0, max: 1, step: 0.01 }, clearcoatRoughness: { name: '清漆粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 }, attenuationDistance: { name: '吸收距离', com: 'Slider', min: 0, max: 12, step: 0.01 }, normalStrength: { name: '雨滴法线强度', com: 'Slider', min: 0, max: 2, step: 0.01 }, dropletRoughness: { name: '雨滴粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 }, dropletGlow: { name: '雨滴高光增强', com: 'Slider', min: 0, max: 1, step: 0.01 }, rainAmount: { name: '雨量强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, minDropRadius: { name: '最小雨滴半径', com: 'Slider', min: 6, max: 60, step: 1 }, maxDropRadius: { name: '最大雨滴半径', com: 'Slider', min: 10, max: 100, step: 1 }, rainChance: { name: '落滴概率', com: 'Slider', min: 0, max: 1, step: 0.01 }, rainLimit: { name: '单帧落滴上限', com: 'Slider', min: 0, max: 20, step: 1 }, dropletsRate: { name: '微滴生成速率', com: 'Slider', min: 0, max: 400, step: 1 }, dropletSizeMin: { name: '微滴最小尺寸', com: 'Slider', min: 0.5, max: 12, step: 0.1 }, dropletSizeMax: { name: '微滴最大尺寸', com: 'Slider', min: 1, max: 18, step: 0.1 }, globalTimeScale: { name: '全局时间倍率', com: 'Slider', min: 0, max: 3, step: 0.01 }, trailRate: { name: '拖尾速率', com: 'Slider', min: 0, max: 3, step: 0.01 }, collisionRadius: { name: '碰撞半径', com: 'Slider', min: 0.1, max: 1.2, step: 0.01 }, collisionRadiusIncrease: { name: '碰撞增量', com: 'Slider', min: 0, max: 0.01, step: 0.0001 }, opacity: { name: '整体透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, }, }, { name: '魔法炫光技能', type: 'radiantSwirlSkillComponent', comFile: './src/components/radiantSwirlSkillComponent.vue', previewPath: './preview/radiantSwirlSkillComponent.png', description: '基于 shader 的 4 阶段技能炫光效果:从散射光叶逐步汇聚到完整能量环与核心光球。', default: { animationSpeed: 0.6, autoAnimate: true, baseColor: '#0d3b1a', bladeCount: 9, coreColor: '#e8ffc7', coreIntensity: 1.8, glowColor: '#7cff4c', highlightColor: '#d6ff86', noiseScale: 1.2, opacity: 1, progress: 0.5, radius: 4, sparkleIntensity: 1, swirlIntensity: 2.4, }, defaultObject3D: { position: { x: 0, y: 0.05, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { autoAnimate: { name: '自动循环', com: 'Switch' }, animationSpeed: { name: '动画速度', com: 'Slider', min: -1, max: 1, step: 0.01 }, progress: { name: '手动进度', com: 'Slider', min: 0, max: 1, step: 0.01 }, radius: { name: '可视范围', com: 'Slider', min: 0.5, max: 30, step: 0.1 }, bladeCount: { name: '叶片条数', com: 'Slider', min: 1, max: 32, step: 1 }, swirlIntensity: { name: '螺旋强度', com: 'Slider', min: 0, max: 8, step: 0.05 }, noiseScale: { name: '细节粒度', com: 'Slider', min: 0.1, max: 6, step: 0.05 }, coreIntensity: { name: '核心强度', com: 'Slider', min: 0, max: 6, step: 0.05 }, sparkleIntensity: { name: '火花亮度', com: 'Slider', min: 0, max: 4, step: 0.05 }, opacity: { name: '整体透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, baseColor: { name: '底色', com: 'ColorPicker' }, glowColor: { name: '叶片光色', com: 'ColorPicker' }, highlightColor: { name: '高光色', com: 'ColorPicker' }, coreColor: { name: '核心色', com: 'ColorPicker' }, }, }, { name: '视频2D投射', type: 'video2DProjectionComponent', comFile: './src/components/video2DProjectionComponent.vue', previewPath: './preview/video2DProjectionComponent.svg', description: '参考 Mars3D Video2D 的视频投射可视化组件,使用 VideoTexture 将示例视频投射到视锥远端平面。', default: { angle: 46, angle2: 25, distance: 6, flipX: false, frustumColor: '#00ffff', heading: 0, opacity: 0.95, pitch: -20, showFrustum: true, stRotationDegree: 0, videoTint: '#ffffff', }, defaultObject3D: { position: { x: 0, y: 3, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { videoPlay: { name: '播放', com: 'ActionButton', action: 'videoPlay' }, videoPause: { name: '暂停', com: 'ActionButton', action: 'videoPause' }, videoStop: { name: '停止', com: 'ActionButton', action: 'videoStop' }, showFrustum: { name: '视锥线框', com: 'Switch' }, flipX: { name: '水平镜像', com: 'Switch' }, angle: { name: '水平张角°', com: 'Slider', min: 1, max: 120, step: 0.1 }, angle2: { name: '垂直张角°', com: 'Slider', min: 1, max: 120, step: 0.1 }, heading: { name: '方向角°', com: 'Slider', min: -180, max: 180, step: 0.1 }, pitch: { name: '俯仰角°', com: 'Slider', min: -89, max: 89, step: 0.1 }, distance: { name: '投射距离', com: 'Slider', min: 0.1, max: 100, step: 0.1 }, stRotationDegree: { name: '贴图旋转°', com: 'Slider', min: 0, max: 360, step: 1 }, opacity: { name: '视频透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, videoTint: { name: '视频染色', com: 'ColorPicker' }, frustumColor: { name: '视锥颜色', com: 'ColorPicker' }, }, }, { name: '模型生三维粒子器', type: 'modelParticleGeneratorComponent', comFile: './src/components/modelParticleGeneratorComponent/index.vue', previewPath: './preview/modelParticleGeneratorComponent.svg', description: '通过 URL 加载一个 GLB 模型(支持 DRACO 压缩),对其网格表面采样,生成随风飘动的粒子拖尾效果。', default: { "modelUrl": "https://oss.icegl.cn/p/modelServer/models/3%E8%88%B9/models/游轮C.glb", "modelUrlDraft": "https://oss.icegl.cn/p/modelServer/models/3%E8%88%B9/models/游轮C.glb", "outlineDensity": 0.08, "particleSpeed": 1.5, "trailLength": 2.5, "windAzimuth": -90, "windElevation": 0, "particleDensity": 0.62, "trailDensity": 0.05, "colorScheme": "ice", "particleSize": 0.1, "particleSizeMultiplier": 0.05, "opacity": 1, "turbulence": 0.05, "showModel": true, "modelOpacity": 1, "offsetX": -1.3, "offsetY": 0, "offsetZ": 0 }, defaultObject3D: { position: { x: 0, y: 0.5, z: 0 }, scale: { x: 1, y: 1, z: 1 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { modelUrlDraft: { name: '模型 URL', com: 'Text' }, applyModelUrl: { name: '确认生成', com: 'ActionButton', action: 'applyModelUrlAction' }, clearModel: { name: '清除模型', com: 'ActionButton', action: 'clearModel' }, showModel: { name: '显示模型', com: 'Switch' }, modelOpacity: { name: '模型透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, colorScheme: { name: '渐变色系', com: 'Select', options: [ { label: '火焰', value: 'fire' }, { label: '冰蓝', value: 'ice' }, { label: '星云', value: 'nebula' }, { label: '毒绿', value: 'toxic' }, { label: '黄金', value: 'gold' }, { label: '彩虹', value: 'rainbow' }, ], }, outlineDensity: { name: '轮廓抽稀密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, particleDensity: { name: '粒子密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, trailDensity: { name: '拖尾密度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, particleSize: { name: '粒子尺寸', com: 'Slider', min: 0.1, max: 2, step: 0.01 }, particleSizeMultiplier: { name: '粒子大小倍数', com: 'Slider', min: 0.05, max: 20, step: 0.05 }, opacity: { name: '粒子不透明度', com: 'Slider', min: 0.05, max: 1, step: 0.01 }, particleSpeed: { name: '粒子速度', com: 'Slider', min: 0, max: 6, step: 0.05 }, trailLength: { name: '拖尾长度', com: 'Slider', min: 0.1, max: 20, step: 0.1 }, windAzimuth: { name: '风向方位角°', com: 'Slider', min: -180, max: 180, step: 1 }, windElevation: { name: '风向仰角°', com: 'Slider', min: -89, max: 89, step: 1 }, turbulence: { name: '扰动强度', com: 'Slider', min: 0, max: 4, step: 0.05 }, offsetX: { name: '粒子偏移 X', com: 'Slider', min: -10, max: 10, step: 0.05 }, offsetY: { name: '粒子偏移 Y', com: 'Slider', min: -10, max: 10, step: 0.05 }, offsetZ: { name: '粒子偏移 Z', com: 'Slider', min: -10, max: 10, step: 0.05 }, }, }, { name: 'GNM 参数化人头', type: 'gnmHeadComponent', comFile: './src/components/gnmHeadComponent/index.vue', previewPath: './preview/gnmHeadComponent.svg', description: '基于 Google GNM Head 浏览器数值实现的参数化人头组件;动态载入后立即显示轻量 3D loading,主模型与语义采样器分阶段按需下载,支持确定性身份/表情、头眼姿态、皮肤透明度与非皮肤解剖显隐,不创建相机、灯光、控制器或场景级 UI。', default: { ...GNM_HEAD_DEFAULTS, }, defaultObject3D: { position: { x: 0, y: -1.15, z: 0 }, scale: { x: 5, y: 5, z: 5 }, rotation: { x: 0, y: 0, z: 0 }, }, config: { headUrl: { name: '头部模型 URL', com: 'Text' }, samplerUrl: { name: '语义采样器 URL', com: 'Text' }, identitySeed: { name: '身份种子', com: 'Slider', min: 0, max: 100000, step: 1 }, identityStrength: { name: '身份强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, expressionSeed: { name: '表情种子', com: 'Slider', min: 0, max: 100000, step: 1 }, expressionClass: { name: '表情类别', com: 'Select', options: GNM_EXPRESSION_OPTIONS.map(option => ({ ...option })), }, expressionStrength: { name: '表情强度', com: 'Slider', min: 0, max: 3, step: 0.01 }, headPitch: { name: '头部俯仰°', com: 'Slider', min: -45, max: 45, step: 1 }, headYaw: { name: '头部偏航°', com: 'Slider', min: -70, max: 70, step: 1 }, headRoll: { name: '头部翻滚°', com: 'Slider', min: -45, max: 45, step: 1 }, eyePitch: { name: '眼球俯仰°', com: 'Slider', min: -35, max: 35, step: 1 }, eyeYaw: { name: '眼球偏航°', com: 'Slider', min: -45, max: 45, step: 1 }, skinColor: { name: '皮肤颜色', com: 'ColorPicker' }, irisColor: { name: '虹膜颜色', com: 'ColorPicker' }, roughness: { name: '材质粗糙度', com: 'Slider', min: 0, max: 1, step: 0.01 }, metalness: { name: '材质金属度', com: 'Slider', min: 0, max: 1, step: 0.01 }, skinOpacity: { name: '皮肤透明度', com: 'Slider', min: 0, max: 1, step: 0.01 }, showEyes: { name: '显示双眼', com: 'Switch' }, showTeethGums: { name: '显示牙齿牙龈', com: 'Switch' }, showTongue: { name: '显示舌头', com: 'Switch' }, }, }, ], } export default config