redhotmagma-visualization 1.44.1 → 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 +18 -4
- package/package.json +2 -2
- package/src/Three/Three3DScene.js +18 -4
package/Three/Three3DScene.js
CHANGED
|
@@ -13,7 +13,6 @@ var _RGBELoader = require("three/examples/jsm/loaders/RGBELoader");
|
|
|
13
13
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
14
14
|
var _size = _interopRequireDefault(require("lodash/size"));
|
|
15
15
|
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
16
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
17
16
|
var _glTFExporter = require("./Exporters/glTFExporter");
|
|
18
17
|
var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
|
|
19
18
|
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
@@ -1189,6 +1188,17 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1189
1188
|
}
|
|
1190
1189
|
this.screenshotViews = this.calculateRelativeViews(this.relativeScreenshotViews, center, (this.controls.minDistance + this.controls.maxDistance) * 0.5);
|
|
1191
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;
|
|
1201
|
+
}
|
|
1192
1202
|
}, {
|
|
1193
1203
|
key: "initCameraViews",
|
|
1194
1204
|
value: function initCameraViews(cameras) {
|
|
@@ -1209,7 +1219,7 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1209
1219
|
this._firstCameraInitDone = true;
|
|
1210
1220
|
this.currentCameraView = null;
|
|
1211
1221
|
this.jumpToView("default", false);
|
|
1212
|
-
} else if (previousCameraView && this.cameraViews[currentCameraName] &&
|
|
1222
|
+
} else if (previousCameraView && this.cameraViews[currentCameraName] && this.shouldViewChangeTriggerJumpToView(previousCameraView, this.cameraViews[currentCameraName])) {
|
|
1213
1223
|
this.currentCameraView = null;
|
|
1214
1224
|
this.jumpToView(currentCameraName, true);
|
|
1215
1225
|
}
|
|
@@ -1354,9 +1364,13 @@ var Three3DScene = exports.Three3DScene = /*#__PURE__*/function (_Three3D) {
|
|
|
1354
1364
|
controls.maxDistance = maxDistance;
|
|
1355
1365
|
camera.near = minDistance * 0.01;
|
|
1356
1366
|
camera.far = maxDistance * 100;
|
|
1357
|
-
|
|
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
|
+
}
|
|
1358
1373
|
camera.updateProjectionMatrix();
|
|
1359
|
-
controls.target = sphere.center;
|
|
1360
1374
|
controls.update();
|
|
1361
1375
|
}
|
|
1362
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",
|
|
@@ -35,7 +35,6 @@ import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader";
|
|
|
35
35
|
import get from "lodash/get";
|
|
36
36
|
import size from "lodash/size";
|
|
37
37
|
import isPlainObject from "lodash/isPlainObject";
|
|
38
|
-
import isEqual from "lodash/isEqual";
|
|
39
38
|
import { exportGLTF } from "./Exporters/glTFExporter";
|
|
40
39
|
import findIndex from "lodash/findIndex";
|
|
41
40
|
import merge from "lodash/merge";
|
|
@@ -967,6 +966,14 @@ export class Three3DScene extends Three3D {
|
|
|
967
966
|
);
|
|
968
967
|
}
|
|
969
968
|
|
|
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;
|
|
975
|
+
}
|
|
976
|
+
|
|
970
977
|
initCameraViews(cameras) {
|
|
971
978
|
if (!this.sceneContainer?.children?.length) {
|
|
972
979
|
return;
|
|
@@ -991,7 +998,10 @@ export class Three3DScene extends Three3D {
|
|
|
991
998
|
} else if (
|
|
992
999
|
previousCameraView &&
|
|
993
1000
|
this.cameraViews[currentCameraName] &&
|
|
994
|
-
|
|
1001
|
+
this.shouldViewChangeTriggerJumpToView(
|
|
1002
|
+
previousCameraView,
|
|
1003
|
+
this.cameraViews[currentCameraName]
|
|
1004
|
+
)
|
|
995
1005
|
) {
|
|
996
1006
|
this.currentCameraView = null;
|
|
997
1007
|
this.jumpToView(currentCameraName, true);
|
|
@@ -1120,9 +1130,13 @@ export class Three3DScene extends Three3D {
|
|
|
1120
1130
|
controls.maxDistance = maxDistance;
|
|
1121
1131
|
camera.near = minDistance * 0.01;
|
|
1122
1132
|
camera.far = maxDistance * 100;
|
|
1123
|
-
|
|
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
|
+
}
|
|
1124
1139
|
camera.updateProjectionMatrix();
|
|
1125
|
-
controls.target = sphere.center;
|
|
1126
1140
|
|
|
1127
1141
|
controls.update();
|
|
1128
1142
|
}
|