/** 模型变换参数类型 */ export interface ModelTransform { positionX: number positionY: number positionZ: number rotationX: number rotationY: number rotationZ: number scaleX: number scaleY: number scaleZ: number } /** 水面材质参数类型(主水面用) */ export interface WaterMaterialParams { alpha: number waterColor: string deepColor: string flowSpeed: number flowDirectionX: number flowDirectionY: number normalRotation: number waveHeight: number foamIntensity: number specIntensity: number specPower: number fresnelPower: number fresnelIntensity: number depthRange: number waterNormalStrength: number waterNormalTiling: number collisionFoamThreshold: number collisionFoamStrength: number } /** CSCwater 材质参数类型(独立于主水面配置) */ export type CscwaterMaterialParams = WaterMaterialParams /** 泡沫片面材质参数类型 */ export interface FoamMaterialParams { colour: string opacity: number waterfallSpeed: number edgeMaskTiling: number edgeMaskSpeed: number fresnelExponent: number directionalFoamIntensity: number directionalFoamContrast: number directionalFoam1Intensity: number directionalFoam2Intensity: number directionalFoam2Tiling: number directionalFoam2Speed: number directionalFoam3Intensity: number foamFalloff: number gradientTop: number gradientBottom: number gradientPower: number } /** 流动纹理材质参数类型 */ export interface FlowMaterialParams { colour: string speedX: number speedY: number tilingU: number tilingV: number rotationAngle: number power: number waterGate: number waterGate02: number edgeMaskIntensity: number opaquePower: number edgeFade: number } // ==================== 模型变换默认值 ==================== export const modelTransformMap: Record = { foam: { positionX: -854.3537, positionY: 14.01539, positionZ: -2175.46505, rotationX: 91, rotationY: 0, rotationZ: 52, scaleX: 7.5, scaleY: 16, scaleZ: 1, }, water: { positionX: -854.3537, positionY: 14.01539, positionZ: -2175.46505, rotationX: -90, rotationY: 0, rotationZ: 0, scaleX: 200, scaleY: 200, scaleZ: 1, }, flow: { positionX: -2150.4, positionY: 19, positionZ: -789.5, rotationX: 0, rotationY: 12, rotationZ: 0, scaleX: 0.2, scaleY: 0.2, scaleZ: 0.2, }, cscwater: { positionX: -1591.11, positionY: 18.5, positionZ: -275, rotationX: 0, rotationY: 0, rotationZ: 0, scaleX: 1, scaleY: 1, scaleZ: 1, }, water2: { positionX: -2185.1, positionY: 24, positionZ: -961, rotationX: 90, rotationY: 11, rotationZ: 0, scaleX: 18, scaleY: 300, scaleZ: 200, }, } // ==================== 材质参数默认值 ==================== /** 水面材质参数默认值 */ export const defaultWaterParams: WaterMaterialParams = { alpha: 0.95, waterColor: '#566a6c', deepColor: '#0a2a4a', flowSpeed: 3.0, flowDirectionX: -1, flowDirectionY: -1.50, normalRotation: 35, waveHeight: 0.6, foamIntensity: 0.25, specIntensity: 2.0, specPower: 64.0, fresnelPower: 2.5, fresnelIntensity: 1.0, depthRange: 44.0, waterNormalStrength: 1.0, waterNormalTiling: 0.46, collisionFoamThreshold: 0.10, collisionFoamStrength: 0.5, } /** CSCwater 材质参数默认值 */ export const defaultCscwaterParams: CscwaterMaterialParams = { alpha: 0.92, waterColor: '#296a7a', deepColor: '#0b3660', flowSpeed: 0, flowDirectionX: 1.0, flowDirectionY: 1.0, normalRotation: 0, waveHeight: 0.6, foamIntensity: 0.30, specIntensity: 2.2, specPower: 168, fresnelPower: 2.5, fresnelIntensity: 1.0, depthRange: 44.0, waterNormalStrength: 0.15, waterNormalTiling: 0.07, collisionFoamThreshold: 0.39, collisionFoamStrength: 0.45, } /** 泡沫片面材质参数默认值 */ export const defaultFoamMatParams: FoamMaterialParams = { colour: '#ffffff', opacity: 1.0, waterfallSpeed: 0.32, edgeMaskTiling: 0.52, edgeMaskSpeed: 1.7, fresnelExponent: 9.9, directionalFoamIntensity: 3.48, directionalFoamContrast: 0.3, directionalFoam1Intensity: 1.10, directionalFoam2Intensity: 2.03, directionalFoam2Tiling: 1.0, directionalFoam2Speed: 8.5, directionalFoam3Intensity: 1.76, foamFalloff: 0.8, gradientTop: 1.0, gradientBottom: 0.0, gradientPower: 1.0, } /** 流动纹理材质参数默认值 */ export const defaultFlowParams: FlowMaterialParams = { colour: '#ffffff', speedX: -0.068, speedY: 0.399, tilingU: -0.85, tilingV: 1.87, rotationAngle: -0.22, power: 1.13, waterGate: 0.0, waterGate02: 0.00, edgeMaskIntensity: 1.00, opaquePower: 0.82, edgeFade: 0.50, } // ==================== 水位标签配置 ==================== /** 标签数据类型 */ export type LabelDataType = 'waterLevel' | 'flowRate' | 'StressMonitor' /** 标签类型对应的展示配置 */ export interface LabelTypeDisplayConfig { icon: string unit: string label: string decimalPlaces: number } /** 标签类型注册表(可扩展) */ export const labelTypeRegistry: Record = { waterLevel: { icon: 'shuiliang.png', unit: 'm³/s', label: '水 量', decimalPlaces: 2, }, flowRate: { icon: 'shuiliang.png', unit: 'm³/s', label: '流 量', decimalPlaces: 2, }, StressMonitor: { icon: 'yingli.png', unit: '', label: '应力监测', decimalPlaces: 2, }, } /** 场景类型 */ export type SceneType = 'main' | 'ducao' /** 水位标签配置类型 */ export interface WaterLevelLabelConfig { id: string name: string type: LabelDataType scene: SceneType positionX: number positionY: number positionZ: number initialValue: number } /** 所有水位标签列表(两个场景的标签都在这里) */ export const waterLevelLabels: WaterLevelLabelConfig[] = [ { id: '6602380005', name: '莫勒切河节制分水闸闸后水量监测', type: 'waterLevel', scene: 'main', positionX: -797.282, positionY: 14, positionZ: -2091.159, initialValue: 2.80, }, { id: '6602380006', name: '莫勒切河引水渠水量监测', type: 'waterLevel', scene: 'main', positionX: -921.134, positionY: 14, positionZ: -2124.428, initialValue: 3.00, }, { id: '6602380003', name: '二期沉砂池入库水量监测', type: 'waterLevel', scene: 'main', positionX: -2162.313, positionY: 23.156, positionZ: -856.39, initialValue: 3.00, }, { id: '6602380001', name: '二期沉砂池库内水位监测', type: 'waterLevel', scene: 'main', positionX: -781.103, positionY: 27.499, positionZ: -194.081, initialValue: 4.00, }, { id: '6602380004', name: '二期沉砂池出库水量监测', type: 'waterLevel', scene: 'main', positionX: -416.521, positionY: 8, positionZ: -188.334, initialValue: 2.80, }, { id: '6602380023', name: '引水干渠水量监测103+800', type: 'waterLevel', scene: 'main', positionX: -3353.116, positionY: 23.293, positionZ: -1657.653, initialValue: 2.80, }, { id: '渡槽安全监测46+400', name: '渡槽安全监测46+400', type: 'StressMonitor', scene: 'ducao', positionX: -60.3, positionY: 13.87, positionZ: 1827.87, initialValue: 2.80, }, { id: '渡槽安全监测46+635', name: '渡槽安全监测46+635', type: 'StressMonitor', scene: 'ducao', positionX: -326.17, positionY: 13.87, positionZ: 1886.87, initialValue: 2.80, }, ] /** 按场景类型编组的标签列表 */ export const sceneLabels: Record = { main: waterLevelLabels.filter(l => l.scene === 'main'), ducao: waterLevelLabels.filter(l => l.scene === 'ducao'), } // ==================== 镜头预设 ==================== /** 镜头预设配置类型 */ export interface CameraPreset { id: string name: string positionX: number positionY: number positionZ: number targetX: number targetY: number targetZ: number } /** 镜头预设列表 */ export const cameraPresets: CameraPreset[] = [ { id: '0', name: '莫勒切河节制分水闸', positionX: -831.56685, positionY: 40.63456, positionZ: -2225.321, targetX: -843.0744, targetY: 12.01539, targetZ: -2182.06814, }, { id: '1', name: '二期沉砂池入库', positionX: -2337.807, positionY: 129.119, positionZ: -1025.484, targetX: -2240.868, targetY: 12.015, targetZ: -908.998, }, { id: '2', name: '二期沉砂池入库', positionX: -2337.807, positionY: 129.119, positionZ: -1025.484, targetX: -2240.868, targetY: 12.015, targetZ: -908.998, }, { id: '3', name: '二期沉砂池出库', positionX: -798.636, positionY: 260.226, positionZ: -718.195, targetX: -710.424, targetY: 12.015, targetZ: -293.213, }, ]