Как назначить определенные цвета вершинам в геометрии

Я работаю над переходом на мозговую веб-платформу с three.js и ami.js. Цель состоит в том, чтобы назначить цвета для модели мозга в зависимости от оценки (модель Лоретты). У старой платформы есть реализация на C++, и она работает правильно, но кажется, что вершины отличаются между платформами. Чтобы проиллюстрировать это, я сделал небольшой пример раскраски полусферы с помощью гауссовой функции в C++ и threejs, смотрите результаты:

C++ вид 1 C++ вид 2

Threejs вид 1 Threejs вид 2

Вот как мы сделали это в 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 вершин

0 ответов

Другие вопросы по тегам