基于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)
完整代码如下:
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()
标签:__,geode,sphere,python,程序开发,texture,viewer,osg 来源: https://www.cnblogs.com/enigma19971/p/12727958.html