如何为几何中的顶点分配特定的颜色

时间:2018-07-06 01:31:47

标签: three.js ami.js

我正在使用three.js和ami.js迁移到大脑Web平台。目标是根据估计值(loreta模型)将颜色分配给大脑模型。旧平台具有C ++的实现,并且可以正常运行,但似乎平台之间的顶点不同。为了说明这一点,我举了一个小例子,用c ++和threejs中的高斯函数为半球着色,请参见结果:

C++ view 1 C++ view 2

Threejs view 1 Threejs view 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 个答案:

没有答案