在Paraview中,simple.py承接着与外界用户接口的任务,一个最基本的使用Paraview例子就是:
from paraview.simple import *
# Create a new sphere proxy on the active connection and register it
# in the sources group.
sphere = Sphere(ThetaResolution=16, PhiResolution=32)
# Apply a shrink filter
shrink = Shrink(sphere)
# Turn the visiblity of the shrink object on.
Show(shrink)
# Render the scene
Render()
可以看到,其实第一个函数,就是创建一个source,第二个函数是一个filter。接下来的Show函数其实就是:
def Show(proxy=None, view=None, **params):
"""Turns the visibility of a given pipeline object on in the given view.
If pipeline object and/or view are not specified, active objects are used."""
if proxy == None:
proxy = GetActiveSource()
if proxy == None:
raise RuntimeError, "Show() needs a proxy argument or that an active source is set."
if not view:
# it here's now active view, controller.Show() will create a new preferred view.
# if possible.
view = active_objects.view
controller = servermanager.ParaViewPipelineController()
rep = controller.Show(proxy, proxy.Port, view)
if rep == None:
raise RuntimeError, "Could not create a representation object for proxy %s" % proxy.GetXMLLabel()
for param in params.keys():
setattr(rep, param, params[param])
return rep
这个方法其中有一行
raise RuntimeError, "Could not create a representation object for proxy %s" % proxy.GetXMLLabel()
告诉我们,其实rep就是一个representation。所以它就是把这个filter处理后的source绑定到当前的view和代理上。产生一个representation。
最后是Render函数:def Render(view=None):
"""Renders the given view (default value is active view)"""
if not view:
view = active_objects.view
view.StillRender()
if _funcs_internals.first_render:
# Not all views have a ResetCamera method
try:
view.ResetCamera()
view.StillRender()
except AttributeError: pass
_funcs_internals.first_render = False
return view
其实就是开始渲染,调用了
view.StillRender()
进行渲染。
这其实与servermanager.py中的基本例子是一样的。simple.py通过调用servermanager中的函数完成渲染,用servermanager中的函数我们也可以做到,具体是: