vtk类之vtkTextureMapToSphere:纹理映射算法, 映射球体纹理

产生映射点集合到球体表面的纹理坐标

vtkTextureMapToSphere 是一个筛选器,将 2D 纹理坐标生成映射输入的纹理数据集点至一个球体上。范围可以是用户指定或自动生成的。(球体是由自动生成计算球体的中心 )。请注意生成的纹理坐标 (0,1) 之间的范围。

特别的伊娃控制 s 坐标如何生成的。如果将 PreventSeam 设置为 true,s-纹理异 0-> 1,然后 1-> 0 (对应于角度 0-> 180 和 180-> 360)。
使用流程:
1. 球体的PolyData
2. 为该球体polyData应用,映射算法过滤器 vtkTextureMapToSphere 
3. 生产新的mapper,连接Input为vtkTextureMapToSphere的输出,
4. 产生新的actor,即是映射后的图像。
例子:
#-*- coding: UTF-8 -*-
#-------------------------------------------------------------------------------
# Name:        模块2
# Purpose:
#
# Author:      ankier
#
# Created:     06-01-2013
# Copyright:   (c) Ankier 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------
from ActorFactory import ActorFactory

from vtk import *

class TextureMapToShpereActorFactory(ActorFactory):
    def __init__(self):
        ActorFactory.__init__(self)
        
        self.__SphereSource = vtkSphereSource()
        self.__SphereSource.SetThetaResolution(12)
        self.__SphereSource.SetPhiResolution(12)
        
        self.__TextureMapToSphere = vtkTextureMapToSphere()
        
        #设置被映射的polydata
        self.__TextureMapToSphere.SetInput(self.__SphereSource.GetOutput())
        self.__TextureMapToSphere.PreventSeamOn()
        
        #设置Poly Data,从纹理映射器重,得到被filter的输出数据
        self.__PolyDataMapper = vtkPolyDataMapper()
        self.__PolyDataMapper.SetInput(self.__TextureMapToSphere.GetOutput())
        
        
        #设置纹理类。
        self.__Texture = vtkTexture()
    
    def __ReadJPEG(self):
        read = vtkJPEGReader()
        read.SetFileName("D:\\girl.jpg")
        self.__Texture.SetInput(read.GetOutput())
        
    
    def __del__(self):
        del self.__SphereSource 
        del self.__TextureMapToSphere
        del self.__TextureMapToSphere
        del self.__PolyDataMapper
        del self.__Texture
        
        
        
    
    def _MakeActors(self):
        self.__ReadJPEG()
        actor = self._NewActor()
        actor.SetMapper(self.__PolyDataMapper)
        actor.SetTexture(self.__Texture)
        return [actor]
        

 

运行结果:

 

posted on 2013-01-06 20:50  |残阳|露  阅读(2115)  评论(0编辑  收藏  举报

导航