volumetric-cloud.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <div id="volumetric-cloud-panel" class="sm-panel" v-drag>
  3. <div class="sm-function-module-sub-section" style="margin:0" v-stopdrag>
  4. <div class="sm-half-L">
  5. <label style="width:100%">
  6. <input type="checkbox" v-model="show" />
  7. 体积云
  8. </label>
  9. </div>
  10. <div class="sm-half-L">
  11. <label style="width:35%">云层高度(m)</label>
  12. <el-slider
  13. v-model="minHeight"
  14. :min="500"
  15. :max="20000"
  16. :step="100"
  17. input-size="mini"
  18. :debounce="300"
  19. tooltip-class="tooltip-class"
  20. style="width:63%"
  21. ></el-slider>
  22. </div>
  23. <div class="sm-half-L">
  24. <label style="width:35%">云层厚度(m)</label>
  25. <el-slider
  26. v-model="maxHeight"
  27. :min="2000"
  28. :max="30000"
  29. :step="100"
  30. input-size="mini"
  31. :debounce="300"
  32. tooltip-class="tooltip-class"
  33. style="width:63%"
  34. ></el-slider>
  35. </div>
  36. <div class="sm-half-L">
  37. <label style="width:35%">密度</label>
  38. <el-slider
  39. v-model="density"
  40. :min="0"
  41. :max="3"
  42. :step="0.01"
  43. input-size="mini"
  44. :debounce="300"
  45. tooltip-class="tooltip-class"
  46. style="width:63%"
  47. ></el-slider>
  48. </div>
  49. <div class="sm-half-L">
  50. <label style="width:35%">云量</label>
  51. <el-slider
  52. v-model="coverage"
  53. :min="0"
  54. :max="1"
  55. :step="0.01"
  56. input-size="mini"
  57. :debounce="300"
  58. tooltip-class="tooltip-class"
  59. style="width:63%"
  60. ></el-slider>
  61. </div>
  62. <div class="sm-half-L">
  63. <label style="width:35%">太阳强度</label>
  64. <el-slider
  65. v-model="sunIntensity"
  66. :min="0"
  67. :max="100"
  68. :step="1"
  69. input-size="mini"
  70. :debounce="300"
  71. tooltip-class="tooltip-class"
  72. style="width:63%"
  73. ></el-slider>
  74. </div>
  75. <div class="sm-half-L">
  76. <label style="width:35%">云亮度</label>
  77. <el-slider
  78. v-model="cloudExposure"
  79. :min="0.1"
  80. :max="10"
  81. :step="0.1"
  82. input-size="mini"
  83. :debounce="300"
  84. tooltip-class="tooltip-class"
  85. style="width:63%"
  86. ></el-slider>
  87. </div>
  88. <div class="sm-half-L">
  89. <label style="width:35%">天空光</label>
  90. <el-slider
  91. v-model="skyLight"
  92. :min="0"
  93. :max="3"
  94. :step="0.01"
  95. input-size="mini"
  96. :debounce="300"
  97. tooltip-class="tooltip-class"
  98. style="width:63%"
  99. ></el-slider>
  100. </div>
  101. </div>
  102. </div>
  103. </template>
  104. <script>
  105. import volumetricCloud from "./volumetric-cloud.js";
  106. export default {
  107. name: "Sm3dVolumetricCloud",
  108. props: {
  109. // 是否显示体积云
  110. show: { type: Boolean },
  111. // 云层最低高度(米)
  112. minHeight: { type: Number },
  113. // 云层最高高度(米)
  114. maxHeight: { type: Number },
  115. // 密度系数
  116. density: { type: Number },
  117. // 云量(覆盖度)
  118. coverage: { type: Number },
  119. // 太阳强度
  120. sunIntensity: { type: Number },
  121. // 云亮度
  122. cloudExposure: { type: Number },
  123. // 天空光强度
  124. skyLight: { type: Number }
  125. },
  126. setup(props) {
  127. let {
  128. show,
  129. minHeight,
  130. maxHeight,
  131. density,
  132. coverage,
  133. sunIntensity,
  134. cloudExposure,
  135. skyLight
  136. } = volumetricCloud(props);
  137. return {
  138. show,
  139. minHeight,
  140. maxHeight,
  141. density,
  142. coverage,
  143. sunIntensity,
  144. cloudExposure,
  145. skyLight
  146. };
  147. }
  148. };
  149. </script>