ResetCamera() still leaves a wide border around the object. Is it
possible to rid of those, too?
Hey Nico,

I've had to fine tune the rendering in python scripts in the past and a strategy that has worked passably for me where my data lies in an axis aligned plane is to get the bounds of the object I want to focus on then set the camera position, focal point , up, and view based on that. here are some excerpts. I'm sure this could be improved, note I use a variable called camFac to make adjustments. hope it helps.

rep = Show(bovr)
rep.Representation = 'Outline'

# run the pipeline here to get the bounds
Render()

bounds = bovr.GetDataInformation().GetBounds()
bounds_dx = bounds[1] - bounds[0]
bounds_dy = bounds[3] - bounds[2]
bounds_dz = bounds[5] - bounds[4]
bounds_cx = (bounds[0] + bounds[1])/2.0
bounds_cy = (bounds[2] + bounds[3])/2.0
bounds_cz = (bounds[4] + bounds[5])/2.0

if (bounds_dx == 0):
  # yz
  dimMode = 2
  aspect = bounds_dz/bounds_dy

elif (bounds_dy == 0):
  # xz
  dimMode = 1
  aspect = bounds_dz/bounds_dx

elif (bounds_dz == 0):
  #xy
  dimMode = 0
  aspect = bounds_dy/bounds_dx

else:
  #3d
  dimMode = 3
  aspect = 1.0 # TODO

lastObj = bovr

view = GetRenderView()
view.ViewTime = steps[step]
view.UseOffscreenRenderingForScreenshots = 0

rep = Show(lastObj)
rep.Representation = 'Outline'
Render()

# position the camera
far  = config.camFac
near = 0

if (dimMode == 0):
  # xy
  pos = max(bounds_dx, bounds_dy)
  camUp = [0.0, 1.0, 0.0]
  camPos = [bounds_cx, bounds_cy,  pos*far]
  camFoc = [bounds_cx, bounds_cy, -pos*near]

elif (dimMode == 1):
  # xz
  pos = max(bounds_dx, bounds_dz)
  camUp = [0.0, 0.0, 1.0]
  camPos = [bounds_cx, -pos*far,  bounds_cz]
  camFoc = [bounds_cx,  pos*near, bounds_cz]

elif (dimMode == 2):
  # yz
  pos = max(bounds_dy, bounds_dz)
  camUp = [0.0, 0.0, 1.0]
  camPos = [ pos*far, bounds_cy, bounds_cz]
  camFoc = [-pos*near, bounds_cy, bounds_cz]

else:
  # 3d
  print '3d cam position is yet TODO'

view = GetRenderView()
view.CameraViewUp = camUp
view.CameraPosition = camPos
view.CameraFocalPoint = camFoc
view.UseOffscreenRenderingForScreenshots = 0
view.CenterAxesVisibility = 0

ren = Render()

width = int(config.outputWidth)
height = int(config.outputWidth*aspect)

ren.ViewSize = [width, height]

outputFileName = '%s%06d.png'%(config.outputBaseFileName, step)
WriteImage(outputFileName)

On 03/15/2012 09:59 AM, Nico Schlömer wrote:
I see.
Well, ResetCamera() seems to deliver okay results only after Show()
has been called -- OpenDataFile() doesn't suffice.
Another misconception of mine was that CameraPosition and
CameraFocalPoint could be set to anything. My data files contain flat
surfaces in the x-y-plane, and ResetCamera() won't show anything if
CameraPosition==[0,0,0] and CameraFocalPoint=[0,0,1]. This, again,
makes sense. Setting CameraPosition to [0,0,1], for example, fixes
this.

ResetCamera() still leaves a wide border around the object. Is it
possible to rid of those, too?

Cheers,
Nico




On Thu, Mar 15, 2012 at 3:40 PM, Pat Marion<pat.mar...@kitware.com>  wrote:
ResetCamera() will position the camera so that all visible objects fit in
the view.  You can control the view direction by setting the
view.CameraPosition and view.CameraFocalPoint properties.  You don't have to
set the properties to any useful values, I usually set position to 0,0,0 and
CameraFocalPoint to the view direction, say [1,0,0] to look along the X
axis, then ResetCamera() will figure out where to put the camera while
keeping the view direction intact.

Pat


On Thu, Mar 15, 2012 at 6:52 AM, Nico Schlömer<nico.schloe...@gmail.com>
wrote:
Hi,

the ParaView GUI has this nifty little button action "Zoom To Data"
which displays the current object such that it somehow fits its
window.

Is there a similar thing for the Python paraview.simple module? I'm
trying to get a hang on it with certain view options such as

  view = pv.GetRenderView()
  view.CameraFocalPoint = [0, 0, 0]
  view.CameraViewAngle = 90
  view.CameraPosition = [0, 0, 10]
  view.ViewSize = [600, 600]

but what I would really like to have is to set the camera at a
distance such that the object(s) just fit into the window they're
displayed in.

Any hints?

Cheers,
Nico
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at:
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to