fl-web-component 1.2.1 → 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,10 @@ Vue.use(FlWebComponent)
46
46
  欢迎贡献代码和问题反馈。
47
47
 
48
48
  ## 更新日志
49
+ - 2025-06-09 1.2.2
50
+ 1. 优化图形绘制效果
51
+ 2. 调整业务端交互模型时的位置偏差
52
+ 3. 图纸模型新增点击、高亮、重置高亮等api,三维图形新增、获取中心点、计算实体大小等接口
49
53
  - 2025-06-03 1.2.1
50
54
  1. 修复模型拾取问题
51
55
  - 2025-05-30 1.2.0
@@ -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":
@@ -5865,17 +5887,6 @@ Factory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.get
5865
5887
  Factory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());
5866
5888
  Factory_1.Factory.addGetterSetter(Text, 'textDecoration', '');
5867
5889
 
5868
- /***/ }),
5869
-
5870
- /***/ "5949":
5871
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
5872
-
5873
- "use strict";
5874
- /* 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_b78ab6fa_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("a245");
5875
- /* 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_b78ab6fa_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_b78ab6fa_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
5876
- /* unused harmony reexport * */
5877
-
5878
-
5879
5890
  /***/ }),
5880
5891
 
5881
5892
  /***/ "5c7d":
@@ -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
 
@@ -23348,13 +23366,6 @@ exports.Util = {
23348
23366
 
23349
23367
  /***/ }),
23350
23368
 
23351
- /***/ "a245":
23352
- /***/ (function(module, exports, __webpack_require__) {
23353
-
23354
- // extracted by mini-css-extract-plugin
23355
-
23356
- /***/ }),
23357
-
23358
23369
  /***/ "a34e":
23359
23370
  /***/ (function(module, exports, __webpack_require__) {
23360
23371
 
@@ -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":"625bfe73-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=b78ab6fa&scoped=true
29245
- var com_graphicsvue_type_template_id_b78ab6fa_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_b78ab6fa_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=b78ab6fa&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
  },
@@ -61464,7 +61448,10 @@ var guiParams = {
61464
61448
  if (obj.isGroup) {
61465
61449
  this.setModelCenter(obj);
61466
61450
  } else if (obj.isMesh) {
61467
- 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);
61468
61455
  }
61469
61456
  }
61470
61457
  },
@@ -62291,20 +62278,23 @@ var guiParams = {
62291
62278
  },
62292
62279
  // 获取中心点
62293
62280
  getCenter: function getCenter(obj) {
62294
- console.log(obj);
62295
62281
  var center = new this.THREE.Vector3();
62296
62282
  obj.boundingBox.getCenter(center);
62297
- var mat4 = new this.THREE.Matrix4();
62298
- mat4.makeRotationX(-Math.PI / 2);
62299
- 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
+ }
62300
62288
  return center;
62301
62289
  },
62302
62290
  getSize: function getSize(obj) {
62303
62291
  var size = new this.THREE.Vector3();
62304
62292
  obj.boundingBox.getSize(size);
62305
- var mat4 = new this.THREE.Matrix4();
62306
- mat4.makeRotationX(-Math.PI / 2);
62307
- 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
+ }
62308
62298
  return size;
62309
62299
  },
62310
62300
  animate: function animate() {
@@ -62334,8 +62324,8 @@ var guiParams = {
62334
62324
  });
62335
62325
  // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=script&lang=js
62336
62326
  /* harmony default export */ var components_com_graphicsvue_type_script_lang_js = (com_graphicsvue_type_script_lang_js);
62337
- // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=b78ab6fa&prod&lang=scss&scoped=true
62338
- var com_graphicsvue_type_style_index_0_id_b78ab6fa_prod_lang_scss_scoped_true = __webpack_require__("5949");
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");
62339
62329
 
62340
62330
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
62341
62331
  /* globals __VUE_SSR_CONTEXT__ */
@@ -62446,18 +62436,18 @@ function normalizeComponent(
62446
62436
 
62447
62437
  var component = normalizeComponent(
62448
62438
  components_com_graphicsvue_type_script_lang_js,
62449
- com_graphicsvue_type_template_id_b78ab6fa_scoped_true_render,
62439
+ com_graphicsvue_type_template_id_3d926f5d_scoped_true_render,
62450
62440
  staticRenderFns,
62451
62441
  false,
62452
62442
  null,
62453
- "b78ab6fa",
62443
+ "3d926f5d",
62454
62444
  null
62455
62445
 
62456
62446
  )
62457
62447
 
62458
62448
  /* harmony default export */ var com_graphics = (component.exports);
62459
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"625bfe73-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
62460
- 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() {
62461
62451
  var _vm = this,
62462
62452
  _c = _vm._self._c;
62463
62453
  return _c('div', {
@@ -62470,9 +62460,9 @@ var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render = function rend
62470
62460
  }
62471
62461
  });
62472
62462
  };
62473
- var com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_staticRenderFns = [];
62463
+ var com_flcanvasvue_type_template_id_2733ad2c_scoped_true_staticRenderFns = [];
62474
62464
 
62475
- // 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
62476
62466
 
62477
62467
  // EXTERNAL MODULE: ./node_modules/konva/lib/index.js
62478
62468
  var lib = __webpack_require__("362d");
@@ -65303,7 +65293,6 @@ var konvaStage = null,
65303
65293
  var _this = this;
65304
65294
  //resize方法
65305
65295
  window.addEventListener('resize', function () {
65306
- console.log('resize');
65307
65296
  if (konvaStage) {
65308
65297
  var obj = document.getElementById('konva-container');
65309
65298
  konvaStage.setWidth(obj.clientWidth);
@@ -65312,8 +65301,6 @@ var konvaStage = null,
65312
65301
  }
65313
65302
  });
65314
65303
  this.$nextTick(function () {
65315
- console.log(document.getElementById('konva-container'));
65316
- console.log(_this.$refs.svgDraw);
65317
65304
  konvaStage = new lib_default.a.Stage({
65318
65305
  className: 'stage',
65319
65306
  container: 'konva-container',
@@ -65372,7 +65359,6 @@ var konvaStage = null,
65372
65359
  position = null;
65373
65360
  if (e.target.attrs.hasOwnProperty("className") && e.target.attrs.className === "stage") {
65374
65361
  var obj = _this.getIntersects(inspectionRect.getClientRect());
65375
- console.log(obj);
65376
65362
  clickObj = obj.length > 0 ? obj[obj.length - 1] : null;
65377
65363
  } else {
65378
65364
  clickObj = e.target.attrs;
@@ -65612,6 +65598,11 @@ var konvaStage = null,
65612
65598
  obj = null;
65613
65599
  }
65614
65600
  },
65601
+ resize: function resize(width, height) {
65602
+ konvaStage.setWidth(width);
65603
+ konvaStage.setHeight(height);
65604
+ konvaStage._resizeDOM();
65605
+ },
65615
65606
  beforeDestroy: function beforeDestroy() {
65616
65607
  this.clearCache();
65617
65608
  }
@@ -65619,8 +65610,8 @@ var konvaStage = null,
65619
65610
  });
65620
65611
  // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=script&lang=js
65621
65612
  /* harmony default export */ var components_com_flcanvasvue_type_script_lang_js = (com_flcanvasvue_type_script_lang_js);
65622
- // EXTERNAL MODULE: ./packages/components/com-flcanvas/index.vue?vue&type=style&index=0&id=4b99f9dc&prod&lang=scss&scoped=true
65623
- 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");
65624
65615
 
65625
65616
  // CONCATENATED MODULE: ./packages/components/com-flcanvas/index.vue
65626
65617
 
@@ -65633,17 +65624,17 @@ var com_flcanvasvue_type_style_index_0_id_4b99f9dc_prod_lang_scss_scoped_true =
65633
65624
 
65634
65625
  var com_flcanvas_component = normalizeComponent(
65635
65626
  components_com_flcanvasvue_type_script_lang_js,
65636
- com_flcanvasvue_type_template_id_4b99f9dc_scoped_true_render,
65637
- 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,
65638
65629
  false,
65639
65630
  null,
65640
- "4b99f9dc",
65631
+ "2733ad2c",
65641
65632
  null
65642
65633
 
65643
65634
  )
65644
65635
 
65645
65636
  /* harmony default export */ var com_flcanvas = (com_flcanvas_component.exports);
65646
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"625bfe73-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
65647
65638
  var per_controlvue_type_template_id_f547d5c6_scoped_true_render = function render() {
65648
65639
  var _vm = this,
65649
65640
  _c = _vm._self._c;
@@ -65751,7 +65742,7 @@ var per_control_component = normalizeComponent(
65751
65742
  )
65752
65743
 
65753
65744
  /* harmony default export */ var per_control = (per_control_component.exports);
65754
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"625bfe73-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
65755
65746
  var pidvue_type_template_id_09d5c9d8_scoped_true_render = function render() {
65756
65747
  var _vm = this,
65757
65748
  _c = _vm._self._c;
@@ -66688,6 +66679,13 @@ exports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {
66688
66679
  }
66689
66680
  });
66690
66681
 
66682
+ /***/ }),
66683
+
66684
+ /***/ "fdfd":
66685
+ /***/ (function(module, exports, __webpack_require__) {
66686
+
66687
+ // extracted by mini-css-extract-plugin
66688
+
66691
66689
  /***/ })
66692
66690
 
66693
66691
  /******/ });
@@ -1 +1 @@
1
- @charset "UTF-8";#fl-model[data-v-b78ab6fa],#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.1",
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
  },
@@ -557,7 +519,10 @@
557
519
  if (obj.isGroup) {
558
520
  this.setModelCenter(obj);
559
521
  } else if (obj.isMesh) {
560
- 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);
561
526
  }
562
527
  }
563
528
  },
@@ -1458,20 +1423,23 @@
1458
1423
  },
1459
1424
  // 获取中心点
1460
1425
  getCenter(obj) {
1461
- console.log(obj)
1462
1426
  let center = new this.THREE.Vector3();
1463
1427
  obj.boundingBox.getCenter(center);
1464
- const mat4 = new this.THREE.Matrix4();
1465
- mat4.makeRotationX(-Math.PI / 2);
1466
- 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
+ }
1467
1433
  return center;
1468
1434
  },
1469
1435
  getSize(obj) {
1470
1436
  let size = new this.THREE.Vector3();
1471
1437
  obj.boundingBox.getSize(size);
1472
- const mat4 = new this.THREE.Matrix4();
1473
- mat4.makeRotationX(-Math.PI / 2);
1474
- 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
+ }
1475
1443
  return size;
1476
1444
  },
1477
1445
  animate() {
@@ -29,7 +29,7 @@ function parseData(input) {
29
29
  function flattenAndComputeWorldMatrices(
30
30
  nodes,
31
31
  result = [],
32
- parentWorldMatrix = null,
32
+ // parentWorldMatrix = null,
33
33
  fatherId = ''
34
34
  ) {
35
35
  for (const node of nodes) {
@@ -44,9 +44,10 @@ function parseData(input) {
44
44
  }
45
45
 
46
46
  // 计算世界矩阵
47
- const worldMatrix = parentWorldMatrix
48
- ? parentWorldMatrix.clone().multiply(localMatrix)
49
- : localMatrix.clone();
47
+ // const worldMatrix = parentWorldMatrix
48
+ // ? parentWorldMatrix.clone().multiply(localMatrix)
49
+ // : localMatrix.clone();
50
+ const worldMatrix = localMatrix.clone();
50
51
 
51
52
  // 构造输出节点
52
53
  result.push({
@@ -62,7 +63,8 @@ function parseData(input) {
62
63
 
63
64
  // 递归处理子节点,传递当前世界矩阵
64
65
  if (children) {
65
- flattenAndComputeWorldMatrices(children, result, worldMatrix, instanceId);
66
+ // flattenAndComputeWorldMatrices(children, result, worldMatrix, instanceId);
67
+ flattenAndComputeWorldMatrices(children, result, instanceId);
66
68
  // flattenAndComputeWorldMatrices(children, result);
67
69
  }
68
70
  }