fl-web-component 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,6 +46,12 @@ Vue.use(FlWebComponent)
46
46
  欢迎贡献代码和问题反馈。
47
47
 
48
48
  ## 更新日志
49
+ - 2025-06-09 1.2.2
50
+ 1. 优化图形绘制效果
51
+ 2. 调整业务端交互模型时的位置偏差
52
+ 3. 图纸模型新增点击、高亮、重置高亮等api,三维图形新增、获取中心点、计算实体大小等接口
53
+ - 2025-06-03 1.2.1
54
+ 1. 修复模型拾取问题
49
55
  - 2025-05-30 1.2.0
50
56
  1. 图纸模型新增点击、高亮、重置高亮等api
51
57
  2. 三维图形新增、获取中心点、计算实体大小等接口
@@ -202,6 +202,17 @@ module.exports =
202
202
  /************************************************************************/
203
203
  /******/ ({
204
204
 
205
+ /***/ "0011":
206
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
207
+
208
+ "use strict";
209
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2733ad2c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("8122");
210
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2733ad2c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_2733ad2c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
211
+ /* unused harmony reexport * */
212
+
213
+
214
+ /***/ }),
215
+
205
216
  /***/ "06f8":
206
217
  /***/ (function(module, exports, __webpack_require__) {
207
218
 
@@ -1170,6 +1181,17 @@ Factory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);
1170
1181
  Factory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);
1171
1182
  Factory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());
1172
1183
 
1184
+ /***/ }),
1185
+
1186
+ /***/ "106c":
1187
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1188
+
1189
+ "use strict";
1190
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3d926f5d_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("fdfd");
1191
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3d926f5d_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3d926f5d_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
1192
+ /* unused harmony reexport * */
1193
+
1194
+
1173
1195
  /***/ }),
1174
1196
 
1175
1197
  /***/ "122f":
@@ -3331,17 +3353,6 @@ Factory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNum
3331
3353
  Factory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);
3332
3354
  Factory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);
3333
3355
 
3334
- /***/ }),
3335
-
3336
- /***/ "46ca":
3337
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
3338
-
3339
- "use strict";
3340
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_07e32868_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("92c4");
3341
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_07e32868_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_07e32868_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
3342
- /* unused harmony reexport * */
3343
-
3344
-
3345
3356
  /***/ }),
3346
3357
 
3347
3358
  /***/ "4971":
@@ -9085,6 +9096,13 @@ module.exports = JSON.parse("{\"glyphs\":{\"0\":{\"x_min\":73,\"x_max\":715,\"ha
9085
9096
 
9086
9097
  /***/ }),
9087
9098
 
9099
+ /***/ "8122":
9100
+ /***/ (function(module, exports, __webpack_require__) {
9101
+
9102
+ // extracted by mini-css-extract-plugin
9103
+
9104
+ /***/ }),
9105
+
9088
9106
  /***/ "85b7":
9089
9107
  /***/ (function(module, exports, __webpack_require__) {
9090
9108
 
@@ -22286,13 +22304,6 @@ exports.HSL = HSL;
22286
22304
 
22287
22305
  /***/ }),
22288
22306
 
22289
- /***/ "92c4":
22290
- /***/ (function(module, exports, __webpack_require__) {
22291
-
22292
- // extracted by mini-css-extract-plugin
22293
-
22294
- /***/ }),
22295
-
22296
22307
  /***/ "9470":
22297
22308
  /***/ (function(module, exports, __webpack_require__) {
22298
22309
 
@@ -23529,17 +23540,6 @@ Factory_1.Factory.backCompat(Sprite, {
23529
23540
  setIndex: 'setFrameIndex'
23530
23541
  });
23531
23542
 
23532
- /***/ }),
23533
-
23534
- /***/ "a988":
23535
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
23536
-
23537
- "use strict";
23538
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cfb3");
23539
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
23540
- /* unused harmony reexport * */
23541
-
23542
-
23543
23543
  /***/ }),
23544
23544
 
23545
23545
  /***/ "af55":
@@ -24961,13 +24961,6 @@ exports.Grayscale = Grayscale;
24961
24961
 
24962
24962
  /***/ }),
24963
24963
 
24964
- /***/ "cfb3":
24965
- /***/ (function(module, exports, __webpack_require__) {
24966
-
24967
- // extracted by mini-css-extract-plugin
24968
-
24969
- /***/ }),
24970
-
24971
24964
  /***/ "d488":
24972
24965
  /***/ (function(module, exports, __webpack_require__) {
24973
24966
 
@@ -29241,8 +29234,8 @@ if (typeof window !== 'undefined') {
29241
29234
  // Indicate to webpack that this file can be concatenated
29242
29235
  /* harmony default export */ var setPublicPath = (null);
29243
29236
 
29244
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/index.vue?vue&type=template&id=07e32868&scoped=true
29245
- var com_graphicsvue_type_template_id_07e32868_scoped_true_render = function render() {
29237
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7865f371-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/index.vue?vue&type=template&id=3d926f5d&scoped=true
29238
+ var com_graphicsvue_type_template_id_3d926f5d_scoped_true_render = function render() {
29246
29239
  var _vm = this,
29247
29240
  _c = _vm._self._c;
29248
29241
  return _c('div', {
@@ -29253,7 +29246,7 @@ var com_graphicsvue_type_template_id_07e32868_scoped_true_render = function rend
29253
29246
  };
29254
29247
  var staticRenderFns = [];
29255
29248
 
29256
- // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=07e32868&scoped=true
29249
+ // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=3d926f5d&scoped=true
29257
29250
 
29258
29251
  // CONCATENATED MODULE: ./node_modules/camera-controls/dist/camera-controls.module.js
29259
29252
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
@@ -57090,8 +57083,7 @@ function parseData(input) {
57090
57083
  }
57091
57084
  function flattenAndComputeWorldMatrices(nodes) {
57092
57085
  var result = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
57093
- var parentWorldMatrix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
57094
- var fatherId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
57086
+ var fatherId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
57095
57087
  var _iterator = flgltf_parser_createForOfIteratorHelper(nodes),
57096
57088
  _step;
57097
57089
  try {
@@ -57112,7 +57104,10 @@ function parseData(input) {
57112
57104
  }
57113
57105
 
57114
57106
  // 计算世界矩阵
57115
- var worldMatrix = parentWorldMatrix ? parentWorldMatrix.clone().multiply(localMatrix) : localMatrix.clone();
57107
+ // const worldMatrix = parentWorldMatrix
57108
+ // ? parentWorldMatrix.clone().multiply(localMatrix)
57109
+ // : localMatrix.clone();
57110
+ var worldMatrix = localMatrix.clone();
57116
57111
 
57117
57112
  // 构造输出节点
57118
57113
  result.push({
@@ -57128,7 +57123,8 @@ function parseData(input) {
57128
57123
 
57129
57124
  // 递归处理子节点,传递当前世界矩阵
57130
57125
  if (children) {
57131
- flattenAndComputeWorldMatrices(children, result, worldMatrix, instanceId);
57126
+ // flattenAndComputeWorldMatrices(children, result, worldMatrix, instanceId);
57127
+ flattenAndComputeWorldMatrices(children, result, instanceId);
57132
57128
  // flattenAndComputeWorldMatrices(children, result);
57133
57129
  }
57134
57130
  }
@@ -59649,7 +59645,7 @@ function draw3Dmodel(geom, instanceName, instanceCount, nColor, nOpacity) {
59649
59645
  if (Array.isArray(color) && color.length) {
59650
59646
  colors = color;
59651
59647
  opacity = colors[3];
59652
- } else if (color) {
59648
+ } else if (typeof color === 'string') {
59653
59649
  colors = color.split(',');
59654
59650
  opacity = colors[3];
59655
59651
  } else {
@@ -59658,17 +59654,20 @@ function draw3Dmodel(geom, instanceName, instanceCount, nColor, nOpacity) {
59658
59654
  }
59659
59655
 
59660
59656
  // 使用自定义材质或创建标准材质(默认参数配置)
59661
- material = customMaterial || new MeshStandardMaterial({
59662
- roughness: 0.8,
59663
- envMapIntensity: 0.5,
59664
- // 调低环境贴图的强度
59665
- side: DoubleSide,
59657
+ var materialOptions = {
59666
59658
  userData: {
59667
59659
  nColor: nColor ? new Color(nColor) : new Color("rgb(".concat(colors[0], ", ").concat(colors[1], ", ").concat(colors[2], ")")),
59668
59660
  nOpacity: nOpacity ? nOpacity : opacity
59669
59661
  },
59662
+ side: DoubleSide,
59670
59663
  transparent: true // 着色器中需要设置透明度
59671
- });
59664
+ };
59665
+ customMaterial && Object.assign(customMaterial, materialOptions);
59666
+ material = customMaterial || new MeshStandardMaterial(instance_parser_objectSpread(instance_parser_objectSpread({}, materialOptions), {}, {
59667
+ roughness: 0.8,
59668
+ envMapIntensity: 0.5 // 调低环境贴图的强度
59669
+ // wireframe: true
59670
+ }));
59672
59671
 
59673
59672
  // 为每个实例存储透明度(opacity)
59674
59673
  var opacities = new Float32Array(instanceCount);
@@ -59693,9 +59692,9 @@ function draw3Dmodel(geom, instanceName, instanceCount, nColor, nOpacity) {
59693
59692
  }
59694
59693
  mesh = new InstancedMesh(geometry, material, instanceCount);
59695
59694
  mesh.userData.drawObjectId = instanceName;
59695
+ mesh.userData.is3D = geom.type == GEOM_TYPES.geom_3d || geom.type == GEOM_TYPES.geom_3d_obj;
59696
59696
 
59697
59697
  // mesh.material = material;
59698
-
59699
59698
  return mesh;
59700
59699
  }
59701
59700
 
@@ -61119,7 +61118,7 @@ var guiParams = {
61119
61118
  com_graphicsvue_type_script_lang_js_scene = new this.THREE.Scene();
61120
61119
  },
61121
61120
  initCamera: function initCamera() {
61122
- com_graphicsvue_type_script_lang_js_camera = new this.THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 100000);
61121
+ com_graphicsvue_type_script_lang_js_camera = new this.THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000000000);
61123
61122
  com_graphicsvue_type_script_lang_js_camera.position.set(0, 100, 150);
61124
61123
  },
61125
61124
  initControl: function initControl() {
@@ -61201,9 +61200,9 @@ var guiParams = {
61201
61200
  child.userData.modelWorldPs = modelWorldPs;
61202
61201
  }
61203
61202
  });
61204
- // this.compileShader();
61205
61203
  // cameraControls.fitToSphere(scene, true); // TODO 待处理,先用 setModelCenter 进行定位
61206
61204
  this.setModelCenter(com_graphicsvue_type_script_lang_js_modelGroup);
61205
+ this.$emit('modelLoaded');
61207
61206
  // cameraControls.saveState();
61208
61207
  }
61209
61208
  },
@@ -61219,21 +61218,6 @@ var guiParams = {
61219
61218
  box: volume
61220
61219
  };
61221
61220
  },
61222
- compileShader: function compileShader() {
61223
- com_graphicsvue_type_script_lang_js_scene.traverse(function (child) {
61224
- if (child.isMesh) {
61225
- child.material.onBeforeCompile = function (shader) {
61226
- var vertexShader = "\n precision lowp float;\n attribute float visible;\n varying float vVisible;\n void main() {\n vVisible = visible;\n ";
61227
- var fragmentShader = "\n precision lowp float;\n varying float vVisible;\n void main() {\n ";
61228
- var fragColor = "\n #include <dithering_fragment>\n if (vVisible > 0.0) {\n gl_FragColor = vec4(outgoingLight, diffuseColor.a);\n } else {\n discard;\n }\n ";
61229
- shader.vertexShader = shader.vertexShader.replace('void main() {', vertexShader);
61230
- shader.fragmentShader = shader.fragmentShader.replace('void main() {', fragmentShader);
61231
- shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>', fragColor);
61232
- child.material.transparent = true;
61233
- };
61234
- }
61235
- });
61236
- },
61237
61221
  mouseDown: function mouseDown() {
61238
61222
  firstTime = new Date().getTime();
61239
61223
  },
@@ -61242,8 +61226,15 @@ var guiParams = {
61242
61226
  if (!measureFlag) {
61243
61227
  lastTime = new Date().getTime();
61244
61228
  if (lastTime - firstTime < 300) {
61245
- com_graphicsvue_type_script_lang_js_mouse.x = event.clientX / instructions.offsetWidth * 2 - 1;
61246
- com_graphicsvue_type_script_lang_js_mouse.y = -(event.clientY / instructions.offsetHeight) * 2 + 1;
61229
+ // 获取元素在页面中的偏移位置
61230
+ var rect = com_graphicsvue_type_script_lang_js_renderer.domElement.getBoundingClientRect();
61231
+ var x = event.clientX - rect.left;
61232
+ var y = event.clientY - rect.top;
61233
+
61234
+ // mouse.x = (event.clientX / instructions.offsetWidth) * 2 - 1;
61235
+ // mouse.y = -(event.clientY / instructions.offsetHeight) * 2 + 1;
61236
+ com_graphicsvue_type_script_lang_js_mouse.x = x / rect.width * 2 - 1;
61237
+ com_graphicsvue_type_script_lang_js_mouse.y = -(y / rect.height) * 2 + 1;
61247
61238
  com_graphicsvue_type_script_lang_js_raycaster.setFromCamera(com_graphicsvue_type_script_lang_js_mouse, com_graphicsvue_type_script_lang_js_camera);
61248
61239
  var intersects = com_graphicsvue_type_script_lang_js_raycaster.intersectObjects(com_graphicsvue_type_script_lang_js_scene.children, true);
61249
61240
  var params = {};
@@ -61457,7 +61448,10 @@ var guiParams = {
61457
61448
  if (obj.isGroup) {
61458
61449
  this.setModelCenter(obj);
61459
61450
  } else if (obj.isMesh) {
61460
- this.setModelCenter(obj.parent);
61451
+ var box = this.getSize(obj);
61452
+ var center = this.getCenter(obj);
61453
+ this.locateByCenterBox(center, box);
61454
+ // this.setModelCenter(obj.parent);
61461
61455
  }
61462
61456
  }
61463
61457
  },
@@ -62284,20 +62278,23 @@ var guiParams = {
62284
62278
  },
62285
62279
  // 获取中心点
62286
62280
  getCenter: function getCenter(obj) {
62287
- console.log(obj);
62288
62281
  var center = new this.THREE.Vector3();
62289
62282
  obj.boundingBox.getCenter(center);
62290
- var mat4 = new this.THREE.Matrix4();
62291
- mat4.makeRotationX(-Math.PI / 2);
62292
- center.applyMatrix4(mat4);
62283
+ if (obj.userData.is3D) {
62284
+ var mat4 = new this.THREE.Matrix4();
62285
+ mat4.makeRotationX(-Math.PI / 2);
62286
+ center.applyMatrix4(mat4);
62287
+ }
62293
62288
  return center;
62294
62289
  },
62295
62290
  getSize: function getSize(obj) {
62296
62291
  var size = new this.THREE.Vector3();
62297
62292
  obj.boundingBox.getSize(size);
62298
- var mat4 = new this.THREE.Matrix4();
62299
- mat4.makeRotationX(-Math.PI / 2);
62300
- size.applyMatrix4(mat4);
62293
+ if (obj.userData.is3D) {
62294
+ var mat4 = new this.THREE.Matrix4();
62295
+ mat4.makeRotationX(-Math.PI / 2);
62296
+ size.applyMatrix4(mat4);
62297
+ }
62301
62298
  return size;
62302
62299
  },
62303
62300
  animate: function animate() {
@@ -62327,8 +62324,8 @@ var guiParams = {
62327
62324
  });
62328
62325
  // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=script&lang=js
62329
62326
  /* harmony default export */ var components_com_graphicsvue_type_script_lang_js = (com_graphicsvue_type_script_lang_js);
62330
- // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=07e32868&prod&lang=scss&scoped=true
62331
- var com_graphicsvue_type_style_index_0_id_07e32868_prod_lang_scss_scoped_true = __webpack_require__("46ca");
62327
+ // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=3d926f5d&prod&lang=scss&scoped=true
62328
+ var com_graphicsvue_type_style_index_0_id_3d926f5d_prod_lang_scss_scoped_true = __webpack_require__("106c");
62332
62329
 
62333
62330
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
62334
62331
  /* globals __VUE_SSR_CONTEXT__ */
@@ -62439,18 +62436,18 @@ function normalizeComponent(
62439
62436
 
62440
62437
  var component = normalizeComponent(
62441
62438
  components_com_graphicsvue_type_script_lang_js,
62442
- com_graphicsvue_type_template_id_07e32868_scoped_true_render,
62439
+ com_graphicsvue_type_template_id_3d926f5d_scoped_true_render,
62443
62440
  staticRenderFns,
62444
62441
  false,
62445
62442
  null,
62446
- "07e32868",
62443
+ "3d926f5d",
62447
62444
  null
62448
62445
 
62449
62446
  )
62450
62447
 
62451
62448
  /* harmony default export */ var com_graphics = (component.exports);
62452
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-flcanvas/index.vue?vue&type=template&id=4b99f9dc&scoped=true
62453
- var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render = function render() {
62449
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7865f371-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-flcanvas/index.vue?vue&type=template&id=2733ad2c&scoped=true
62450
+ var com_flcanvasvue_type_template_id_2733ad2c_scoped_true_render = function render() {
62454
62451
  var _vm = this,
62455
62452
  _c = _vm._self._c;
62456
62453
  return _c('div', {
@@ -62463,9 +62460,9 @@ var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render = function rend
62463
62460
  }
62464
62461
  });
62465
62462
  };
62466
- var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_staticRenderFns = [];
62463
+ var com_flcanvasvue_type_template_id_2733ad2c_scoped_true_staticRenderFns = [];
62467
62464
 
62468
- // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=template&id=4b99f9dc&scoped=true
62465
+ // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=template&id=2733ad2c&scoped=true
62469
62466
 
62470
62467
  // EXTERNAL MODULE: ./node_modules/konva/lib/index.js
62471
62468
  var lib = __webpack_require__("362d");
@@ -65296,7 +65293,6 @@ var konvaStage = null,
65296
65293
  var _this = this;
65297
65294
  //resize方法
65298
65295
  window.addEventListener('resize', function () {
65299
- console.log('resize');
65300
65296
  if (konvaStage) {
65301
65297
  var obj = document.getElementById('konva-container');
65302
65298
  konvaStage.setWidth(obj.clientWidth);
@@ -65305,8 +65301,6 @@ var konvaStage = null,
65305
65301
  }
65306
65302
  });
65307
65303
  this.$nextTick(function () {
65308
- console.log(document.getElementById('konva-container'));
65309
- console.log(_this.$refs.svgDraw);
65310
65304
  konvaStage = new lib_default.a.Stage({
65311
65305
  className: 'stage',
65312
65306
  container: 'konva-container',
@@ -65365,7 +65359,6 @@ var konvaStage = null,
65365
65359
  position = null;
65366
65360
  if (e.target.attrs.hasOwnProperty("className") && e.target.attrs.className === "stage") {
65367
65361
  var obj = _this.getIntersects(inspectionRect.getClientRect());
65368
- console.log(obj);
65369
65362
  clickObj = obj.length > 0 ? obj[obj.length - 1] : null;
65370
65363
  } else {
65371
65364
  clickObj = e.target.attrs;
@@ -65605,6 +65598,11 @@ var konvaStage = null,
65605
65598
  obj = null;
65606
65599
  }
65607
65600
  },
65601
+ resize: function resize(width, height) {
65602
+ konvaStage.setWidth(width);
65603
+ konvaStage.setHeight(height);
65604
+ konvaStage._resizeDOM();
65605
+ },
65608
65606
  beforeDestroy: function beforeDestroy() {
65609
65607
  this.clearCache();
65610
65608
  }
@@ -65612,8 +65610,8 @@ var konvaStage = null,
65612
65610
  });
65613
65611
  // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=script&lang=js
65614
65612
  /* harmony default export */ var components_com_flcanvasvue_type_script_lang_js = (com_flcanvasvue_type_script_lang_js);
65615
- // EXTERNAL MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=style&index=0&id=4b99f9dc&prod&lang=scss&scoped=true
65616
- var com_flcanvasvue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true = __webpack_require__("a988");
65613
+ // EXTERNAL MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=style&index=0&id=2733ad2c&prod&lang=scss&scoped=true
65614
+ var com_flcanvasvue_type_style_index_0_id_2733ad2c_prod_lang_scss_scoped_true = __webpack_require__("0011");
65617
65615
 
65618
65616
  // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue
65619
65617
 
@@ -65626,17 +65624,17 @@ var com_flcanvasvue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true =
65626
65624
 
65627
65625
  var com_flcanvas_component = normalizeComponent(
65628
65626
  components_com_flcanvasvue_type_script_lang_js,
65629
- com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render,
65630
- com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_staticRenderFns,
65627
+ com_flcanvasvue_type_template_id_2733ad2c_scoped_true_render,
65628
+ com_flcanvasvue_type_template_id_2733ad2c_scoped_true_staticRenderFns,
65631
65629
  false,
65632
65630
  null,
65633
- "4b99f9dc",
65631
+ "2733ad2c",
65634
65632
  null
65635
65633
 
65636
65634
  )
65637
65635
 
65638
65636
  /* harmony default export */ var com_flcanvas = (com_flcanvas_component.exports);
65639
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/per-control.vue?vue&type=template&id=f547d5c6&scoped=true
65637
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7865f371-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/per-control.vue?vue&type=template&id=f547d5c6&scoped=true
65640
65638
  var per_controlvue_type_template_id_f547d5c6_scoped_true_render = function render() {
65641
65639
  var _vm = this,
65642
65640
  _c = _vm._self._c;
@@ -65744,7 +65742,7 @@ var per_control_component = normalizeComponent(
65744
65742
  )
65745
65743
 
65746
65744
  /* harmony default export */ var per_control = (per_control_component.exports);
65747
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"213d84a7-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/pid.vue?vue&type=template&id=09d5c9d8&scoped=true
65745
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7865f371-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/com-graphics/pid.vue?vue&type=template&id=09d5c9d8&scoped=true
65748
65746
  var pidvue_type_template_id_09d5c9d8_scoped_true_render = function render() {
65749
65747
  var _vm = this,
65750
65748
  _c = _vm._self._c;
@@ -66681,6 +66679,13 @@ exports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {
66681
66679
  }
66682
66680
  });
66683
66681
 
66682
+ /***/ }),
66683
+
66684
+ /***/ "fdfd":
66685
+ /***/ (function(module, exports, __webpack_require__) {
66686
+
66687
+ // extracted by mini-css-extract-plugin
66688
+
66684
66689
  /***/ })
66685
66690
 
66686
66691
  /******/ });
@@ -1 +1 @@
1
- @charset "UTF-8";#fl-model[data-v-07e32868],#konva-container[data-v-4b99f9dc]{width:100%;height:100%;cursor:pointer}#konva-container[data-v-4b99f9dc]{z-index:3;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:flex;flex-direction:column;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:flex;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}#svg-tigger[data-v-09d5c9d8]{cursor:pointer;height:100%;width:100%}
1
+ @charset "UTF-8";#fl-model[data-v-3d926f5d],#konva-container[data-v-2733ad2c]{width:100%;height:100%;cursor:pointer}#konva-container[data-v-2733ad2c]{z-index:3;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:flex;flex-direction:column;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:flex;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}#svg-tigger[data-v-09d5c9d8]{cursor:pointer;height:100%;width:100%}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fl-web-component",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "scripts": {
5
5
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
6
6
  "dev": "vue-cli-service serve",
@@ -51,7 +51,6 @@ var preTarget = [];
51
51
  mounted() {
52
52
  //resize方法
53
53
  window.addEventListener('resize', () => {
54
- console.log('resize');
55
54
  if (konvaStage) {
56
55
  const obj = document.getElementById('konva-container');
57
56
  konvaStage.setWidth(obj.clientWidth);
@@ -61,8 +60,6 @@ var preTarget = [];
61
60
  });
62
61
 
63
62
  this.$nextTick(() => {
64
- console.log(document.getElementById('konva-container'));
65
- console.log(this.$refs.svgDraw);
66
63
  konvaStage = new Konva.Stage({
67
64
  className: 'stage',
68
65
  container: 'konva-container',
@@ -121,7 +118,6 @@ var preTarget = [];
121
118
  e.target.attrs.className === "stage"
122
119
  ) {
123
120
  let obj = this.getIntersects(inspectionRect.getClientRect());
124
- console.log(obj);
125
121
  clickObj = obj.length > 0 ? obj[obj.length - 1] : null;
126
122
  } else {
127
123
  clickObj = e.target.attrs;
@@ -385,6 +381,11 @@ var preTarget = [];
385
381
  obj = null;
386
382
  }
387
383
  },
384
+ resize(width, height) {
385
+ konvaStage.setWidth(width);
386
+ konvaStage.setHeight(height);
387
+ konvaStage._resizeDOM();
388
+ },
388
389
  beforeDestroy() {
389
390
  this.clearCache();
390
391
  },
@@ -173,7 +173,7 @@
173
173
  45,
174
174
  window.innerWidth / window.innerHeight,
175
175
  0.1,
176
- 100000
176
+ 1000000000
177
177
  );
178
178
  camera.position.set(0, 100, 150);
179
179
  },
@@ -264,9 +264,9 @@
264
264
  child.userData.modelWorldPs = modelWorldPs;
265
265
  }
266
266
  });
267
- // this.compileShader();
268
267
  // cameraControls.fitToSphere(scene, true); // TODO 待处理,先用 setModelCenter 进行定位
269
268
  this.setModelCenter(modelGroup);
269
+ this.$emit('modelLoaded')
270
270
  // cameraControls.saveState();
271
271
  }
272
272
  },
@@ -282,44 +282,6 @@
282
282
  box: volume,
283
283
  };
284
284
  },
285
- compileShader() {
286
- scene.traverse(child => {
287
- if (child.isMesh) {
288
- child.material.onBeforeCompile = shader => {
289
- const vertexShader = `
290
- precision lowp float;
291
- attribute float visible;
292
- varying float vVisible;
293
- void main() {
294
- vVisible = visible;
295
- `;
296
- const fragmentShader = `
297
- precision lowp float;
298
- varying float vVisible;
299
- void main() {
300
- `;
301
- const fragColor = `
302
- #include <dithering_fragment>
303
- if (vVisible > 0.0) {
304
- gl_FragColor = vec4(outgoingLight, diffuseColor.a);
305
- } else {
306
- discard;
307
- }
308
- `;
309
- shader.vertexShader = shader.vertexShader.replace('void main() {', vertexShader);
310
- shader.fragmentShader = shader.fragmentShader.replace(
311
- 'void main() {',
312
- fragmentShader
313
- );
314
- shader.fragmentShader = shader.fragmentShader.replace(
315
- '#include <dithering_fragment>',
316
- fragColor
317
- );
318
- child.material.transparent = true;
319
- };
320
- }
321
- });
322
- },
323
285
  mouseDown() {
324
286
  firstTime = new Date().getTime();
325
287
  },
@@ -328,8 +290,15 @@
328
290
  if (!measureFlag) {
329
291
  lastTime = new Date().getTime();
330
292
  if (lastTime - firstTime < 300) {
331
- mouse.x = (event.clientX / instructions.offsetWidth) * 2 - 1;
332
- mouse.y = -(event.clientY / instructions.offsetHeight) * 2 + 1;
293
+ // 获取元素在页面中的偏移位置
294
+ const rect = renderer.domElement.getBoundingClientRect();
295
+ const x = event.clientX - rect.left;
296
+ const y = event.clientY - rect.top;
297
+
298
+ // mouse.x = (event.clientX / instructions.offsetWidth) * 2 - 1;
299
+ // mouse.y = -(event.clientY / instructions.offsetHeight) * 2 + 1;
300
+ mouse.x = (x / rect.width) * 2 - 1;
301
+ mouse.y = -(y / rect.height) * 2 + 1;
333
302
  raycaster.setFromCamera(mouse, camera);
334
303
  const intersects = raycaster.intersectObjects(scene.children, true);
335
304
  let params = {};
@@ -550,7 +519,10 @@
550
519
  if (obj.isGroup) {
551
520
  this.setModelCenter(obj);
552
521
  } else if (obj.isMesh) {
553
- this.setModelCenter(obj.parent);
522
+ let box = this.getSize(obj)
523
+ let center = this.getCenter(obj)
524
+ this.locateByCenterBox(center, box)
525
+ // this.setModelCenter(obj.parent);
554
526
  }
555
527
  }
556
528
  },
@@ -1451,20 +1423,23 @@
1451
1423
  },
1452
1424
  // 获取中心点
1453
1425
  getCenter(obj) {
1454
- console.log(obj)
1455
1426
  let center = new this.THREE.Vector3();
1456
1427
  obj.boundingBox.getCenter(center);
1457
- const mat4 = new this.THREE.Matrix4();
1458
- mat4.makeRotationX(-Math.PI / 2);
1459
- center.applyMatrix4(mat4)
1428
+ if (obj.userData.is3D) {
1429
+ const mat4 = new this.THREE.Matrix4();
1430
+ mat4.makeRotationX(-Math.PI / 2);
1431
+ center.applyMatrix4(mat4)
1432
+ }
1460
1433
  return center;
1461
1434
  },
1462
1435
  getSize(obj) {
1463
1436
  let size = new this.THREE.Vector3();
1464
1437
  obj.boundingBox.getSize(size);
1465
- const mat4 = new this.THREE.Matrix4();
1466
- mat4.makeRotationX(-Math.PI / 2);
1467
- size.applyMatrix4(mat4)
1438
+ if (obj.userData.is3D) {
1439
+ const mat4 = new this.THREE.Matrix4();
1440
+ mat4.makeRotationX(-Math.PI / 2);
1441
+ size.applyMatrix4(mat4)
1442
+ }
1468
1443
  return size;
1469
1444
  },
1470
1445
  animate() {