目录
前言(阿巴阿巴)
前几天无意间看到了一个叫做panda3d的东西,觉得挺好玩,就翻教程,发现现在中文教程似乎没有那么全面成体系,大部分都是复制粘贴过来官网的实例然后就发布出去了,看得云里雾里的,所以我决定自己去摸索一下这个panda3d,学panda3d的小伙伴中间肯定遇到过很多坑,也有过很多不理解的地方,不过没关系,来瞅瞅我的这个panda3d教程,给你个比较全面的讲解。 我整了个QQ群,180962166,有不会的进来问就行(如果我会的话) 好了,正式开始。
奇奇怪怪的东西
1.导入配置文件
之前咱们调节了一下窗口大小,用的WindowProperties这个东西,这节讲解一下其他的属性配置,
新建一个目录config,然后新建一个叫做conf.prc的文件
然后往conf.prc里写点东西
嗯~这两句里第一个是窗口大小,第二个是窗口名字,没啥好说的,然后这个conf.prc文件就完成了,放一边不管它了,然后在你的代码文件里写上一句这个
from panda3d.core import loadPrcFile
代码如下
from direct.showbase.ShowBase import ShowBase
####################################################
from panda3d.core import loadPrcFile
loadPrcFile('config/conf.prc')
####################################################
class MyGame(ShowBase):
def __init__(self):
super().__init__()
game = MyGame()
game.run()
然后运行一下,已经生效了
别的属性也可以写进来,当然后面会慢慢说。
上面是第一种导入方式,需要写个外部文件来导入,还有一种方式是直接在代码里写配置文件,不需要额外创建一个prc文件。
第二种是直接在代码里添加刚才的语句,就像下面这样
from direct.showbase.ShowBase import ShowBase
#################################################
from panda3d.core import loadPrcFileData
confVars = """
win-size 1280 960
window-title My Game
"""
loadPrcFileData("", confVars)
#################################################
class MyGame(ShowBase):
def __init__(self):
super().__init__()
game = MyGame()
game.run()
运行之后效果和上面一样,就不贴图了,这两种方式选哪个都行,看你个人习惯(这不废话嘛),个人建议如果代码比较少的话就用第二种,配置啥的都写在代码文件里,如果是个大项目,工程代码的话就用配置文件的方式。差不多就这些,下一个。
2.全局对象
panda3d有一堆全局对象,有的时候你的代码飘红了不要着急,运行一下,也许飘红的代码不是bug呢。
全局对象老祖宗:base类,这玩意好像是panda3d所有对象的父类,老祖宗级别的存在,它有几个子类,常用的有render,camera,cam,然后render下面有xx子类等等,无线套娃。
当我看到我的代码飘红的时候我是绝望的,查了半天没查出来为啥飘红,那就运行一下呗,看看报错信息啥样,运行之后,好家伙!没报错,我更绝望了,错都不报去哪里找问题改(╥﹏╥...)。但是看了看源码,好像不是我的问题,这玩意它就是该飘红的,因为base类是panda3d的一个全局对象,在任何地方都可以用它,哪怕没有导入,好,问题解决--飘红不用管它。运行之后结果如下
base类是一个节点,render是base类的子节点,camera是render的子节点......
啊,忘了,上面配置文件加了一句show-frame-rate-meter True,这个是查看帧率的
右上角这个就是帧率,也就是一秒刷新多少次图片,我这里帧率142,也就是1秒刷新142张图片。
今天就这么多吧。