认识panda3d点光源

PointLight
    点光源仿真了空间中的单个点,光从该点发出,向各个方向射出。
    点光源的位置比较重要,方向无关紧要。
    为点光源衰减提供了一个二次多项式计算函数。

from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import Sequence
from panda3d.core import Point3
from panda3d.core import PointLight
from panda3d.core import LPoint3, LVector3

class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

        # 禁用鼠标
        self.disableMouse()
        # 载入环境模型
        self.environ = self.loader.loadModel("models/zaotai")
        # 设置环境模型的父实例
        self.environ.reparentTo(self.render)

        self.lightpivot = render.attachNewNode("lightpivot")
        self.lightpivot.setPos(0, 0, 25)
        # self.lightpivot.hprInterval(10, LPoint3(360, 0, 0)).loop()
        plight = PointLight('plight')
        plight.setColor((0, 1, 0, 1))
        plight.setAttenuation(LVector3(0.7, 0.005, 0))
        plnp = self.lightpivot.attachNewNode(plight)
        plnp.setPos(45, 0, 0)
        self.environ.setLight(plnp)

        # 对模型进行比例及位置调整
        self.environ.setScale(2.0, 2.0, 2.0)
        self.environ.setPos(1, 42, 0)
        # 通知任务管理器调用SpinCameraTask控制相机
        # self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")        

    def spinCameraTask(self, task):
        angleDegrees = task.time * 6.0
        angleRadians = angleDegrees * (pi / 180.0)
        self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3)
        self.camera.setHpr(angleDegrees, 0, 0)
        return Task.cont
          
app = MyApp()
app.run()

认识panda3d点光源_第1张图片

        self.lightpivot = render.attachNewNode("lightpivot") //在场景添加一个节点;
        self.lightpivot.setPos(0, 0, 25)   //设置节点位置;
        # self.lightpivot.hprInterval(10, LPoint3(360, 0, 0)).loop()  //点光源位置循环变化;
        plight = PointLight('plight')   //定义一个点光源;
        plight.setColor((0, 1, 0, 1))   // 点光源颜色;
        plight.setAttenuation(LVector3(0.7, 0.005, 0))   //点光源衰减;  0-二次项,0.005-一次项,0.7-常数项;
        plnp = self.lightpivot.attachNewNode(plight)   //点光源放入定义的节点;
        plnp.setPos(45, 0, 0)  // 点光源位置;
        self.environ.setLight(plnp)  // 点光源加入场景;

手册说;
PointLight 类
基类是: LightLensNode

    A light originating from a single point in space, and shining in all directions.
    在空间从一个单点发出的光,照射到所有方向;

shining
a:明亮,炯炯,亮铮铮
v:辉耀,照射,发光

你可能感兴趣的:(图形学和3D,点光源)