我正在使用three.js和ami.js迁移到大脑Web平台。目标是根据估计值(loreta模型)将颜色分配给大脑模型。旧平台具有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个顶点