如何在 Three.js 中克隆包含多个网格的 Collada 对象
How to clone Collada object including multiple meshes in Three.js
我加载了一个包含多个网格的 .dae 模型,并尝试克隆它但失败了。以下是我使用的代码。
loader.load( 'assets/model/deck.dae', function ( collada ) {
deck = collada.scene;
console.log(deck);
window.referenceModel = deck.children[0];
refObject = window.referenceModel;
} );
var deckClone = new THREE.Mesh( refObject.geometry, refObject.material );
scene.add( deckClone );
此代码在包含一个网格的示例 .dae 文件上运行良好,但在我自己制作的另一个 .dae 文件上运行不佳。我制作的 .dae 文件由几个网格组组成。
我会附上那些文件。
这是示例 .dae 文件。
https://drive.google.com/file/d/13BCp6avslnpb1O8Q6xCqjE-ueojgz1AD/view
这是我自己制作的 .dae 文件。
https://drive.google.com/file/d/1BTIMs0IHHqrixvj45NXcZoh1PhEnm2Qr/view
我想知道如何从第二个 .dae 文件克隆对象,或者如何将第二个 .dae 文件转换为具有相同结构(一个网格)文件的 .dae 文件。
当您执行 deck.children[0]
时,您只针对场景的一个子项,所以当然它只会克隆那个网格。
尝试.clone()
方法as mentioned in the docs,它将遍历它的所有后代并为您克隆它们。
loader.load( 'assets/model/deck.dae', function ( collada ) {
deck = collada.scene;
var deckClone = deck.clone(true);
scene.add(deckClone);
} );
此外,您在 .load() 回调函数 deckClone
外部 添加,这意味着它将在 [=23] 之前执行=] .dae 文件被加载,这样你就会 运行 陷入错误和问题。确保将克隆的对象添加到回调函数内的场景中。
我加载了一个包含多个网格的 .dae 模型,并尝试克隆它但失败了。以下是我使用的代码。
loader.load( 'assets/model/deck.dae', function ( collada ) {
deck = collada.scene;
console.log(deck);
window.referenceModel = deck.children[0];
refObject = window.referenceModel;
} );
var deckClone = new THREE.Mesh( refObject.geometry, refObject.material );
scene.add( deckClone );
此代码在包含一个网格的示例 .dae 文件上运行良好,但在我自己制作的另一个 .dae 文件上运行不佳。我制作的 .dae 文件由几个网格组组成。 我会附上那些文件。 这是示例 .dae 文件。 https://drive.google.com/file/d/13BCp6avslnpb1O8Q6xCqjE-ueojgz1AD/view 这是我自己制作的 .dae 文件。 https://drive.google.com/file/d/1BTIMs0IHHqrixvj45NXcZoh1PhEnm2Qr/view
我想知道如何从第二个 .dae 文件克隆对象,或者如何将第二个 .dae 文件转换为具有相同结构(一个网格)文件的 .dae 文件。
当您执行 deck.children[0]
时,您只针对场景的一个子项,所以当然它只会克隆那个网格。
尝试.clone()
方法as mentioned in the docs,它将遍历它的所有后代并为您克隆它们。
loader.load( 'assets/model/deck.dae', function ( collada ) {
deck = collada.scene;
var deckClone = deck.clone(true);
scene.add(deckClone);
} );
此外,您在 .load() 回调函数 deckClone
外部 添加,这意味着它将在 [=23] 之前执行=] .dae 文件被加载,这样你就会 运行 陷入错误和问题。确保将克隆的对象添加到回调函数内的场景中。