def main(): parser = argparse.ArgumentParser(description='Surface distance render', formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--source', '-s', type=str, help='path to source volume file (.mhd)', required=True) parser.add_argument('--target', '-t', type=str, help='path to target volume file (.mhd)', required=True) parser.add_argument('--source_index', '-si', type=int, default=1, help='index for the source volume') parser.add_argument('--target_index', '-ti', type=int, default=1, help='index for the target volume') parser.add_argument('--cmap', type=str, default='jet', help='colormap for the distance') parser.add_argument('--clim', type=float, nargs=2, default=None, help='color limits for the distance') parser.add_argument('--out', '-o', type=str, help='path to output video file (.mp4)', required=True) parser.add_argument('--no_centered', '-nc', action='store_false', help='disable the centering of volume') parser.add_argument('--pos', type=float, nargs=3, default=[0,-1000,0], help='position for the camera') parser.add_argument('--fp', type=float, nargs=3, default=[0,0,0], help='focal point for the camera') parser.add_argument('--up', type=float, nargs=3, default=[0,0,1], help='view up direction for the camera') parser.add_argument('--view', type=float, default=30, help='view angle for the camera') parser.add_argument('--near', type=float, default=100., help='near clipping plane for the camera') parser.add_argument('--far', type=float, default=3000., help='far clipping plane for the camera') parser.add_argument('--rotate_axis', '-axis', type=int, default=2., metavar='AXIS', help='rotation axis for the camera') parser.add_argument('--rotate_angles', '-angle', type=int, nargs=3, metavar='ANGLE', default=[0,360,1], help='rotation angles for the camera') parser.add_argument('--size', '-sz', type=float, nargs=2, default=[500,800], help='window size') parser.add_argument('--bg', type=float, nargs=3, default=[1.,1.,1.], help='background color') parser.add_argument('--rate', '-r', type=str, default='30/1', help='frame rate for the video') parser.add_argument('--vcodec', type=str, default='libx264', help='codec for the video') parser.add_argument('--pix_fmt', type=str, default='yuv420p', help='pixel format for the video') args = parser.parse_args() proj = surface_distance_render(args.source, args.target, args.source_index, args.target_index, centered=args.no_centered, cmap=args.cmap, clim=args.clim, pos=args.pos, fp=args.fp, up=args.up, view=args.view, near=args.near, far=args.far, rotate_axis=args.rotate_axis, rotate_angles=list(range(*args.rotate_angles)), size=args.size, bg=args.bg) out_dir = os.path.dirname(args.out) if out_dir != '': os.makedirs(out_dir, exist_ok=True) write_video(proj, args.out, args.rate, args.vcodec, args.pix_fmt)
from pyvr.renderer import Renderer from pyvr.actors import LandmarkActor from pyvr.utils.video import write_video import vtk if __name__ == '__main__': axes = vtk.vtkCubeAxesActor() axes.SetTotalLength(50, 50, 50) axes.AxisLabelsOff() renderer = Renderer() renderer.set_camera(pos=(0,-1200,0)) renderer.add_actor(LandmarkActor((100,100,100), 10, rgb=(0,1,0))) renderer.add_actor(axes) proj = renderer.render(rotate_angles=list(range(0,360,1)), bg=(1,1,1)) write_video(proj, 'test.mp4')
def main(): parser = argparse.ArgumentParser( description='Isosurface render', formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--volume', '-v', type=str, help='path to volume file (.mhd)', required=True) parser.add_argument('--index', '-i', type=int, help='the isosurface value', required=True) parser.add_argument('--out', '-o', type=str, help='path to output video file (.mp4)', required=True) parser.add_argument('--rgb', type=float, nargs=3, default=[0, 0, 1], help='color for the isosurface') parser.add_argument('--alpha', type=float, default=1., help='opacity for the isosurface') parser.add_argument('--ambient', type=float, default=0.3, help='ambient lighting coefficient') parser.add_argument('--diffuse', type=float, default=0.6, help='diffuse lighting coefficient') parser.add_argument('--specular', type=float, default=0.05, help='specular lighting coefficient') parser.add_argument('--specular_power', type=float, default=1., help='specular power') parser.add_argument('--interp', type=str, default='phong', help='shading method') parser.add_argument('--no_shade', '-ns', action='store_false', help='disable the shading') parser.add_argument('--no_centered', '-nc', action='store_false', help='disable the centering of volume') parser.add_argument('--pos', type=float, nargs=3, default=[0, -1000, 0], help='position for the camera') parser.add_argument('--fp', type=float, nargs=3, default=[0, 0, 0], help='focal point for the camera') parser.add_argument('--up', type=float, nargs=3, default=[0, 0, 1], help='view up direction for the camera') parser.add_argument('--view', type=float, default=30, help='view angle for the camera') parser.add_argument('--near', type=float, default=100., help='near clipping plane for the camera') parser.add_argument('--far', type=float, default=3000., help='far clipping plane for the camera') parser.add_argument('--rotate_axis', '-axis', type=int, default=2., metavar='AXIS', help='rotation axis for the camera') parser.add_argument('--rotate_angles', '-angle', type=int, nargs=3, metavar='ANGLE', default=[0, 360, 1], help='rotation angles for the camera') parser.add_argument('--size', '-sz', type=int, nargs=2, default=[500, 800], help='window size') parser.add_argument('--bg', type=float, nargs=3, default=[1., 1., 1.], help='background color') parser.add_argument('--rate', '-r', type=str, default='30/1', help='frame rate for the video') parser.add_argument('--vcodec', type=str, default='libx264', help='codec for the video') parser.add_argument('--pix_fmt', type=str, default='yuv420p', help='pixel format for the video') args = parser.parse_args() proj = isosurface_render(args.volume, args.index, rgb=args.rgb, alpha=args.alpha, ambient=args.ambient, diffuse=args.diffuse, specular=args.specular, specular_power=args.specular_power, interp=args.interp, shade=args.no_shade, centered=args.no_centered, pos=args.pos, fp=args.fp, up=args.up, view=args.view, near=args.near, far=args.far, rotate_axis=args.rotate_axis, rotate_angles=list(range(*args.rotate_angles)), size=args.size, bg=args.bg) out_dir = os.path.dirname(args.out) if out_dir != '': os.makedirs(out_dir, exist_ok=True) write_video(proj, args.out, args.rate, args.vcodec, args.pix_fmt)