vtk studying(纹理篇-给actor穿衣服)

之前的那篇画体的demo,实现了一个画柱体,正好补充一下vtk的纹理总结吧

额,首先什么叫纹理?

实际上就是给vtk里的actor穿上衣服

具体操作:上代码:(从网上看的,但是忘记链接了,如果有问题请联系,我删除此篇)

# -*- coding: utf-8 -*-
# !/usr/bin/env python

import vtk

cylinder=vtk.vtkCylinderSource()
cylinder.SetHeight(3.0)
cylinder.SetRadius(1.0)
cylinder.SetResolution(360)

# 三维空间中渲染对象最常用的vtkProp子类 是vtkActor(表达场景中的几何数据)和 vtkVolume(表达场景中的体数据)
"""vtkProp子类负责确定渲染场景中对象的位置、大小和方向信息。
Prop依赖于两个对象(Prop一词来源于戏剧里的“道具”,在VTK里表示的是渲染场景中可以看得到的对象。)
一个是Mapper(vtkMapper)对象,负责存放数据和渲染信息,另一个是属性(vtkProperty)对象,负责控制颜色、不透明度等参数。
"""

mapper=vtk.vtkPolyDataMapper()
mapper.SetInputConnection(cylinder.GetOutputPort())

# 读取 bmp 背景图片
bmpReader = vtk.vtkBMPReader()
bmpReader.SetFileName("C:\\Users\\wanji\\Desktop\\star.bmp")

# 纹理
texture=vtk.vtkTexture()
# 数据接口联通纹理
texture.SetInputConnection(bmpReader.GetOutputPort())
# 插入纹理
texture.InterpolateOn()

actor=vtk.vtkActor()
actor.SetMapper(mapper)
# 设置纹理属性
actor.SetTexture(texture)

ren=vtk.vtkRenderer()
ren.SetBackground(0.8,0.3,0.8)
ren.SetBackground(0.3,0.5,0.9)
ren.SetGradientBackground(1)
ren.AddActor(actor)

ren_window=vtk.vtkRenderWindow()
ren_window.SetWindowName('axiong first cube')
ren_window.SetSize(300,300)
ren_window.AddRenderer(ren)

interactor=vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(ren_window)

style=vtk.vtkInteractorStyleMultiTouchCamera()
interactor.SetInteractorStyle(style)

interactor.Initialize()
ren_window.Render()
interactor.Start()

简单说一下,就是给actor穿上了一层衣服。

像画点的时候就说过,想给演员加颜色:

actor.GetProperty().SetColor(0.0,1.0,0.0)

demo里还增添了一步读取照片底色的接口:

bmpReader = vtk.vtkBMPReader()
bmpReader.SetFileName("C:\\Users\\wanji\\Desktop\\star.bmp")

路径更改为你自己的路径(把照片下载下来的路径)

texture=vtk.vtkTexture()
texture.SetInputConnection(bmpReader.GetOutputPort())
texture.InterpolateOn()
actor.SetTexture(texture) 

之后这四句话就把照片的底色穿到actor上边

纹理的操作并不止于此,还记得我画线的一篇里,有一个图片是实线了一个高精度地图的道路么?

但是那时候的需求只是简单的把斑马线等画出来,区分实现虚线即可,如果加上纹理,你乐意在道路线之间穿上衣服,形成一个路面,,,,,, (代码保密)

除此之外,代码中还有段注释,是关于介绍vtkProp的,可以结合着画点时的三张关系图理解一下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值