我们正在尝试将标量值与从文件读取的 VTK 网格中的单元/点相关联。我们知道可以使用 FreeSurfer 不同的曲率文件 - CRV(如示例 12 - http://lessons.goxtk.com/12/所示)
我们的问题是如何从 vtk 文件(块 PointData 和 CellData)中设置标量值?如果这是不可能的,有没有办法直接将标量数组设置为 X.mesh(任何示例)?
感谢和抱歉英语不好:-)
保罗
我们正在尝试将标量值与从文件读取的 VTK 网格中的单元/点相关联。我们知道可以使用 FreeSurfer 不同的曲率文件 - CRV(如示例 12 - http://lessons.goxtk.com/12/所示)
我们的问题是如何从 vtk 文件(块 PointData 和 CellData)中设置标量值?如果这是不可能的,有没有办法直接将标量数组设置为 X.mesh(任何示例)?
感谢和抱歉英语不好:-)
保罗
Try with VtkProbeFiler. With this filter you can associate scalars values to points.
我设法添加了一些在 XTK 第 12 课的 js 的 L15 中提到的标量。类似于:
var mesh = new X.mesh();
mesh.file = 'mesh.vtk';
renderer.onShowtime = function () {
var scalarsArray = new Float32Array(mesh.points.length);
// fill array...
mesh.scalars.array = scalarsArray ;
mesh.scalars.lowerThreshold = min;
mesh.scalars.upperThreshold = max;
}
标量数组存储 3 倍的值以匹配点(请参阅parserCRV.js#L213)。
现在似乎在渲染网格时没有重新计算标量 min/max,所以我在X\visualization\renderer3D.js的L1152上添加了以下代码:
var scalarsMin = Infinity;
var scalarsMax = -Infinity;
var value = 0;
for ( var i = 0; i < scalarsArray.length; ++i ) {
value = scalarsArray[i];
if ( !isNaN(value) ) {
scalarsMin = Math.min(scalarsMin, value);
scalarsMax = Math.max(scalarsMax, value);
}
}
scalars._min = scalarsMin;
scalars._max = scalarsMax;
这个我不确定,有人可以确认吗?