sceneConfig.ts 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. /** 模型变换参数类型 */
  2. export interface ModelTransform {
  3. positionX: number
  4. positionY: number
  5. positionZ: number
  6. rotationX: number
  7. rotationY: number
  8. rotationZ: number
  9. scaleX: number
  10. scaleY: number
  11. scaleZ: number
  12. }
  13. /** 水面材质参数类型(主水面用) */
  14. export interface WaterMaterialParams {
  15. alpha: number
  16. waterColor: string
  17. deepColor: string
  18. flowSpeed: number
  19. flowDirectionX: number
  20. flowDirectionY: number
  21. normalRotation: number
  22. waveHeight: number
  23. foamIntensity: number
  24. specIntensity: number
  25. specPower: number
  26. fresnelPower: number
  27. fresnelIntensity: number
  28. depthRange: number
  29. waterNormalStrength: number
  30. waterNormalTiling: number
  31. collisionFoamThreshold: number
  32. collisionFoamStrength: number
  33. }
  34. /** CSCwater 材质参数类型(独立于主水面配置) */
  35. export type CscwaterMaterialParams = WaterMaterialParams
  36. /** 泡沫片面材质参数类型 */
  37. export interface FoamMaterialParams {
  38. colour: string
  39. opacity: number
  40. waterfallSpeed: number
  41. edgeMaskTiling: number
  42. edgeMaskSpeed: number
  43. fresnelExponent: number
  44. directionalFoamIntensity: number
  45. directionalFoamContrast: number
  46. directionalFoam1Intensity: number
  47. directionalFoam2Intensity: number
  48. directionalFoam2Tiling: number
  49. directionalFoam2Speed: number
  50. directionalFoam3Intensity: number
  51. foamFalloff: number
  52. gradientTop: number
  53. gradientBottom: number
  54. gradientPower: number
  55. }
  56. /** 流动纹理材质参数类型 */
  57. export interface FlowMaterialParams {
  58. colour: string
  59. speedX: number
  60. speedY: number
  61. tilingU: number
  62. tilingV: number
  63. rotationAngle: number
  64. power: number
  65. waterGate: number
  66. waterGate02: number
  67. edgeMaskIntensity: number
  68. opaquePower: number
  69. edgeFade: number
  70. }
  71. // ==================== 模型变换默认值 ====================
  72. export const modelTransformMap: Record<string, ModelTransform> = {
  73. foam: {
  74. positionX: -854.3537,
  75. positionY: 14.01539,
  76. positionZ: -2175.46505,
  77. rotationX: 91,
  78. rotationY: 0,
  79. rotationZ: 52,
  80. scaleX: 7.5,
  81. scaleY: 16,
  82. scaleZ: 1,
  83. },
  84. water: {
  85. positionX: -854.3537,
  86. positionY: 14.01539,
  87. positionZ: -2175.46505,
  88. rotationX: -90,
  89. rotationY: 0,
  90. rotationZ: 0,
  91. scaleX: 200,
  92. scaleY: 200,
  93. scaleZ: 1,
  94. },
  95. flow: {
  96. positionX: -2150.4,
  97. positionY: 19,
  98. positionZ: -789.5,
  99. rotationX: 0,
  100. rotationY: 12,
  101. rotationZ: 0,
  102. scaleX: 0.2,
  103. scaleY: 0.2,
  104. scaleZ: 0.2,
  105. },
  106. cscwater: {
  107. positionX: -1591.11,
  108. positionY: 18.5,
  109. positionZ: -275,
  110. rotationX: 0,
  111. rotationY: 0,
  112. rotationZ: 0,
  113. scaleX: 1,
  114. scaleY: 1,
  115. scaleZ: 1,
  116. },
  117. water2: {
  118. positionX: -2185.1,
  119. positionY: 24,
  120. positionZ: -961,
  121. rotationX: 90,
  122. rotationY: 11,
  123. rotationZ: 0,
  124. scaleX: 18,
  125. scaleY: 300,
  126. scaleZ: 200,
  127. },
  128. }
  129. // ==================== 材质参数默认值 ====================
  130. /** 水面材质参数默认值 */
  131. export const defaultWaterParams: WaterMaterialParams = {
  132. alpha: 0.95,
  133. waterColor: '#566a6c',
  134. deepColor: '#0a2a4a',
  135. flowSpeed: 3.0,
  136. flowDirectionX: -1,
  137. flowDirectionY: -1.50,
  138. normalRotation: 35,
  139. waveHeight: 0.6,
  140. foamIntensity: 0.25,
  141. specIntensity: 2.0,
  142. specPower: 64.0,
  143. fresnelPower: 2.5,
  144. fresnelIntensity: 1.0,
  145. depthRange: 44.0,
  146. waterNormalStrength: 1.0,
  147. waterNormalTiling: 0.46,
  148. collisionFoamThreshold: 0.10,
  149. collisionFoamStrength: 0.5,
  150. }
  151. /** CSCwater 材质参数默认值 */
  152. export const defaultCscwaterParams: CscwaterMaterialParams = {
  153. alpha: 0.92,
  154. waterColor: '#296a7a',
  155. deepColor: '#0b3660',
  156. flowSpeed: 0,
  157. flowDirectionX: 1.0,
  158. flowDirectionY: 1.0,
  159. normalRotation: 0,
  160. waveHeight: 0.6,
  161. foamIntensity: 0.30,
  162. specIntensity: 2.2,
  163. specPower: 168,
  164. fresnelPower: 2.5,
  165. fresnelIntensity: 1.0,
  166. depthRange: 44.0,
  167. waterNormalStrength: 0.15,
  168. waterNormalTiling: 0.07,
  169. collisionFoamThreshold: 0.39,
  170. collisionFoamStrength: 0.45,
  171. }
  172. /** 泡沫片面材质参数默认值 */
  173. export const defaultFoamMatParams: FoamMaterialParams = {
  174. colour: '#ffffff',
  175. opacity: 1.0,
  176. waterfallSpeed: 0.32,
  177. edgeMaskTiling: 0.52,
  178. edgeMaskSpeed: 1.7,
  179. fresnelExponent: 9.9,
  180. directionalFoamIntensity: 3.48,
  181. directionalFoamContrast: 0.3,
  182. directionalFoam1Intensity: 1.10,
  183. directionalFoam2Intensity: 2.03,
  184. directionalFoam2Tiling: 1.0,
  185. directionalFoam2Speed: 8.5,
  186. directionalFoam3Intensity: 1.76,
  187. foamFalloff: 0.8,
  188. gradientTop: 1.0,
  189. gradientBottom: 0.0,
  190. gradientPower: 1.0,
  191. }
  192. /** 流动纹理材质参数默认值 */
  193. export const defaultFlowParams: FlowMaterialParams = {
  194. colour: '#ffffff',
  195. speedX: -0.068,
  196. speedY: 0.399,
  197. tilingU: -0.85,
  198. tilingV: 1.87,
  199. rotationAngle: -0.22,
  200. power: 1.13,
  201. waterGate: 0.0,
  202. waterGate02: 0.00,
  203. edgeMaskIntensity: 1.00,
  204. opaquePower: 0.82,
  205. edgeFade: 0.50,
  206. }
  207. // ==================== 水位标签配置 ====================
  208. /** 标签数据类型 */
  209. export type LabelDataType = 'waterLevel' | 'flowRate' | 'StressMonitor'
  210. /** 标签类型对应的展示配置 */
  211. export interface LabelTypeDisplayConfig {
  212. icon: string
  213. unit: string
  214. label: string
  215. decimalPlaces: number
  216. }
  217. /** 标签类型注册表(可扩展) */
  218. export const labelTypeRegistry: Record<LabelDataType, LabelTypeDisplayConfig> = {
  219. waterLevel: {
  220. icon: 'shuiliang.png',
  221. unit: 'm³/s',
  222. label: '水 量',
  223. decimalPlaces: 2,
  224. },
  225. flowRate: {
  226. icon: 'shuiliang.png',
  227. unit: 'm³/s',
  228. label: '流 量',
  229. decimalPlaces: 2,
  230. },
  231. StressMonitor: {
  232. icon: 'yingli.png',
  233. unit: '',
  234. label: '应力监测',
  235. decimalPlaces: 2,
  236. },
  237. }
  238. /** 场景类型 */
  239. export type SceneType = 'main' | 'ducao'
  240. /** 水位标签配置类型 */
  241. export interface WaterLevelLabelConfig {
  242. id: string
  243. name: string
  244. type: LabelDataType
  245. scene: SceneType
  246. positionX: number
  247. positionY: number
  248. positionZ: number
  249. initialValue: number
  250. }
  251. /** 所有水位标签列表(两个场景的标签都在这里) */
  252. export const waterLevelLabels: WaterLevelLabelConfig[] = [
  253. {
  254. id: '6602380005',
  255. name: '莫勒切河节制分水闸闸后水量监测',
  256. type: 'waterLevel',
  257. scene: 'main',
  258. positionX: -797.282,
  259. positionY: 14,
  260. positionZ: -2091.159,
  261. initialValue: 2.80,
  262. },
  263. {
  264. id: '6602380006',
  265. name: '莫勒切河引水渠水量监测',
  266. type: 'waterLevel',
  267. scene: 'main',
  268. positionX: -921.134,
  269. positionY: 14,
  270. positionZ: -2124.428,
  271. initialValue: 3.00,
  272. },
  273. {
  274. id: '6602380003',
  275. name: '二期沉砂池入库水量监测',
  276. type: 'waterLevel',
  277. scene: 'main',
  278. positionX: -2162.313,
  279. positionY: 23.156,
  280. positionZ: -856.39,
  281. initialValue: 3.00,
  282. },
  283. {
  284. id: '6602380001',
  285. name: '二期沉砂池库内水位监测',
  286. type: 'waterLevel',
  287. scene: 'main',
  288. positionX: -781.103,
  289. positionY: 27.499,
  290. positionZ: -194.081,
  291. initialValue: 4.00,
  292. },
  293. {
  294. id: '6602380004',
  295. name: '二期沉砂池出库水量监测',
  296. type: 'waterLevel',
  297. scene: 'main',
  298. positionX: -416.521,
  299. positionY: 8,
  300. positionZ: -188.334,
  301. initialValue: 2.80,
  302. },
  303. {
  304. id: '6602380023',
  305. name: '引水干渠水量监测103+800',
  306. type: 'waterLevel',
  307. scene: 'main',
  308. positionX: -3353.116,
  309. positionY: 23.293,
  310. positionZ: -1657.653,
  311. initialValue: 2.80,
  312. },
  313. {
  314. id: '渡槽安全监测46+400',
  315. name: '渡槽安全监测46+400',
  316. type: 'StressMonitor',
  317. scene: 'ducao',
  318. positionX: -60.3,
  319. positionY: 13.87,
  320. positionZ: 1827.87,
  321. initialValue: 2.80,
  322. },
  323. {
  324. id: '渡槽安全监测46+635',
  325. name: '渡槽安全监测46+635',
  326. type: 'StressMonitor',
  327. scene: 'ducao',
  328. positionX: -326.17,
  329. positionY: 13.87,
  330. positionZ: 1886.87,
  331. initialValue: 2.80,
  332. },
  333. ]
  334. /** 按场景类型编组的标签列表 */
  335. export const sceneLabels: Record<SceneType, WaterLevelLabelConfig[]> = {
  336. main: waterLevelLabels.filter(l => l.scene === 'main'),
  337. ducao: waterLevelLabels.filter(l => l.scene === 'ducao'),
  338. }
  339. // ==================== 镜头预设 ====================
  340. /** 镜头预设配置类型 */
  341. export interface CameraPreset {
  342. id: string
  343. name: string
  344. positionX: number
  345. positionY: number
  346. positionZ: number
  347. targetX: number
  348. targetY: number
  349. targetZ: number
  350. }
  351. /** 镜头预设列表 */
  352. export const cameraPresets: CameraPreset[] = [
  353. {
  354. id: '0',
  355. name: '莫勒切河节制分水闸',
  356. positionX: -831.56685,
  357. positionY: 40.63456,
  358. positionZ: -2225.321,
  359. targetX: -843.0744,
  360. targetY: 12.01539,
  361. targetZ: -2182.06814,
  362. },
  363. {
  364. id: '1',
  365. name: '二期沉砂池入库',
  366. positionX: -2337.807,
  367. positionY: 129.119,
  368. positionZ: -1025.484,
  369. targetX: -2240.868,
  370. targetY: 12.015,
  371. targetZ: -908.998,
  372. },
  373. {
  374. id: '2',
  375. name: '二期沉砂池入库',
  376. positionX: -2337.807,
  377. positionY: 129.119,
  378. positionZ: -1025.484,
  379. targetX: -2240.868,
  380. targetY: 12.015,
  381. targetZ: -908.998,
  382. },
  383. {
  384. id: '3',
  385. name: '二期沉砂池出库',
  386. positionX: -798.636,
  387. positionY: 260.226,
  388. positionZ: -718.195,
  389. targetX: -710.424,
  390. targetY: 12.015,
  391. targetZ: -293.213,
  392. },
  393. ]