# Belt组件
使用Belt组件可以为实体添加皮带机,由 @tx3d/extension 包提供。
# 添加基础皮带机
import { Belt } from '@tx3d/extension';
// 构建参数
const params = {
path: [
[ -50, 1.5, 0 ],
[ -40, 1.5, 0 ],
[ -30, 5.5, 0 ],
[ -20, 5.5, 0 ],
[ -10, 1.5, 0 ],
[ 0, 1.5, 0 ]
],
belt: '../assets/models/皮带机/机架中间.glb',
wheel: '../assets/models/皮带机/拖带滚筒.glb',
head: '../assets/models/皮带机/机头.glb',
tail: '../assets/models/皮带机/机尾.glb',
// 以下参数是可选的 可以不传
// bracketLTop: '../assets/models/皮带机/支架_L_02.glb',
// bracketLMid: '../assets/models/皮带机/支架_L_01.glb',
// bracketLBottom: '../assets/models/皮带机/支架_L_03.glb',
// bracketRTop: '../assets/models/皮带机/支架_R_02.glb',
// bracketRMid: '../assets/models/皮带机/支架_R_01.glb',
// bracketRBottom: '../assets/models/皮带机/支架_R_03.glb',
// shutting: '../assets/models/皮带机/皮带闭锁.glb',
// shuttingLine: '../assets/models/皮带机/皮带闭锁链接线.glb',
// bracketWheel:'../assets/models/皮带机2/下方拖带滚筒.glb', // 支架中间的滚筒 可选
briquetteList: ['../assets/models/皮带机/煤块/煤块1.glb', '../assets/models/皮带机/煤块/煤块2.glb', '../assets/models/皮带机/煤块/煤块3.glb',
'../assets/models/皮带机/煤块/煤块4.glb', '../assets/models/皮带机/煤块/煤块5.glb', '../assets/models/皮带机/煤块/煤块6.glb',
'../assets/models/皮带机/煤块/煤块7.glb', '../assets/models/皮带机/煤块/煤块8.glb', '../assets/models/皮带机/煤块/煤块9.glb',
'../assets/models/皮带机/煤块/煤块10.glb', '../assets/models/皮带机/煤块/煤块11.glb'],
wheelGap: 2, // 皮带滚筒间距
bracketGap: 2.5, // 支架间距
shuttingGap: 3, // 闭锁间距
shuttingSide: true, // 闭锁是在左边还是右边 true是左边 false是右边
beltSpeed: 2.5, // 皮带转动速度 米每秒
beltWidth: 1.6, // 皮带的宽度
visibleDistance: 500, // 皮带的可见距离
startup: true, // 皮带开关
briquetteLoad: 25, // 煤流量
isLoad: true, // 是否按照煤流量填满煤
generateBriquette:true // 是否产生煤块
}
// 创建实体
const entity = engine.createEntity( { transform: { position: [0, 0, 0] } } );
// 添加皮带机渲染组件
const belt = entity.addComponent( Belt, params );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
提示
Belt组件初始化参数,详见BeltParameters。
皮带机建模参数可选部分说明:
这些参数可以不传
bracketLTop: '../assets/models/皮带机/支架_L_02.glb',
bracketLMid: '../assets/models/皮带机/支架_L_01.glb',
bracketLBottom: '../assets/models/皮带机/支架_L_03.glb',
bracketRTop: '../assets/models/皮带机/支架_R_02.glb',
bracketRMid: '../assets/models/皮带机/支架_R_01.glb',
bracketRBottom: '../assets/models/皮带机/支架_R_03.glb',
shutting: '../assets/models/皮带机/皮带闭锁.glb',
shuttingLine: '../assets/models/皮带机/皮带闭锁链接线.glb',
bracketWheel:'../assets/models/皮带机2/下方拖带滚筒.glb',
# 添加多条皮带机及搭接关系
import { Belt } from '@tx3d/extension';
const pathArr = [
[
[ -50, 1.5, 0 ],
[ -40, 1.5, 0 ],
[ -30, 5.5, 0 ],
[ -20, 5.5, 0 ],
[ -10, 1.5, 0 ],
[ 0, 1.5, 0 ]
],
[ [ 0, 1.5, 0 ], [ 15, 1.5, 0 ] ],
[ [ 30, 1.5, -5 ], [ 15, 1.5, -5 ] ],
[ [ 15, 0, -10 ], [ 15, 0, 15 ] ],
[ [ 25, -1.5, 15 ], [ 0, -4, 15 ] ],
[ [ 0, -5.5, 15 ], [ 0, -5.5, -20 ] ]
];
// !! 注意 点和点直接的距离 不能小于 机尾或机头 自带的皮带 长度 目前机尾 大约是3米
const beltArr = [];
for ( let i = 0, il = pathArr.length; i < il; i++ ) {
// 构建参数
const params = {
path: pathArr[ i ],
belt: '../assets/models/皮带机/机架中间.glb',
wheel: '../assets/models/皮带机/拖带滚筒.glb',
bracketLTop: '../assets/models/皮带机/支架_L_02.glb',
bracketLMid: '../assets/models/皮带机/支架_L_01.glb',
bracketLBottom: '../assets/models/皮带机/支架_L_03.glb',
bracketRTop: '../assets/models/皮带机/支架_R_02.glb',
bracketRMid: '../assets/models/皮带机/支架_R_01.glb',
bracketRBottom: '../assets/models/皮带机/支架_R_03.glb',
head: '../assets/models/皮带机/机头.glb',
tail: '../assets/models/皮带机/机尾.glb',
shutting: '../assets/models/皮带机/皮带闭锁.glb',
shuttingLine: '../assets/models/皮带机/皮带闭锁链接线.glb',
briquetteList: [
'../assets/models/皮带机/煤块/煤块1.glb',
'../assets/models/皮带机/煤块/煤块2.glb',
'../assets/models/皮带机/煤块/煤块3.glb',
'../assets/models/皮带机/煤块/煤块4.glb',
'../assets/models/皮带机/煤块/煤块5.glb',
'../assets/models/皮带机/煤块/煤块6.glb',
'../assets/models/皮带机/煤块/煤块7.glb',
'../assets/models/皮带机/煤块/煤块8.glb',
'../assets/models/皮带机/煤块/煤块9.glb',
'../assets/models/皮带机/煤块/煤块10.glb',
'../assets/models/皮带机/煤块/煤块11.glb'
],
wheelGap: 2, // 皮带滚筒间距
bracketGap: 2.5, // 支架间距
shuttingGap: 3, // 闭锁间距
shuttingSide: true, // 闭锁是在左边还是右边 true是左边 false是右边
beltSpeed: 2.5, // 皮带转动速度 米每秒
beltWidth: 1.6, // 皮带的宽度
visibleDistance: 500, // 皮带的可见距离
startup: true, // 皮带开关
briquetteLoad: 25, // 煤流量
isLoad: true // 是否按照煤流量填满煤
}
// 这几条皮带生产煤块 其他不生产
if ( i == 0 || i == 2 || i == 3 || i == 4 ) {
params.generateBriquette = true; // 产生煤块
}
// 创建实体
const entity = engine.createEntity( { transform: { position: [ 0, 0, 0 ] } } );
// 添加皮带机渲染组件
const belt = entity.addComponent( Belt, params );
beltArr.push( belt );
}
// 设置皮带搭接关系
beltArr[ 1 ].receiveBriquette = beltArr[ 0 ];
beltArr[ 2 ].receiveBriquette = beltArr[ 1 ];
beltArr[ 3 ].receiveBriquette = beltArr[ 2 ];
beltArr[ 4 ].receiveBriquette = beltArr[ 3 ];
beltArr[ 5 ].receiveBriquette = beltArr[ 4 ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 皮带机异物添加
添加异物需要在传入参数添加异物构造方法和异物线构造方法,具体如下:
import { AssetsManager } from '@tx3d/core';
// 提前加载 异物类型的模型
const largeCoalGLTF = await AssetsManager.loadGLTFModelAsset( '../assets/models/皮带机/大煤块.glb' );// 大块煤模型
const anchorBoltGLTF = await AssetsManager.loadGLTFModelAsset( '../assets/models/皮带机/锚杆.glb' );// 锚杆模型
// 添加创建异物的构造函数
// type 是你在调用添加异物时传入的参数 在这里接收 用以判断 添加什么类型模型
// parentObject 是添加的容器
params.createForeignBody = ( type, parentObject ) => {
let mesh;
if ( type == 0 ) {
mesh = largeCoalGLTF;
} else if ( type == 1 ) {
mesh = anchorBoltGLTF;
}
// 创建模型实体
return engine.modelManager.createModel( mesh, { transform: { parent: parentObject } } );
};
// 添加创建异物线的构造函数
params.createTrackLine = ( points ) => {
// 异物线样式
const trackLineStyle = {
coordinates: points,
lineJoin: 'round',
width: 10,
color: '#ff0000',
isClosed: false,
outline: true,
outlineWidth: 1,
outlineColor: "#ffffff",
flowSpeed: 1,
moveColor: "#ffffff"
}
return engine.createPixelLine( trackLineStyle );
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
添加异物及异物线方法调用,参数详见接口说明
belt.addForeignBody( 1, [ 0, 0, 0 ], [ 10, 0, 0 ] );
1
# 皮带机卡扣添加
添加卡扣需要在传入参数添加卡扣构造方法,具体如下:
// 添加创建皮带卡扣的构造函数
params.createFastening = ( points ) => {
// 线样式
const trackLineStyle = {
coordinates: points,
lineJoin: 'round',
width: 10,
color: '#ff0000',
isClosed: false,
outline: true,
outlineWidth: 1,
outlineColor: "#ffffff",
flowSpeed: 1,
moveColor: "#ffffff"
}
return engine.createPixelLine( trackLineStyle );
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
添加卡扣方法调用,参数详见接口说明
belt.addFastening( [ 0, 0, 0 ], 1 );
1
# 属性
🌏 receiveBriquette 设置接收皮带
// 皮带机2接收皮带机1上的物体
belt2.receiveBriquette = belt1;
1
2
2
🌏 forceVisible 强制隐藏(不受皮带机自动控制的影响)
// 获取当前隐藏值
const forceVisible = belt.forceVisible;
// 设置隐藏值
belt.forceVisible = false;
1
2
3
4
5
2
3
4
5
🌏 beltSpeed 设置皮带速度(米每秒 如果模型单位是米)
// 设置皮带机传输速度为10米每秒
belt.beltSpeed = 10;
1
2
2
🌏 beltStartup 设置皮带机开关
// 设置皮带机停止
belt.beltStartup = false;
1
2
2
🌏 briquetteLoad 设置煤流量
// 设置皮带机每秒添加25块
belt.briquetteLoad = 25;
1
2
2
🌏 generateBriquette 设置产生煤块
// 设置皮带机产生煤块
belt.generateBriquette = true;
1
2
2
# 接口
🌏 addForeignBody 添加异物及异物线
const foreignBodyID = belt.addForeignBody( 1, [ 0, 0, 0 ], [ 10, 0, 0 ] );
1
🌏 removeForeignBody 删除异物
// 删除这条皮带机上的异物 (如果有的话)
belt.removeForeignBody( foreignBodyID );
1
2
2
🌏 removeTrack 删除异物线
// 删除这条皮带机上的异物线 (如果有的话)
belt.removeTrack( foreignBodyID );
1
2
2
🌏 addFastening 添加皮带卡扣
const fasteningID = belt.addFastening( [ 0, 0, 0 ], 1 );
1
🌏 removeFastening 删除皮带卡扣
// 删除这条皮带机上的卡扣 (如果有的话)
belt.removeFastening(fasteningID);
1
2
2
🌏 setHighlight 设置高亮效果
// 设置高亮效果
belt.getComponent(Belt).renderer.setHighlight( true, { name: "2#减速器", color: "#ff0000" } );
1
2
2
← Bar组件 BoundHelper组件 →