初步了解Panda3D 雾(Fog)
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初步了解Panda3D 雾(Fog)相关的知识,希望对你有一定的参考价值。
运行Panda示例Infinite-Tunnel,无限隧道;一个运动的,看不到尽头的隧道;
Toggle Fog,可切换Fog的颜色;Fog可显示或不显示;Fog颜色可切换;
看一下此示例的代码,主要功能代码有三部分;加载模型,模型动画,叠加雾的效果;雾,Fog;
一部分一部分的整,先看一下Fog怎么做;
Fog,Panda提供一个类;手册描述如下;
from panda3d.core import Fog
classFog
Bases: PandaNode
Specifies how atmospheric fog effects are applied to geometry. The Fog object is now a PandaNode, which means it can be used similarly to a Light to define effects relative to a particular coordinate system within the scene graph.
基本的雾程序如下;
from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from panda3d.core import Point3
from panda3d.core import Fog
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.fog = Fog('myFog1')
self.fog.setColor(0, 0.5, 0)
self.fog.setExpDensity(.08)
#self.fog.setLinearRange(0, 320)
#self.fog.setLinearFallback(45, 160, 320)
render.setFog(self.fog)
app = MyApp()
app.run()
缩进自己调好;缩进不对也不能编译通过;先不用注释掉的2句,做一个基本的雾,Fog;
定义一个Fog对象,设置颜色,设置透明度;
效果如下;
雾,应该是一个模糊的效果,各部分浓度不一;加上注释掉的2句,效果还是一样;
根据它的手册,Panda支持3种模式的Fog,指数型、线性、指数平方;self.fog.setLinearRange(0, 320),这句是设置线性范围;设置了还是没出现效果;
做一个指数型Fog,基本代码如下;
myfog=Fog("fog1")
myfog.setColor(0.8, 1, 0.5)
myfog.setExpDensity(0.05)
render.setFog(myfog)
运行起来也没看到效果;setExpDensity,设置雾的指数浓度;
此示例的模型用pview查看如下;还不知道隧道效果如何做出的;下回继续;
以上是关于初步了解Panda3D 雾(Fog)的主要内容,如果未能解决你的问题,请参考以下文章