fl-web-component 1.0.7 → 1.0.8
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.
|
@@ -16109,7 +16109,7 @@ if (typeof window !== 'undefined') {
|
|
|
16109
16109
|
// Indicate to webpack that this file can be concatenated
|
|
16110
16110
|
/* harmony default export */ var setPublicPath = (null);
|
|
16111
16111
|
|
|
16112
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
16112
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"537c0758-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=5b13dc9d&scoped=true
|
|
16113
16113
|
var com_graphicsvue_type_template_id_5b13dc9d_scoped_true_render = function render() {
|
|
16114
16114
|
var _vm = this,
|
|
16115
16115
|
_c = _vm._self._c;
|
|
@@ -42745,7 +42745,7 @@ var component = normalizeComponent(
|
|
|
42745
42745
|
)
|
|
42746
42746
|
|
|
42747
42747
|
/* harmony default export */ var com_graphics = (component.exports);
|
|
42748
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
42748
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"537c0758-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=83d38700&scoped=true
|
|
42749
42749
|
var com_flcanvasvue_type_template_id_83d38700_scoped_true_render = function render() {
|
|
42750
42750
|
var _vm = this,
|
|
42751
42751
|
_c = _vm._self._c;
|
|
@@ -16118,7 +16118,7 @@ if (typeof window !== 'undefined') {
|
|
|
16118
16118
|
// Indicate to webpack that this file can be concatenated
|
|
16119
16119
|
/* harmony default export */ var setPublicPath = (null);
|
|
16120
16120
|
|
|
16121
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
16121
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"537c0758-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=5b13dc9d&scoped=true
|
|
16122
16122
|
var com_graphicsvue_type_template_id_5b13dc9d_scoped_true_render = function render() {
|
|
16123
16123
|
var _vm = this,
|
|
16124
16124
|
_c = _vm._self._c;
|
|
@@ -42754,7 +42754,7 @@ var component = normalizeComponent(
|
|
|
42754
42754
|
)
|
|
42755
42755
|
|
|
42756
42756
|
/* harmony default export */ var com_graphics = (component.exports);
|
|
42757
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
42757
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"537c0758-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=83d38700&scoped=true
|
|
42758
42758
|
var com_flcanvasvue_type_template_id_83d38700_scoped_true_render = function render() {
|
|
42759
42759
|
var _vm = this,
|
|
42760
42760
|
_c = _vm._self._c;
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div id="
|
|
2
|
+
<div id="fl-model"></div>
|
|
3
3
|
</template>
|
|
4
4
|
<script>
|
|
5
5
|
var [
|
|
@@ -49,7 +49,11 @@
|
|
|
49
49
|
var removeSpeed = 200,
|
|
50
50
|
upSpeed = 200; //控制器移动速度 , //控制跳起时的速度
|
|
51
51
|
var modelGroup;
|
|
52
|
-
|
|
52
|
+
var roamConfig = {
|
|
53
|
+
loop: false,
|
|
54
|
+
speed: 0, // 最大值为3
|
|
55
|
+
name: ''
|
|
56
|
+
}
|
|
53
57
|
// 绘制对象映射实例表
|
|
54
58
|
let drawObjMapInstance = {};
|
|
55
59
|
import CameraControls from 'camera-controls';
|
|
@@ -75,10 +79,6 @@
|
|
|
75
79
|
},
|
|
76
80
|
data() {
|
|
77
81
|
return {
|
|
78
|
-
roamConfig: {
|
|
79
|
-
loop: false,
|
|
80
|
-
speed: 0, // 最大值为3
|
|
81
|
-
},
|
|
82
82
|
};
|
|
83
83
|
},
|
|
84
84
|
created() {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
mouse = new this.THREE.Vector2();
|
|
89
89
|
},
|
|
90
90
|
mounted() {
|
|
91
|
-
instructions = document.getElementById('
|
|
91
|
+
instructions = document.getElementById('fl-model');
|
|
92
92
|
this.initRender();
|
|
93
93
|
this.initScene();
|
|
94
94
|
this.initCamera();
|
|
@@ -165,14 +165,15 @@
|
|
|
165
165
|
/*
|
|
166
166
|
参数:data 模型数据
|
|
167
167
|
color: '' 初始化模型的颜色 在业务方 有这个需求
|
|
168
|
+
meshNameConfig: {}
|
|
168
169
|
*/
|
|
169
|
-
drawModel(data, color = '') {
|
|
170
|
+
drawModel(data, color = '', meshNameConfig) {
|
|
170
171
|
if (Object.keys(data).length === 0) {
|
|
171
172
|
return;
|
|
172
173
|
}
|
|
173
174
|
const { instances, drawObjs } = parseData(data);
|
|
174
175
|
if (instances.length > 0) {
|
|
175
|
-
modelGroup = handleInstancedMeshModel(instances, drawObjs, '', scene, color);
|
|
176
|
+
modelGroup = handleInstancedMeshModel(instances, drawObjs, '', scene, color, meshNameConfig);
|
|
176
177
|
scene.add(modelGroup);
|
|
177
178
|
// this.compileShader();
|
|
178
179
|
// cameraControls.fitToSphere(scene, true); // TODO 待处理,先用 setModelCenter 进行定位
|
|
@@ -355,6 +356,11 @@
|
|
|
355
356
|
obj.material.opacity = ele.attr[key];
|
|
356
357
|
obj.material.transparent = true;
|
|
357
358
|
break;
|
|
359
|
+
case 'position':
|
|
360
|
+
targetObj.forEach(children => {
|
|
361
|
+
children.position.set(ele.attr[key].x, ele.attr[key].y, ele.attr[key].z)
|
|
362
|
+
})
|
|
363
|
+
break;
|
|
358
364
|
}
|
|
359
365
|
}
|
|
360
366
|
// obj.material.needsUpdate = true;
|
|
@@ -497,6 +503,39 @@
|
|
|
497
503
|
}
|
|
498
504
|
});
|
|
499
505
|
},
|
|
506
|
+
// 删除场景中所有的实体
|
|
507
|
+
removeAll() {
|
|
508
|
+
if (scene) {
|
|
509
|
+
scene.traverse(item => {
|
|
510
|
+
item.material && item.material.dispose();
|
|
511
|
+
item.geometry && item.geometry.dispose();
|
|
512
|
+
if (item instanceof this.THREE.Mesh) {
|
|
513
|
+
item.clear();
|
|
514
|
+
}
|
|
515
|
+
scene.remove(item);
|
|
516
|
+
})
|
|
517
|
+
scene.clear()
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
// 销毁场景 释放内存
|
|
521
|
+
destroyScene() {
|
|
522
|
+
cancelAnimationFrame(animateId)
|
|
523
|
+
if (scene) {
|
|
524
|
+
scene.traverse(child => {
|
|
525
|
+
child.material && child.material.dispose()
|
|
526
|
+
child.geometry && child.geometry.dispose()
|
|
527
|
+
child = null
|
|
528
|
+
})
|
|
529
|
+
scene.clear()
|
|
530
|
+
scene = null
|
|
531
|
+
}
|
|
532
|
+
renderer.forceContextLoss()
|
|
533
|
+
renderer.dispose()
|
|
534
|
+
camera = null
|
|
535
|
+
cameraControls = null
|
|
536
|
+
renderer.domElement = null
|
|
537
|
+
renderer = null
|
|
538
|
+
},
|
|
500
539
|
// 绘制曲线
|
|
501
540
|
/*
|
|
502
541
|
参数声明:Object
|
|
@@ -526,6 +565,13 @@
|
|
|
526
565
|
}
|
|
527
566
|
},
|
|
528
567
|
// 绘制贴图曲线
|
|
568
|
+
/*
|
|
569
|
+
参数声明:Object
|
|
570
|
+
{
|
|
571
|
+
path: [{x:0, y: 0, z: 0}], 坐标点信息
|
|
572
|
+
name: '', // 线条的名字, 用来清除时使用的
|
|
573
|
+
}
|
|
574
|
+
*/
|
|
529
575
|
drawTextureCurve(params) {
|
|
530
576
|
this.removeObjectByName(params.name);
|
|
531
577
|
const route = [];
|
|
@@ -552,8 +598,10 @@
|
|
|
552
598
|
let line = new this.THREE.Line(geometry, material);
|
|
553
599
|
line.name = params.name;
|
|
554
600
|
scene.add(line);
|
|
601
|
+
clock = new this.THREE.Clock();
|
|
555
602
|
}
|
|
556
603
|
},
|
|
604
|
+
//
|
|
557
605
|
// 开启漫游
|
|
558
606
|
/*
|
|
559
607
|
参数为Object
|
|
@@ -564,37 +612,38 @@
|
|
|
564
612
|
*/
|
|
565
613
|
startRoam(params) {
|
|
566
614
|
progress = 0;
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
speed: params.speed,
|
|
572
|
-
roamName: params.name,
|
|
573
|
-
}
|
|
574
|
-
);
|
|
615
|
+
roamConfig = {
|
|
616
|
+
loop: params.loop,
|
|
617
|
+
speed: params.speed,
|
|
618
|
+
}
|
|
575
619
|
this.drawTextureCurve({
|
|
576
620
|
name: params.name,
|
|
577
621
|
path: params.path,
|
|
578
622
|
});
|
|
623
|
+
roaming = true
|
|
579
624
|
clock = new this.THREE.Clock();
|
|
580
625
|
},
|
|
581
|
-
//
|
|
582
|
-
|
|
583
|
-
|
|
626
|
+
// 更新漫游的配置
|
|
627
|
+
/*
|
|
628
|
+
参数为Object
|
|
629
|
+
*/
|
|
630
|
+
updateRoamConfig(params) {
|
|
631
|
+
for (let key in params) {
|
|
632
|
+
roamConfig[key] = key === 'speed' ? params[key] / 300 : params[key]
|
|
633
|
+
}
|
|
584
634
|
},
|
|
585
635
|
// 结束/退出漫游
|
|
586
636
|
endRoam() {
|
|
587
637
|
roaming = false;
|
|
588
638
|
progress = 0;
|
|
589
|
-
this.removeObjectByName(this.roamConfig.
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
);
|
|
639
|
+
this.removeObjectByName(this.roamConfig.name);
|
|
640
|
+
roamConfig = {
|
|
641
|
+
loop: false,
|
|
642
|
+
speed: 0,
|
|
643
|
+
name: '',
|
|
644
|
+
}
|
|
645
|
+
roaming = false
|
|
646
|
+
lineTexture = null
|
|
598
647
|
},
|
|
599
648
|
// 相机跟随轨道
|
|
600
649
|
cameraTrack() {
|
|
@@ -611,16 +660,16 @@
|
|
|
611
660
|
camera.lookAt(pointBox.x, pointBox.y + 5, pointBox.z);
|
|
612
661
|
cameraControls.setPosition(point.x, point.y + 5, point.z, false);
|
|
613
662
|
cameraControls.setTarget(pointBox.x, pointBox.y + 5, pointBox.z, false);
|
|
614
|
-
progress +=
|
|
663
|
+
progress += roamConfig.speed / 300;
|
|
615
664
|
} else {
|
|
616
665
|
// 循环漫游
|
|
617
|
-
if (
|
|
666
|
+
if (roamConfig.loop) {
|
|
618
667
|
progress = 0;
|
|
619
668
|
}
|
|
620
669
|
}
|
|
621
670
|
} else {
|
|
622
671
|
lineTexture = null;
|
|
623
|
-
|
|
672
|
+
progress = 0;
|
|
624
673
|
}
|
|
625
674
|
},
|
|
626
675
|
// 全局整体炸开
|
|
@@ -1065,7 +1114,7 @@
|
|
|
1065
1114
|
};
|
|
1066
1115
|
</script>
|
|
1067
1116
|
<style lang="scss" scoped>
|
|
1068
|
-
#
|
|
1117
|
+
#fl-model {
|
|
1069
1118
|
width: 100%;
|
|
1070
1119
|
height: 100%;
|
|
1071
1120
|
cursor: pointer;
|
|
@@ -25,7 +25,7 @@ let drawObjMapInstance = {};
|
|
|
25
25
|
* @param {Object} instance - 实例对象,包含绘制对象ID和实例ID等数据
|
|
26
26
|
* @param {Array} drawObjs - 绘制对象数组,包含几何数据
|
|
27
27
|
*/
|
|
28
|
-
function handleInstancedMeshModel(instances, drawObjs, type, scene, customColor) {
|
|
28
|
+
function handleInstancedMeshModel(instances, drawObjs, type, scene, customColor, meshNameConfig) {
|
|
29
29
|
// 第一阶段:构建实例映射表
|
|
30
30
|
let modelGroup = new THREE.Group();
|
|
31
31
|
for (let i = 0; i < instances.length; i++) {
|
|
@@ -68,10 +68,15 @@ function handleInstancedMeshModel(instances, drawObjs, type, scene, customColor)
|
|
|
68
68
|
if (!model) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
+
let meshName = ''
|
|
72
|
+
for (const key in meshNameConfig) {
|
|
73
|
+
model.userData[key] = meshNameConfig[key]
|
|
74
|
+
meshName += ':' + meshNameConfig[key]
|
|
75
|
+
}
|
|
71
76
|
drawObj.MapInstance.forEach((instance, index) => {
|
|
72
77
|
if (instance.instanceId == instances[i].instanceId) {
|
|
73
78
|
model.userData.instanceIndex = index;
|
|
74
|
-
model.name = instances[i].instanceId;
|
|
79
|
+
model.name = meshName !== '' ? (instances[i].instanceId + meshName) : instances[i].instanceId;
|
|
75
80
|
const matrixVal = instance.matrix?.val;
|
|
76
81
|
if (matrixVal) {
|
|
77
82
|
const m4 = new THREE.Matrix4();
|