Как клонировать объект3d в Three.js?

Я хочу клонировать модель, загруженную загрузчиком, я нашел эту проблему в github, но решение не работает. По-видимому, в Object3D произошли структурные изменения.

Как я могу клонировать Object3D в текущей стабильной версии Three.js?

Ответ 1

В этой новой версии three.js у вас есть метод clone.

Например, я использую королеву из шахмат, и мне пришлось дублировать несколько раз:

// queen is a mesh
var newQueen = queen.clone();

// make sure to re position to be able to see the new queen!
newQueen.position.set(100,100,100); // or any other coordinates

Он будет работать с любой сеткой.

Я использовал three.js r61.

Ответ 2

На самом деле ответ mrdoob - ваш ответ...

Загрузчик выводит геометрию, которую вы используете для создания сетки. Вам нужно создать новую сетку с геометрией и материалом сетки, созданной загрузчиком.

for ( var i = 0; i < 10; i ++ ) {
    var mesh = new THREE.Mesh( loadedMesh.geometry, loadedMesh.material );
    mesh.position.set( i * 100, 0, 0 );
    scene.add( mesh );
}

Вы хотите клонировать Mesh, а не Object3D, потому что вывод загрузчика - это Mesh.