所以我正在用Java编写体积光线连接器(有史以来第一次),学习用C编写的伟大VTK工具包的代码。
一切都像VTK一样工作,除了我得到这个奇怪的文物,看起来像卷上的高程线。我注意到VTK在操作图像时也会显示它们,但是当图像静止时它们会消失。
我已多次查看代码,但无法找到工件的来源。也许这是一个简单的计算机图形专家从头顶知道? :)
有关我的实施的更多信息
while (Geometry.pointInsideCuboid(cuboid, position) && result.a > MINIMAL_OPACITY) {
if (currentVoxel.notEquals(previousVoxel)) {
final float value = VoxelUtils.interpolate(position, voxels, buffer);
color = colorLUT.getColor(value);
opacity = opacityLUT.getOpacityFromLut(value);
if (enableShading) {
final Vector3D normal = VoxelUtils.getNormal(position, voxels, buffer);
final float cos = normal.dot(light.fixedDirection);
final float gradientOpacity = cos < 0 ? 0 : cos;
opacity *= gradientOpacity;
if(cos > 0)
color = color.clone().shade(cos, colorLUT.diffuse, colorLUT.specular);
}
previousVoxel.setTo(currentVoxel);
}
if(opacity > 0)
result.accumulate(color, opacity);
position.add(rayStep);
currentVoxel.fromVector(position);
}