Activiz(C#)VTK与Python VTK呈现质量

时间:2016-01-04 09:52:26

标签: c# python vtk

我在Python中创建了一个小工具,它显示了几个STL并创建了许多截图。最近,我使用Activiz VTK包装器将此工具转换为C#(两个VTK实现都是5.8.0版)。 在C#实现中创建的屏幕截图的质量类似于Python屏幕截图的质量,除非STL与彼此重叠。

这是Python VTK屏幕截图

这是相应的Activiz VTK屏幕截图

如您所见,红色物体通过Activiz VTK中的米色显示,橙色(和红色)物体也通过左侧的蓝色物体显示。

这是Activiz渲染设置:

vtkOpenGLRenderer renderer = new vtkOpenGLRenderer();            
renderer.SetBackground(1, 1, 1);
vtkWin32OpenGLRenderWindow window = new vtkWin32OpenGLRenderWindow();
window.SetSize(1000, 1000);
window.AddRenderer(renderer);

像这样添加STL

vtkPolyDataMappermapper = vtkPolyDataMapper.New();
mapper.SetInput(_polydata);
vtkActor actor = vtkActor.New();
actor.SetMapper(mapper);
actor.GetProperty().SetColor((double)color.R / 255, (double)color.G / 255, (double)color.B / 255);
actor.GetProperty().SetOpacity(alpha);
actor.GetProperty().SetInterpolationToPhong();
renderer.AddActor(actor);

这是原始的Python渲染设置

renderer = vtkOpenGLRenderer()
renderer.SetBackground(1,1,1)
window = vtkWin32OpenGLRenderWindow()
window.SetSize(1000,1000)
window.AddRenderer(renderer)

在Python中添加了这样的STL

mapper = vtkPolyDataMapper()
mapper.SetInputData(polydata)
actor = vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(color)
actor.GetProperty().SetOpacity(alpha)
actor.GetProperty().SetInterpolationToPhong()
renderer.AddActor(actor)

有没有人有类似的经历,或者是否有人知道导致这种质量差异的原因是什么?

亲切的问候

1 个答案:

答案 0 :(得分:1)

也许相机clipping planes(参见“透视投影”)设置为不同的值。如果剪切范围太大,则可能发生这种渲染错误。尝试将其设置得足够小,以便显示所有对象。没试过,但是这样的话:

renderer.GetActiveCamera().SetClippingRange(0.1, 100);

其中两个参数是近剪裁平面和远剪裁平面距摄影机的距离。