gs-bim-air 0.0.3-0.39 → 0.0.3-0.40
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/READMEBETA.md +4 -1
- package/demo//346/250/241/345/236/213/346/225/210/346/236/234/BIM+GIS.html +112 -0
- package/demo//346/250/241/345/236/213/346/225/210/346/236/234//345/205/250/346/201/257/345/275/261/345/203/217.html +194 -0
- package/docs/.vuepress/config.js +281 -245
- package/docs/animation//350/267/257/345/276/204/345/271/263/347/247/273/345/212/250/347/224/273/346/226/207/346/241/243.md +39 -24
- package/docs/classes/Longan.PersistenceManager.md +1 -1
- package/docs//345/212/240/350/275/275/346/230/276/347/244/272/346/250/241/345/236/213.md +93 -0
- package/docs//345/277/253/351/200/237/344/270/212/346/211/213.md +90 -74
- package/docs//346/250/241/345/236/213/344/272/244/344/272/222//344/272/213/344/273/266/347/233/221/345/220/254.md +70 -0
- package/docs//346/250/241/345/236/213/344/272/244/344/272/222//350/247/206/345/233/276/350/256/276/347/275/256.md +25 -0
- package/docs//346/250/241/345/236/213/344/272/244/344/272/222//351/200/211/346/213/251/347/256/241/347/220/206/345/231/250.md +42 -0
- package/docs//347/273/223/346/236/204/346/240/221/344/270/216/346/236/204/344/273/266//346/236/204/344/273/266/345/256/232/344/275/215/343/200/201/345/261/236/346/200/247/346/230/276/347/244/272.md +27 -0
- package/docs//347/273/223/346/236/204/346/240/221/344/270/216/346/236/204/344/273/266//346/236/204/344/273/266/346/240/267/345/274/217/350/256/276/347/275/256.md +66 -15
- package/docs//347/273/223/346/236/204/346/240/221/344/270/216/346/236/204/344/273/266//346/236/204/344/273/266/351/232/220/350/227/217/343/200/201/351/232/224/347/246/273/343/200/201/351/253/230/344/272/256.md +83 -0
- package/docs//347/273/223/346/236/204/346/240/221/344/270/216/346/236/204/344/273/266//347/273/223/346/236/204/346/240/221.md +3 -1
- package/docs//351/205/215/347/275/256/LoaderOptions.md +29 -0
- package/docs//351/205/215/347/275/256/Options.md +177 -0
- package/lib/BimAir.common-report.html +2 -2
- package/lib/BimAir.common.js +16 -16
- package/lib/BimAir.css +41 -41
- package/lib/BimAir.umd-report.html +2 -2
- package/lib/BimAir.umd.js +16 -16
- package/lib/BimAir.umd.min-report.html +2 -2
- package/lib/BimAir.umd.min.js +16 -16
- package/lib/undefined.gzundefined +0 -0
- package/package.json +1 -1
- package/public/js/longan/longan.js +167 -159
- package/public/js/longan/longan.wasm +0 -0
- package/public/js/longanWithoutShareArrayBuffer/longan.js +1 -1
- package/public/js/longanWithoutShareArrayBuffer/longan.wasm +0 -0
- package/docs/feature//345/257/271/350/261/241/351/200/211/346/213/251.md +0 -86
- package/docs/feature//345/261/236/346/200/247/346/230/276/347/244/272.md +0 -254
- package/docs/feature//350/247/206/345/233/276/350/256/276/347/275/256.md +0 -96
- package/docs/options/options.md +0 -75
package/READMEBETA.md
CHANGED
|
@@ -406,7 +406,6 @@ viewer.loadRenderObjects(["6ddabd40-4492-42f0-a16e-b9c0f9bb98b9"]);
|
|
|
406
406
|
### 0.0.30.39
|
|
407
407
|
|
|
408
408
|
- 更新 public/js 里的内核文件,安装此版本需替换 js 文件夹
|
|
409
|
-
- 修复添加钻孔平硐结构树不更新问题
|
|
410
409
|
- 增加添加平面的接口,使用方式如下,具体文档请看 [Germetry.Plane](.\docs\classes\Germetry.Plane.md)
|
|
411
410
|
|
|
412
411
|
```js
|
|
@@ -418,3 +417,7 @@ plane
|
|
|
418
417
|
console.log("planeObject", planeObject);
|
|
419
418
|
});
|
|
420
419
|
```
|
|
420
|
+
|
|
421
|
+
### 0.0.30.40
|
|
422
|
+
|
|
423
|
+
- 修复添加钻孔平硐结构树不更新问题
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
7
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
|
|
8
|
+
<title>轻量化平台</title>
|
|
9
|
+
<link
|
|
10
|
+
rel="stylesheet"
|
|
11
|
+
href="https://static.graphicstone.com/bimAir/BimAir.css"
|
|
12
|
+
/>
|
|
13
|
+
<script src="https://static.graphicstone.com/vue.min.js"></script>
|
|
14
|
+
<script src="https://static.graphicstone.com/bimAir/BimAir.umd.min.js"></script>
|
|
15
|
+
</head>
|
|
16
|
+
|
|
17
|
+
<body>
|
|
18
|
+
<style>
|
|
19
|
+
body {
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
height: 100vh;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#app {
|
|
26
|
+
height: 100vh;
|
|
27
|
+
position: relative;
|
|
28
|
+
}
|
|
29
|
+
</style>
|
|
30
|
+
<div id="app">
|
|
31
|
+
<viewer-wrapper elementId="viewer" style="height: 100%; width: 100%" />
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<script type="text/javascript">
|
|
35
|
+
new Vue({
|
|
36
|
+
el: "#app",
|
|
37
|
+
});
|
|
38
|
+
let options = {
|
|
39
|
+
elementId: "viewer",
|
|
40
|
+
// background: "linear-gradient(#e3fcfc, #f6ffff)",
|
|
41
|
+
isShowLoading: false,
|
|
42
|
+
modelService: "https://8.134.85.254:9031/api",
|
|
43
|
+
fileService: "https://8.134.85.254:9041/api",
|
|
44
|
+
toolbarVisible: {
|
|
45
|
+
leftToolbar: false,
|
|
46
|
+
rightToolbar: false,
|
|
47
|
+
bottomToolbar: false
|
|
48
|
+
},
|
|
49
|
+
components: {
|
|
50
|
+
compass: {
|
|
51
|
+
visible: false
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
BimAir.Loader({
|
|
57
|
+
isShareArrayBuffer: false,
|
|
58
|
+
}).then(() => {
|
|
59
|
+
let viewer = new BimAir.Viewer(options);
|
|
60
|
+
viewer.sceneSegment.camera.projection =
|
|
61
|
+
BimAir.ProjectionType.Orthographic;
|
|
62
|
+
// 设置环境光,范围是0~255
|
|
63
|
+
viewer.viewSegment.color.ambient = [0, 0, 0];
|
|
64
|
+
// 设置反光为0
|
|
65
|
+
viewer.viewSegment.color.specular = 0;
|
|
66
|
+
let model = new BimAir.Longan.RenderObject();
|
|
67
|
+
model.name = "场景";
|
|
68
|
+
viewer.process.addRenderObject(null, model);
|
|
69
|
+
viewer.renderObject = model;
|
|
70
|
+
|
|
71
|
+
// 加载地球
|
|
72
|
+
let tianditu = new BimAir.DataSource();
|
|
73
|
+
tianditu._type = "TianDiTu";
|
|
74
|
+
tianditu._key = "c1f84a71f631d1e265b461b63e066511";
|
|
75
|
+
let earthObject = new BimAir.MapTileSet3D(
|
|
76
|
+
256,
|
|
77
|
+
[-180, -85.051129, 180, 85.051129],
|
|
78
|
+
3,
|
|
79
|
+
17,
|
|
80
|
+
tianditu,
|
|
81
|
+
viewer
|
|
82
|
+
);
|
|
83
|
+
earthObject.depthRange = [0.1, 1];
|
|
84
|
+
viewer.process.addRenderObject(
|
|
85
|
+
viewer.process.renderObject,
|
|
86
|
+
earthObject
|
|
87
|
+
);
|
|
88
|
+
viewer.operatorManager.clear();
|
|
89
|
+
viewer.operatorManager.add(new BimAir.EarthCameraMouse3D());
|
|
90
|
+
|
|
91
|
+
// 视角定位
|
|
92
|
+
let testTarget = new Float64Array([-2450.0265956453973, 5323.723761133987, 2508.6950203882448]);
|
|
93
|
+
let testcameraWidth = 20;
|
|
94
|
+
let rotateDeg = 0;
|
|
95
|
+
earthObject.viewToHK(testTarget, rotateDeg, testcameraWidth);
|
|
96
|
+
|
|
97
|
+
viewer.sceneSegment.camera.up = [0, 0, 1];
|
|
98
|
+
viewer.updateDisplay();
|
|
99
|
+
earthObject.render();
|
|
100
|
+
|
|
101
|
+
// 加载模型
|
|
102
|
+
let gisRefRO = new BimAir.GisRefLightModel();
|
|
103
|
+
gisRefRO.lonlat = [111, 23, -14600];
|
|
104
|
+
gisRefRO.scale = [1, 1, 1];
|
|
105
|
+
viewer.process.addRenderObject(viewer.process.renderObject, gisRefRO);
|
|
106
|
+
gisRefRO.reference = "58fe9c88-7364-46a5-b51a-79b244199e60";
|
|
107
|
+
gisRefRO.loadReferenceModel(viewer.process.persistenceManager);
|
|
108
|
+
viewer.updateDisplay();
|
|
109
|
+
});
|
|
110
|
+
</script>
|
|
111
|
+
</body>
|
|
112
|
+
</html>
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
7
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
|
|
8
|
+
<title>轻量化平台</title>
|
|
9
|
+
<link
|
|
10
|
+
rel="stylesheet"
|
|
11
|
+
href="https://static.graphicstone.com/bimAir/BimAir.css"
|
|
12
|
+
/>
|
|
13
|
+
<script src="https://static.graphicstone.com/vue.min.js"></script>
|
|
14
|
+
<script src="https://static.graphicstone.com/bimAir/BimAir.umd.min.js"></script>
|
|
15
|
+
</head>
|
|
16
|
+
|
|
17
|
+
<body>
|
|
18
|
+
<style>
|
|
19
|
+
body {
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
height: 100vh;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#app {
|
|
26
|
+
height: 100vh;
|
|
27
|
+
position: relative;
|
|
28
|
+
}
|
|
29
|
+
</style>
|
|
30
|
+
<div id="app">
|
|
31
|
+
<viewer-wrapper elementId="viewer" style="height: 100%; width: 100%" />
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<script type="text/javascript">
|
|
35
|
+
new Vue({
|
|
36
|
+
el: "#app",
|
|
37
|
+
});
|
|
38
|
+
let options = {
|
|
39
|
+
elementId: "viewer",
|
|
40
|
+
// background: "linear-gradient(#e3fcfc, #f6ffff)",
|
|
41
|
+
isShowLoading: false,
|
|
42
|
+
modelService: "https://static.graphicstone.com/modelApi",
|
|
43
|
+
fileService: "https://static.graphicstone.com/fileApi",
|
|
44
|
+
toolbarVisible: {
|
|
45
|
+
leftToolbar: false,
|
|
46
|
+
rightToolbar: false,
|
|
47
|
+
bottomToolbar: false
|
|
48
|
+
},
|
|
49
|
+
components: {
|
|
50
|
+
compass: {
|
|
51
|
+
visible: false
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
let prefix = `/file-service`
|
|
56
|
+
let urls = {
|
|
57
|
+
file: (fileService, id) => `${fileService}${prefix}/files/${id}`
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
let fileService = {
|
|
61
|
+
urls
|
|
62
|
+
}
|
|
63
|
+
BimAir.Loader({
|
|
64
|
+
isShareArrayBuffer: false,
|
|
65
|
+
}).then(() => {
|
|
66
|
+
let viewer = new BimAir.Viewer(options);
|
|
67
|
+
viewer.sceneSegment.camera.projection = BimAir.Longan.ProjectionType.Orthographic;
|
|
68
|
+
viewer.sceneSegment.renderingOptions.setCullingMaximumExtent(0).setViewFrustumCulling(false);
|
|
69
|
+
// this.viewer = viewer;
|
|
70
|
+
|
|
71
|
+
let panoramaObject = new BimAir.Longan.PanoramaObject();
|
|
72
|
+
viewer.process.addRenderObject(null, panoramaObject);
|
|
73
|
+
viewer.renderObject = panoramaObject;
|
|
74
|
+
|
|
75
|
+
let textureURL = fileService.urls.file(
|
|
76
|
+
options.fileService,
|
|
77
|
+
"6375b168dcc0567781358bad"
|
|
78
|
+
);
|
|
79
|
+
initPanorama(viewer, textureURL, panoramaObject);
|
|
80
|
+
viewer.process.commandManager.execute(new BimAir.Longan.CommandPanoramaModelSelect());
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
function initPanorama(viewer, textureURL, panoramaObject) {
|
|
84
|
+
console.log("initPanorama");
|
|
85
|
+
|
|
86
|
+
let canvas = document.createElement("canvas");
|
|
87
|
+
let context = canvas.getContext("2d");
|
|
88
|
+
|
|
89
|
+
let img = new Image();
|
|
90
|
+
img.crossOrigin = "Anonymous";
|
|
91
|
+
img.src = textureURL;
|
|
92
|
+
|
|
93
|
+
img.onload = () => {
|
|
94
|
+
console.log("imgloaded");
|
|
95
|
+
// 使用Points点列表生成Mesh
|
|
96
|
+
// let viewer = this.viewer;
|
|
97
|
+
|
|
98
|
+
let imgWidth = img.width;
|
|
99
|
+
let imgHeight = img.height;
|
|
100
|
+
|
|
101
|
+
// 设置画布尺寸
|
|
102
|
+
canvas.width = imgWidth;
|
|
103
|
+
canvas.height = imgHeight;
|
|
104
|
+
|
|
105
|
+
// 将图片按像素写入画布
|
|
106
|
+
context.drawImage(img, 0, 0, imgWidth, imgHeight);
|
|
107
|
+
|
|
108
|
+
// 读取图片像素信息
|
|
109
|
+
let imageData = context.getImageData(0, 0, imgWidth, imgHeight);
|
|
110
|
+
|
|
111
|
+
// 将整个球划分成32 * 32块瓦片
|
|
112
|
+
let division = 32;
|
|
113
|
+
|
|
114
|
+
BimAir.LonganCore.JS_Open_Segment_By_Key(panoramaObject.segment.key);
|
|
115
|
+
{
|
|
116
|
+
BimAir.LonganCore.JS_Set_Rendering_Options("cull back face=off");
|
|
117
|
+
// LonganCore.JS_UnSet_One_Rendering_Option("lock face color");
|
|
118
|
+
let imageName = "panoTexture";
|
|
119
|
+
BimAir.LonganCore.JS_Set_Color("faces=(diffuse=" + imageName + ")");
|
|
120
|
+
let imageKey = BimAir.LonganCore.JS_Insert_Image(
|
|
121
|
+
0,
|
|
122
|
+
0,
|
|
123
|
+
0,
|
|
124
|
+
imgWidth,
|
|
125
|
+
imgHeight,
|
|
126
|
+
imageData.data,
|
|
127
|
+
"name=" + imageName + ",tiling=clamp"
|
|
128
|
+
);
|
|
129
|
+
BimAir.LonganCore.JS_Set_Selectability("faces=off");
|
|
130
|
+
|
|
131
|
+
for (let i = 0; i < division; i++) {
|
|
132
|
+
for (let j = 0; j < division; j++) {
|
|
133
|
+
let TL = panoramaObject.getLatLonFromTile(j, i, division);
|
|
134
|
+
let BR = panoramaObject.getLatLonFromTile(j + 1, i + 1, division);
|
|
135
|
+
|
|
136
|
+
// 每块瓦片划分为16 * 16个顶点
|
|
137
|
+
let divNumber = 15;
|
|
138
|
+
let pointNumber = divNumber + 1;
|
|
139
|
+
|
|
140
|
+
// 生成Mesh点列表
|
|
141
|
+
let points = panoramaObject.meshDivisionPolicy(TL, BR, divNumber);
|
|
142
|
+
|
|
143
|
+
// 每个瓦片,生成一个Mesh.
|
|
144
|
+
let meshKey = BimAir.LonganCore.JS_Insert_Mesh(
|
|
145
|
+
pointNumber,
|
|
146
|
+
pointNumber,
|
|
147
|
+
points
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
let UVs = new Array((points.length / 3) * 2);
|
|
151
|
+
|
|
152
|
+
for (let m = 0; m < pointNumber; m++) {
|
|
153
|
+
for (let n = 0; n < pointNumber; n++) {
|
|
154
|
+
UVs[(m * pointNumber + n) * 2 + 0] =
|
|
155
|
+
j / division + n / (pointNumber - 1) / division;
|
|
156
|
+
UVs[(m * pointNumber + n) * 2 + 1] =
|
|
157
|
+
i / division + m / (pointNumber - 1) / division;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
BimAir.LonganCore.JS_Set_Geometry_Texture_Coords(
|
|
162
|
+
meshKey,
|
|
163
|
+
0,
|
|
164
|
+
pointNumber * pointNumber,
|
|
165
|
+
UVs
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
BimAir.LonganCore.JS_Close_Segment();
|
|
171
|
+
|
|
172
|
+
// 设置CameraPos在球体中心
|
|
173
|
+
BimAir.LonganCore.JS_Open_Segment_By_Key(viewer.sceneKey);
|
|
174
|
+
{
|
|
175
|
+
let origin = new Float32Array([0, 0, 0]);
|
|
176
|
+
let pos = new Float32Array([0, 1, 0]);
|
|
177
|
+
BimAir.Longan.Vector.normalize(pos);
|
|
178
|
+
let camUp = BimAir.Longan.Vector.cross(pos, new Float32Array([1, 0, 0]));
|
|
179
|
+
|
|
180
|
+
BimAir.LonganCore.JS_Set_Camera_Target(origin);
|
|
181
|
+
BimAir.LonganCore.JS_Set_Camera_Position(pos);
|
|
182
|
+
BimAir.LonganCore.JS_Set_Camera_Up(camUp);
|
|
183
|
+
|
|
184
|
+
BimAir.LonganCore.JS_Set_Camera_Field(300, 300);
|
|
185
|
+
}
|
|
186
|
+
BimAir.LonganCore.JS_Close_Segment();
|
|
187
|
+
|
|
188
|
+
console.log("finish");
|
|
189
|
+
viewer.updateDisplay();
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
</script>
|
|
193
|
+
</body>
|
|
194
|
+
</html>
|