首页 > 编程语言 > 详细

基于osg的python三维程序开发(七)------灯光

时间:2020-04-25 15:21:38      阅读:83      评论:0      收藏:0      [点我收藏+]

灯光在任何三维仿真程序里面都是非常重要的组成部分。  osg 里面的灯光相关的类有:osg::Light()  和 osg::LightSource.

我们可以将Light想象为一个灯泡。  而LightSource则是电灯的插口。在opengl中,灯光需要消耗系统的软件硬件资源。 所以

新建灯光的数量是有限的,而且系统给每个光源都设置一个编号。下面我们用python 代码来演示如何创建灯光:

def createLights(bb, rootStateSet):
    lightGroup = osg.Group()
    modelSize = bb.radius()
    print(modelSize ,modelSize)
    # create a spot light.
    myLight1 = osg.Light()
    myLight1.setLightNum(0)
    p = (bb.corner(4)[0],bb.corner(4)[1], bb.corner(4)[2],1.0)
    myLight1.setPosition(p)
    myLight1.setAmbient((1.0,0.0,0.0,1.0))
    myLight1.setDiffuse((1.0,0.0,0.0,1.0))
    myLight1.setSpotCutoff(20.0)
    myLight1.setSpotExponent(50.0)
    myLight1.setDirection((1.0,1.0,-1.0))
    lightS1 = osg.LightSource()
    lightS1.setLight(myLight1)
    lightS1.setLocalStateSetModes(osg.ON)
    lightS1.setStateSetModes(rootStateSet,osg.ON)
    lightGroup.addChild(lightS1)

上面的代码演示了如何创建光源, 以及设置光源的一系列的属性, 包括光源的位置,方向、颜色、漫反射成分、散射成分等。  这些关于灯光属性的设置问题,可以参考OPENGL的教程,

本博文仅在于演示如何用python code 实现创建光源。

基于osg的python三维程序开发(七)------灯光

原文:https://www.cnblogs.com/enigma19971/p/12772962.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!