基于osg的python三维程序开发(六)------纹理
以简单数字地球为例, 演示posg 中纹理的用法。
首先需要读取图像文件作为纹理
img = osgDB.readImageFile(filename)
然后,声明一个2D的纹理对象
texture = osg.Texture2D()
texture.setImage(img)
创建一个叶子节点
geode = osg.Geode() sphere = osg.Sphere((0,0,0), osg.WGS_84_RADIUS_POLAR) drawb = osg.ShapeDrawable(sphere) geode.addDrawable(drawb)
将纹理设置到叶子节点的属性
geode.getOrCreateStateSet().setTextureAttributeAndModes( 0, texture)
完整代码如下:
import math
from pyosg import *
import numpy as n
def createEarth(filename): texture = osg.Texture2D() img = osgDB.readImageFile(filename) texture.setImage(img) geode = osg.Geode() sphere = osg.Sphere((0,0,0), osg.WGS_84_RADIUS_POLAR) drawb = osg.ShapeDrawable(sphere) geode.addDrawable(drawb) geode.getOrCreateStateSet().setTextureAttributeAndModes( 0, texture) return geode def main(): viewer = osgViewer.Viewer() viewer.setUpViewInWindow(600, 100, 800, 600) root = osg.Group() root.addChild(createEarth("./land_shallow_topo_2048.jpg") ) viewer.setSceneData(root) return viewer.run() if __name__ == '__main__': main()
效果

自由软件开发者。承接图像处理,视频智能算法,GIS,三维仿真等方面的工程项目。联系方式 QQ or wechat: 714601476。

浙公网安备 33010602011771号