From 5e5a19dd0694bd3c1e1b633f2bf522ccccd040c7 Mon Sep 17 00:00:00 2001 From: Michael Stumpf Date: Mon, 26 Jul 2021 12:57:13 +0200 Subject: [PATCH] hacked shadows --- visu.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/visu.py b/visu.py index a79dbdc..d836ed7 100644 --- a/visu.py +++ b/visu.py @@ -1,7 +1,27 @@ def add_domain_bounds(plotter,bounds,color='black',line_width=2.): import pyvista domain = pyvista.Box(bounds=bounds) - plotter.add_mesh(domain,color=color,style='wireframe',line_width=line_width) + plotter.add_mesh(domain,color=color,style='wireframe',line_width=line_width,opacity=0.999,lighting=False) + return + +def enable_shadows_hacked(): + # Reimplements pyvistas "enable_shadows()" method to also render translucent + # objects (without shadows). Can be used to add objects which do not throw + # shadows (but may look weird) by setting their opacity to a value close to 1, + # e.g. 0.999. This is useful when drawing a bounding box using "add_domain_bounds()". + import vtk + shadows = vtk.vtkShadowMapPass() + transl = vtk.vtkTranslucentPass() + seq = vtk.vtkSequencePass() + passes = vtk.vtkRenderPassCollection() + passes.AddItem(shadows.GetShadowMapBakerPass()) + passes.AddItem(shadows) + passes.AddItem(transl) + seq.SetPasses(passes) + # Tell the renderer to use our render pass pipeline + cameraP = vtk.vtkCameraPass() + cameraP.SetDelegatePass(seq) + pl.renderer.SetPass(cameraP) return def setup_camera(pl,bounds,viewvec,dist=None,parallel_projection=False, @@ -107,4 +127,4 @@ def translate_circular(pd,translation,bounds,axis=0): pd_lo.translate(shift_forw) pd_hi.translate(shift_back) # return the merged PolyData - return pd_lo+pd_hi \ No newline at end of file + return pd_lo+pd_hi