Exemple #1
0
def marching_cubes(volume, smooth=True, decimate=True, **kwargs):
    from tvtk.api import tvtk
    from tvtk.common import configure_input
    imgdata = tvtk.ImageData(dimensions=volume.shape)
    imgdata.point_data.scalars = volume.flatten('F')

    contours = tvtk.ContourFilter(number_of_contours=1)
    contours.set_value(0, 1)
    configure_input(contours, imgdata)

    if smooth:
        smoothargs = dict(number_of_iterations=40,
                          feature_angle=90,
                          pass_band=.05)
        smoothargs.update(kwargs)
        contours = tvtk.WindowedSincPolyDataFilter(input=contours.output,
                                                   **smoothargs)
    if decimate:
        contours = tvtk.QuadricDecimation(input=contours.output,
                                          target_reduction=.75)

    contours.update()
    pts = contours.output.points.to_array()
    polys = contours.output.polys.to_array().reshape(-1, 4)[:, 1:]
    return pts, polys
Exemple #2
0
 def test_to_vtk_returns_vtk_object(self):
     # Given
     x = tvtk.ContourFilter()
     # When
     v = tvtk.to_vtk(x)
     # Then
     self.assertEqual(v.GetClassName(), 'vtkContourFilter')
     self.assertTrue(v is x._vtk_obj)
    def test3(self):
        plot3d = tvtk.MultiBlockPLOT3DReader(xyz_file_name="combxyz.bin",
                                             q_file_name="combq,bin",
                                             scalar_function_number=100,
                                             vector_function_number=200)
        plot3d.update()
        grid = plot3d.output.get_block(0)

        con = tvtk.ContourFilter()
        con.set_input_data(grid)
        con.generate_values(10, grid.point_data.scalars.range)

        m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                                input_connection=con.output_port)
        a = tvtk.Actor(mapper=m)
        a.property.opacity = 0.5

        win = self.ivtk_scene(a)
        win.scene.isometric_view()
        self.event_loop()
Exemple #4
0
# plot3d = read_data()
# grid = plot3d.output.get_block(0)

# PLOT3D标量数据可视化
from tvtk.api import tvtk
from tvtkfunc import ivtk_scene, event_loop

plot3d = tvtk.MultiBlockPLOT3DReader(
    xyz_file_name="data/combxyz.bin",
    q_file_name="data/combq.bin",
    scalar_function_number=100, vector_function_number=200
)  # 读入Plot3D数据
plot3d.update()  # 让plot3D计算其输出数据
grid = plot3d.output.get_block(0)  # 获取读入的数据集对象

con = tvtk.ContourFilter()  # 创建等值面对象
con.set_input_data(grid)  # 使用数据集对象创建等值面
con.generate_values(10, grid.point_data.scalars.range)  # 指定轮廓数和标量数据范围

# 设定映射器的变量范围属性
m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                        input_connection=con.output_port)
# 设置对象
a = tvtk.Actor(mapper=m)
a.property.opacity = 0.5  # 设定对象透明度为0.5

# 窗口绘制tvtkfunc功能
win = ivtk_scene(a)
event_loop()

# # POLT3D矢量数据可视化
Exemple #5
0
# -*- coding: utf-8 -*-
from .example_cut_plane import read_data
from tvtk.api import tvtk
from scpy2.tvtk.tvtkhelp import ivtk_scene, event_loop, make_outline

plot3d = read_data()
grid = plot3d.output.get_block(0)

contours = tvtk.ContourFilter()
contours.set_input_data(grid)
contours.generate_values(8, grid.point_data.scalars.range)
mapper = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                             input_connection=contours.output_port)
actor = tvtk.Actor(mapper=mapper)
actor.property.opacity = 0.3

outline_actor = make_outline(grid)

win = ivtk_scene([actor, outline_actor])
win.scene.isometric_view()
event_loop()
from tvtk.api import tvtk
from CStvtkfunc import ivtk_scene, event_loop

plot3d = tvtk.MultiBlockPLOT3DReader(xyz_file_name="Element\combxyz.bin",
                                     q_file_name="Element\combq.bin",
                                     scalar_function_number=100,
                                     vector_function_number=200)  # 读入Plot3D数据
plot3d.update()  # 让plot3D计算其输出数据
grid = plot3d.output.get_block(0)  # 获取读入的数据集对象

con = tvtk.ContourFilter()  # 等值面过滤器,创建等值面对象
con.set_input_data(grid)
con.generate_values(10, grid.point_data.scalars.range)  # 指定轮廓数和数据范围

# 设定映射器的变量范围属性
m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                        input_connection=con.output_port)
a = tvtk.Actor(mapper=m)
a.property.opacity = 0.5  # 设定透明度为0.5
# 窗口绘制
win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()