# 煤层
# 加载煤层
1️⃣ 使用引擎(Engine)的loadWorkfaces接口加载煤层(工作面和采空区)。
import { defined } from '@tx3d/core';
// 加载工作面和采空区
engine.loadWorkfaces( 'assets/jsons/workfaces.json',
// 工作面配置参数
workface: {
color: '#000000'// 工作面颜色
},
// 采空区配置参数
goaf: {
color: '#aaaaaa'// 采空区颜色
}
).then( ( results ) => {
// 工作面实体数组
workfaces = [];
// 采空区实体数组
goafs = [];
for ( let i = 0, il = results.length; i < il; i++ ) {
const result = results[ i ];
// 判断工作面是否存在
if ( defined( result.workface ) ) {
workfaces.push( result.workface );
}
// 判断采空区是否存在
if ( defined( result.goaf ) ) {
goafs.push( result.goaf );
}
}
} );
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
提示
工作面和采空区配置参数,详见CoalSeamConfiguration。
2️⃣ 使用引擎(Engine)的loadWorkfacesByData接口加载煤层(工作面和采空区)。
// 加载工作面和采空区
const results = engine.loadWorkfacesByData( data, {
// 工作面配置参数
workface: {
color: '#000000'// 工作面颜色
},
// 采空区配置参数
goaf: {
color: '#aaaaaa'// 采空区颜色
}
} );
// 工作面实体数组
workfaces = [];
// 采空区实体数组
goafs = [];
for ( let i = 0, il = results.length; i < il; i++ ) {
const result = results[ i ];
// 判断工作面是否存在
if ( defined( result.workface ) ) {
workfaces.push( result.workface );
}
// 判断采空区是否存在
if ( defined( result.goaf ) ) {
goafs.push( result.goaf );
}
}
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
# 煤层纹理平铺间距及平铺方向设置
通过 tilingSpacing 初始属性设置纹理U方向和V方向平铺间距(单位:米),tilingSpacing 初始属性可以在数据中设置,也可以通过煤层加载接口的配置参数设置:
提示
- 在数据中设置
// 煤层数据 [{ "workface": { ....... "tilingSpacing": [ 20.0, 20.0 ], // 工作面U方向和V方向间隔20米平铺一次 ....... }, "goaf": { ...... "tilingSpacing": [ 10.0, 10.0 ], // 采空区U方向和V方向间隔10米平铺一次 ...... } }]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17- 通过煤层加载接口的配置参数设置
// 加载工作面和采空区 engine.loadWorkfaces( 'assets/jsons/workfaces.json', // 工作面配置参数 workface: { tilingSpacing: [ 20.0, 20.0 ] // 工作面U方向和V方向间隔20米平铺一次,也可以使用 Vector2 传递参数 }, // 采空区配置参数 goaf: { tilingSpacing: [ 10.0, 10.0 ] // // 采空区U方向和V方向间隔10米平铺一次,也可以使用 Vector2 传递参数 } );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import { Vector2 } from 'three'; // 加载工作面和采空区 const results = engine.loadWorkfacesByData( data, { // 工作面配置参数 workface: { tilingSpacing: new Vector2( 20.0, 20.0 ) // 工作面U方向和V方向间隔20米平铺一次 }, // 采空区配置参数 goaf: { tilingSpacing: new Vector2( 10.0, 10.0 ) // // 采空区U方向和V方向间隔10米平铺一次 } } );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20提示
程序会优先使用数据中的 tilingSpacing 属性!
通过 tilingDirection 初始属性设置纹理平铺方向,tilingDirection 初始属性可以在数据中设置,也可以通过煤层加载接口的配置参数设置:
提示
tilingDirection 数据结构如下所示:
{ start: Array<number> | Vector3, // 平铺方向起点坐标(地测坐标) end: Array<number> | Vector3 // 平铺方向终点坐标 (地测坐标) }
1
2
3
4- 在数据中设置
// 煤层数据 [{ "workface": { ....... "tilingDirection": { "start": [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ], // 工作面纹理平铺方向起点坐标(地测坐标) "end": [ 37408389.4456786, 4260347.04513537, 1081.582 ] // 工作面纹理平铺方向终点坐标(地测坐标) } ....... }, "goaf": { ...... "tilingDirection": { "start": [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ], // 采空区纹理平铺方向起点坐标(地测坐标) "end": [ 37408389.4456786, 4260347.04513537, 1081.582 ] // 采空区纹理平铺方向终点坐标(地测坐标 } ...... } }]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23- 通过煤层加载接口的配置参数设置
// 加载工作面和采空区 engine.loadWorkfaces( 'assets/jsons/workfaces.json', // 工作面配置参数 workface: { tilingDirection:{ start: [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ], // 工作面纹理平铺方向起点坐标(地测坐标),也可以使用 Vector3 传递参数 end: [ 37408389.4456786, 4260347.04513537, 1081.582 ] // 工作面纹理平铺方向终点坐标(地测坐标),也可以使用 Vector3 传递参数 } }, // 采空区配置参数 goaf: { tilingDirection:{ start: [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ], // 采空区纹理平铺方向起点坐标(地测坐标),也可以使用 Vector3 传递参数 end: [ 37408389.4456786, 4260347.04513537, 1081.582 ] // 采空区纹理平铺方向终点坐标(地测坐标),也可以使用 Vector3 传递参数 } } );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24import { Vector3 } from 'three'; // 加载工作面和采空区 const results = engine.loadWorkfacesByData( data, { // 工作面配置参数 workface: { tilingDirection:{ start: new Vector3( 37408003.4193593, 4260324.37902636, 1075.03287744472 ), // 工作面纹理平铺方向起点坐标(地测坐标) end: new Vector3( 37408389.4456786, 4260347.04513537, 1081.582 ) // 工作面纹理平铺方向终点坐标(地测坐标) } }, // 采空区配置参数 goaf: { tilingDirection:{ start: new Vector3( 37408003.4193593, 4260324.37902636, 1075.03287744472 ), // 采空区纹理平铺方向起点坐标(地测坐标) end: new Vector3( 37408389.4456786, 4260347.04513537, 1081.582 ) // 采空区纹理平铺方向终点坐标(地测坐标) } } } );
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提示
程序会优先使用数据中的 tilingDirection 属性!
# 煤层属性
提示
煤层使用CoalSeam组件渲染,更新属性或调用接口时需要先获取煤层渲染组件。
import { CoalSeam } from '@tx3d/core';
// 获取煤层渲染器
const coalSeam = entity.getComponent( CoalSeam );
2
3
4
🌏 type 煤层类型,只读。
// 获取煤层类型
const type = coalSeam.type;
2
注意
煤层类型取值"Workface"(工作面)或"Goaf"(采空区)。
🌏 wireframe 是否启用线框模式
// 获取是否启用线框模式
const wireframe = coalSeam.wireframe;
// 设置是否启用线框模式
coalSeam.wireframe = true;
2
3
4
5
🌏 opacity 透明度
// 获取透明度
const opacity = coalSeam.opacity;
// 设置透明度
coalSeam.opacity = 0.5;
2
3
4
5
🌏 topVisible 顶面可见性控制
// 获取顶面可见性
const topVisible = coalSeam.topVisible;
// 设置顶面可见性
coalSeam.topVisible = false;
2
3
4
5
🌏 bottomVisible 底面可见性控制
// 获取底面可见性
const bottomVisible = coalSeam.bottomVisible;
// 设置底面可见性
coalSeam.bottomVisible = false;
2
3
4
5
🌏 boundaryVisible 侧面可见性控制
// 获取侧面可见性
const boundaryVisible = coalSeam.boundaryVisible;
// 设置侧面可见性
coalSeam.boundaryVisible = false;
2
3
4
5
🌏 outlineVisible 边框可见性控制
// 获取边框可见性
const outlineVisible = coalSeam.outlineVisible;
// 设置边框可见性
coalSeam.outlineVisible = false;
2
3
4
5
🌏 gridVisible 附着网格可见性控制
// 获取附着网格可见性
const gridVisible = coalSeam.gridVisible;
// 设置附着网格可见性
coalSeam.gridVisible = true;
2
3
4
5
🌏 gridSize 附着网格大小
// 获取附着网格大小
const gridSize = coalSeam.gridSize;
// 设置附着网格大小
coalSeam.gridSize = 30;
2
3
4
5
🌏 gridRatio 附着网格线宽度比率
// 获取附着网格线宽比率
const gridRatio = coalSeam.gridRatio;
// 设置附着网格线宽比率
coalSeam.gridRatio = 0.015;
2
3
4
5
注意
gridRatio取值在[ 0.0 ~ 1.0 ]区间
🌏 gridColor 附着网格颜色
// 获取附着网格颜色
const gridColor = coalSeam.gridColor;
// 设置附着网格颜色
coalSeam.gridColor = '#ff00de';
2
3
4
5
🌏 gridIntensity 附着网格强度
// 获取附着网格X轴和Y轴方向的强度
const intensity = coalSeam.gridIntensity;
// 设置附着网格X轴和Y轴方向的强度
coalSeam.gridIntensity = [ 1.0, 0.0 ]; // 只显示X轴方向的附着网格
2
3
4
5
注意
附着网格强度取值在[ 0.0 ~ 1.0 ]区间,可以通过该属性实现只显示单一方向的附着网格。
# 煤层接口
🌏 setHighlight 设置是否高亮
// 高亮煤层
coalSeam.setHighlight( true, { color: '#ff0000', opacity: 0.5 } );
// 取消煤层高亮
coalSeam.setHighlight( false );
2
3
4
5
提示
高亮设置参数,详见HighlightParameters。