@xeokit/xeokit-sdk 2.6.0-beta-13 → 2.6.0-beta-15
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/web-ifc.wasm +0 -0
- package/dist/xeokit-sdk.cjs.js +152 -84
- package/dist/xeokit-sdk.es.js +152 -84
- package/dist/xeokit-sdk.es5.js +38 -38
- package/dist/xeokit-sdk.min.cjs.js +4 -4
- package/dist/xeokit-sdk.min.es.js +3 -3
- package/dist/xeokit-sdk.min.es5.js +3 -3
- package/package.json +1 -1
- package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +6 -3
- package/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsTouchControl.js +10 -3
- package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +5 -3
- package/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsTouchControl.js +22 -8
- package/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +1 -1
- package/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +22 -16
- package/src/plugins/SectionPlanesPlugin/Control.js +70 -35
- package/src/viewer/scene/CameraControl/lib/controllers/PickController.js +1 -0
- package/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +12 -12
- package/src/viewer/scene/model/SceneModel.js +1 -1
package/dist/xeokit-sdk.es.js
CHANGED
|
@@ -12399,13 +12399,16 @@ class AngleMeasurementsMouseControl extends AngleMeasurementsControl {
|
|
|
12399
12399
|
this._currentAngleMeasurement = this.angleMeasurementsPlugin.createMeasurement({
|
|
12400
12400
|
id: math.createUUID(),
|
|
12401
12401
|
origin: {
|
|
12402
|
-
worldPos: mouseWorldPos
|
|
12402
|
+
worldPos: mouseWorldPos,
|
|
12403
|
+
entity: hoveredEntity
|
|
12403
12404
|
},
|
|
12404
12405
|
corner: {
|
|
12405
|
-
worldPos: mouseWorldPos
|
|
12406
|
+
worldPos: mouseWorldPos,
|
|
12407
|
+
entity: hoveredEntity
|
|
12406
12408
|
},
|
|
12407
12409
|
target: {
|
|
12408
|
-
worldPos: mouseWorldPos
|
|
12410
|
+
worldPos: mouseWorldPos,
|
|
12411
|
+
entity: hoveredEntity
|
|
12409
12412
|
},
|
|
12410
12413
|
approximate: true
|
|
12411
12414
|
});
|
|
@@ -12766,7 +12769,7 @@ class AngleMeasurementsMouseControl extends AngleMeasurementsControl {
|
|
|
12766
12769
|
* start, corner or end point will cause the point to snap to the nearest vertex or edge. A quick
|
|
12767
12770
|
* touch-release will immediately set the point at the tapped position on the object surface.
|
|
12768
12771
|
*
|
|
12769
|
-
* [[Run example](/examples/measurement/#angle_createWithTouch_snapping)]
|
|
12772
|
+
* [[Run example](https://xeokit.github.io/xeokit-sdk/examples/measurement/#angle_createWithTouch_snapping)]
|
|
12770
12773
|
*
|
|
12771
12774
|
* ````javascript
|
|
12772
12775
|
* import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin, AngleMeasurementsTouchControl} from "xeokit-sdk.es.js";
|
|
@@ -13241,13 +13244,16 @@ class AngleMeasurementsTouchControl extends AngleMeasurementsControl {
|
|
|
13241
13244
|
this._currentAngleMeasurement = plugin.createMeasurement({
|
|
13242
13245
|
id: math.createUUID(),
|
|
13243
13246
|
origin: {
|
|
13244
|
-
worldPos: snapPickResult.worldPos
|
|
13247
|
+
worldPos: snapPickResult.worldPos,
|
|
13248
|
+
entity: snapPickResult.entity
|
|
13245
13249
|
},
|
|
13246
13250
|
corner: {
|
|
13247
|
-
worldPos: snapPickResult.worldPos
|
|
13251
|
+
worldPos: snapPickResult.worldPos,
|
|
13252
|
+
entity: snapPickResult.entity
|
|
13248
13253
|
},
|
|
13249
13254
|
target: {
|
|
13250
|
-
worldPos: snapPickResult.worldPos
|
|
13255
|
+
worldPos: snapPickResult.worldPos,
|
|
13256
|
+
entity: snapPickResult.entity
|
|
13251
13257
|
}
|
|
13252
13258
|
});
|
|
13253
13259
|
this._currentAngleMeasurement.clickable = false;
|
|
@@ -13316,6 +13322,7 @@ class AngleMeasurementsTouchControl extends AngleMeasurementsControl {
|
|
|
13316
13322
|
this.pointerCircle.start(snapPickResult.snappedCanvasPos);
|
|
13317
13323
|
pointerWorldPos.set(snapPickResult.worldPos);
|
|
13318
13324
|
this._currentAngleMeasurement.corner.worldPos = snapPickResult.worldPos;
|
|
13325
|
+
this._currentAngleMeasurement.corner.entity = snapPickResult.entity;
|
|
13319
13326
|
this._currentAngleMeasurement.originVisible = true;
|
|
13320
13327
|
this._currentAngleMeasurement.originWireVisible = true;
|
|
13321
13328
|
this._currentAngleMeasurement.cornerVisible = true;
|
|
@@ -13337,6 +13344,7 @@ class AngleMeasurementsTouchControl extends AngleMeasurementsControl {
|
|
|
13337
13344
|
this.pointerCircle.start(pickResult.canvasPos);
|
|
13338
13345
|
pointerWorldPos.set(pickResult.worldPos);
|
|
13339
13346
|
this._currentAngleMeasurement.corner.worldPos = pickResult.worldPos;
|
|
13347
|
+
this._currentAngleMeasurement.corner.entity = pickResult.entity;
|
|
13340
13348
|
this._currentAngleMeasurement.originVisible = true;
|
|
13341
13349
|
this._currentAngleMeasurement.originWireVisible = true;
|
|
13342
13350
|
this._currentAngleMeasurement.cornerVisible = true;
|
|
@@ -13407,6 +13415,7 @@ class AngleMeasurementsTouchControl extends AngleMeasurementsControl {
|
|
|
13407
13415
|
this.pointerCircle.start(snapPickResult.snappedCanvasPos);
|
|
13408
13416
|
pointerWorldPos.set(snapPickResult.worldPos);
|
|
13409
13417
|
this._currentAngleMeasurement.target.worldPos = snapPickResult.worldPos;
|
|
13418
|
+
this._currentAngleMeasurement.target.entity = snapPickResult.entity;
|
|
13410
13419
|
this._currentAngleMeasurement.originVisible = true;
|
|
13411
13420
|
this._currentAngleMeasurement.originWireVisible = true;
|
|
13412
13421
|
this._currentAngleMeasurement.cornerVisible = true;
|
|
@@ -13428,6 +13437,7 @@ class AngleMeasurementsTouchControl extends AngleMeasurementsControl {
|
|
|
13428
13437
|
this.pointerCircle.start(pickResult.canvasPos);
|
|
13429
13438
|
pointerWorldPos.set(pickResult.worldPos);
|
|
13430
13439
|
this._currentAngleMeasurement.target.worldPos = pickResult.worldPos;
|
|
13440
|
+
this._currentAngleMeasurement.target.entity = pickResult.entity;
|
|
13431
13441
|
this._currentAngleMeasurement.originVisible = true;
|
|
13432
13442
|
this._currentAngleMeasurement.originWireVisible = true;
|
|
13433
13443
|
this._currentAngleMeasurement.cornerVisible = true;
|
|
@@ -83345,7 +83355,7 @@ class SceneModel extends Component {
|
|
|
83345
83355
|
return;
|
|
83346
83356
|
}
|
|
83347
83357
|
let parentTransform;
|
|
83348
|
-
if (
|
|
83358
|
+
if (cfg.parentTransformId) {
|
|
83349
83359
|
parentTransform = this._transforms[cfg.parentTransformId];
|
|
83350
83360
|
if (!parentTransform) {
|
|
83351
83361
|
this.error("[createTransform] SceneModel.createTransform() config missing: id");
|
|
@@ -87188,10 +87198,12 @@ class DistanceMeasurementsMouseControl extends DistanceMeasurementsControl {
|
|
|
87188
87198
|
this._currentDistanceMeasurement = distanceMeasurementsPlugin.createMeasurement({
|
|
87189
87199
|
id: math.createUUID(),
|
|
87190
87200
|
origin: {
|
|
87191
|
-
worldPos: pointerWorldPos.slice()
|
|
87201
|
+
worldPos: pointerWorldPos.slice(),
|
|
87202
|
+
entity: hoveredEntity
|
|
87192
87203
|
},
|
|
87193
87204
|
target: {
|
|
87194
|
-
worldPos: pointerWorldPos.slice()
|
|
87205
|
+
worldPos: pointerWorldPos.slice(),
|
|
87206
|
+
entity: hoveredEntity
|
|
87195
87207
|
},
|
|
87196
87208
|
approximate: true
|
|
87197
87209
|
});
|
|
@@ -87204,7 +87216,7 @@ class DistanceMeasurementsMouseControl extends DistanceMeasurementsControl {
|
|
|
87204
87216
|
this._currentDistanceMeasurement.clickable = false;
|
|
87205
87217
|
this._currentDistanceMeasurement.origin.entity = hoveredEntity;
|
|
87206
87218
|
hoveredEntity = null;
|
|
87207
|
-
this.fire("measurementStart", this._currentDistanceMeasurement);
|
|
87219
|
+
this.distanceMeasurementsPlugin.fire("measurementStart", this._currentDistanceMeasurement);
|
|
87208
87220
|
}
|
|
87209
87221
|
}
|
|
87210
87222
|
});
|
|
@@ -87525,7 +87537,7 @@ class DistanceMeasurementsMouseControl extends DistanceMeasurementsControl {
|
|
|
87525
87537
|
* start or end point will cause the point to snap to the nearest vertex or edge. A quick
|
|
87526
87538
|
* touch-release will immediately set the point at the tapped position on the object surface.
|
|
87527
87539
|
*
|
|
87528
|
-
* [[Run example](/examples/measurement/#distance_createWithTouch_snapping)]
|
|
87540
|
+
* [[Run example](https://xeokit.github.io/xeokit-sdk/examples/measurement/#distance_createWithTouch_snapping)]
|
|
87529
87541
|
*
|
|
87530
87542
|
* ````javascript
|
|
87531
87543
|
* import {Viewer, XKTLoaderPlugin, DistanceMeasurementsPlugin, DistanceMeasurementsTouchControl} from "xeokit-sdk.es.js";
|
|
@@ -88089,10 +88101,12 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88089
88101
|
this._currentDistanceMeasurement = plugin.createMeasurement({
|
|
88090
88102
|
id: math.createUUID(),
|
|
88091
88103
|
origin: {
|
|
88092
|
-
worldPos: pointerWorldPos
|
|
88104
|
+
worldPos: pointerWorldPos,
|
|
88105
|
+
entity: snapPickResult.entity
|
|
88093
88106
|
},
|
|
88094
88107
|
target: {
|
|
88095
|
-
worldPos: pointerWorldPos
|
|
88108
|
+
worldPos: pointerWorldPos,
|
|
88109
|
+
entity: snapPickResult.entity
|
|
88096
88110
|
}
|
|
88097
88111
|
});
|
|
88098
88112
|
this._currentDistanceMeasurement.labelsVisible = false;
|
|
@@ -88162,6 +88176,7 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88162
88176
|
this.pointerCircle.start(snapPickResult.snappedCanvasPos);
|
|
88163
88177
|
pointerWorldPos.set(snapPickResult.worldPos);
|
|
88164
88178
|
this._currentDistanceMeasurement.target.worldPos = snapPickResult.worldPos;
|
|
88179
|
+
this._currentDistanceMeasurement.target.entity = snapPickResult.entity;
|
|
88165
88180
|
this._currentDistanceMeasurement.targetVisible = true;
|
|
88166
88181
|
this._currentDistanceMeasurement.wireVisible = true;
|
|
88167
88182
|
this._currentDistanceMeasurement.labelsVisible = true;
|
|
@@ -88179,6 +88194,7 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88179
88194
|
this.pointerCircle.start(pickResult.canvasPos);
|
|
88180
88195
|
pointerWorldPos.set(pickResult.worldPos);
|
|
88181
88196
|
this._currentDistanceMeasurement.target.worldPos = pickResult.worldPos;
|
|
88197
|
+
this._currentDistanceMeasurement.target.entity = pickResult.entity;
|
|
88182
88198
|
this._currentDistanceMeasurement.targetVisible = true;
|
|
88183
88199
|
this._currentDistanceMeasurement.wireVisible = true;
|
|
88184
88200
|
this._currentDistanceMeasurement.labelsVisible = true;
|
|
@@ -88269,10 +88285,12 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88269
88285
|
this._currentDistanceMeasurement = plugin.createMeasurement({
|
|
88270
88286
|
id: math.createUUID(),
|
|
88271
88287
|
origin: {
|
|
88272
|
-
worldPos: snapPickResult.worldPos
|
|
88288
|
+
worldPos: snapPickResult.worldPos,
|
|
88289
|
+
entity: snapPickResult.entity
|
|
88273
88290
|
},
|
|
88274
88291
|
target: {
|
|
88275
|
-
worldPos: snapPickResult.worldPos
|
|
88292
|
+
worldPos: snapPickResult.worldPos,
|
|
88293
|
+
entity: snapPickResult.entity
|
|
88276
88294
|
}
|
|
88277
88295
|
});
|
|
88278
88296
|
this._currentDistanceMeasurement.labelsVisible = false;
|
|
@@ -88303,10 +88321,12 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88303
88321
|
this._currentDistanceMeasurement = plugin.createMeasurement({
|
|
88304
88322
|
id: math.createUUID(),
|
|
88305
88323
|
origin: {
|
|
88306
|
-
worldPos: pickResult.worldPos
|
|
88324
|
+
worldPos: pickResult.worldPos,
|
|
88325
|
+
entity: pickResult.entity
|
|
88307
88326
|
},
|
|
88308
88327
|
target: {
|
|
88309
|
-
worldPos: pickResult.worldPos
|
|
88328
|
+
worldPos: pickResult.worldPos,
|
|
88329
|
+
entity: pickResult.entity
|
|
88310
88330
|
}
|
|
88311
88331
|
});
|
|
88312
88332
|
this._currentDistanceMeasurement.labelsVisible = false;
|
|
@@ -88363,6 +88383,7 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88363
88383
|
this.pointerLens.snapped = true;
|
|
88364
88384
|
}
|
|
88365
88385
|
this._currentDistanceMeasurement.target.worldPos = snapPickResult.worldPos;
|
|
88386
|
+
this._currentDistanceMeasurement.target.entity = snapPickResult.entity;
|
|
88366
88387
|
this._currentDistanceMeasurement.targetVisible = true;
|
|
88367
88388
|
this._currentDistanceMeasurement.wireVisible = true;
|
|
88368
88389
|
this._currentDistanceMeasurement.labelsVisible = true;
|
|
@@ -88377,6 +88398,7 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88377
88398
|
this.pointerLens.snapped = false;
|
|
88378
88399
|
}
|
|
88379
88400
|
this._currentDistanceMeasurement.target.worldPos = pickResult.worldPos;
|
|
88401
|
+
this._currentDistanceMeasurement.target.entity = pickResult.entity;
|
|
88380
88402
|
this._currentDistanceMeasurement.targetVisible = true;
|
|
88381
88403
|
this._currentDistanceMeasurement.wireVisible = true;
|
|
88382
88404
|
this._currentDistanceMeasurement.labelsVisible = true;
|
|
@@ -88432,10 +88454,12 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88432
88454
|
this._currentDistanceMeasurement = plugin.createMeasurement({
|
|
88433
88455
|
id: math.createUUID(),
|
|
88434
88456
|
origin: {
|
|
88435
|
-
worldPos: pickResult.worldPos
|
|
88457
|
+
worldPos: pickResult.worldPos,
|
|
88458
|
+
entity: pickResult.entity
|
|
88436
88459
|
},
|
|
88437
88460
|
target: {
|
|
88438
|
-
worldPos: pickResult.worldPos
|
|
88461
|
+
worldPos: pickResult.worldPos,
|
|
88462
|
+
entity: pickResult.entity
|
|
88439
88463
|
}
|
|
88440
88464
|
});
|
|
88441
88465
|
this._currentDistanceMeasurement.labelsVisible = false;
|
|
@@ -88447,6 +88471,7 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88447
88471
|
this._currentDistanceMeasurement.targetVisible = false;
|
|
88448
88472
|
this._currentDistanceMeasurement.clickable = false;
|
|
88449
88473
|
this._touchState = WAITING_FOR_TARGET_TOUCH_START;
|
|
88474
|
+
this.distanceMeasurementsPlugin.fire("measurementStart", this._currentDistanceMeasurement);
|
|
88450
88475
|
// console.log("touchend: this._touchState= WAITING_FOR_ORIGIN_QUICK_TOUCH_END -> WAITING_FOR_ORIGIN_TOUCH_START")
|
|
88451
88476
|
} else {
|
|
88452
88477
|
if (this._currentDistanceMeasurement) {
|
|
@@ -88492,6 +88517,7 @@ class DistanceMeasurementsTouchControl extends DistanceMeasurementsControl {
|
|
|
88492
88517
|
});
|
|
88493
88518
|
if (pickResult && pickResult.worldPos) {
|
|
88494
88519
|
this._currentDistanceMeasurement.target.worldPos = pickResult.worldPos;
|
|
88520
|
+
this._currentDistanceMeasurement.target.entity = pickResult.entity;
|
|
88495
88521
|
this._currentDistanceMeasurement.targetVisible = true;
|
|
88496
88522
|
this._currentDistanceMeasurement.wireVisible = true;
|
|
88497
88523
|
this._currentDistanceMeasurement.labelsVisible = true;
|
|
@@ -94869,6 +94895,7 @@ class PickController {
|
|
|
94869
94895
|
if (this.snappedOrPicked) {
|
|
94870
94896
|
if (this.snapPickResult) {
|
|
94871
94897
|
const pickResult = new PickResult();
|
|
94898
|
+
pickResult.entity = this.snapPickResult.entity;
|
|
94872
94899
|
pickResult.snappedToVertex = this.snapPickResult.snappedToVertex;
|
|
94873
94900
|
pickResult.snappedToEdge = this.snapPickResult.snappedToEdge;
|
|
94874
94901
|
pickResult.worldPos = this.snapPickResult.worldPos;
|
|
@@ -95077,7 +95104,7 @@ class MousePanRotateDollyHandler {
|
|
|
95077
95104
|
}
|
|
95078
95105
|
});
|
|
95079
95106
|
|
|
95080
|
-
document.addEventListener("mousemove", this._documentMouseMoveHandler = () => {
|
|
95107
|
+
document.addEventListener("mousemove", this._documentMouseMoveHandler = (e) => {
|
|
95081
95108
|
|
|
95082
95109
|
if (!(configs.active && configs.pointerEnabled)) {
|
|
95083
95110
|
return;
|
|
@@ -95098,10 +95125,10 @@ class MousePanRotateDollyHandler {
|
|
|
95098
95125
|
|
|
95099
95126
|
const panning = keyDown[scene.input.KEY_SHIFT] || configs.planView || (!configs.panRightClick && mouseDownMiddle) || (configs.panRightClick && mouseDownRight);
|
|
95100
95127
|
|
|
95101
|
-
|
|
95128
|
+
const xDelta = document.pointerLockElement ? e.movementX : (x - lastX);
|
|
95129
|
+
const yDelta = document.pointerLockElement ? e.movementY : (y - lastY);
|
|
95102
95130
|
|
|
95103
|
-
|
|
95104
|
-
const yPanDelta = (y - lastY);
|
|
95131
|
+
if (panning) {
|
|
95105
95132
|
|
|
95106
95133
|
const camera = scene.camera;
|
|
95107
95134
|
|
|
@@ -95112,13 +95139,13 @@ class MousePanRotateDollyHandler {
|
|
|
95112
95139
|
const depth = Math.abs(mouseDownPicked ? math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])) : scene.camera.eyeLookDist);
|
|
95113
95140
|
const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);
|
|
95114
95141
|
|
|
95115
|
-
updates.panDeltaX += (1.5 *
|
|
95116
|
-
updates.panDeltaY += (1.5 *
|
|
95142
|
+
updates.panDeltaX += (1.5 * xDelta * targetDistance / canvasHeight);
|
|
95143
|
+
updates.panDeltaY += (1.5 * yDelta * targetDistance / canvasHeight);
|
|
95117
95144
|
|
|
95118
95145
|
} else {
|
|
95119
95146
|
|
|
95120
|
-
updates.panDeltaX += 0.5 * camera.ortho.scale * (
|
|
95121
|
-
updates.panDeltaY += 0.5 * camera.ortho.scale * (
|
|
95147
|
+
updates.panDeltaX += 0.5 * camera.ortho.scale * (xDelta / canvasHeight);
|
|
95148
|
+
updates.panDeltaY += 0.5 * camera.ortho.scale * (yDelta / canvasHeight);
|
|
95122
95149
|
}
|
|
95123
95150
|
|
|
95124
95151
|
} else if (mouseDownLeft && !mouseDownMiddle && !mouseDownRight) {
|
|
@@ -95126,12 +95153,12 @@ class MousePanRotateDollyHandler {
|
|
|
95126
95153
|
if (!configs.planView) { // No rotating in plan-view mode
|
|
95127
95154
|
|
|
95128
95155
|
if (configs.firstPerson) {
|
|
95129
|
-
updates.rotateDeltaY -= (
|
|
95130
|
-
updates.rotateDeltaX += (
|
|
95156
|
+
updates.rotateDeltaY -= (xDelta / canvasWidth) * configs.dragRotationRate / 2;
|
|
95157
|
+
updates.rotateDeltaX += (yDelta / canvasHeight) * (configs.dragRotationRate / 4);
|
|
95131
95158
|
|
|
95132
95159
|
} else {
|
|
95133
|
-
updates.rotateDeltaY -= (
|
|
95134
|
-
updates.rotateDeltaX += (
|
|
95160
|
+
updates.rotateDeltaY -= (xDelta / canvasWidth) * (configs.dragRotationRate * 1.5);
|
|
95161
|
+
updates.rotateDeltaX += (yDelta / canvasHeight) * (configs.dragRotationRate * 1.5);
|
|
95135
95162
|
}
|
|
95136
95163
|
}
|
|
95137
95164
|
}
|
|
@@ -115499,6 +115526,7 @@ function parseGLTF(plugin, src, gltf, metaModelJSON, options, sceneModel, ok) {
|
|
|
115499
115526
|
loadBuffer: options.loadBuffer,
|
|
115500
115527
|
basePath: options.basePath,
|
|
115501
115528
|
handlenode: options.handlenode,
|
|
115529
|
+
backfaces: !!options.backfaces,
|
|
115502
115530
|
gltfData: gltfData,
|
|
115503
115531
|
scene: sceneModel.scene,
|
|
115504
115532
|
plugin: plugin,
|
|
@@ -115704,7 +115732,8 @@ function loadMaterialAttributes(ctx, material) { // Substitute RGBA for material
|
|
|
115704
115732
|
color: new Float32Array([1, 1, 1, 1]),
|
|
115705
115733
|
opacity: 1,
|
|
115706
115734
|
metallic: 0,
|
|
115707
|
-
roughness: 1
|
|
115735
|
+
roughness: 1,
|
|
115736
|
+
doubleSided : true
|
|
115708
115737
|
};
|
|
115709
115738
|
if (extensions) {
|
|
115710
115739
|
const specularPBR = extensions["KHR_materials_pbrSpecularGlossiness"];
|
|
@@ -115755,6 +115784,7 @@ function loadMaterialAttributes(ctx, material) { // Substitute RGBA for material
|
|
|
115755
115784
|
materialAttributes.roughness = roughnessFactor;
|
|
115756
115785
|
}
|
|
115757
115786
|
}
|
|
115787
|
+
materialAttributes.doubleSided = (material.doubleSided !== false);
|
|
115758
115788
|
return materialAttributes;
|
|
115759
115789
|
}
|
|
115760
115790
|
|
|
@@ -115865,6 +115895,20 @@ function loadNode(ctx, node, depth, matrix) {
|
|
|
115865
115895
|
id: sceneModel.id + "." + ctx.numObjects++
|
|
115866
115896
|
};
|
|
115867
115897
|
|
|
115898
|
+
const material = primitive.material;
|
|
115899
|
+
if (material) {
|
|
115900
|
+
meshCfg.textureSetId = material._textureSetId;
|
|
115901
|
+
meshCfg.color = material._attributes.color;
|
|
115902
|
+
meshCfg.opacity = material._attributes.opacity;
|
|
115903
|
+
meshCfg.metallic = material._attributes.metallic;
|
|
115904
|
+
meshCfg.roughness = material._attributes.roughness;
|
|
115905
|
+
} else {
|
|
115906
|
+
meshCfg.color = new Float32Array([1.0, 1.0, 1.0]);
|
|
115907
|
+
meshCfg.opacity = 1.0;
|
|
115908
|
+
}
|
|
115909
|
+
|
|
115910
|
+
const backfaces = ((ctx.backfaces !== false) || (material.doubleSided !== false));
|
|
115911
|
+
|
|
115868
115912
|
switch (primitive.mode) {
|
|
115869
115913
|
case 0: // POINTS
|
|
115870
115914
|
meshCfg.primitive = "points";
|
|
@@ -115879,16 +115923,16 @@ function loadNode(ctx, node, depth, matrix) {
|
|
|
115879
115923
|
meshCfg.primitive = "lines";
|
|
115880
115924
|
break;
|
|
115881
115925
|
case 4: // TRIANGLES
|
|
115882
|
-
meshCfg.primitive = "triangles";
|
|
115926
|
+
meshCfg.primitive = backfaces ? "triangles" : "solid";
|
|
115883
115927
|
break;
|
|
115884
115928
|
case 5: // TRIANGLE_STRIP
|
|
115885
|
-
meshCfg.primitive = "triangles";
|
|
115929
|
+
meshCfg.primitive = backfaces ? "triangles" : "solid";
|
|
115886
115930
|
break;
|
|
115887
115931
|
case 6: // TRIANGLE_FAN
|
|
115888
|
-
meshCfg.primitive = "triangles";
|
|
115932
|
+
meshCfg.primitive = backfaces ? "triangles" : "solid";
|
|
115889
115933
|
break;
|
|
115890
115934
|
default:
|
|
115891
|
-
meshCfg.primitive = "triangles";
|
|
115935
|
+
meshCfg.primitive = backfaces ? "triangles" : "solid";
|
|
115892
115936
|
}
|
|
115893
115937
|
|
|
115894
115938
|
const POSITION = primitive.attributes.POSITION;
|
|
@@ -115917,17 +115961,6 @@ function loadNode(ctx, node, depth, matrix) {
|
|
|
115917
115961
|
meshCfg.origin = origin;
|
|
115918
115962
|
}
|
|
115919
115963
|
|
|
115920
|
-
const material = primitive.material;
|
|
115921
|
-
if (material) {
|
|
115922
|
-
meshCfg.textureSetId = material._textureSetId;
|
|
115923
|
-
meshCfg.color = material._attributes.color;
|
|
115924
|
-
meshCfg.opacity = material._attributes.opacity;
|
|
115925
|
-
meshCfg.metallic = material._attributes.metallic;
|
|
115926
|
-
meshCfg.roughness = material._attributes.roughness;
|
|
115927
|
-
} else {
|
|
115928
|
-
meshCfg.color = new Float32Array([1.0, 1.0, 1.0]);
|
|
115929
|
-
meshCfg.opacity = 1.0;
|
|
115930
|
-
}
|
|
115931
115964
|
// if (createEntity) {
|
|
115932
115965
|
// if (createEntity.colorize) {
|
|
115933
115966
|
// meshCfg.color = createEntity.colorize;
|
|
@@ -116270,7 +116303,7 @@ class GLTFLoaderPlugin extends Plugin {
|
|
|
116270
116303
|
* @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) is enabled for the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````
|
|
116271
116304
|
* @param {Boolean} [params.pbrEnabled=true] Indicates if physically-based rendering (PBR) is enabled for the model. Overrides ````colorTextureEnabled````. Only works when {@link Scene#pbrEnabled} is also ````true````.
|
|
116272
116305
|
* @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````.
|
|
116273
|
-
* @param {Boolean} [params.backfaces=
|
|
116306
|
+
* @param {Boolean} [params.backfaces=true] When true, always show backfaces, even on objects for which the glTF material is single-sided. When false, only show backfaces on geometries whenever the glTF material is double-sided.
|
|
116274
116307
|
* @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.
|
|
116275
116308
|
* @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to
|
|
116276
116309
|
* represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable
|
|
@@ -118532,7 +118565,8 @@ class Control {
|
|
|
118532
118565
|
|
|
118533
118566
|
this._rootNode = new Node$2(scene, {
|
|
118534
118567
|
position: [0, 0, 0],
|
|
118535
|
-
scale: [5, 5, 5]
|
|
118568
|
+
scale: [5, 5, 5],
|
|
118569
|
+
isObject: false
|
|
118536
118570
|
});
|
|
118537
118571
|
|
|
118538
118572
|
const rootNode = this._rootNode;
|
|
@@ -118723,7 +118757,8 @@ class Control {
|
|
|
118723
118757
|
collidable: true,
|
|
118724
118758
|
clippable: false,
|
|
118725
118759
|
visible: false,
|
|
118726
|
-
scale: [2.4, 2.4, 1]
|
|
118760
|
+
scale: [2.4, 2.4, 1],
|
|
118761
|
+
isObject: false
|
|
118727
118762
|
}), NO_STATE_INHERIT),
|
|
118728
118763
|
|
|
118729
118764
|
planeFrame: rootNode.addChild(new Mesh(rootNode, { // Visible frame
|
|
@@ -118754,7 +118789,8 @@ class Control {
|
|
|
118754
118789
|
clippable: false,
|
|
118755
118790
|
visible: false,
|
|
118756
118791
|
scale: [1, 1, .1],
|
|
118757
|
-
rotation: [0, 0, 45]
|
|
118792
|
+
rotation: [0, 0, 45],
|
|
118793
|
+
isObject: false
|
|
118758
118794
|
}), NO_STATE_INHERIT),
|
|
118759
118795
|
|
|
118760
118796
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -118773,7 +118809,8 @@ class Control {
|
|
|
118773
118809
|
collidable: true,
|
|
118774
118810
|
clippable: false,
|
|
118775
118811
|
backfaces: true,
|
|
118776
|
-
visible: false
|
|
118812
|
+
visible: false,
|
|
118813
|
+
isObject: false
|
|
118777
118814
|
}), NO_STATE_INHERIT),
|
|
118778
118815
|
|
|
118779
118816
|
xCurveHandle: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis
|
|
@@ -118788,7 +118825,8 @@ class Control {
|
|
|
118788
118825
|
collidable: true,
|
|
118789
118826
|
clippable: false,
|
|
118790
118827
|
backfaces: true,
|
|
118791
|
-
visible: false
|
|
118828
|
+
visible: false,
|
|
118829
|
+
isObject: false
|
|
118792
118830
|
}), NO_STATE_INHERIT),
|
|
118793
118831
|
|
|
118794
118832
|
xCurveArrow1: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118803,7 +118841,8 @@ class Control {
|
|
|
118803
118841
|
pickable: true,
|
|
118804
118842
|
collidable: true,
|
|
118805
118843
|
clippable: false,
|
|
118806
|
-
visible: false
|
|
118844
|
+
visible: false,
|
|
118845
|
+
isObject: false
|
|
118807
118846
|
}), NO_STATE_INHERIT),
|
|
118808
118847
|
|
|
118809
118848
|
xCurveArrow2: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118818,7 +118857,8 @@ class Control {
|
|
|
118818
118857
|
pickable: true,
|
|
118819
118858
|
collidable: true,
|
|
118820
118859
|
clippable: false,
|
|
118821
|
-
visible: false
|
|
118860
|
+
visible: false,
|
|
118861
|
+
isObject: false
|
|
118822
118862
|
}), NO_STATE_INHERIT),
|
|
118823
118863
|
|
|
118824
118864
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -118833,7 +118873,8 @@ class Control {
|
|
|
118833
118873
|
collidable: true,
|
|
118834
118874
|
clippable: false,
|
|
118835
118875
|
backfaces: true,
|
|
118836
|
-
visible: false
|
|
118876
|
+
visible: false,
|
|
118877
|
+
isObject: false
|
|
118837
118878
|
}), NO_STATE_INHERIT),
|
|
118838
118879
|
|
|
118839
118880
|
yCurveHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118844,7 +118885,8 @@ class Control {
|
|
|
118844
118885
|
collidable: true,
|
|
118845
118886
|
clippable: false,
|
|
118846
118887
|
backfaces: true,
|
|
118847
|
-
visible: false
|
|
118888
|
+
visible: false,
|
|
118889
|
+
isObject: false
|
|
118848
118890
|
}), NO_STATE_INHERIT),
|
|
118849
118891
|
|
|
118850
118892
|
yCurveArrow1: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118859,7 +118901,8 @@ class Control {
|
|
|
118859
118901
|
pickable: true,
|
|
118860
118902
|
collidable: true,
|
|
118861
118903
|
clippable: false,
|
|
118862
|
-
visible: false
|
|
118904
|
+
visible: false,
|
|
118905
|
+
isObject: false
|
|
118863
118906
|
}), NO_STATE_INHERIT),
|
|
118864
118907
|
|
|
118865
118908
|
yCurveArrow2: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118874,7 +118917,8 @@ class Control {
|
|
|
118874
118917
|
pickable: true,
|
|
118875
118918
|
collidable: true,
|
|
118876
118919
|
clippable: false,
|
|
118877
|
-
visible: false
|
|
118920
|
+
visible: false,
|
|
118921
|
+
isObject: false
|
|
118878
118922
|
}), NO_STATE_INHERIT),
|
|
118879
118923
|
|
|
118880
118924
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -118888,7 +118932,8 @@ class Control {
|
|
|
118888
118932
|
pickable: false,
|
|
118889
118933
|
collidable: true,
|
|
118890
118934
|
clippable: false,
|
|
118891
|
-
visible: false
|
|
118935
|
+
visible: false,
|
|
118936
|
+
isObject: false
|
|
118892
118937
|
}), NO_STATE_INHERIT),
|
|
118893
118938
|
|
|
118894
118939
|
zCurveHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118898,7 +118943,8 @@ class Control {
|
|
|
118898
118943
|
pickable: true,
|
|
118899
118944
|
collidable: true,
|
|
118900
118945
|
clippable: false,
|
|
118901
|
-
visible: false
|
|
118946
|
+
visible: false,
|
|
118947
|
+
isObject: false
|
|
118902
118948
|
}), NO_STATE_INHERIT),
|
|
118903
118949
|
|
|
118904
118950
|
zCurveCurveArrow1: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118912,7 +118958,8 @@ class Control {
|
|
|
118912
118958
|
pickable: true,
|
|
118913
118959
|
collidable: true,
|
|
118914
118960
|
clippable: false,
|
|
118915
|
-
visible: false
|
|
118961
|
+
visible: false,
|
|
118962
|
+
isObject: false
|
|
118916
118963
|
}), NO_STATE_INHERIT),
|
|
118917
118964
|
|
|
118918
118965
|
zCurveArrow2: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118927,7 +118974,8 @@ class Control {
|
|
|
118927
118974
|
pickable: true,
|
|
118928
118975
|
collidable: true,
|
|
118929
118976
|
clippable: false,
|
|
118930
|
-
visible: false
|
|
118977
|
+
visible: false,
|
|
118978
|
+
isObject: false
|
|
118931
118979
|
}), NO_STATE_INHERIT),
|
|
118932
118980
|
|
|
118933
118981
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -118942,7 +118990,8 @@ class Control {
|
|
|
118942
118990
|
pickable: false,
|
|
118943
118991
|
collidable: true,
|
|
118944
118992
|
clippable: false,
|
|
118945
|
-
visible: false
|
|
118993
|
+
visible: false,
|
|
118994
|
+
isObject: false
|
|
118946
118995
|
}), NO_STATE_INHERIT),
|
|
118947
118996
|
|
|
118948
118997
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -118960,7 +119009,8 @@ class Control {
|
|
|
118960
119009
|
pickable: false,
|
|
118961
119010
|
collidable: true,
|
|
118962
119011
|
clippable: false,
|
|
118963
|
-
visible: false
|
|
119012
|
+
visible: false,
|
|
119013
|
+
isObject: false
|
|
118964
119014
|
}), NO_STATE_INHERIT),
|
|
118965
119015
|
|
|
118966
119016
|
xAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118974,7 +119024,8 @@ class Control {
|
|
|
118974
119024
|
pickable: true,
|
|
118975
119025
|
collidable: true,
|
|
118976
119026
|
clippable: false,
|
|
118977
|
-
visible: false
|
|
119027
|
+
visible: false,
|
|
119028
|
+
isObject: false
|
|
118978
119029
|
}), NO_STATE_INHERIT),
|
|
118979
119030
|
|
|
118980
119031
|
xAxis: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -118988,7 +119039,8 @@ class Control {
|
|
|
118988
119039
|
pickable: false,
|
|
118989
119040
|
collidable: true,
|
|
118990
119041
|
clippable: false,
|
|
118991
|
-
visible: false
|
|
119042
|
+
visible: false,
|
|
119043
|
+
isObject: false
|
|
118992
119044
|
}), NO_STATE_INHERIT),
|
|
118993
119045
|
|
|
118994
119046
|
xAxisHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119002,7 +119054,8 @@ class Control {
|
|
|
119002
119054
|
pickable: true,
|
|
119003
119055
|
collidable: true,
|
|
119004
119056
|
clippable: false,
|
|
119005
|
-
visible: false
|
|
119057
|
+
visible: false,
|
|
119058
|
+
isObject: false
|
|
119006
119059
|
}), NO_STATE_INHERIT),
|
|
119007
119060
|
|
|
119008
119061
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -119020,7 +119073,8 @@ class Control {
|
|
|
119020
119073
|
pickable: false,
|
|
119021
119074
|
collidable: true,
|
|
119022
119075
|
clippable: false,
|
|
119023
|
-
visible: false
|
|
119076
|
+
visible: false,
|
|
119077
|
+
isObject: false
|
|
119024
119078
|
}), NO_STATE_INHERIT),
|
|
119025
119079
|
|
|
119026
119080
|
yAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119035,7 +119089,8 @@ class Control {
|
|
|
119035
119089
|
collidable: true,
|
|
119036
119090
|
clippable: false,
|
|
119037
119091
|
visible: false,
|
|
119038
|
-
opacity: 0.2
|
|
119092
|
+
opacity: 0.2,
|
|
119093
|
+
isObject: false
|
|
119039
119094
|
}), NO_STATE_INHERIT),
|
|
119040
119095
|
|
|
119041
119096
|
yShaft: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119045,7 +119100,8 @@ class Control {
|
|
|
119045
119100
|
pickable: false,
|
|
119046
119101
|
collidable: true,
|
|
119047
119102
|
clippable: false,
|
|
119048
|
-
visible: false
|
|
119103
|
+
visible: false,
|
|
119104
|
+
isObject: false
|
|
119049
119105
|
}), NO_STATE_INHERIT),
|
|
119050
119106
|
|
|
119051
119107
|
yShaftHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119055,7 +119111,8 @@ class Control {
|
|
|
119055
119111
|
pickable: true,
|
|
119056
119112
|
collidable: true,
|
|
119057
119113
|
clippable: false,
|
|
119058
|
-
visible: false
|
|
119114
|
+
visible: false,
|
|
119115
|
+
isObject: false
|
|
119059
119116
|
}), NO_STATE_INHERIT),
|
|
119060
119117
|
|
|
119061
119118
|
//----------------------------------------------------------------------------------------------------------
|
|
@@ -119073,7 +119130,8 @@ class Control {
|
|
|
119073
119130
|
pickable: false,
|
|
119074
119131
|
collidable: true,
|
|
119075
119132
|
clippable: false,
|
|
119076
|
-
visible: false
|
|
119133
|
+
visible: false,
|
|
119134
|
+
isObject: false
|
|
119077
119135
|
}), NO_STATE_INHERIT),
|
|
119078
119136
|
|
|
119079
119137
|
zAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119087,7 +119145,8 @@ class Control {
|
|
|
119087
119145
|
pickable: true,
|
|
119088
119146
|
collidable: true,
|
|
119089
119147
|
clippable: false,
|
|
119090
|
-
visible: false
|
|
119148
|
+
visible: false,
|
|
119149
|
+
isObject: false
|
|
119091
119150
|
}), NO_STATE_INHERIT),
|
|
119092
119151
|
|
|
119093
119152
|
|
|
@@ -119102,7 +119161,8 @@ class Control {
|
|
|
119102
119161
|
clippable: false,
|
|
119103
119162
|
pickable: false,
|
|
119104
119163
|
collidable: true,
|
|
119105
|
-
visible: false
|
|
119164
|
+
visible: false,
|
|
119165
|
+
isObject: false
|
|
119106
119166
|
}), NO_STATE_INHERIT),
|
|
119107
119167
|
|
|
119108
119168
|
zAxisHandle: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119116,7 +119176,8 @@ class Control {
|
|
|
119116
119176
|
clippable: false,
|
|
119117
119177
|
pickable: true,
|
|
119118
119178
|
collidable: true,
|
|
119119
|
-
visible: false
|
|
119179
|
+
visible: false,
|
|
119180
|
+
isObject: false
|
|
119120
119181
|
}), NO_STATE_INHERIT)
|
|
119121
119182
|
};
|
|
119122
119183
|
|
|
@@ -119148,7 +119209,8 @@ class Control {
|
|
|
119148
119209
|
clippable: false,
|
|
119149
119210
|
visible: false,
|
|
119150
119211
|
scale: [1, 1, 1],
|
|
119151
|
-
rotation: [0, 0, 45]
|
|
119212
|
+
rotation: [0, 0, 45],
|
|
119213
|
+
isObject: false
|
|
119152
119214
|
}), NO_STATE_INHERIT),
|
|
119153
119215
|
|
|
119154
119216
|
xHoop: rootNode.addChild(new Mesh(rootNode, { // Full
|
|
@@ -119164,7 +119226,8 @@ class Control {
|
|
|
119164
119226
|
pickable: false,
|
|
119165
119227
|
collidable: true,
|
|
119166
119228
|
clippable: false,
|
|
119167
|
-
visible: false
|
|
119229
|
+
visible: false,
|
|
119230
|
+
isObject: false
|
|
119168
119231
|
}), NO_STATE_INHERIT),
|
|
119169
119232
|
|
|
119170
119233
|
yHoop: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119176,7 +119239,8 @@ class Control {
|
|
|
119176
119239
|
pickable: false,
|
|
119177
119240
|
collidable: true,
|
|
119178
119241
|
clippable: false,
|
|
119179
|
-
visible: false
|
|
119242
|
+
visible: false,
|
|
119243
|
+
isObject: false
|
|
119180
119244
|
}), NO_STATE_INHERIT),
|
|
119181
119245
|
|
|
119182
119246
|
zHoop: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis
|
|
@@ -119189,7 +119253,8 @@ class Control {
|
|
|
119189
119253
|
collidable: true,
|
|
119190
119254
|
clippable: false,
|
|
119191
119255
|
backfaces: true,
|
|
119192
|
-
visible: false
|
|
119256
|
+
visible: false,
|
|
119257
|
+
isObject: false
|
|
119193
119258
|
}), NO_STATE_INHERIT),
|
|
119194
119259
|
|
|
119195
119260
|
xAxisArrow: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119203,7 +119268,8 @@ class Control {
|
|
|
119203
119268
|
pickable: false,
|
|
119204
119269
|
collidable: true,
|
|
119205
119270
|
clippable: false,
|
|
119206
|
-
visible: false
|
|
119271
|
+
visible: false,
|
|
119272
|
+
isObject: false
|
|
119207
119273
|
}), NO_STATE_INHERIT),
|
|
119208
119274
|
|
|
119209
119275
|
yAxisArrow: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119217,7 +119283,8 @@ class Control {
|
|
|
119217
119283
|
pickable: false,
|
|
119218
119284
|
collidable: true,
|
|
119219
119285
|
clippable: false,
|
|
119220
|
-
visible: false
|
|
119286
|
+
visible: false,
|
|
119287
|
+
isObject: false
|
|
119221
119288
|
}), NO_STATE_INHERIT),
|
|
119222
119289
|
|
|
119223
119290
|
zAxisArrow: rootNode.addChild(new Mesh(rootNode, {
|
|
@@ -119231,7 +119298,8 @@ class Control {
|
|
|
119231
119298
|
pickable: false,
|
|
119232
119299
|
collidable: true,
|
|
119233
119300
|
clippable: false,
|
|
119234
|
-
visible: false
|
|
119301
|
+
visible: false,
|
|
119302
|
+
isObject: false
|
|
119235
119303
|
}), NO_STATE_INHERIT)
|
|
119236
119304
|
};
|
|
119237
119305
|
}
|