@combeenation/3d-viewer 12.0.0-alpha1 → 12.0.0-alpha3
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/api/manager/gltfExportManager.d.ts +2 -2
- package/dist/lib-cjs/api/manager/gltfExportManager.js +21 -17
- package/dist/lib-cjs/api/manager/gltfExportManager.js.map +1 -1
- package/dist/lib-cjs/api/util/geometryHelper.d.ts +1 -1
- package/dist/lib-cjs/api/util/geometryHelper.js +11 -7
- package/dist/lib-cjs/api/util/geometryHelper.js.map +1 -1
- package/dist/lib-cjs/buildinfo.json +1 -1
- package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/api/manager/gltfExportManager.ts +29 -23
- package/src/api/util/geometryHelper.ts +17 -7
|
@@ -16,11 +16,11 @@ export declare class GltfExportManager {
|
|
|
16
16
|
protected _exportPreProcess(excluded?: ExcludedGeometryList): Promise<void>;
|
|
17
17
|
protected _exportPostProcess(): Promise<void>;
|
|
18
18
|
protected _gltfExportOptions(): IExportOptions;
|
|
19
|
-
protected _prepareNodeForExport(node:
|
|
19
|
+
protected _prepareNodeForExport(node: BjsNode, clonedParent: Nullable<TransformNode>, excluded?: ExcludedGeometryList): void;
|
|
20
20
|
protected _shouldExportNode(node: BjsNode, excluded?: ExcludedGeometryList): boolean;
|
|
21
21
|
protected _shouldReplaceMaterial(material: Material): boolean;
|
|
22
22
|
/**
|
|
23
23
|
* Create an export-friendly replacement material for a material using refraction.
|
|
24
24
|
*/
|
|
25
|
-
protected _createRefractionMaterialReplacement(material: PBRMaterial):
|
|
25
|
+
protected _createRefractionMaterialReplacement(material: PBRMaterial): void;
|
|
26
26
|
}
|
|
@@ -64,29 +64,35 @@ class GltfExportManager {
|
|
|
64
64
|
}
|
|
65
65
|
_exportPreProcess(excluded) {
|
|
66
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
this.viewer.pauseRendering();
|
|
67
68
|
// handle materials
|
|
68
69
|
this.viewer.scene.materials
|
|
69
70
|
.filter(material => this._shouldReplaceMaterial(material))
|
|
70
71
|
.forEach(material => this._createRefractionMaterialReplacement(material));
|
|
71
72
|
// handle nodes
|
|
72
73
|
this.viewer.scene.rootNodes.forEach(rootNode => this._prepareNodeForExport(rootNode, null, excluded));
|
|
74
|
+
// bake transformation of all meshes, so that no negative scalings are left
|
|
75
|
+
// it's important that this is done AFTER instanced meshes have been converted (_prepareNodeForExport)
|
|
76
|
+
this.viewer.scene.meshes
|
|
77
|
+
.filter(mesh => { var _a; return !!((_a = mesh.metadata) === null || _a === void 0 ? void 0 : _a[GltfExportManager._METADATA_PROPS.exportNode]); })
|
|
78
|
+
.forEach(mesh => (0, geometryHelper_1.bakeGeometryOfMesh)(mesh));
|
|
73
79
|
// reset transformation of all "TransformNodes", which couldn't be handled by the geometry baking algorithm
|
|
74
80
|
// it's important that this is done AFTER all geometries have been baked
|
|
75
|
-
this.viewer.scene
|
|
76
|
-
.getNodes()
|
|
81
|
+
[...this.viewer.scene.transformNodes, ...this.viewer.scene.meshes]
|
|
77
82
|
.filter(node => { var _a; return !!((_a = node.metadata) === null || _a === void 0 ? void 0 : _a[GltfExportManager._METADATA_PROPS.exportNode]); })
|
|
78
83
|
.forEach(node => (0, geometryHelper_1.resetTransformation)(node));
|
|
79
84
|
});
|
|
80
85
|
}
|
|
81
86
|
_exportPostProcess() {
|
|
82
87
|
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
// dispose all nodes and
|
|
88
|
+
// dispose all nodes and materials that have only been created for the export
|
|
84
89
|
this.viewer.scene.rootNodes
|
|
85
90
|
.filter(rootNode => { var _a; return (_a = rootNode.metadata) === null || _a === void 0 ? void 0 : _a[GltfExportManager._METADATA_PROPS.deleteAfterExport]; })
|
|
86
91
|
.forEach(rootNode => rootNode.dispose());
|
|
87
92
|
this.viewer.scene.materials
|
|
88
93
|
.filter(mat => { var _a; return !!((_a = mat.metadata) === null || _a === void 0 ? void 0 : _a[GltfExportManager._METADATA_PROPS.deleteAfterExport]); })
|
|
89
94
|
.forEach(material => material.dispose(false, false));
|
|
95
|
+
this.viewer.resumeRendering();
|
|
90
96
|
});
|
|
91
97
|
}
|
|
92
98
|
_gltfExportOptions() {
|
|
@@ -97,7 +103,7 @@ class GltfExportManager {
|
|
|
97
103
|
},
|
|
98
104
|
// keep root node(s)
|
|
99
105
|
// this seems to be important due to the geometry baking and transformation resetting stuff
|
|
100
|
-
// => root node
|
|
106
|
+
// => root node would have no transformation anymore, which seems to be problematic for the import
|
|
101
107
|
removeNoopRootNodes: false,
|
|
102
108
|
};
|
|
103
109
|
}
|
|
@@ -106,15 +112,15 @@ class GltfExportManager {
|
|
|
106
112
|
if (!this._shouldExportNode(node, excluded)) {
|
|
107
113
|
return;
|
|
108
114
|
}
|
|
115
|
+
// from here on we only have TransformNodes
|
|
116
|
+
const transformNode = node;
|
|
109
117
|
// clone original node and create unique name (via uniqueId)
|
|
110
|
-
const newNodeName = `${
|
|
111
|
-
const clonedNode =
|
|
112
|
-
? (0, geometryHelper_1.createMeshFromInstancedMesh)(
|
|
113
|
-
:
|
|
114
|
-
//
|
|
115
|
-
// also exchange material
|
|
118
|
+
const newNodeName = `${transformNode.name}_${transformNode.uniqueId}`;
|
|
119
|
+
const clonedNode = transformNode instanceof index_1.InstancedMesh
|
|
120
|
+
? (0, geometryHelper_1.createMeshFromInstancedMesh)(transformNode, newNodeName, clonedParent)
|
|
121
|
+
: transformNode.clone(newNodeName, clonedParent, true);
|
|
122
|
+
// exchange material
|
|
116
123
|
if (clonedNode instanceof mesh_1.Mesh) {
|
|
117
|
-
(0, geometryHelper_1.bakeGeometryOfMesh)(clonedNode);
|
|
118
124
|
const exchangeWithMaterial = (_b = (_a = clonedNode.material) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b[GltfExportManager._METADATA_PROPS.exchangeMaterialWith];
|
|
119
125
|
if (exchangeWithMaterial) {
|
|
120
126
|
clonedNode.material = this.viewer.scene.getMaterialByName(exchangeWithMaterial);
|
|
@@ -125,8 +131,8 @@ class GltfExportManager {
|
|
|
125
131
|
[GltfExportManager._METADATA_PROPS.exportNode]: true,
|
|
126
132
|
[GltfExportManager._METADATA_PROPS.deleteAfterExport]: true,
|
|
127
133
|
});
|
|
128
|
-
//
|
|
129
|
-
const childs =
|
|
134
|
+
// handle children
|
|
135
|
+
const childs = transformNode.getChildTransformNodes(true);
|
|
130
136
|
childs.forEach(child => this._prepareNodeForExport(child, clonedNode, excluded));
|
|
131
137
|
}
|
|
132
138
|
_shouldExportNode(node, excluded) {
|
|
@@ -161,10 +167,9 @@ class GltfExportManager {
|
|
|
161
167
|
*/
|
|
162
168
|
_createRefractionMaterialReplacement(material) {
|
|
163
169
|
const newName = `${material.name}_clone`;
|
|
164
|
-
|
|
165
|
-
const clonedMaterial = material.clone(newName); // clone material
|
|
170
|
+
const clonedMaterial = material.clone(newName);
|
|
166
171
|
clonedMaterial.refractionTexture = null;
|
|
167
|
-
clonedMaterial.metallicReflectanceTexture = null;
|
|
172
|
+
clonedMaterial.metallicReflectanceTexture = null;
|
|
168
173
|
clonedMaterial.alpha = 0.7;
|
|
169
174
|
clonedMaterial.albedoColor = new index_1.Color3(0.3, 0.3, 0.3);
|
|
170
175
|
clonedMaterial.transparencyMode = index_1.PBRMaterial.PBRMATERIAL_ALPHABLEND;
|
|
@@ -172,7 +177,6 @@ class GltfExportManager {
|
|
|
172
177
|
clonedMaterial.roughness = 0.15;
|
|
173
178
|
(0, babylonHelper_1.injectMetadata)(material, { [GltfExportManager._METADATA_PROPS.exchangeMaterialWith]: newName });
|
|
174
179
|
(0, babylonHelper_1.injectMetadata)(clonedMaterial, { [GltfExportManager._METADATA_PROPS.deleteAfterExport]: true });
|
|
175
|
-
return clonedMaterial;
|
|
176
180
|
}
|
|
177
181
|
}
|
|
178
182
|
exports.GltfExportManager = GltfExportManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltfExportManager.js","sourceRoot":"","sources":["../../../../src/api/manager/gltfExportManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAkF;AAClF,8CAA2C;AAC3C,yDAAuD;AACvD,2DAA8G;AAC9G,6DAAwE;AACxE,sDAAmD;AACnD,wEAAqE;AACrE,mFAA6E;AAE7E,MAAa,iBAAiB;IAO5B,YAAgC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE3C,MAAM,CAAO,MAAM,CAAC,MAAc;;YACvC,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;KAAA;IAEY,SAAS,CAAC,QAAQ,GAAG,gBAAgB,EAAE,QAA+B;;YACjF,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,MAAM,4BAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAElG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC/C,iFAAiF;YACjF,IAAI,OAAO,YAAY,IAAI,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAC9B,QAAQ,IAAI,MAAM,CAAC;iBACpB;gBACD,OAAO,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;aACtC;iBAAM;gBACL,8BAA8B;gBAC9B,OAAO,SAAS,CAAC;aAClB;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,QAAgB,EAAE,QAA+B;;YAC7E,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEvC,MAAM,IAAI,GAAG,MAAM,4BAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YACjG,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEY,eAAe,CAAC,QAAgB,EAAE,QAA+B;;YAC5E,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEvC,MAAM,GAAG,GAAG,MAAM,4BAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC/F,GAAG,CAAC,aAAa,EAAE,CAAC;YAEpB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;KAAA;IAEe,iBAAiB,CAAC,QAA+B;;YAC/D,mBAAmB;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;iBACxB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;iBACzD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,QAAuB,CAAC,CAAC,CAAC;YAE3F,eAAe;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"gltfExportManager.js","sourceRoot":"","sources":["../../../../src/api/manager/gltfExportManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InstancedMesh } from '@babylonjs/core/Meshes/instancedMesh';
|
|
2
2
|
import { Mesh } from '@babylonjs/core/Meshes/mesh';
|
|
3
3
|
import { TransformNode } from '@babylonjs/core/Meshes/transformNode';
|
|
4
|
-
declare const createMeshFromInstancedMesh: (instancedMesh: InstancedMesh, newName: string) => Mesh;
|
|
4
|
+
declare const createMeshFromInstancedMesh: (instancedMesh: InstancedMesh, newName: string, clonedParent: Nullable<TransformNode>) => Mesh;
|
|
5
5
|
declare const bakeGeometryOfMesh: (mesh: Mesh) => void;
|
|
6
6
|
declare const resetTransformation: (node: TransformNode) => void;
|
|
7
7
|
export { createMeshFromInstancedMesh, bakeGeometryOfMesh, resetTransformation };
|
|
@@ -3,14 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resetTransformation = exports.bakeGeometryOfMesh = exports.createMeshFromInstancedMesh = void 0;
|
|
4
4
|
const buffer_1 = require("@babylonjs/core/Buffers/buffer");
|
|
5
5
|
const math_vector_1 = require("@babylonjs/core/Maths/math.vector");
|
|
6
|
-
const createMeshFromInstancedMesh = function (instancedMesh, newName) {
|
|
6
|
+
const createMeshFromInstancedMesh = function (instancedMesh, newName, clonedParent) {
|
|
7
7
|
// first create a clone of the source mesh
|
|
8
|
-
const newMesh = instancedMesh.sourceMesh.clone(newName,
|
|
9
|
-
// apply the transformation data
|
|
10
|
-
|
|
11
|
-
newMesh.
|
|
12
|
-
newMesh.
|
|
13
|
-
newMesh.scaling = instancedMesh.scaling;
|
|
8
|
+
const newMesh = instancedMesh.sourceMesh.clone(newName, clonedParent, true);
|
|
9
|
+
// apply the transformation data, it's important to create clones of the transformations to not touch the original
|
|
10
|
+
// transformation when applying changes (eg: geometry baking)
|
|
11
|
+
newMesh.position = instancedMesh.position.clone();
|
|
12
|
+
newMesh.rotation = instancedMesh.rotation.clone();
|
|
13
|
+
newMesh.scaling = instancedMesh.scaling.clone();
|
|
14
|
+
// rotation quaternion is optional
|
|
15
|
+
if (instancedMesh.rotationQuaternion) {
|
|
16
|
+
newMesh.rotationQuaternion = instancedMesh.rotationQuaternion.clone();
|
|
17
|
+
}
|
|
14
18
|
// also sync the enabled state from the original instanced mesh
|
|
15
19
|
newMesh.setEnabled(instancedMesh.isEnabled(false));
|
|
16
20
|
return newMesh;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometryHelper.js","sourceRoot":"","sources":["../../../../src/api/util/geometryHelper.ts"],"names":[],"mappings":";;;AAAA,2DAA8D;AAC9D,mEAA4D;AAS5D,MAAM,2BAA2B,GAAG,
|
|
1
|
+
{"version":3,"file":"geometryHelper.js","sourceRoot":"","sources":["../../../../src/api/util/geometryHelper.ts"],"names":[],"mappings":"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"}
|