Я пытаюсь загрузить некоторые файлы STL, используя Three.js. Модели загружаются корректно, но слишком много треугольников, которые хотелось бы слить/сгладить.
Я успешно применил плавную загрузку ландшафтов в других 3D-форматах, но я не могу сделать это с BufferGeometry, полученным в результате загрузки файла STL с помощью STLLoader.
var material = new THREE.MeshLambertMaterial( { ... } );
var path = "./models/budah.stl";
var loader = new THREE.STLLoader();
loader.load( path, function ( object ) {
object.computeBoundingBox();
object.computeBoundingSphere();
object.computeFaceNormals();
object.computeVertexNormals();
object.normalizeNormals();
object.center();
// Apply smooth
var modifier = new THREE.SubdivisionModifier( 1);
var smooth = smooth = object.clone();
smooth.mergeVertices();
smooth.computeFaceNormals();
smooth.computeVertexNormals();
modifier.modify( smooth );
scene.add( smooth );
});
Это то, что я пробовал, выдает ошибку: Uncaught TypeError: smooth.mergeVertices is not a function
Если я прокомментирую строку «mergeVertices()», я получу другую ошибку: Uncaught TypeError: Cannot read property 'length' of undefined в SubdivisionsModifier, строка 156.
Кажется, что пробные коды, которые я пробую, устарели (в последнее время это часто происходит из-за массовых изменений в библиотеке Three.JS). Или, может быть, я что-то забываю. Дело в том, что вершины кажутся нулевыми..?
Заранее спасибо!