@combeenation/3d-viewer 20.0.0-alpha2 → 20.0.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/lib-cjs/buildinfo.json +1 -1
- package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
- package/dist/lib-cjs/manager/camera-manager.d.ts +31 -1
- package/dist/lib-cjs/manager/camera-manager.js +33 -20
- package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
- package/dist/lib-cjs/manager/scene-manager.d.ts +10 -1
- package/dist/lib-cjs/manager/scene-manager.js +4 -3
- package/dist/lib-cjs/manager/scene-manager.js.map +1 -1
- package/dist/lib-cjs/utils/viewer-utils.d.ts +36 -5
- package/dist/lib-cjs/utils/viewer-utils.js +83 -35
- package/dist/lib-cjs/utils/viewer-utils.js.map +1 -1
- package/package.json +1 -1
- package/src/manager/camera-manager.ts +77 -21
- package/src/manager/scene-manager.ts +15 -3
- package/src/utils/viewer-utils.ts +124 -40
|
@@ -6,17 +6,47 @@ export declare type CameraPosition = {
|
|
|
6
6
|
target: Vector3;
|
|
7
7
|
};
|
|
8
8
|
export declare type AutofocusSettings = {
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Can be used to customize the margins shown around the 3d model.\
|
|
11
|
+
* Default: 1
|
|
12
|
+
*/
|
|
10
13
|
radiusFactor?: number;
|
|
14
|
+
/** Default: true */
|
|
15
|
+
adjustLowerRadiusLimit?: boolean;
|
|
16
|
+
/** Default: true */
|
|
17
|
+
adjustMinZ?: boolean;
|
|
18
|
+
/** Default: true */
|
|
11
19
|
adjustWheelPrecision?: boolean;
|
|
20
|
+
/** Default: true */
|
|
12
21
|
adjustPanningSensibility?: boolean;
|
|
22
|
+
/** Default: true */
|
|
13
23
|
adjustPinchPrecision?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* `true:` uses `alpha` from input or default value (45°), `false:` keeps current alpha from camera\
|
|
26
|
+
* Default: true
|
|
27
|
+
*/
|
|
28
|
+
adjustAlpha?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* `true:` uses `beta` from input or default value (75°), `false:` keeps current beta from camera\
|
|
31
|
+
* Default: true
|
|
32
|
+
*/
|
|
33
|
+
adjustBeta?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* `true:` uses calculated radius to fit scene bounding sphere, `false:` keeps current radius from camera\
|
|
36
|
+
* Default: true
|
|
37
|
+
*/
|
|
38
|
+
adjustRadius?: boolean;
|
|
14
39
|
/** Desired horizontal camera angle, this won't be overwritten by the autofocus function */
|
|
15
40
|
alpha?: number;
|
|
16
41
|
/** Desired vertical camera angle, this won't be overwritten by the autofocus function */
|
|
17
42
|
beta?: number;
|
|
18
43
|
/** Optional list of nodes to be excluded from camera distance calculation for autofocusing */
|
|
19
44
|
excludeNodes?: NodeDescription[];
|
|
45
|
+
/**
|
|
46
|
+
* Defines if HTML anchors should be considered for the autofocus camera distance calculation.\
|
|
47
|
+
* Default: `true`
|
|
48
|
+
*/
|
|
49
|
+
excludeHtmlAnchors?: boolean;
|
|
20
50
|
durationMs?: number;
|
|
21
51
|
};
|
|
22
52
|
export declare type ScreenshotSettings = {
|
|
@@ -29,6 +29,7 @@ class CameraManager {
|
|
|
29
29
|
autofocusActiveCamera(settings) {
|
|
30
30
|
var _a, _b, _c;
|
|
31
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const { adjustLowerRadiusLimit, adjustMinZ, adjustWheelPrecision, adjustPanningSensibility, adjustPinchPrecision, adjustAlpha, adjustBeta, adjustRadius, excludeNodes, excludeHtmlAnchors, durationMs, } = settings !== null && settings !== void 0 ? settings : {};
|
|
32
33
|
const activeCamera = this.viewer.scene.activeCamera;
|
|
33
34
|
if (!(activeCamera instanceof index_1.ArcRotateCamera)) {
|
|
34
35
|
throw new index_1.ViewerError({
|
|
@@ -37,36 +38,43 @@ class CameraManager {
|
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
// get bounding box of all visible meshes, this is the base for the autofocus algorithm
|
|
40
|
-
const boundingInfo = this.viewer.sceneManager.calculateBoundingInfo(
|
|
41
|
+
const boundingInfo = this.viewer.sceneManager.calculateBoundingInfo({ excludeNodes, excludeHtmlAnchors });
|
|
41
42
|
// optionally show bounding sphere for debugging purpose
|
|
42
43
|
this.viewer.eventManager.fireEvent(index_1.ViewerEvent.AutofocusStart, boundingInfo.boundingSphere);
|
|
43
44
|
const distance = this._getAutofocusZoomingDistance(boundingInfo.boundingSphere, activeCamera);
|
|
44
|
-
const
|
|
45
|
-
const
|
|
45
|
+
const bBoxRadius = boundingInfo.boundingSphere.radius;
|
|
46
|
+
const bBoxCenter = boundingInfo.boundingSphere.center;
|
|
46
47
|
// set lower radius limit on edge of bounding sphere to make sure that we can't dive into the meshes
|
|
47
|
-
|
|
48
|
+
if (adjustLowerRadiusLimit !== false) {
|
|
49
|
+
activeCamera.lowerRadiusLimit = bBoxRadius;
|
|
50
|
+
}
|
|
48
51
|
// additional settings
|
|
49
52
|
// constants for division are taken directly from Babylon.js repository
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
if (adjustMinZ !== false) {
|
|
54
|
+
activeCamera.minZ = Math.min(bBoxRadius / CameraManager._AUTOFOCUS_CONSTANTS.minZ, 1);
|
|
55
|
+
}
|
|
56
|
+
if (adjustWheelPrecision !== false) {
|
|
57
|
+
activeCamera.wheelPrecision = CameraManager._AUTOFOCUS_CONSTANTS.wheelPrecision / bBoxRadius;
|
|
53
58
|
}
|
|
54
|
-
if (
|
|
55
|
-
activeCamera.panningSensibility = CameraManager._AUTOFOCUS_CONSTANTS.panningSensibility /
|
|
59
|
+
if (adjustPanningSensibility !== false) {
|
|
60
|
+
activeCamera.panningSensibility = CameraManager._AUTOFOCUS_CONSTANTS.panningSensibility / bBoxRadius;
|
|
56
61
|
}
|
|
57
|
-
if (
|
|
58
|
-
activeCamera.pinchPrecision = CameraManager._AUTOFOCUS_CONSTANTS.pinchPrecision /
|
|
62
|
+
if (adjustPinchPrecision !== false) {
|
|
63
|
+
activeCamera.pinchPrecision = CameraManager._AUTOFOCUS_CONSTANTS.pinchPrecision / bBoxRadius;
|
|
59
64
|
}
|
|
60
|
-
const
|
|
61
|
-
const alpha =
|
|
62
|
-
const
|
|
65
|
+
const adjustedAlpha = (_a = settings === null || settings === void 0 ? void 0 : settings.alpha) !== null && _a !== void 0 ? _a : CameraManager.DEFAULT_CAMERA_POSITION.alpha;
|
|
66
|
+
const alpha = adjustAlpha !== false ? adjustedAlpha : activeCamera.alpha;
|
|
67
|
+
const adjustedBeta = (_b = settings === null || settings === void 0 ? void 0 : settings.beta) !== null && _b !== void 0 ? _b : CameraManager.DEFAULT_CAMERA_POSITION.beta;
|
|
68
|
+
const beta = adjustBeta !== false ? adjustedBeta : activeCamera.beta;
|
|
69
|
+
const adjustedRadiusFactor = (_c = settings === null || settings === void 0 ? void 0 : settings.radiusFactor) !== null && _c !== void 0 ? _c : CameraManager._DEFAULT_AUTOFOCUS_RADIUS_FACTOR;
|
|
70
|
+
const radius = adjustRadius !== false ? distance * adjustedRadiusFactor : activeCamera.radius;
|
|
63
71
|
const newCameraPosition = {
|
|
64
|
-
alpha
|
|
65
|
-
beta
|
|
66
|
-
radius
|
|
67
|
-
target:
|
|
72
|
+
alpha,
|
|
73
|
+
beta,
|
|
74
|
+
radius,
|
|
75
|
+
target: bBoxCenter,
|
|
68
76
|
};
|
|
69
|
-
yield this.moveActiveCameraTo(newCameraPosition,
|
|
77
|
+
yield this.moveActiveCameraTo(newCameraPosition, durationMs);
|
|
70
78
|
});
|
|
71
79
|
}
|
|
72
80
|
/**
|
|
@@ -125,7 +133,12 @@ class CameraManager {
|
|
|
125
133
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
134
|
const { width, height, alpha, beta, radius, target, autofocusScene, excludeNodes, excludeHtmlAnchorGroups, cropTransparentArea, fileName, samples, antialiasing, renderSprites, enableStencilBuffer, useLayerMask, quality, } = settings !== null && settings !== void 0 ? settings : {};
|
|
127
135
|
const screenshotCam = (_a = this.viewer.scene.activeCamera) === null || _a === void 0 ? void 0 : _a.clone(CameraManager._SCREENSHOT_CAMERA_NAME);
|
|
128
|
-
const boundingInfo = autofocusScene
|
|
136
|
+
const boundingInfo = autofocusScene
|
|
137
|
+
? this.viewer.sceneManager.calculateBoundingInfo({
|
|
138
|
+
excludeNodes,
|
|
139
|
+
excludeHtmlAnchors: excludeHtmlAnchorGroups === true,
|
|
140
|
+
})
|
|
141
|
+
: undefined;
|
|
129
142
|
if (alpha !== undefined) {
|
|
130
143
|
screenshotCam.alpha = alpha;
|
|
131
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera-manager.js","sourceRoot":"","sources":["../../../src/manager/camera-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAYkB;AAClB,mEAAsE;AACtE,6DAAyD;AACzD,yDAAiE;AACjE,qEAAmF;
|
|
1
|
+
{"version":3,"file":"camera-manager.js","sourceRoot":"","sources":["../../../src/manager/camera-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,15 @@ export declare type UpdateShadowsSettings = {
|
|
|
61
61
|
*/
|
|
62
62
|
excludeReceiverNodes?: NodeDescription[];
|
|
63
63
|
};
|
|
64
|
+
export declare type CalculateBoundingInfoSettings = {
|
|
65
|
+
/** Optional list of nodes to be excluded from bounding info calculation */
|
|
66
|
+
excludeNodes?: NodeDescription[];
|
|
67
|
+
/**
|
|
68
|
+
* Defines if HTML anchors should be considered for the bounding info calculation.\
|
|
69
|
+
* Default: `true`
|
|
70
|
+
*/
|
|
71
|
+
excludeHtmlAnchors?: boolean;
|
|
72
|
+
};
|
|
64
73
|
/**
|
|
65
74
|
* Additional scene settings, which are not available in a basic `AssetContainer`.
|
|
66
75
|
* !!! IMPORTANT when adding a new property !!!
|
|
@@ -125,7 +134,7 @@ export declare class SceneManager {
|
|
|
125
134
|
* - do not have a material of type "BackgroundMaterial"
|
|
126
135
|
* - do not have an infinite distance (like sky boxes)
|
|
127
136
|
*/
|
|
128
|
-
calculateBoundingInfo(
|
|
137
|
+
calculateBoundingInfo(settings?: CalculateBoundingInfoSettings): BoundingInfo;
|
|
129
138
|
/**
|
|
130
139
|
* Adjusts position and scaling of a dedicated "ground" meshes according to the bounding sphere of the current scene
|
|
131
140
|
* content.\
|
|
@@ -178,7 +178,8 @@ class SceneManager {
|
|
|
178
178
|
* - do not have a material of type "BackgroundMaterial"
|
|
179
179
|
* - do not have an infinite distance (like sky boxes)
|
|
180
180
|
*/
|
|
181
|
-
calculateBoundingInfo(
|
|
181
|
+
calculateBoundingInfo(settings) {
|
|
182
|
+
const { excludeNodes, excludeHtmlAnchors } = settings !== null && settings !== void 0 ? settings : {};
|
|
182
183
|
// CB-6062: workaround for BoundingBox not respecting render loop
|
|
183
184
|
this.viewer.scene.render();
|
|
184
185
|
const { max, min } = this.viewer.scene.meshes
|
|
@@ -190,7 +191,7 @@ class SceneManager {
|
|
|
190
191
|
hasInvalidBoundingInfo: true,
|
|
191
192
|
hasInfiniteDistance: true,
|
|
192
193
|
isGeneratedBackgroundMesh: true,
|
|
193
|
-
isHtmlAnchorMesh:
|
|
194
|
+
isHtmlAnchorMesh: excludeHtmlAnchors !== false,
|
|
194
195
|
});
|
|
195
196
|
return !isExcluded;
|
|
196
197
|
})
|
|
@@ -213,7 +214,7 @@ class SceneManager {
|
|
|
213
214
|
*/
|
|
214
215
|
updateGround(settings) {
|
|
215
216
|
var _a, _b;
|
|
216
|
-
const bboxInfo = this.calculateBoundingInfo(settings === null || settings === void 0 ? void 0 : settings.excludeNodes);
|
|
217
|
+
const bboxInfo = this.calculateBoundingInfo({ excludeNodes: settings === null || settings === void 0 ? void 0 : settings.excludeNodes });
|
|
217
218
|
const groundMesh = (_a = settings === null || settings === void 0 ? void 0 : settings.groundMesh) !== null && _a !== void 0 ? _a : this.viewer.scene.getMeshByName(SceneManager._DEFAULT_GROUND_PLANE_NAME);
|
|
218
219
|
if (!groundMesh) {
|
|
219
220
|
console.warn("Can't update ground, as no ground mesh is available");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/manager/scene-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAekB;AAClB,2DAAsF;AACtF,yDAAiE;AACjE,yCAAkC;
|
|
1
|
+
{"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/manager/scene-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Mesh, Node, TransformNode, Vector3, Viewer } from '../index';
|
|
2
2
|
export declare type BakeGeometrySettings = {
|
|
3
3
|
keepTransformation?: boolean;
|
|
4
4
|
};
|
|
@@ -8,6 +8,31 @@ export declare type CreateTransformNodeSettings = {
|
|
|
8
8
|
rotation?: Vector3;
|
|
9
9
|
scaling?: Vector3;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Expected metadata structure for find node functions {@link ViewerUtils.findChildNodes} and
|
|
13
|
+
* {@link ViewerUtils.findParentNode}
|
|
14
|
+
*/
|
|
15
|
+
export declare type MetadataObject = Record<string, unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Contains all constructor that derive from `Node`, e.g. `TransformNode`, `Mesh`
|
|
18
|
+
*/
|
|
19
|
+
export declare type DerivedNodeType<T extends Node> = new (...args: any[]) => T;
|
|
20
|
+
/**
|
|
21
|
+
* Criteria object for find node functions {@link ViewerUtils.findChildNodes} and {@link ViewerUtils.findParentNode}.\
|
|
22
|
+
* All given properties must match for the criteria to pass.
|
|
23
|
+
*
|
|
24
|
+
* @param nodeName has to match exactly
|
|
25
|
+
* @param tagName uses algorithm of `Tags.MatchesQuery`, in most cases this is just an exact string match check
|
|
26
|
+
* @param metadataObject has to be an object, filter passes if all property values of the given input object match the
|
|
27
|
+
* checked node
|
|
28
|
+
* @param type nodes type has to match (e.g. Mesh)
|
|
29
|
+
*/
|
|
30
|
+
export declare type FindNodeCriteria<T extends Node> = {
|
|
31
|
+
nodeName?: string;
|
|
32
|
+
tagName?: string;
|
|
33
|
+
metadataObject?: MetadataObject;
|
|
34
|
+
type?: DerivedNodeType<T>;
|
|
35
|
+
};
|
|
11
36
|
export declare class ViewerUtils {
|
|
12
37
|
protected viewer: Viewer;
|
|
13
38
|
/** @internal */
|
|
@@ -27,9 +52,15 @@ export declare class ViewerUtils {
|
|
|
27
52
|
*/
|
|
28
53
|
getOrCreateTransformNode(nodeName: string, settings?: CreateTransformNodeSettings): TransformNode;
|
|
29
54
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
55
|
+
* Finds all child nodes (TransformNodes, Meshes, but also Lights, Cameras, etc...) that match a given criteria.
|
|
56
|
+
*
|
|
57
|
+
* @param node If left empty, all nodes of the scene are considered
|
|
58
|
+
* @param criteria If left empty, all child nodes are returned
|
|
59
|
+
*/
|
|
60
|
+
findChildNodes<T extends Node>(node?: Node, criteria?: FindNodeCriteria<T>): T[];
|
|
61
|
+
/**
|
|
62
|
+
* Finds nearest node that matches a given criteria.\
|
|
63
|
+
* Returns `undefined` if no node could be found.
|
|
32
64
|
*/
|
|
33
|
-
|
|
34
|
-
protected _getVerticesDataFromMorphTarget(kind: string, morphTarget: MorphTarget): FloatArray | null;
|
|
65
|
+
findParentNode<T extends Node>(node: Node, criteria?: FindNodeCriteria<T>): T | undefined;
|
|
35
66
|
}
|
|
@@ -41,10 +41,10 @@ class ViewerUtils {
|
|
|
41
41
|
if (morphTargetManager === null || morphTargetManager === void 0 ? void 0 : morphTargetManager.numTargets) {
|
|
42
42
|
// apply morph target vertices data to mesh geometry
|
|
43
43
|
// mostly only the "PositionKind" is implemented
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
_bakeMorphTargetManagerIntoVertices(index_1.VertexBuffer.PositionKind, morphTargetManager, geometry);
|
|
45
|
+
_bakeMorphTargetManagerIntoVertices(index_1.VertexBuffer.NormalKind, morphTargetManager, geometry);
|
|
46
|
+
_bakeMorphTargetManagerIntoVertices(index_1.VertexBuffer.TangentKind, morphTargetManager, geometry);
|
|
47
|
+
_bakeMorphTargetManagerIntoVertices(index_1.VertexBuffer.UVKind, morphTargetManager, geometry);
|
|
48
48
|
// remove morph target manager with all it's morph targets
|
|
49
49
|
mesh.morphTargetManager = null;
|
|
50
50
|
}
|
|
@@ -71,42 +71,90 @@ class ViewerUtils {
|
|
|
71
71
|
return node;
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
74
|
+
* Finds all child nodes (TransformNodes, Meshes, but also Lights, Cameras, etc...) that match a given criteria.
|
|
75
|
+
*
|
|
76
|
+
* @param node If left empty, all nodes of the scene are considered
|
|
77
|
+
* @param criteria If left empty, all child nodes are returned
|
|
76
78
|
*/
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
if (!
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
findChildNodes(node, criteria) {
|
|
80
|
+
const allNodes = node ? node.getChildren(undefined, false) : [...this.viewer.scene.getNodes()];
|
|
81
|
+
if (!criteria)
|
|
82
|
+
return allNodes;
|
|
83
|
+
const foundNodes = allNodes.filter(node => _matchesFindNodeCriteria(node, criteria));
|
|
84
|
+
return foundNodes;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Finds nearest node that matches a given criteria.\
|
|
88
|
+
* Returns `undefined` if no node could be found.
|
|
89
|
+
*/
|
|
90
|
+
findParentNode(node, criteria) {
|
|
91
|
+
const parent = node.parent;
|
|
92
|
+
if (!parent) {
|
|
93
|
+
return undefined;
|
|
82
94
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const target = morphTargetManager.getTarget(i);
|
|
86
|
-
const targetVerticesData = this._getVerticesDataFromMorphTarget(kind, target);
|
|
87
|
-
if (targetVerticesData) {
|
|
88
|
-
// vertices data of this kind are implemented on the morph target
|
|
89
|
-
// add the influence of this morph target to the vertices data
|
|
90
|
-
// formula is taken from: https://doc.babylonjs.com/features/featuresDeepDive/mesh/morphTargets#basics
|
|
91
|
-
verticesData = verticesData.map((oldVal, idx) => oldVal + (targetVerticesData[idx] - origVerticesData[idx]) * target.influence);
|
|
92
|
-
}
|
|
95
|
+
else if (!criteria) {
|
|
96
|
+
return parent;
|
|
93
97
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return morphTarget.getPositions();
|
|
101
|
-
case index_1.VertexBuffer.NormalKind:
|
|
102
|
-
return morphTarget.getNormals();
|
|
103
|
-
case index_1.VertexBuffer.TangentKind:
|
|
104
|
-
return morphTarget.getTangents();
|
|
105
|
-
case index_1.VertexBuffer.UVKind:
|
|
106
|
-
return morphTarget.getUVs();
|
|
98
|
+
const matchesCriteria = _matchesFindNodeCriteria(parent, criteria);
|
|
99
|
+
if (matchesCriteria) {
|
|
100
|
+
return parent;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
return this.findParentNode(parent, criteria);
|
|
107
104
|
}
|
|
108
|
-
return null;
|
|
109
105
|
}
|
|
110
106
|
}
|
|
111
107
|
exports.ViewerUtils = ViewerUtils;
|
|
108
|
+
/**
|
|
109
|
+
* @param kind morph targets can affect various vertices kinds, whereas "position" is the most common one
|
|
110
|
+
* still other kinds (like normals or tangents) can be affected as well and can be provided on this input
|
|
111
|
+
*/
|
|
112
|
+
function _bakeMorphTargetManagerIntoVertices(kind, morphTargetManager, geometry) {
|
|
113
|
+
const origVerticesData = geometry.getVerticesData(kind);
|
|
114
|
+
if (!origVerticesData) {
|
|
115
|
+
// no vertices data for this kind availabe on the mesh geometry
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
let verticesData = [...origVerticesData];
|
|
119
|
+
for (let i = 0; i < morphTargetManager.numTargets; i++) {
|
|
120
|
+
const target = morphTargetManager.getTarget(i);
|
|
121
|
+
const targetVerticesData = _getVerticesDataFromMorphTarget(kind, target);
|
|
122
|
+
if (targetVerticesData) {
|
|
123
|
+
// vertices data of this kind are implemented on the morph target
|
|
124
|
+
// add the influence of this morph target to the vertices data
|
|
125
|
+
// formula is taken from: https://doc.babylonjs.com/features/featuresDeepDive/mesh/morphTargets#basics
|
|
126
|
+
verticesData = verticesData.map((oldVal, idx) => oldVal + (targetVerticesData[idx] - origVerticesData[idx]) * target.influence);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// apply the updated vertices data
|
|
130
|
+
geometry.setVerticesData(kind, verticesData);
|
|
131
|
+
}
|
|
132
|
+
function _getVerticesDataFromMorphTarget(kind, morphTarget) {
|
|
133
|
+
switch (kind) {
|
|
134
|
+
case index_1.VertexBuffer.PositionKind:
|
|
135
|
+
return morphTarget.getPositions();
|
|
136
|
+
case index_1.VertexBuffer.NormalKind:
|
|
137
|
+
return morphTarget.getNormals();
|
|
138
|
+
case index_1.VertexBuffer.TangentKind:
|
|
139
|
+
return morphTarget.getTangents();
|
|
140
|
+
case index_1.VertexBuffer.UVKind:
|
|
141
|
+
return morphTarget.getUVs();
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
function _matchesFindNodeCriteria(node, criteria) {
|
|
146
|
+
if (!criteria)
|
|
147
|
+
return true;
|
|
148
|
+
const { nodeName, tagName, metadataObject, type } = criteria;
|
|
149
|
+
const nodeNameFits = !nodeName || node.name === nodeName;
|
|
150
|
+
const tagNameFits = !tagName || index_1.Tags.MatchesQuery(node, tagName);
|
|
151
|
+
const metadataFits = !metadataObject || _matchesMetadata(node.metadata, metadataObject);
|
|
152
|
+
const typeFits = !type || node instanceof type;
|
|
153
|
+
return nodeNameFits && tagNameFits && metadataFits && typeFits;
|
|
154
|
+
}
|
|
155
|
+
function _matchesMetadata(metadata, filter) {
|
|
156
|
+
if (!metadata || typeof metadata !== 'object')
|
|
157
|
+
return false;
|
|
158
|
+
return Object.entries(filter).every(([key, value]) => metadata[key] === value);
|
|
159
|
+
}
|
|
112
160
|
//# sourceMappingURL=viewer-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-utils.js","sourceRoot":"","sources":["../../../src/utils/viewer-utils.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"viewer-utils.js","sourceRoot":"","sources":["../../../src/utils/viewer-utils.ts"],"names":[],"mappings":"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"}
|