Три JS буферной геометрии для сфер
Я пытаюсь сделать документ с тремя js, который показывает множество сферических объектов, самый быстрый способ сделать это - использовать буферную геометрию. Из этого поста я узнал, что могу преобразовать нормальную геометрию в буферную геометрию, используя:
var sphere = new THREE.SphereGeometry( 4, 0.05, 0.025 );
var geometry = THREE.BufferGeometryUtils.fromGeometry( sphere );
Но это, похоже, не работает для меня, остальная часть кода, который создает объект читает:
var positions = new Float32Array( x_GAMA.length * 3 );
for ( var i = 0; i < x_GAMA.length; i += 1 ) {
// positions
positions[ 3*i ] = x_GAMA[i]*10000;
positions[ 3*i + 1 ] = y_GAMA[i]*10000;
positions[ 3*i + 2 ] = z_GAMA[i]*10000;
}
geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
var material = new THREE.PointCloudMaterial( {size:1,color:0x999999} );
geometry.computeBoundingSphere();
particleSystem = new THREE.PointCloud( geometry, material );
scene.add( particleSystem );
Работает нормально, если я использую var geometry = new THREE.BufferGeometry();
но это создает квадраты, которые я не хочу. Кто-нибудь есть идеи, почему это не похоже на работу? Заранее спасибо.
1 ответ
Решение
В Three.js r71 вы можете создать геометрию сферного буфера следующим образом:
var sphereGeometry = new THREE.SphereGeometry( 4, 3, 2 );
var bufferSphereGeometry = new THREE.BufferGeometry().fromGeometry( sphereGeometry );
В R72 Dev вы можете сделать это не так просто:
// constructor: radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength
var sphereGeo = new THREE.SphereBufferGeometry( 4, 3, 2 ); //r72