# 地层
# 加载地层
1️⃣ 使用引擎(Engine)的loadStratums接口加载地层。
// 加载地层
engine.loadStratums( 'assets/jsons/地层.json' ).then( ( entities ) => {
// 遍历地层实体
for ( let i = 0, il = entities.length; i < il; i++ ) {
// TODO:
}
} );
2
3
4
5
6
7
8
9
10
11
2️⃣ 使用引擎(Engine)的loadStratumsByData接口加载地层。
// 加载地层数据
const entities = engine.loadStratumsByData( data );
// 遍历地层实体
for ( let i = 0, il = entities.length; i < il; i++ ) {
// TODO:
}
2
3
4
5
6
7
8
9
# 地层纹理平铺间距设置
通过 tilingSpacing 初始属性设置纹理U方向和V方向的平铺间距(单位:米),tilingSpacing 初始属性需要再数据中设置,如下所示:
[{
"name": "地测0",
"tilingSpacing": [ 20.0, 20.0 ], // 地层0在U方向和V方向间隔20米平铺一次
"geometry": [{}, {}]
},{
"name": "地测1",
"tilingSpacing": [ 10.0, 10.0 ], // 地层1在U方向和V方向间隔20米平铺一次
"geometry": [{}, {}]
}]
2
3
4
5
6
7
8
9
注意
如果数据中未设置 tilingSpacing 属性,程序会使用默认值,即[ 20.0, 20.0 ]!
提示
# 地层属性
提示
地层使用Stratum组件渲染,更新属性或调用接口时需要先获取地层渲染组件。
import { Stratum } from '@tx3d/core';
// 获取地层渲染组件
const stratum = entity.getComponent( Stratum );
2
3
4
🌏 code 地层编码,只读。
// 获取地层编码
const code = stratum.code;
2
🌏 parentCode 地层父编码,只读。
// 获取地层父编码
const parentCode = stratum.parentCode;
2
🌏 surface 是否是地表层标识,只读。
// 获取是否是地表层
const surface = stratum.surface;
2
🌏 wireframe 是否启用线框模式
// 获取是否启用线框模式
const wireframe = stratum.wireframe;
// 设置是否启用线框模式
stratum.wireframe = true;
2
3
4
5
🌏 opacity 透明度
// 获取透明度
const opacity = stratum.opacity;
// 设置透明度
stratum.opacity = 0.5;
2
3
4
5
🌏 topVisible 顶面可见性控制
// 获取顶面可见性
const topVisible = stratum.topVisible;
// 设置顶面可见性
stratum.topVisible = false;
2
3
4
5
🌏 bottomVisible 底面可见性控制
// 获取底面可见性
const bottomVisible = stratum.bottomVisible;
// 设置底面可见性
stratum.bottomVisible = false;
2
3
4
5
🌏 boundaryVisible 侧面可见性控制
// 获取侧面可见性
const boundaryVisible = stratum.boundaryVisible;
// 设置侧面可见性
stratum.boundaryVisible = false;
2
3
4
5
🌏 outlineVisible 边框可见性控制
// 获取边框可见性
const outlineVisible = coalSeam.outlineVisible;
// 设置边框可见性
coalSeam.outlineVisible = false;
2
3
4
5
🌏 gridVisible 附着网格可见性控制
// 获取附着网格可见性
const gridVisible = stratum.gridVisible;
// 设置附着网格可见性
stratum.gridVisible = true;
2
3
4
5
🌏 gridSize 附着网格大小
// 获取附着网格大小
const gridSize = stratum.gridSize;
// 设置附着网格大小
stratum.gridSize = 30;
2
3
4
5
🌏 gridRatio 附着网格线宽度比率
// 获取附着网格线宽比率
const gridRatio = stratum.gridRatio;
// 设置附着网格线宽比率
stratum.gridRatio = 0.015;
2
3
4
5
注意
gridRatio取值在[ 0.0 ~ 1.0 ]区间
🌏 gridColor 附着网格颜色
// 获取附着网格颜色
const gridColor = stratum.gridColor;
// 设置附着网格颜色
stratum.gridColor = '#ff00de';
2
3
4
5
🌏 gridIntensity 附着网格强度
// 获取附着网格X轴和Y轴方向的强度
const intensity = stratum.gridIntensity;
// 设置附着网格X轴和Y轴方向的强度
stratum.gridIntensity = [ 1.0, 0.0 ]; // 只显示X轴方向的附着网格
2
3
4
5
注意
附着网格强度取值在[ 0.0 ~ 1.0 ]区间,可以通过该属性实现只显示单一方向的附着网格。
🌏 maskCenter 遮罩区域的中心点
// 获取遮罩区域中心点坐标
const maskCenter = stratum.maskCenter;
// 设置遮罩区域中心点
stratum.maskCenter = [ 100, 0, 0 ];
2
3
4
5
🌏 maskRadius 遮罩区域半径
// 获取遮罩区域半径
const maskRadius = stratum.maskRadius;
// 设置遮罩区域半径
stratum.maskRadius = 100;
2
3
4
5
🌏 maskColor 遮罩区域颜色
// 获取遮罩区域颜色
const maskColor = stratum.maskColor;
// 设置遮罩区域颜色
stratum.maskColor = '#ff0000';
2
3
4
5
🌏 maskOpacity 遮罩区域透明度
// 获取遮罩区域透明度
const maskOpacity = stratum.maskOpacity;
// 设置遮罩区域透明度
stratum.maskOpacity = 1.0; // 0.0不可见遮罩
2
3
4
5
注意
maskOpacity取值在[ 0.0 ~ 1.0 ]区间
# 地层接口
🌏 query 查询地层
import { defined, EventType, Stratum } from '@tx3d/core';
// 鼠标单击查询地层
engine.addEventListener( EventType.ENTITY_CLICK, ( event ) => {
// 实体
const entity = event.entity;
// 相交信息
const intersection = event.intersection;
// 获取地层渲染组件
const stratum = entity.getComponent( Stratum );
// 判断是否是地层
if ( defined( stratum ) ) {
// 使用相交点坐标查询地层
const result = stratum.query( intersection.point );
// 与地层顶板交点坐标(世界坐标)
const topPoint = result.topPoint;
// 与地层底板交点坐标(世界坐标)
const bottomPoint = result.bottomPoint;
}
} );
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
🌏 slices 地层切片
// 切线数组
const lines = [
[
[ 1000, 0.1, -50 ],
[ -1000, 0.1, -50 ],
[ -1000, 0.1, 500 ],
[ -2000, 0.1, 1000 ]
],
[
[ 100, 0.1, 2000 ],
[ -100, 0.1, 2000 ],
[ -1000, 0.1, -1000 ]
],
];
// 切片地层
stratum.slices( lines );
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
🌏 sections 剖切地层
// 剖切线数组
const lines = [
[
[ 100, 0.1, 0.0 ],
[ -100, 0.1, 0.0 ]
],
[
[ 0.0, 0.1, 100 ],
[ 0.0, 0.1, -100 ]
]
]
// 剖切地层
stratum.sections( lines );
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
🌏 digs 开挖地层
// 开挖孔洞点坐标数组
const points = [
[ 400, 0.1, 200 ],
[ 0, 0.1, 200 ],
[ 0, 0.1, -200 ],
[ 400, 0.1, -200 ]
];
// 开挖地层
stratum.digs( points );
2
3
4
5
6
7
8
9
10
11
12
主要
当前地层开挖只支持凸多边形孔洞,不支持凹多边形孔洞!
🌏 setHighlight 设置高亮
// 高亮地层
stratum.setHighlight( true, { color: '#00ff00', opacity: 0.5 } );
// 取消地层高亮
stratum.setHighlight( false );
2
3
4
5
提示
高亮设置参数,详见HighlightParameters。