我在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)
有没有人有类似的经历,或者是否有人知道导致这种质量差异的原因是什么?
亲切的问候
答案 0 :(得分:1)
也许相机clipping planes(参见“透视投影”)设置为不同的值。如果剪切范围太大,则可能发生这种渲染错误。尝试将其设置得足够小,以便显示所有对象。没试过,但是这样的话:
renderer.GetActiveCamera().SetClippingRange(0.1, 100);
其中两个参数是近剪裁平面和远剪裁平面距摄影机的距离。