fixed camera setting functions
This commit is contained in:
parent
5466f67c1c
commit
352b3ae860
72
visu.py
72
visu.py
|
|
@ -24,34 +24,56 @@ def enable_shadows_hacked(pl):
|
|||
pl.renderer.SetPass(cameraP)
|
||||
return
|
||||
|
||||
def setup_camera(pl,bounds,viewvec,dist=None,parallel_projection=False,
|
||||
rel_focus=(0.5,0.5,0.5),abs_focus=None,viewup=(0,1,0)):
|
||||
def camera_from_view(pl,bounds,viewvec,
|
||||
focus=(0.5,0.5,0.5),
|
||||
viewup=(0,1,0),
|
||||
is_focus_relative=True):
|
||||
import numpy as np
|
||||
if not abs_focus:
|
||||
focal_point = np.array(
|
||||
(rel_focus[0]*(bounds[1]+bounds[0]),
|
||||
rel_focus[1]*(bounds[3]+bounds[2]),
|
||||
rel_focus[2]*(bounds[5]+bounds[4])))
|
||||
else:
|
||||
focal_point = np.array(abs_focus)
|
||||
viewvec = np.array(viewvec)
|
||||
viewup = np.array(viewup)
|
||||
if dist is None:
|
||||
pl.set_focus(tuple(focal_point))
|
||||
pl.view_vector(tuple(-viewvec),tuple(viewup))
|
||||
else:
|
||||
position = focal_point-viewvec/np.linalg.norm(viewvec)*dist
|
||||
# https://github.com/pyvista/pyvista-support/issues/40
|
||||
pl.camera_position = (
|
||||
tuple(position),
|
||||
tuple(focal_point),
|
||||
tuple(viewup))
|
||||
if parallel_projection:
|
||||
pl.enable_parallel_projection()
|
||||
else:
|
||||
pl.disable_parallel_projection()
|
||||
focal_point = get_focal_point(bounds,focus,is_focus_relative)
|
||||
pl.view_vector(-np.array(viewvec),viewup)
|
||||
pl.set_focus(focal_point)
|
||||
pl.reset_camera_clipping_range()
|
||||
return
|
||||
|
||||
def camera_from_distance(pl,bounds,viewvec,dist,
|
||||
focus=(0.5,0.5,0.5),
|
||||
viewup=(0,1,0),
|
||||
zoom=1.0,
|
||||
is_focus_relative=True):
|
||||
import numpy as np
|
||||
focal_point = get_focal_point(bounds,focus,is_focus_relative)
|
||||
position = focal_point-viewvec/np.linalg.norm(viewvec)*dist
|
||||
return camera_from_position(pl,
|
||||
bounds,viewvec,position,
|
||||
focus=focal_point,
|
||||
viewup=viewup,
|
||||
zoom=zoom,
|
||||
is_focus_relative=False)
|
||||
|
||||
def camera_from_position(pl,bounds,viewvec,position,
|
||||
focus=(0.5,0.5,0.5),
|
||||
viewup=(0,1,0),
|
||||
zoom=1.0,
|
||||
is_focus_relative=True):
|
||||
focal_point = get_focal_point(bounds,focus,is_focus_relative)
|
||||
pl.set_focus(focal_point)
|
||||
pl.set_position(position)
|
||||
pl.set_viewup(viewup)
|
||||
pl.camera.zoom(zoom)
|
||||
pl.reset_camera_clipping_range()
|
||||
return
|
||||
|
||||
def get_focal_point(bounds,focus,is_focus_relative=True):
|
||||
import numpy as np
|
||||
if is_focus_relative:
|
||||
focal_point = np.array(
|
||||
(focus[0]*(bounds[1]+bounds[0]),
|
||||
focus[1]*(bounds[3]+bounds[2]),
|
||||
focus[2]*(bounds[5]+bounds[4])))
|
||||
else:
|
||||
focal_point = np.array(focus)
|
||||
return focal_point
|
||||
|
||||
def chunk_to_pvmesh(chunk,gridg):
|
||||
import pyvista
|
||||
mesh = pyvista.UniformGrid()
|
||||
|
|
|
|||
Loading…
Reference in New Issue