redhotmagma-visualization 1.44.0 → 1.44.2
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/Three/Three3DScene.js +28 -8
- package/package.json +2 -2
- package/src/Three/Three3DScene.js +33 -8
package/Three/Three3DScene.js
CHANGED
|
@@ -1111,7 +1111,7 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1111
1111
|
var lookat = dir.multiplyScalar(distance).add(position);
|
|
1112
1112
|
var rotation = new _three.Quaternion();
|
|
1113
1113
|
camera.getWorldQuaternion(rotation);
|
|
1114
|
-
var orientation = _three.Object3D.DefaultUp.clone()
|
|
1114
|
+
var orientation = _three.Object3D.DefaultUp.clone();
|
|
1115
1115
|
var fov = camera.fov || 45;
|
|
1116
1116
|
var cameraView = {
|
|
1117
1117
|
position: position,
|
|
@@ -1187,11 +1187,17 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1187
1187
|
};
|
|
1188
1188
|
}
|
|
1189
1189
|
this.screenshotViews = this.calculateRelativeViews(this.relativeScreenshotViews, center, (this.controls.minDistance + this.controls.maxDistance) * 0.5);
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1190
|
+
}
|
|
1191
|
+
}, {
|
|
1192
|
+
key: "getCameraViewRatio",
|
|
1193
|
+
value: function getCameraViewRatio(view1, view2) {
|
|
1194
|
+
return view2.lookat.distanceTo(view2.position) / view1.lookat.distanceTo(view1.position);
|
|
1195
|
+
}
|
|
1196
|
+
}, {
|
|
1197
|
+
key: "shouldViewChangeTriggerJumpToView",
|
|
1198
|
+
value: function shouldViewChangeTriggerJumpToView(view1, view2) {
|
|
1199
|
+
var tolerance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.5;
|
|
1200
|
+
return Math.abs(this.getCameraViewRatio(view1, view2) - 1) > tolerance;
|
|
1195
1201
|
}
|
|
1196
1202
|
}, {
|
|
1197
1203
|
key: "initCameraViews",
|
|
@@ -1205,8 +1211,18 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1205
1211
|
}
|
|
1206
1212
|
var box = this.getSceneContainerBox();
|
|
1207
1213
|
var center = box.getCenter(new _three.Vector3());
|
|
1214
|
+
var currentCameraName = this.currentCameraView;
|
|
1215
|
+
var previousCameraView = this.cameraViews[currentCameraName];
|
|
1208
1216
|
this.setupRelativeCameras(center);
|
|
1209
1217
|
this.setupSceneCameras(cameras, center);
|
|
1218
|
+
if (!this._firstCameraInitDone) {
|
|
1219
|
+
this._firstCameraInitDone = true;
|
|
1220
|
+
this.currentCameraView = null;
|
|
1221
|
+
this.jumpToView("default", false);
|
|
1222
|
+
} else if (previousCameraView && this.cameraViews[currentCameraName] && this.shouldViewChangeTriggerJumpToView(previousCameraView, this.cameraViews[currentCameraName])) {
|
|
1223
|
+
this.currentCameraView = null;
|
|
1224
|
+
this.jumpToView(currentCameraName, true);
|
|
1225
|
+
}
|
|
1210
1226
|
}
|
|
1211
1227
|
}, {
|
|
1212
1228
|
key: "jumpToView",
|
|
@@ -1348,9 +1364,13 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1348
1364
|
controls.maxDistance = maxDistance;
|
|
1349
1365
|
camera.near = minDistance * 0.01;
|
|
1350
1366
|
camera.far = maxDistance * 100;
|
|
1351
|
-
|
|
1367
|
+
// update current position only if it does not fit into the distance range
|
|
1368
|
+
var currentDistance = sphere.center.distanceTo(camera.position);
|
|
1369
|
+
if (currentDistance < minDistance || currentDistance > maxDistance) {
|
|
1370
|
+
camera.position.copy(camera.position.normalize().multiplyScalar(maxDistance * 0.75));
|
|
1371
|
+
controls.target = sphere.center;
|
|
1372
|
+
}
|
|
1352
1373
|
camera.updateProjectionMatrix();
|
|
1353
|
-
controls.target = sphere.center;
|
|
1354
1374
|
controls.update();
|
|
1355
1375
|
}
|
|
1356
1376
|
}, {
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "redhotmagma-visualization",
|
|
3
|
-
"version": "1.44.
|
|
3
|
+
"version": "1.44.2",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "./index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@babel/polyfill": "^7.12.1",
|
|
9
|
-
"@configuratorware/scripts": "1.44.
|
|
9
|
+
"@configuratorware/scripts": "1.44.2",
|
|
10
10
|
"@tweenjs/tween.js": "^17.6.0",
|
|
11
11
|
"console-polyfill": "^0.3.0",
|
|
12
12
|
"css-element-queries": "^1.2.3",
|
|
@@ -888,7 +888,7 @@ export class Three3DScene extends Three3D {
|
|
|
888
888
|
|
|
889
889
|
const rotation = new Quaternion();
|
|
890
890
|
camera.getWorldQuaternion(rotation);
|
|
891
|
-
const orientation = Object3D.DefaultUp.clone()
|
|
891
|
+
const orientation = Object3D.DefaultUp.clone();
|
|
892
892
|
|
|
893
893
|
const fov = camera.fov || 45;
|
|
894
894
|
|
|
@@ -964,12 +964,14 @@ export class Three3DScene extends Three3D {
|
|
|
964
964
|
center,
|
|
965
965
|
(this.controls.minDistance + this.controls.maxDistance) * 0.5
|
|
966
966
|
);
|
|
967
|
+
}
|
|
967
968
|
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
969
|
+
getCameraViewRatio(view1, view2) {
|
|
970
|
+
return view2.lookat.distanceTo(view2.position) / view1.lookat.distanceTo(view1.position);
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
shouldViewChangeTriggerJumpToView(view1, view2, tolerance = 0.5) {
|
|
974
|
+
return Math.abs(this.getCameraViewRatio(view1, view2) - 1) > tolerance;
|
|
973
975
|
}
|
|
974
976
|
|
|
975
977
|
initCameraViews(cameras) {
|
|
@@ -983,8 +985,27 @@ export class Three3DScene extends Three3D {
|
|
|
983
985
|
const box = this.getSceneContainerBox();
|
|
984
986
|
const center = box.getCenter(new Vector3());
|
|
985
987
|
|
|
988
|
+
const currentCameraName = this.currentCameraView;
|
|
989
|
+
const previousCameraView = this.cameraViews[currentCameraName];
|
|
990
|
+
|
|
986
991
|
this.setupRelativeCameras(center);
|
|
987
992
|
this.setupSceneCameras(cameras, center);
|
|
993
|
+
|
|
994
|
+
if (!this._firstCameraInitDone) {
|
|
995
|
+
this._firstCameraInitDone = true;
|
|
996
|
+
this.currentCameraView = null;
|
|
997
|
+
this.jumpToView("default", false);
|
|
998
|
+
} else if (
|
|
999
|
+
previousCameraView &&
|
|
1000
|
+
this.cameraViews[currentCameraName] &&
|
|
1001
|
+
this.shouldViewChangeTriggerJumpToView(
|
|
1002
|
+
previousCameraView,
|
|
1003
|
+
this.cameraViews[currentCameraName]
|
|
1004
|
+
)
|
|
1005
|
+
) {
|
|
1006
|
+
this.currentCameraView = null;
|
|
1007
|
+
this.jumpToView(currentCameraName, true);
|
|
1008
|
+
}
|
|
988
1009
|
}
|
|
989
1010
|
|
|
990
1011
|
jumpToView(viewName, animate = true, duration = {}) {
|
|
@@ -1109,9 +1130,13 @@ export class Three3DScene extends Three3D {
|
|
|
1109
1130
|
controls.maxDistance = maxDistance;
|
|
1110
1131
|
camera.near = minDistance * 0.01;
|
|
1111
1132
|
camera.far = maxDistance * 100;
|
|
1112
|
-
|
|
1133
|
+
// update current position only if it does not fit into the distance range
|
|
1134
|
+
const currentDistance = sphere.center.distanceTo(camera.position);
|
|
1135
|
+
if (currentDistance < minDistance || currentDistance > maxDistance) {
|
|
1136
|
+
camera.position.copy(camera.position.normalize().multiplyScalar(maxDistance * 0.75));
|
|
1137
|
+
controls.target = sphere.center;
|
|
1138
|
+
}
|
|
1113
1139
|
camera.updateProjectionMatrix();
|
|
1114
|
-
controls.target = sphere.center;
|
|
1115
1140
|
|
|
1116
1141
|
controls.update();
|
|
1117
1142
|
}
|