fl-web-component 1.2.3 → 1.2.5

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,35 +46,39 @@ Vue.use(FlWebComponent)
46
46
  欢迎贡献代码和问题反馈。
47
47
 
48
48
  ## 更新日志
49
- - 2025-06-11 1.2.3
49
+ - 1.2.5 2025-06-17
50
+ 1. 修改remoAll方法不生效问题
51
+ - 1.2.4 2025-06-12
52
+ 1. 优化图形绘制效果
53
+ - 1.2.3 2025-06-11
50
54
  1. 修改相机定位
51
- - 2025-06-09 1.2.2
55
+ - 1.2.2 2025-06-09
52
56
  1. 优化图形绘制效果
53
57
  2. 调整业务端交互模型时的位置偏差
54
58
  3. 图纸模型新增点击、高亮、重置高亮等api,三维图形新增、获取中心点、计算实体大小等接口
55
- - 2025-06-03 1.2.1
59
+ - 1.2.1 2025-06-03
56
60
  1. 修复模型拾取问题
57
- - 2025-05-30 1.2.0
61
+ - 1.2.0 2025-05-30
58
62
  1. 图纸模型新增点击、高亮、重置高亮等api
59
63
  2. 三维图形新增、获取中心点、计算实体大小等接口
60
- - 2025-05-28 1.1.11
64
+ - 1.1.11 2025-05-28
61
65
  1. 调整视椎体可视范围
62
- - 2025-05-27 1.1.10
66
+ - 1.1.10 2025-05-27
63
67
  1. 支持更改模型透明度
64
- - 2025-05-26 1.1.9
68
+ - 1.1.9 2025-05-26
65
69
  1. 修复pid组件问题
66
70
  2. 修复instance-parser解析问题
67
- - 2025-05-22 1.1.7
71
+ - 1.1.7 2025-05-22
68
72
  1. 修复发版时递归发版的报错
69
- - 2025-05-22 1.1.0
73
+ - 1.1.0 2025-05-22
70
74
  1. 新增FLPerControl,FlSvg组件
71
75
  2. 新增功能方法,详细参考文档
72
- - 2025-05-16 1.0.12
76
+ - 1.0.12 2025-05-16
73
77
  1. flcanvas组件更新
74
- - 2025-05-15 1.0.11
78
+ - 1.0.11 2025-05-15
75
79
  1. 去除依赖方解析包,现在业务使用方无需配置解析器
76
80
  2. 去除umd产物,提高打包速度
77
81
  3. 优化打包产物,大幅减少产物体积
78
82
  4. 优化打包产物为兼容语法
79
- - 2025-05-12 1.0.0
83
+ - 1.0.0 2025-05-12
80
84
  1. 初始版本发布
@@ -762,6 +762,17 @@ exports.Easings = {
762
762
  }
763
763
  };
764
764
 
765
+ /***/ }),
766
+
767
+ /***/ "0ccb":
768
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
769
+
770
+ "use strict";
771
+ /* 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_0134be08_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("cdf6");
772
+ /* 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_0134be08_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_0134be08_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
773
+ /* unused harmony reexport * */
774
+
775
+
765
776
  /***/ }),
766
777
 
767
778
  /***/ "0ff5":
@@ -8984,13 +8995,6 @@ exports.Sepia = Sepia;
8984
8995
 
8985
8996
  /***/ }),
8986
8997
 
8987
- /***/ "7c10":
8988
- /***/ (function(module, exports, __webpack_require__) {
8989
-
8990
- // extracted by mini-css-extract-plugin
8991
-
8992
- /***/ }),
8993
-
8994
8998
  /***/ "7cc1":
8995
8999
  /***/ (function(module, exports, __webpack_require__) {
8996
9000
 
@@ -24933,6 +24937,13 @@ module.exports = g;
24933
24937
 
24934
24938
  /***/ }),
24935
24939
 
24940
+ /***/ "cdf6":
24941
+ /***/ (function(module, exports, __webpack_require__) {
24942
+
24943
+ // extracted by mini-css-extract-plugin
24944
+
24945
+ /***/ }),
24946
+
24936
24947
  /***/ "cf29":
24937
24948
  /***/ (function(module, exports, __webpack_require__) {
24938
24949
 
@@ -28216,17 +28227,6 @@ Animation.animations = [];
28216
28227
  Animation.animIdCounter = 0;
28217
28228
  Animation.animRunning = false;
28218
28229
 
28219
- /***/ }),
28220
-
28221
- /***/ "effe":
28222
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
28223
-
28224
- "use strict";
28225
- /* 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_581c5bb4_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7c10");
28226
- /* 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_581c5bb4_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_581c5bb4_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
28227
- /* unused harmony reexport * */
28228
-
28229
-
28230
28230
  /***/ }),
28231
28231
 
28232
28232
  /***/ "f0b4":
@@ -29241,8 +29241,8 @@ if (typeof window !== 'undefined') {
29241
29241
  // Indicate to webpack that this file can be concatenated
29242
29242
  /* harmony default export */ var setPublicPath = (null);
29243
29243
 
29244
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1b0b8642-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=581c5bb4&scoped=true
29245
- var com_graphicsvue_type_template_id_581c5bb4_scoped_true_render = function render() {
29244
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"0cfbbe05-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=0134be08&scoped=true
29245
+ var com_graphicsvue_type_template_id_0134be08_scoped_true_render = function render() {
29246
29246
  var _vm = this,
29247
29247
  _c = _vm._self._c;
29248
29248
  return _c('div', {
@@ -29253,7 +29253,7 @@ var com_graphicsvue_type_template_id_581c5bb4_scoped_true_render = function rend
29253
29253
  };
29254
29254
  var staticRenderFns = [];
29255
29255
 
29256
- // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=581c5bb4&scoped=true
29256
+ // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=template&id=0134be08&scoped=true
29257
29257
 
29258
29258
  // CONCATENATED MODULE: ./node_modules/camera-controls/dist/camera-controls.module.js
29259
29259
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
@@ -57188,6 +57188,10 @@ function parseData(input) {
57188
57188
  linewidth: (material === null || material === void 0 ? void 0 : material.linewidth) !== undefined ? material === null || material === void 0 ? void 0 : material.linewidth : 1 // 默认值
57189
57189
  };
57190
57190
  geomList.push({
57191
+ matrix: {
57192
+ val: primitive.matrix
57193
+ },
57194
+ prmid: primitive.prmid,
57191
57195
  geomId: primitiveData.id,
57192
57196
  type: primitiveData.geomType,
57193
57197
  text: primitiveData.geomText,
@@ -57211,7 +57215,7 @@ function parseData(input) {
57211
57215
  drawObjs: Array.from(drawObjMap.values()),
57212
57216
  instances: formatInstances
57213
57217
  };
57214
- // console.log('parseData', map);
57218
+ console.log('parseData', map);
57215
57219
  return map;
57216
57220
  }
57217
57221
 
@@ -59463,12 +59467,17 @@ function handleInstancedMeshModel(instances, drawObjs, type, scene, customColor,
59463
59467
  var _item$matrix;
59464
59468
  model.userData.instanceIndex = index;
59465
59469
  model.userData.instanceId = instances[_i].instanceId;
59470
+ model.userData.primId = mesh.prmid;
59466
59471
  model.name = meshName !== '' ? instances[_i].instanceId + meshName : instances[_i].instanceId;
59467
59472
  var matrixVal = (_item$matrix = item.matrix) === null || _item$matrix === void 0 ? void 0 : _item$matrix.val;
59468
59473
  if (matrixVal) {
59469
59474
  var m4 = new Matrix4();
59475
+ var meshMatrix = new Matrix4();
59476
+ var geomMatrix = new Matrix4();
59470
59477
  // m4.setPosition(new THREE.Vector3(9999999, 9999999, 9999999)); // TODO 临时隐藏方案
59471
- m4.elements = item.matrix.val;
59478
+ meshMatrix.elements = item.matrix.val;
59479
+ geomMatrix.elements = mesh.matrix.val;
59480
+ m4.multiplyMatrices(meshMatrix, geomMatrix);
59472
59481
  model.setMatrixAt(index, m4);
59473
59482
  var copyMatrix = new Matrix4().copy(m4);
59474
59483
  model.userData.copyMatrix = copyMatrix;
@@ -59489,8 +59498,8 @@ function handleInstancedMeshModel(instances, drawObjs, type, scene, customColor,
59489
59498
  for (var _i = 0; _i < instances.length; _i++) {
59490
59499
  _loop(_i);
59491
59500
  }
59492
- // console.log('modelGroup', modelGroup);
59493
- // console.log('drawObjMapInstance', drawObjMapInstance);
59501
+ console.log('modelGroup', modelGroup);
59502
+ console.log('drawObjMapInstance', drawObjMapInstance);
59494
59503
  return modelGroup;
59495
59504
  // timeRender();
59496
59505
  // console.log('scene', scene)
@@ -59671,8 +59680,9 @@ function draw3Dmodel(geom, instanceName, instanceCount, nColor, nOpacity) {
59671
59680
  };
59672
59681
  customMaterial && Object.assign(customMaterial, materialOptions);
59673
59682
  material = customMaterial || new MeshStandardMaterial(instance_parser_objectSpread(instance_parser_objectSpread({}, materialOptions), {}, {
59674
- roughness: 0.8,
59675
- envMapIntensity: 0.5 // 调低环境贴图的强度
59683
+ roughness: 0.6,
59684
+ metalness: 0.5,
59685
+ envMapIntensity: 1 // 调低环境贴图的强度
59676
59686
  // wireframe: true
59677
59687
  }));
59678
59688
 
@@ -61124,7 +61134,7 @@ var guiParams = {
61124
61134
  com_graphicsvue_type_script_lang_js_renderer.autoClearStencil = false;
61125
61135
  },
61126
61136
  initScene: function initScene() {
61127
- com_graphicsvue_type_script_lang_js_modelGroup = new this.THREE.Group();
61137
+ // modelGroup = new this.THREE.Group();
61128
61138
  com_graphicsvue_type_script_lang_js_scene = new this.THREE.Scene();
61129
61139
  },
61130
61140
  initCamera: function initCamera() {
@@ -61172,6 +61182,7 @@ var guiParams = {
61172
61182
  instances = _parseData.instances,
61173
61183
  drawObjs = _parseData.drawObjs;
61174
61184
  if (instances.length > 0) {
61185
+ com_graphicsvue_type_script_lang_js_modelGroup = new this.THREE.Group();
61175
61186
  com_graphicsvue_type_script_lang_js_modelGroup = handleInstancedMeshModel(instances, drawObjs, '', com_graphicsvue_type_script_lang_js_scene, color, meshNameConfig);
61176
61187
  var modelBox3 = new this.THREE.Box3();
61177
61188
  modelBox3.expandByObject(com_graphicsvue_type_script_lang_js_modelGroup);
@@ -61583,28 +61594,39 @@ var guiParams = {
61583
61594
  },
61584
61595
  // 删除场景中所有的实体
61585
61596
  removeAll: function removeAll() {
61586
- var _this5 = this;
61587
61597
  if (com_graphicsvue_type_script_lang_js_scene) {
61588
- com_graphicsvue_type_script_lang_js_scene.traverse(function (item) {
61589
- item.material && item.material.dispose();
61590
- item.geometry && item.geometry.dispose();
61591
- if (item instanceof _this5.THREE.Mesh) {
61598
+ this.removeTraverse();
61599
+ }
61600
+ },
61601
+ removeTraverse: function removeTraverse() {
61602
+ var length = com_graphicsvue_type_script_lang_js_modelGroup.children.length;
61603
+ if (length > 0) {
61604
+ var list = com_graphicsvue_type_script_lang_js_modelGroup.children[0];
61605
+ list.traverse(function (item) {
61606
+ if (item.isMesh) {
61607
+ item.material.dispose();
61608
+ item.geometry.dispose();
61592
61609
  item.clear();
61610
+ com_graphicsvue_type_script_lang_js_modelGroup.remove(item);
61593
61611
  }
61612
+ });
61613
+ com_graphicsvue_type_script_lang_js_modelGroup.remove(list);
61614
+ this.removeTraverse();
61615
+ } else {
61616
+ // 在这里清除一些标记之类的
61617
+ com_graphicsvue_type_script_lang_js_scene.traverse(function (item) {
61594
61618
  com_graphicsvue_type_script_lang_js_scene.remove(item);
61595
61619
  });
61596
- com_graphicsvue_type_script_lang_js_scene.clear();
61620
+ com_graphicsvue_type_script_lang_js_scene.remove(com_graphicsvue_type_script_lang_js_modelGroup);
61621
+ com_graphicsvue_type_script_lang_js_renderer.clear();
61622
+ com_graphicsvue_type_script_lang_js_modelGroup = null;
61597
61623
  }
61598
61624
  },
61599
61625
  // 销毁场景 释放内存
61600
61626
  destroyScene: function destroyScene() {
61601
61627
  cancelAnimationFrame(animateId);
61602
61628
  if (com_graphicsvue_type_script_lang_js_scene) {
61603
- com_graphicsvue_type_script_lang_js_scene.traverse(function (child) {
61604
- child.material && child.material.dispose();
61605
- child.geometry && child.geometry.dispose();
61606
- child = null;
61607
- });
61629
+ this.removeTraverse();
61608
61630
  com_graphicsvue_type_script_lang_js_scene.clear();
61609
61631
  com_graphicsvue_type_script_lang_js_scene = null;
61610
61632
  }
@@ -61625,11 +61647,11 @@ var guiParams = {
61625
61647
  }
61626
61648
  */
61627
61649
  drawCurve: function drawCurve(params) {
61628
- var _this6 = this;
61650
+ var _this5 = this;
61629
61651
  this.removeObjectByName(params.name);
61630
61652
  var route = [];
61631
61653
  params.path.forEach(function (element) {
61632
- route.push(new _this6.THREE.Vector3(element.x, element.y, element.z));
61654
+ route.push(new _this5.THREE.Vector3(element.x, element.y, element.z));
61633
61655
  });
61634
61656
  if (route.length > 1) {
61635
61657
  com_graphicsvue_type_script_lang_js_curve = new this.THREE.CatmullRomCurve3(route);
@@ -61653,11 +61675,11 @@ var guiParams = {
61653
61675
  }
61654
61676
  */
61655
61677
  drawTextureCurve: function drawTextureCurve(params) {
61656
- var _this7 = this;
61678
+ var _this6 = this;
61657
61679
  this.removeObjectByName(params.name);
61658
61680
  var route = [];
61659
61681
  params.path.forEach(function (element) {
61660
- route.push(new _this7.THREE.Vector3(element.x, element.y, element.z));
61682
+ route.push(new _this6.THREE.Vector3(element.x, element.y, element.z));
61661
61683
  });
61662
61684
  // 画曲线
61663
61685
  if (route.length > 1) {
@@ -61759,13 +61781,13 @@ var guiParams = {
61759
61781
  * 参数val: 爆炸的值
61760
61782
  */
61761
61783
  globalBomb: function globalBomb(val) {
61762
- var _this8 = this;
61784
+ var _this7 = this;
61763
61785
  if (com_graphicsvue_type_script_lang_js_scene.children.length === 0) return;
61764
61786
  for (var i = 0; i < com_graphicsvue_type_script_lang_js_scene.children.length; i++) {
61765
61787
  com_graphicsvue_type_script_lang_js_scene.children[i].traverse(function (item) {
61766
61788
  if (!item.isMesh || !item.worldDir) return;
61767
61789
  // 爆炸公式
61768
- _this8.computedBomb(item, val);
61790
+ _this7.computedBomb(item, val);
61769
61791
  });
61770
61792
  }
61771
61793
  // this.timeRender();
@@ -61932,7 +61954,7 @@ var guiParams = {
61932
61954
  },
61933
61955
  // 页面是否锁定
61934
61956
  initPointerLock: function initPointerLock() {
61935
- var _this9 = this;
61957
+ var _this8 = this;
61936
61958
  this.home();
61937
61959
  setTimeout(function () {
61938
61960
  pointControls = new PointerLockControls(com_graphicsvue_type_script_lang_js_camera, com_graphicsvue_type_script_lang_js_renderer.domElement);
@@ -61940,10 +61962,10 @@ var guiParams = {
61940
61962
  // 锁定
61941
61963
  pointControls.addEventListener('lock', function () {
61942
61964
  cameraControls.enabled = false;
61943
- window.addEventListener('keydown', _this9.onKeyDown, false);
61944
- window.addEventListener('keyup', _this9.onKeyUp, false);
61945
- com_graphicsvue_type_script_lang_js_renderer.domElement.removeEventListener('mouseup', _this9.mouseClick, false);
61946
- com_graphicsvue_type_script_lang_js_renderer.domElement.removeEventListener('mousedown', _this9.mouseDown, false);
61965
+ window.addEventListener('keydown', _this8.onKeyDown, false);
61966
+ window.addEventListener('keyup', _this8.onKeyUp, false);
61967
+ com_graphicsvue_type_script_lang_js_renderer.domElement.removeEventListener('mouseup', _this8.mouseClick, false);
61968
+ com_graphicsvue_type_script_lang_js_renderer.domElement.removeEventListener('mousedown', _this8.mouseDown, false);
61947
61969
  });
61948
61970
  // 解锁
61949
61971
  pointControls.addEventListener('unlock', function () {
@@ -61953,10 +61975,10 @@ var guiParams = {
61953
61975
  cameraControls.reset(true);
61954
61976
  cameraControls.update(0);
61955
61977
  setTimeout(function () {
61956
- window.removeEventListener('keydown', _this9.onKeyDown);
61957
- window.removeEventListener('keyup', _this9.onKeyUp);
61958
- com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mouseup', _this9.mouseClick, false);
61959
- com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mousedown', _this9.mouseDown, false);
61978
+ window.removeEventListener('keydown', _this8.onKeyDown);
61979
+ window.removeEventListener('keyup', _this8.onKeyUp);
61980
+ com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mouseup', _this8.mouseClick, false);
61981
+ com_graphicsvue_type_script_lang_js_renderer.domElement.addEventListener('mousedown', _this8.mouseDown, false);
61960
61982
  // this.timeRender()
61961
61983
  }, 0);
61962
61984
  });
@@ -62159,11 +62181,11 @@ var guiParams = {
62159
62181
  参数: object, 目标实体,
62160
62182
  */
62161
62183
  isolate: function isolate(object) {
62162
- var _this0 = this;
62184
+ var _this9 = this;
62163
62185
  // 隔离 将目标实体以外的实体隐藏掉
62164
62186
  com_graphicsvue_type_script_lang_js_scene.traverse(function (item) {
62165
62187
  if (item.isMesh && item.name !== object.name) {
62166
- var offsetMatrix = new _this0.THREE.Matrix4().copy(item.userData.copyMatrix).makeTranslation(9999999, 9999999, 9999999);
62188
+ var offsetMatrix = new _this9.THREE.Matrix4().copy(item.userData.copyMatrix).makeTranslation(9999999, 9999999, 9999999);
62167
62189
  item.setMatrixAt(item.userData.instanceIndex, offsetMatrix);
62168
62190
  item.instanceMatrix.needsUpdate = true;
62169
62191
  }
@@ -62171,7 +62193,7 @@ var guiParams = {
62171
62193
  },
62172
62194
  // 还原操作 将修改过的实体进行恢复
62173
62195
  restore: function restore() {
62174
- var _this1 = this;
62196
+ var _this0 = this;
62175
62197
  com_graphicsvue_type_script_lang_js_scene.traverse(function (item) {
62176
62198
  if (item.isMesh) {
62177
62199
  item.setColorAt(item.userData.instanceIndex, item.material.userData.nColor);
@@ -62191,14 +62213,14 @@ var guiParams = {
62191
62213
  item.userData.translateMatrixInvert = null;
62192
62214
  }
62193
62215
  if (item.userData.combineMatrixInvert) {
62194
- _this1.rotateMesh(item, {
62216
+ _this0.rotateMesh(item, {
62195
62217
  x: 0,
62196
62218
  y: 0,
62197
62219
  z: 0
62198
62220
  });
62199
62221
  item.userData.combineMatrixInvert = null;
62200
62222
  }
62201
- var offsetMatrix = new _this1.THREE.Matrix4().copy(item.userData.copyMatrix);
62223
+ var offsetMatrix = new _this0.THREE.Matrix4().copy(item.userData.copyMatrix);
62202
62224
  item.setMatrixAt(item.userData.instanceIndex, offsetMatrix);
62203
62225
  item.instanceMatrix.needsUpdate = true;
62204
62226
  }
@@ -62206,7 +62228,7 @@ var guiParams = {
62206
62228
  },
62207
62229
  // 添加自定义模型, 暂时只支持glb、gltf格式
62208
62230
  addCustomModel: function addCustomModel(name, position, url) {
62209
- var _this10 = this;
62231
+ var _this1 = this;
62210
62232
  var scale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
62211
62233
  var immediately = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
62212
62234
  var callback = arguments.length > 5 ? arguments[5] : undefined;
@@ -62224,9 +62246,9 @@ var guiParams = {
62224
62246
  locationModel.userData.cull = false;
62225
62247
  locationModel.name = name;
62226
62248
  com_graphicsvue_type_script_lang_js_scene.add(locationModel);
62227
- locationModel.position.copy(new _this10.THREE.Vector3(position.x, position.y, position.z));
62249
+ locationModel.position.copy(new _this1.THREE.Vector3(position.x, position.y, position.z));
62228
62250
  if (gltf.animations.length > 0) {
62229
- var actionMixer = new _this10.THREE.AnimationMixer(gltf.scene);
62251
+ var actionMixer = new _this1.THREE.AnimationMixer(gltf.scene);
62230
62252
  var walkActive = actionMixer.clipAction(gltf.animations[0]);
62231
62253
  walkActive.play();
62232
62254
  modelActive.push(walkActive);
@@ -62237,7 +62259,7 @@ var guiParams = {
62237
62259
  },
62238
62260
  // 删除添加的自定义模型
62239
62261
  removeCustomModel: function removeCustomModel(name) {
62240
- var _this11 = this;
62262
+ var _this10 = this;
62241
62263
  var obj = this.getObjectByName(name);
62242
62264
  obj.forEach(function (item, index) {
62243
62265
  if (item.animations > 0) {
@@ -62246,7 +62268,7 @@ var guiParams = {
62246
62268
  modelActions[index].uncacheRoot(modelActive[index]);
62247
62269
  }
62248
62270
  item.traverse(function (child) {
62249
- if (child instanceof _this11.THREE.Mesh) {
62271
+ if (child instanceof _this10.THREE.Mesh) {
62250
62272
  child.geometry.dispose();
62251
62273
  child.material.dispose();
62252
62274
  }
@@ -62331,8 +62353,8 @@ var guiParams = {
62331
62353
  });
62332
62354
  // CONCATENATED MODULE: ./packages/components/com-graphics/index.vue?vue&type=script&lang=js
62333
62355
  /* harmony default export */ var components_com_graphicsvue_type_script_lang_js = (com_graphicsvue_type_script_lang_js);
62334
- // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=581c5bb4&prod&lang=scss&scoped=true
62335
- var com_graphicsvue_type_style_index_0_id_581c5bb4_prod_lang_scss_scoped_true = __webpack_require__("effe");
62356
+ // EXTERNAL MODULE: ./packages/components/com-graphics/index.vue?vue&type=style&index=0&id=0134be08&prod&lang=scss&scoped=true
62357
+ var com_graphicsvue_type_style_index_0_id_0134be08_prod_lang_scss_scoped_true = __webpack_require__("0ccb");
62336
62358
 
62337
62359
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
62338
62360
  /* globals __VUE_SSR_CONTEXT__ */
@@ -62443,17 +62465,17 @@ function normalizeComponent(
62443
62465
 
62444
62466
  var component = normalizeComponent(
62445
62467
  components_com_graphicsvue_type_script_lang_js,
62446
- com_graphicsvue_type_template_id_581c5bb4_scoped_true_render,
62468
+ com_graphicsvue_type_template_id_0134be08_scoped_true_render,
62447
62469
  staticRenderFns,
62448
62470
  false,
62449
62471
  null,
62450
- "581c5bb4",
62472
+ "0134be08",
62451
62473
  null
62452
62474
 
62453
62475
  )
62454
62476
 
62455
62477
  /* harmony default export */ var com_graphics = (component.exports);
62456
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1b0b8642-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=1eba8e28&scoped=true
62478
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"0cfbbe05-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=1eba8e28&scoped=true
62457
62479
  var com_flcanvasvue_type_template_id_1eba8e28_scoped_true_render = function render() {
62458
62480
  var _vm = this,
62459
62481
  _c = _vm._self._c;
@@ -65652,7 +65674,7 @@ var com_flcanvas_component = normalizeComponent(
65652
65674
  )
65653
65675
 
65654
65676
  /* harmony default export */ var com_flcanvas = (com_flcanvas_component.exports);
65655
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1b0b8642-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
65677
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"0cfbbe05-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
65656
65678
  var per_controlvue_type_template_id_f547d5c6_scoped_true_render = function render() {
65657
65679
  var _vm = this,
65658
65680
  _c = _vm._self._c;
@@ -65760,7 +65782,7 @@ var per_control_component = normalizeComponent(
65760
65782
  )
65761
65783
 
65762
65784
  /* harmony default export */ var per_control = (per_control_component.exports);
65763
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1b0b8642-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=0ec35ee4&scoped=true
65785
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"0cfbbe05-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=0ec35ee4&scoped=true
65764
65786
  var pidvue_type_template_id_0ec35ee4_scoped_true_render = function render() {
65765
65787
  var _vm = this,
65766
65788
  _c = _vm._self._c;
@@ -1 +1 @@
1
- @charset "UTF-8";#fl-model[data-v-581c5bb4],#konva-container[data-v-1eba8e28]{width:100%;height:100%;cursor:pointer}#konva-container[data-v-1eba8e28]{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-0ec35ee4]{cursor:pointer;height:100%;width:100%}
1
+ @charset "UTF-8";#fl-model[data-v-0134be08],#konva-container[data-v-1eba8e28]{width:100%;height:100%;cursor:pointer}#konva-container[data-v-1eba8e28]{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-0ec35ee4]{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.3",
3
+ "version": "1.2.5",
4
4
  "scripts": {
5
5
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
6
6
  "dev": "vue-cli-service serve",
@@ -168,7 +168,7 @@
168
168
  renderer.autoClearStencil = false;
169
169
  },
170
170
  initScene() {
171
- modelGroup = new this.THREE.Group();
171
+ // modelGroup = new this.THREE.Group();
172
172
  scene = new this.THREE.Scene();
173
173
  },
174
174
  initCamera() {
@@ -216,6 +216,7 @@
216
216
  }
217
217
  const { instances, drawObjs } = parseData(data);
218
218
  if (instances.length > 0) {
219
+ modelGroup = new this.THREE.Group();
219
220
  modelGroup = handleInstancedMeshModel(
220
221
  instances,
221
222
  drawObjs,
@@ -669,26 +670,39 @@
669
670
  // 删除场景中所有的实体
670
671
  removeAll() {
671
672
  if (scene) {
672
- scene.traverse(item => {
673
- item.material && item.material.dispose();
674
- item.geometry && item.geometry.dispose();
675
- if (item instanceof this.THREE.Mesh) {
673
+ this.removeTraverse()
674
+ }
675
+ },
676
+ removeTraverse() {
677
+ let length = modelGroup.children.length
678
+ if (length > 0) {
679
+ let list = modelGroup.children[0]
680
+ list.traverse(item => {
681
+ if (item.isMesh) {
682
+ item.material.dispose();
683
+ item.geometry.dispose();
676
684
  item.clear();
685
+ modelGroup.remove(item);
677
686
  }
678
- scene.remove(item);
679
687
  });
680
- scene.clear();
688
+ modelGroup.remove(list);
689
+ this.removeTraverse();
690
+ } else {
691
+ // 在这里清除一些标记之类的
692
+ scene.traverse(item => {
693
+ scene.remove(item)
694
+ })
695
+ scene.remove(modelGroup);
696
+ renderer.clear();
697
+ modelGroup = null
681
698
  }
699
+
682
700
  },
683
701
  // 销毁场景 释放内存
684
702
  destroyScene() {
685
703
  cancelAnimationFrame(animateId);
686
704
  if (scene) {
687
- scene.traverse(child => {
688
- child.material && child.material.dispose();
689
- child.geometry && child.geometry.dispose();
690
- child = null;
691
- });
705
+ this.removeTraverse();
692
706
  scene.clear();
693
707
  scene = null;
694
708
  }
@@ -112,6 +112,10 @@ function parseData(input) {
112
112
  };
113
113
 
114
114
  geomList.push({
115
+ matrix: {
116
+ val: primitive.matrix,
117
+ },
118
+ prmid: primitive.prmid,
115
119
  geomId: primitiveData.id,
116
120
  type: primitiveData.geomType,
117
121
  text: primitiveData.geomText,
@@ -138,7 +142,7 @@ function parseData(input) {
138
142
  drawObjs: Array.from(drawObjMap.values()),
139
143
  instances: formatInstances,
140
144
  };
141
- // console.log('parseData', map);
145
+ console.log('parseData', map);
142
146
  return map;
143
147
  }
144
148
 
@@ -86,13 +86,18 @@ function handleInstancedMeshModel(
86
86
  if (item.instanceId == instances[i].instanceId) {
87
87
  model.userData.instanceIndex = index;
88
88
  model.userData.instanceId = instances[i].instanceId;
89
+ model.userData.primId = mesh.prmid;
89
90
  model.name =
90
91
  meshName !== '' ? instances[i].instanceId + meshName : instances[i].instanceId;
91
92
  const matrixVal = item.matrix?.val;
92
93
  if (matrixVal) {
93
94
  const m4 = new THREE.Matrix4();
95
+ const meshMatrix = new THREE.Matrix4();
96
+ const geomMatrix = new THREE.Matrix4();
94
97
  // m4.setPosition(new THREE.Vector3(9999999, 9999999, 9999999)); // TODO 临时隐藏方案
95
- m4.elements = item.matrix.val;
98
+ meshMatrix.elements = item.matrix.val;
99
+ geomMatrix.elements = mesh.matrix.val;
100
+ m4.multiplyMatrices(meshMatrix, geomMatrix);
96
101
  model.setMatrixAt(index, m4);
97
102
  const copyMatrix = new THREE.Matrix4().copy(m4);
98
103
  model.userData.copyMatrix = copyMatrix;
@@ -112,8 +117,8 @@ function handleInstancedMeshModel(
112
117
  }
113
118
  }
114
119
  }
115
- // console.log('modelGroup', modelGroup);
116
- // console.log('drawObjMapInstance', drawObjMapInstance);
120
+ console.log('modelGroup', modelGroup);
121
+ console.log('drawObjMapInstance', drawObjMapInstance);
117
122
  return modelGroup;
118
123
  // timeRender();
119
124
  // console.log('scene', scene)
@@ -318,8 +323,9 @@ function draw3Dmodel(geom, instanceName, instanceCount, nColor, nOpacity) {
318
323
  material = customMaterial ||
319
324
  new THREE.MeshStandardMaterial({
320
325
  ...materialOptions,
321
- roughness: 0.8,
322
- envMapIntensity: 0.5, // 调低环境贴图的强度
326
+ roughness: 0.6,
327
+ metalness: 0.5,
328
+ envMapIntensity: 1, // 调低环境贴图的强度
323
329
  // wireframe: true
324
330
  });
325
331