VTK:与视窗的交互,光源点与方向的选取

VTK:与视窗的交互,光源点与方向的选取关键词:VTK ;可视化编程;光照的实现;视窗的交互导读:这是上一篇光照的续篇。在上一篇文章的基础上做了一点修正。

大家好,欢迎来到IT知识分享网。

关键词:VTK ;可视化编程;光照的实现;视窗的交互

导读:这是上一篇光照的续篇。在上一篇文章的基础上做了一点修正。

1、修改了光强场的值,与光源的角度相关

2、更新了视窗交互功能,使得可以在视窗里直接选取点来进行查看

第一篇文章可以看VTK:实现光照效果,从一根线到一个面

VTK:与视窗的交互,光源点与方向的选取

1、修改光强场的值

        for i in shadow_cell_ids:
            shadow[i] = 10*abs(self.inner_product(normals[i],self.direction))

将shadow的值,修改为与内积值相关的函数。

update_shadow函数修改为:

 def update_shadow(self):

        shadow_cell_ids = []
        for i in range(self.nlights):
            point, ind = self.grid.ray_trace(self.source, self.lights[i])
            if len(point) < 1:
                pass
            else:
                a = self.mag(self.source, point[0])
                end = ind[0]
                for i in point:
                    if self.mag(self.source, i) < a:
                        a = self.mag(self.source, i)
                        end = ind
                    else:
                        end = ind[0]
                shadow_cell_ids.append(end)

        # 创建shadow cell属性
        shadow = np.zeros((self.grid.n_cells,))
        shadow[0]=-2
        normals_mesh=self.grid.compute_normals(cell_normals=True, point_normals=False)
        normals = normals_mesh['Normals']
        for i in shadow_cell_ids:
            shadow[i] = 10*abs(self.inner_product(normals[i],self.direction))

        self.grid.cell_arrays['shadow'] = shadow

2、增加了视窗交互功能

    def simulate(pointa, pointb):
        mag = Lighting.mag(pointa, pointb)
        source = [pointa[0],pointa[1],pointa[2]]
        direction = [(pointb[0]-pointa[0])/mag,(pointb[1]-pointa[1])/mag,(pointb[2]-pointa[2])/mag]

        light.update(source, angle, direction, seeds)
        p.add_mesh(light.grid, scalars='shadow', show_edges=False,opacity=1,cmap='plasma')


    p.add_line_widget(callback=simulate, use_vertices=True,bounds=light.grid.bounds)

增加了line_widget视窗。

并且将视窗大小设置成与加载的图形一样的外框。

3、结论

通过一些简单的视窗交互,可以增加很多方便性。下面是一个动图。另外,我们也稍微修改了一下颜色。大家可以很清晰地看到,与光源的角度不同,光照强度也不一样,显示的效果也不一样。

VTK:与视窗的交互,光源点与方向的选取

大家好,我是张麟博士。欢迎大家关注我的头条号。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/65289.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信