初步了解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)的主要内容,如果未能解决你的问题,请参考以下文章

使用C++做一个Panda3D雾

unity3D小小白之雾效

初步了解panda3d阴影效果的实现

初步了解panda3d灯光

初步了解Panda3D场景管理

初步了解Panda3d粒子系统