@xeokit/xeokit-sdk 2.3.0-beta-33 → 2.3.0
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/dist/xeokit-sdk.cjs.js +61 -80
- package/dist/xeokit-sdk.es.js +61 -80
- package/dist/xeokit-sdk.es5.js +8 -27
- package/dist/xeokit-sdk.min.cjs.js +1 -1
- package/dist/xeokit-sdk.min.es.js +1 -1
- package/dist/xeokit-sdk.min.es5.js +1 -1
- package/package.json +3 -2
- package/types/viewer/scene/marker/SpriteMarker.d.ts +185 -0
- package/types/viewer/scene/marker/index.d.ts +1 -0
- package/types/viewer/scene/scene/Scene.d.ts +21 -0
package/dist/xeokit-sdk.cjs.js
CHANGED
|
@@ -16057,19 +16057,6 @@ const Renderer = function (scene, options) {
|
|
|
16057
16057
|
|
|
16058
16058
|
//------------------------------------------------------------------------------------------------------
|
|
16059
16059
|
// Render deferred bins
|
|
16060
|
-
//
|
|
16061
|
-
// Order:
|
|
16062
|
-
//
|
|
16063
|
-
// 1. Opaque color fill
|
|
16064
|
-
// 2. Opaque edges
|
|
16065
|
-
// 3. Opaque X-ray fill
|
|
16066
|
-
// 4. Opaque X-ray edges
|
|
16067
|
-
// 5. Opaque highlight
|
|
16068
|
-
// 6. Transparent highlight
|
|
16069
|
-
// 7. Selected opaque
|
|
16070
|
-
// 8. Selected transparent
|
|
16071
|
-
// 9. Normal transparent
|
|
16072
|
-
// 10. X-rayed transparent
|
|
16073
16060
|
//------------------------------------------------------------------------------------------------------
|
|
16074
16061
|
|
|
16075
16062
|
// Opaque color with SAO
|
|
@@ -16105,6 +16092,66 @@ const Renderer = function (scene, options) {
|
|
|
16105
16092
|
}
|
|
16106
16093
|
}
|
|
16107
16094
|
|
|
16095
|
+
// Transparent
|
|
16096
|
+
|
|
16097
|
+
if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16098
|
+
gl.enable(gl.CULL_FACE);
|
|
16099
|
+
gl.enable(gl.BLEND);
|
|
16100
|
+
if (canvasTransparent) {
|
|
16101
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
16102
|
+
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
16103
|
+
} else {
|
|
16104
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
16105
|
+
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16106
|
+
}
|
|
16107
|
+
frameCtx.backfaces = false;
|
|
16108
|
+
if (!alphaDepthMask) {
|
|
16109
|
+
gl.depthMask(false);
|
|
16110
|
+
}
|
|
16111
|
+
|
|
16112
|
+
// Transparent color edges
|
|
16113
|
+
|
|
16114
|
+
if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16115
|
+
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16116
|
+
}
|
|
16117
|
+
if (normalEdgesTransparentBinLen > 0) {
|
|
16118
|
+
for (i = 0; i < normalEdgesTransparentBinLen; i++) {
|
|
16119
|
+
drawable = normalEdgesTransparentBin[i];
|
|
16120
|
+
drawable.drawEdgesColorTransparent(frameCtx);
|
|
16121
|
+
}
|
|
16122
|
+
}
|
|
16123
|
+
|
|
16124
|
+
// Transparent color fill
|
|
16125
|
+
|
|
16126
|
+
if (normalFillTransparentBinLen > 0) {
|
|
16127
|
+
for (i = 0; i < normalFillTransparentBinLen; i++) {
|
|
16128
|
+
drawable = normalFillTransparentBin[i];
|
|
16129
|
+
drawable.drawColorTransparent(frameCtx);
|
|
16130
|
+
}
|
|
16131
|
+
}
|
|
16132
|
+
|
|
16133
|
+
// Transparent X-ray edges
|
|
16134
|
+
|
|
16135
|
+
if (xrayEdgesTransparentBinLen > 0) {
|
|
16136
|
+
for (i = 0; i < xrayEdgesTransparentBinLen; i++) {
|
|
16137
|
+
xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);
|
|
16138
|
+
}
|
|
16139
|
+
}
|
|
16140
|
+
|
|
16141
|
+
// Transparent X-ray fill
|
|
16142
|
+
|
|
16143
|
+
if (xrayedFillTransparentBinLen > 0) {
|
|
16144
|
+
for (i = 0; i < xrayedFillTransparentBinLen; i++) {
|
|
16145
|
+
xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);
|
|
16146
|
+
}
|
|
16147
|
+
}
|
|
16148
|
+
|
|
16149
|
+
gl.disable(gl.BLEND);
|
|
16150
|
+
if (!alphaDepthMask) {
|
|
16151
|
+
gl.depthMask(true);
|
|
16152
|
+
}
|
|
16153
|
+
}
|
|
16154
|
+
|
|
16108
16155
|
// Opaque highlight
|
|
16109
16156
|
|
|
16110
16157
|
if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) {
|
|
@@ -16223,66 +16270,6 @@ const Renderer = function (scene, options) {
|
|
|
16223
16270
|
gl.disable(gl.BLEND);
|
|
16224
16271
|
}
|
|
16225
16272
|
|
|
16226
|
-
// Transparent
|
|
16227
|
-
|
|
16228
|
-
if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16229
|
-
gl.enable(gl.CULL_FACE);
|
|
16230
|
-
gl.enable(gl.BLEND);
|
|
16231
|
-
if (canvasTransparent) {
|
|
16232
|
-
gl.blendEquation(gl.FUNC_ADD);
|
|
16233
|
-
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
16234
|
-
} else {
|
|
16235
|
-
gl.blendEquation(gl.FUNC_ADD);
|
|
16236
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16237
|
-
}
|
|
16238
|
-
frameCtx.backfaces = false;
|
|
16239
|
-
if (!alphaDepthMask) {
|
|
16240
|
-
gl.depthMask(false);
|
|
16241
|
-
}
|
|
16242
|
-
|
|
16243
|
-
// Transparent color edges
|
|
16244
|
-
|
|
16245
|
-
if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16246
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16247
|
-
}
|
|
16248
|
-
if (normalEdgesTransparentBinLen > 0) {
|
|
16249
|
-
for (i = 0; i < normalEdgesTransparentBinLen; i++) {
|
|
16250
|
-
drawable = normalEdgesTransparentBin[i];
|
|
16251
|
-
drawable.drawEdgesColorTransparent(frameCtx);
|
|
16252
|
-
}
|
|
16253
|
-
}
|
|
16254
|
-
|
|
16255
|
-
// Transparent color fill
|
|
16256
|
-
|
|
16257
|
-
if (normalFillTransparentBinLen > 0) {
|
|
16258
|
-
for (i = 0; i < normalFillTransparentBinLen; i++) {
|
|
16259
|
-
drawable = normalFillTransparentBin[i];
|
|
16260
|
-
drawable.drawColorTransparent(frameCtx);
|
|
16261
|
-
}
|
|
16262
|
-
}
|
|
16263
|
-
|
|
16264
|
-
// Transparent X-ray edges
|
|
16265
|
-
|
|
16266
|
-
if (xrayEdgesTransparentBinLen > 0) {
|
|
16267
|
-
for (i = 0; i < xrayEdgesTransparentBinLen; i++) {
|
|
16268
|
-
xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);
|
|
16269
|
-
}
|
|
16270
|
-
}
|
|
16271
|
-
|
|
16272
|
-
// Transparent X-ray fill
|
|
16273
|
-
|
|
16274
|
-
if (xrayedFillTransparentBinLen > 0) {
|
|
16275
|
-
for (i = 0; i < xrayedFillTransparentBinLen; i++) {
|
|
16276
|
-
xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);
|
|
16277
|
-
}
|
|
16278
|
-
}
|
|
16279
|
-
|
|
16280
|
-
gl.disable(gl.BLEND);
|
|
16281
|
-
if (!alphaDepthMask) {
|
|
16282
|
-
gl.depthMask(true);
|
|
16283
|
-
}
|
|
16284
|
-
}
|
|
16285
|
-
|
|
16286
16273
|
const endTime = Date.now();
|
|
16287
16274
|
const frameStats = stats.frame;
|
|
16288
16275
|
|
|
@@ -96106,7 +96093,7 @@ const IFCObjectDefaults = {
|
|
|
96106
96093
|
*
|
|
96107
96094
|
* ## Usage
|
|
96108
96095
|
*
|
|
96109
|
-
* In the example below we'll load
|
|
96096
|
+
* In the example below we'll load a house plan model from a [binary glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along
|
|
96110
96097
|
* with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/examples/metaModels/schependomlaan/).
|
|
96111
96098
|
*
|
|
96112
96099
|
* This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s
|
|
@@ -96117,8 +96104,6 @@ const IFCObjectDefaults = {
|
|
|
96117
96104
|
*
|
|
96118
96105
|
* Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).
|
|
96119
96106
|
*
|
|
96120
|
-
* [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter)]
|
|
96121
|
-
*
|
|
96122
96107
|
* ````javascript
|
|
96123
96108
|
* import {Viewer, GLTFLoaderPlugin} from "xeokit-sdk.es.js";
|
|
96124
96109
|
*
|
|
@@ -96202,8 +96187,6 @@ const IFCObjectDefaults = {
|
|
|
96202
96187
|
* In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then
|
|
96203
96188
|
* translate it 100 units along its X axis.
|
|
96204
96189
|
*
|
|
96205
|
-
* [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_glTF_Duplex_transform)]
|
|
96206
|
-
*
|
|
96207
96190
|
* ````javascript
|
|
96208
96191
|
* const model = gltfLoader.load({
|
|
96209
96192
|
* src: "./models/gltf/Duplex/scene.gltf",
|
|
@@ -96219,8 +96202,6 @@ const IFCObjectDefaults = {
|
|
|
96219
96202
|
* We can also load only those objects that have the specified IFC types. In the example below, we'll load only the
|
|
96220
96203
|
* objects that represent walls.
|
|
96221
96204
|
*
|
|
96222
|
-
* [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_includeTypes_PlanView)]
|
|
96223
|
-
*
|
|
96224
96205
|
* ````javascript
|
|
96225
96206
|
* const model = gltfLoader.load({
|
|
96226
96207
|
* id: "myModel",
|
package/dist/xeokit-sdk.es.js
CHANGED
|
@@ -16053,19 +16053,6 @@ const Renderer = function (scene, options) {
|
|
|
16053
16053
|
|
|
16054
16054
|
//------------------------------------------------------------------------------------------------------
|
|
16055
16055
|
// Render deferred bins
|
|
16056
|
-
//
|
|
16057
|
-
// Order:
|
|
16058
|
-
//
|
|
16059
|
-
// 1. Opaque color fill
|
|
16060
|
-
// 2. Opaque edges
|
|
16061
|
-
// 3. Opaque X-ray fill
|
|
16062
|
-
// 4. Opaque X-ray edges
|
|
16063
|
-
// 5. Opaque highlight
|
|
16064
|
-
// 6. Transparent highlight
|
|
16065
|
-
// 7. Selected opaque
|
|
16066
|
-
// 8. Selected transparent
|
|
16067
|
-
// 9. Normal transparent
|
|
16068
|
-
// 10. X-rayed transparent
|
|
16069
16056
|
//------------------------------------------------------------------------------------------------------
|
|
16070
16057
|
|
|
16071
16058
|
// Opaque color with SAO
|
|
@@ -16101,6 +16088,66 @@ const Renderer = function (scene, options) {
|
|
|
16101
16088
|
}
|
|
16102
16089
|
}
|
|
16103
16090
|
|
|
16091
|
+
// Transparent
|
|
16092
|
+
|
|
16093
|
+
if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16094
|
+
gl.enable(gl.CULL_FACE);
|
|
16095
|
+
gl.enable(gl.BLEND);
|
|
16096
|
+
if (canvasTransparent) {
|
|
16097
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
16098
|
+
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
16099
|
+
} else {
|
|
16100
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
16101
|
+
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16102
|
+
}
|
|
16103
|
+
frameCtx.backfaces = false;
|
|
16104
|
+
if (!alphaDepthMask) {
|
|
16105
|
+
gl.depthMask(false);
|
|
16106
|
+
}
|
|
16107
|
+
|
|
16108
|
+
// Transparent color edges
|
|
16109
|
+
|
|
16110
|
+
if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16111
|
+
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16112
|
+
}
|
|
16113
|
+
if (normalEdgesTransparentBinLen > 0) {
|
|
16114
|
+
for (i = 0; i < normalEdgesTransparentBinLen; i++) {
|
|
16115
|
+
drawable = normalEdgesTransparentBin[i];
|
|
16116
|
+
drawable.drawEdgesColorTransparent(frameCtx);
|
|
16117
|
+
}
|
|
16118
|
+
}
|
|
16119
|
+
|
|
16120
|
+
// Transparent color fill
|
|
16121
|
+
|
|
16122
|
+
if (normalFillTransparentBinLen > 0) {
|
|
16123
|
+
for (i = 0; i < normalFillTransparentBinLen; i++) {
|
|
16124
|
+
drawable = normalFillTransparentBin[i];
|
|
16125
|
+
drawable.drawColorTransparent(frameCtx);
|
|
16126
|
+
}
|
|
16127
|
+
}
|
|
16128
|
+
|
|
16129
|
+
// Transparent X-ray edges
|
|
16130
|
+
|
|
16131
|
+
if (xrayEdgesTransparentBinLen > 0) {
|
|
16132
|
+
for (i = 0; i < xrayEdgesTransparentBinLen; i++) {
|
|
16133
|
+
xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);
|
|
16134
|
+
}
|
|
16135
|
+
}
|
|
16136
|
+
|
|
16137
|
+
// Transparent X-ray fill
|
|
16138
|
+
|
|
16139
|
+
if (xrayedFillTransparentBinLen > 0) {
|
|
16140
|
+
for (i = 0; i < xrayedFillTransparentBinLen; i++) {
|
|
16141
|
+
xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);
|
|
16142
|
+
}
|
|
16143
|
+
}
|
|
16144
|
+
|
|
16145
|
+
gl.disable(gl.BLEND);
|
|
16146
|
+
if (!alphaDepthMask) {
|
|
16147
|
+
gl.depthMask(true);
|
|
16148
|
+
}
|
|
16149
|
+
}
|
|
16150
|
+
|
|
16104
16151
|
// Opaque highlight
|
|
16105
16152
|
|
|
16106
16153
|
if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) {
|
|
@@ -16219,66 +16266,6 @@ const Renderer = function (scene, options) {
|
|
|
16219
16266
|
gl.disable(gl.BLEND);
|
|
16220
16267
|
}
|
|
16221
16268
|
|
|
16222
|
-
// Transparent
|
|
16223
|
-
|
|
16224
|
-
if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16225
|
-
gl.enable(gl.CULL_FACE);
|
|
16226
|
-
gl.enable(gl.BLEND);
|
|
16227
|
-
if (canvasTransparent) {
|
|
16228
|
-
gl.blendEquation(gl.FUNC_ADD);
|
|
16229
|
-
gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
16230
|
-
} else {
|
|
16231
|
-
gl.blendEquation(gl.FUNC_ADD);
|
|
16232
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16233
|
-
}
|
|
16234
|
-
frameCtx.backfaces = false;
|
|
16235
|
-
if (!alphaDepthMask) {
|
|
16236
|
-
gl.depthMask(false);
|
|
16237
|
-
}
|
|
16238
|
-
|
|
16239
|
-
// Transparent color edges
|
|
16240
|
-
|
|
16241
|
-
if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {
|
|
16242
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
16243
|
-
}
|
|
16244
|
-
if (normalEdgesTransparentBinLen > 0) {
|
|
16245
|
-
for (i = 0; i < normalEdgesTransparentBinLen; i++) {
|
|
16246
|
-
drawable = normalEdgesTransparentBin[i];
|
|
16247
|
-
drawable.drawEdgesColorTransparent(frameCtx);
|
|
16248
|
-
}
|
|
16249
|
-
}
|
|
16250
|
-
|
|
16251
|
-
// Transparent color fill
|
|
16252
|
-
|
|
16253
|
-
if (normalFillTransparentBinLen > 0) {
|
|
16254
|
-
for (i = 0; i < normalFillTransparentBinLen; i++) {
|
|
16255
|
-
drawable = normalFillTransparentBin[i];
|
|
16256
|
-
drawable.drawColorTransparent(frameCtx);
|
|
16257
|
-
}
|
|
16258
|
-
}
|
|
16259
|
-
|
|
16260
|
-
// Transparent X-ray edges
|
|
16261
|
-
|
|
16262
|
-
if (xrayEdgesTransparentBinLen > 0) {
|
|
16263
|
-
for (i = 0; i < xrayEdgesTransparentBinLen; i++) {
|
|
16264
|
-
xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);
|
|
16265
|
-
}
|
|
16266
|
-
}
|
|
16267
|
-
|
|
16268
|
-
// Transparent X-ray fill
|
|
16269
|
-
|
|
16270
|
-
if (xrayedFillTransparentBinLen > 0) {
|
|
16271
|
-
for (i = 0; i < xrayedFillTransparentBinLen; i++) {
|
|
16272
|
-
xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);
|
|
16273
|
-
}
|
|
16274
|
-
}
|
|
16275
|
-
|
|
16276
|
-
gl.disable(gl.BLEND);
|
|
16277
|
-
if (!alphaDepthMask) {
|
|
16278
|
-
gl.depthMask(true);
|
|
16279
|
-
}
|
|
16280
|
-
}
|
|
16281
|
-
|
|
16282
16269
|
const endTime = Date.now();
|
|
16283
16270
|
const frameStats = stats.frame;
|
|
16284
16271
|
|
|
@@ -96102,7 +96089,7 @@ const IFCObjectDefaults = {
|
|
|
96102
96089
|
*
|
|
96103
96090
|
* ## Usage
|
|
96104
96091
|
*
|
|
96105
|
-
* In the example below we'll load
|
|
96092
|
+
* In the example below we'll load a house plan model from a [binary glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along
|
|
96106
96093
|
* with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/examples/metaModels/schependomlaan/).
|
|
96107
96094
|
*
|
|
96108
96095
|
* This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s
|
|
@@ -96113,8 +96100,6 @@ const IFCObjectDefaults = {
|
|
|
96113
96100
|
*
|
|
96114
96101
|
* Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).
|
|
96115
96102
|
*
|
|
96116
|
-
* [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter)]
|
|
96117
|
-
*
|
|
96118
96103
|
* ````javascript
|
|
96119
96104
|
* import {Viewer, GLTFLoaderPlugin} from "xeokit-sdk.es.js";
|
|
96120
96105
|
*
|
|
@@ -96198,8 +96183,6 @@ const IFCObjectDefaults = {
|
|
|
96198
96183
|
* In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then
|
|
96199
96184
|
* translate it 100 units along its X axis.
|
|
96200
96185
|
*
|
|
96201
|
-
* [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_glTF_Duplex_transform)]
|
|
96202
|
-
*
|
|
96203
96186
|
* ````javascript
|
|
96204
96187
|
* const model = gltfLoader.load({
|
|
96205
96188
|
* src: "./models/gltf/Duplex/scene.gltf",
|
|
@@ -96215,8 +96198,6 @@ const IFCObjectDefaults = {
|
|
|
96215
96198
|
* We can also load only those objects that have the specified IFC types. In the example below, we'll load only the
|
|
96216
96199
|
* objects that represent walls.
|
|
96217
96200
|
*
|
|
96218
|
-
* [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_includeTypes_PlanView)]
|
|
96219
|
-
*
|
|
96220
96201
|
* ````javascript
|
|
96221
96202
|
* const model = gltfLoader.load({
|
|
96222
96203
|
* id: "myModel",
|
package/dist/xeokit-sdk.es5.js
CHANGED
|
@@ -4010,25 +4010,17 @@ var normalDrawSAOBin=[];var normalEdgesOpaqueBin=[];var normalFillTransparentBin
|
|
|
4010
4010
|
//------------------------------------------------------------------------------------------------------
|
|
4011
4011
|
for(var type in drawableTypeInfo){if(drawableTypeInfo.hasOwnProperty(type)){var drawableInfo=drawableTypeInfo[type];var drawableList=drawableInfo.drawableList;for(i=0,len=drawableList.length;i<len;i++){drawable=drawableList[i];if(drawable.culled===true||drawable.visible===false){continue;}var renderFlags=drawable.renderFlags;if(renderFlags.colorOpaque){if(saoEnabled&&saoPossible&&drawable.saoEnabled){normalDrawSAOBin[normalDrawSAOBinLen++]=drawable;}else{drawable.drawColorOpaque(frameCtx);}}if(transparentEnabled){if(renderFlags.colorTransparent){normalFillTransparentBin[normalFillTransparentBinLen++]=drawable;}}if(renderFlags.xrayedSilhouetteTransparent){xrayedFillTransparentBin[xrayedFillTransparentBinLen++]=drawable;}if(renderFlags.xrayedSilhouetteOpaque){xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++]=drawable;}if(renderFlags.highlightedSilhouetteTransparent){highlightedFillTransparentBin[highlightedFillTransparentBinLen++]=drawable;}if(renderFlags.highlightedSilhouetteOpaque){highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++]=drawable;}if(renderFlags.selectedSilhouetteTransparent){selectedFillTransparentBin[selectedFillTransparentBinLen++]=drawable;}if(renderFlags.selectedSilhouetteOpaque){selectedFillOpaqueBin[selectedFillOpaqueBinLen++]=drawable;}if(edgesEnabled){if(renderFlags.edgesOpaque){normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++]=drawable;}if(renderFlags.edgesTransparent){normalEdgesTransparentBin[normalEdgesTransparentBinLen++]=drawable;}}if(renderFlags.selectedEdgesTransparent){selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++]=drawable;}if(renderFlags.selectedEdgesOpaque){selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++]=drawable;}if(renderFlags.xrayedEdgesTransparent){xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++]=drawable;}if(renderFlags.xrayedEdgesOpaque){xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++]=drawable;}if(renderFlags.highlightedEdgesTransparent){highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++]=drawable;}if(renderFlags.highlightedEdgesOpaque){highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++]=drawable;}}}}//------------------------------------------------------------------------------------------------------
|
|
4012
4012
|
// Render deferred bins
|
|
4013
|
-
//
|
|
4014
|
-
// Order:
|
|
4015
|
-
//
|
|
4016
|
-
// 1. Opaque color fill
|
|
4017
|
-
// 2. Opaque edges
|
|
4018
|
-
// 3. Opaque X-ray fill
|
|
4019
|
-
// 4. Opaque X-ray edges
|
|
4020
|
-
// 5. Opaque highlight
|
|
4021
|
-
// 6. Transparent highlight
|
|
4022
|
-
// 7. Selected opaque
|
|
4023
|
-
// 8. Selected transparent
|
|
4024
|
-
// 9. Normal transparent
|
|
4025
|
-
// 10. X-rayed transparent
|
|
4026
4013
|
//------------------------------------------------------------------------------------------------------
|
|
4027
4014
|
// Opaque color with SAO
|
|
4028
4015
|
if(normalDrawSAOBinLen>0){frameCtx.withSAO=true;for(i=0;i<normalDrawSAOBinLen;i++){normalDrawSAOBin[i].drawColorOpaque(frameCtx);}}// Opaque edges
|
|
4029
4016
|
if(normalEdgesOpaqueBinLen>0){for(i=0;i<normalEdgesOpaqueBinLen;i++){normalEdgesOpaqueBin[i].drawEdgesColorOpaque(frameCtx);}}// Opaque X-ray fill
|
|
4030
4017
|
if(xrayedFillOpaqueBinLen>0){for(i=0;i<xrayedFillOpaqueBinLen;i++){xrayedFillOpaqueBin[i].drawSilhouetteXRayed(frameCtx);}}// Opaque X-ray edges
|
|
4031
|
-
if(xrayEdgesOpaqueBinLen>0){for(i=0;i<xrayEdgesOpaqueBinLen;i++){xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx);}}//
|
|
4018
|
+
if(xrayEdgesOpaqueBinLen>0){for(i=0;i<xrayEdgesOpaqueBinLen;i++){xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx);}}// Transparent
|
|
4019
|
+
if(xrayedFillTransparentBinLen>0||xrayEdgesTransparentBinLen>0||normalFillTransparentBinLen>0||normalEdgesTransparentBinLen>0){gl.enable(gl.CULL_FACE);gl.enable(gl.BLEND);if(canvasTransparent){gl.blendEquation(gl.FUNC_ADD);gl.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA);}else{gl.blendEquation(gl.FUNC_ADD);gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);}frameCtx.backfaces=false;if(!alphaDepthMask){gl.depthMask(false);}// Transparent color edges
|
|
4020
|
+
if(normalFillTransparentBinLen>0||normalEdgesTransparentBinLen>0){gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);}if(normalEdgesTransparentBinLen>0){for(i=0;i<normalEdgesTransparentBinLen;i++){drawable=normalEdgesTransparentBin[i];drawable.drawEdgesColorTransparent(frameCtx);}}// Transparent color fill
|
|
4021
|
+
if(normalFillTransparentBinLen>0){for(i=0;i<normalFillTransparentBinLen;i++){drawable=normalFillTransparentBin[i];drawable.drawColorTransparent(frameCtx);}}// Transparent X-ray edges
|
|
4022
|
+
if(xrayEdgesTransparentBinLen>0){for(i=0;i<xrayEdgesTransparentBinLen;i++){xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);}}// Transparent X-ray fill
|
|
4023
|
+
if(xrayedFillTransparentBinLen>0){for(i=0;i<xrayedFillTransparentBinLen;i++){xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);}}gl.disable(gl.BLEND);if(!alphaDepthMask){gl.depthMask(true);}}// Opaque highlight
|
|
4032
4024
|
if(highlightedFillOpaqueBinLen>0||highlightedEdgesOpaqueBinLen>0){frameCtx.lastProgramId=null;if(scene.highlightMaterial.glowThrough){gl.clear(gl.DEPTH_BUFFER_BIT);}// Opaque highlighted edges
|
|
4033
4025
|
if(highlightedEdgesOpaqueBinLen>0){for(i=0;i<highlightedEdgesOpaqueBinLen;i++){highlightedEdgesOpaqueBin[i].drawEdgesHighlighted(frameCtx);}}// Opaque highlighted fill
|
|
4034
4026
|
if(highlightedFillOpaqueBinLen>0){for(i=0;i<highlightedFillOpaqueBinLen;i++){highlightedFillOpaqueBin[i].drawSilhouetteHighlighted(frameCtx);}}}// Highlighted transparent
|
|
@@ -4040,12 +4032,7 @@ if(selectedEdgesOpaqueBinLen>0){for(i=0;i<selectedEdgesOpaqueBinLen;i++){selecte
|
|
|
4040
4032
|
if(selectedFillOpaqueBinLen>0){for(i=0;i<selectedFillOpaqueBinLen;i++){selectedFillOpaqueBin[i].drawSilhouetteSelected(frameCtx);}}}// Selected transparent
|
|
4041
4033
|
if(selectedFillTransparentBinLen>0||selectedEdgesTransparentBinLen>0){frameCtx.lastProgramId=null;if(scene.selectedMaterial.glowThrough){gl.clear(gl.DEPTH_BUFFER_BIT);}gl.enable(gl.CULL_FACE);gl.enable(gl.BLEND);if(canvasTransparent){gl.blendEquation(gl.FUNC_ADD);gl.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA);}else{gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);}// Selected transparent edges
|
|
4042
4034
|
if(selectedEdgesTransparentBinLen>0){for(i=0;i<selectedEdgesTransparentBinLen;i++){selectedEdgesTransparentBin[i].drawEdgesSelected(frameCtx);}}// Selected transparent fill
|
|
4043
|
-
if(selectedFillTransparentBinLen>0){for(i=0;i<selectedFillTransparentBinLen;i++){selectedFillTransparentBin[i].drawSilhouetteSelected(frameCtx);}}gl.disable(gl.BLEND);}
|
|
4044
|
-
if(xrayedFillTransparentBinLen>0||xrayEdgesTransparentBinLen>0||normalFillTransparentBinLen>0||normalEdgesTransparentBinLen>0){gl.enable(gl.CULL_FACE);gl.enable(gl.BLEND);if(canvasTransparent){gl.blendEquation(gl.FUNC_ADD);gl.blendFuncSeparate(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA,gl.ONE,gl.ONE_MINUS_SRC_ALPHA);}else{gl.blendEquation(gl.FUNC_ADD);gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);}frameCtx.backfaces=false;if(!alphaDepthMask){gl.depthMask(false);}// Transparent color edges
|
|
4045
|
-
if(normalFillTransparentBinLen>0||normalEdgesTransparentBinLen>0){gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);}if(normalEdgesTransparentBinLen>0){for(i=0;i<normalEdgesTransparentBinLen;i++){drawable=normalEdgesTransparentBin[i];drawable.drawEdgesColorTransparent(frameCtx);}}// Transparent color fill
|
|
4046
|
-
if(normalFillTransparentBinLen>0){for(i=0;i<normalFillTransparentBinLen;i++){drawable=normalFillTransparentBin[i];drawable.drawColorTransparent(frameCtx);}}// Transparent X-ray edges
|
|
4047
|
-
if(xrayEdgesTransparentBinLen>0){for(i=0;i<xrayEdgesTransparentBinLen;i++){xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);}}// Transparent X-ray fill
|
|
4048
|
-
if(xrayedFillTransparentBinLen>0){for(i=0;i<xrayedFillTransparentBinLen;i++){xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);}}gl.disable(gl.BLEND);if(!alphaDepthMask){gl.depthMask(true);}}var endTime=Date.now();var frameStats=stats.frame;frameStats.renderTime=(endTime-startTime)/1000.0;frameStats.drawElements=frameCtx.drawElements;frameStats.drawArrays=frameCtx.drawArrays;frameStats.useProgram=frameCtx.useProgram;frameStats.bindTexture=frameCtx.bindTexture;frameStats.bindArray=frameCtx.bindArray;var numTextureUnits=WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS;for(var ii=0;ii<numTextureUnits;ii++){gl.activeTexture(gl.TEXTURE0+ii);}gl.bindTexture(gl.TEXTURE_CUBE_MAP,null);gl.bindTexture(gl.TEXTURE_2D,null);var numVertexAttribs=WEBGL_INFO.MAX_VERTEX_ATTRIBS;// Fixes https://github.com/xeokit/xeokit-sdk/issues/174
|
|
4035
|
+
if(selectedFillTransparentBinLen>0){for(i=0;i<selectedFillTransparentBinLen;i++){selectedFillTransparentBin[i].drawSilhouetteSelected(frameCtx);}}gl.disable(gl.BLEND);}var endTime=Date.now();var frameStats=stats.frame;frameStats.renderTime=(endTime-startTime)/1000.0;frameStats.drawElements=frameCtx.drawElements;frameStats.drawArrays=frameCtx.drawArrays;frameStats.useProgram=frameCtx.useProgram;frameStats.bindTexture=frameCtx.bindTexture;frameStats.bindArray=frameCtx.bindArray;var numTextureUnits=WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS;for(var ii=0;ii<numTextureUnits;ii++){gl.activeTexture(gl.TEXTURE0+ii);}gl.bindTexture(gl.TEXTURE_CUBE_MAP,null);gl.bindTexture(gl.TEXTURE_2D,null);var numVertexAttribs=WEBGL_INFO.MAX_VERTEX_ATTRIBS;// Fixes https://github.com/xeokit/xeokit-sdk/issues/174
|
|
4049
4036
|
for(var _ii=0;_ii<numVertexAttribs;_ii++){gl.disableVertexAttribArray(_ii);}};}();/**
|
|
4050
4037
|
* Picks an Entity.
|
|
4051
4038
|
* @private
|
|
@@ -21616,7 +21603,7 @@ if(rtcNeeded){meshCfg.origin=origin;}var material=primitive.material;if(material
|
|
|
21616
21603
|
*
|
|
21617
21604
|
* ## Usage
|
|
21618
21605
|
*
|
|
21619
|
-
* In the example below we'll load
|
|
21606
|
+
* In the example below we'll load a house plan model from a [binary glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along
|
|
21620
21607
|
* with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/examples/metaModels/schependomlaan/).
|
|
21621
21608
|
*
|
|
21622
21609
|
* This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s
|
|
@@ -21627,8 +21614,6 @@ if(rtcNeeded){meshCfg.origin=origin;}var material=primitive.material;if(material
|
|
|
21627
21614
|
*
|
|
21628
21615
|
* Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).
|
|
21629
21616
|
*
|
|
21630
|
-
* [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter)]
|
|
21631
|
-
*
|
|
21632
21617
|
* ````javascript
|
|
21633
21618
|
* import {Viewer, GLTFLoaderPlugin} from "xeokit-sdk.es.js";
|
|
21634
21619
|
*
|
|
@@ -21712,8 +21697,6 @@ if(rtcNeeded){meshCfg.origin=origin;}var material=primitive.material;if(material
|
|
|
21712
21697
|
* In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then
|
|
21713
21698
|
* translate it 100 units along its X axis.
|
|
21714
21699
|
*
|
|
21715
|
-
* [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_glTF_Duplex_transform)]
|
|
21716
|
-
*
|
|
21717
21700
|
* ````javascript
|
|
21718
21701
|
* const model = gltfLoader.load({
|
|
21719
21702
|
* src: "./models/gltf/Duplex/scene.gltf",
|
|
@@ -21729,8 +21712,6 @@ if(rtcNeeded){meshCfg.origin=origin;}var material=primitive.material;if(material
|
|
|
21729
21712
|
* We can also load only those objects that have the specified IFC types. In the example below, we'll load only the
|
|
21730
21713
|
* objects that represent walls.
|
|
21731
21714
|
*
|
|
21732
|
-
* [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_includeTypes_PlanView)]
|
|
21733
|
-
*
|
|
21734
21715
|
* ````javascript
|
|
21735
21716
|
* const model = gltfLoader.load({
|
|
21736
21717
|
* id: "myModel",
|