Как назначить определенные цвета вершинам в геометрии
Я работаю над переходом на мозговую веб-платформу с three.js и ami.js. Цель состоит в том, чтобы назначить цвета для модели мозга в зависимости от оценки (модель Лоретты). У старой платформы есть реализация на C++, и она работает правильно, но кажется, что вершины отличаются между платформами. Чтобы проиллюстрировать это, я сделал небольшой пример раскраски полусферы с помощью гауссовой функции в C++ и threejs, смотрите результаты:
Вот как мы сделали это в C++:
double var = 1000;
double med = 2500;
for (i=0;i<5000;i++) {
Nub[i].col[0] = 0.0;
Nub[i].col[1] = 0.0;
Nub[i].col[2] = 1200*(1/(var*sqrt(2*M_PI))) * exp(-0.5*pow((i-med)/var, 2.0));
}
Версия VS ThreeJS:
colors2 = new Float32Array(Geometry.attributes.position.count*3);
var varianza = 1000;
var med = 2500;
//window.console.log(Geometry.attributes.position.count);
for ( var i = 0; i < 5000; i ++ ) {
var x = 0;
var y = 0;
var z = 1200*(1/(varianza*Math.sqrt(2*3.141592))) * Math.exp(-0.5*Math.pow((i-med)/varianza, 2.0));
colors2[ i * 3 ] = ( x / r ) ;
colors2[ i * 3 + 1 ] = ( y / r ) ;
colors2[ i * 3 + 2 ] = z;//+.05;
//window.console.log( z);
}
for ( var i = 5000; i < 10016; i ++ ) {
colors2[ i * 3 ] = 1.0 ;
colors2[ i * 3 + 1 ] = 1.0;
colors2[ i * 3 + 2 ] = 1.0;
}
Geometry.addAttribute( "color", new THREE.BufferAttribute( colors2, 3 ) );
Geometry.colorsNeedUpdate= true;
Есть ли какая-либо ошибка, которую я делаю в индексе вершин Threejs?
Заранее спасибо, Эстебан
pdta: модель мозга имеет 10016 вершин