关键词不能为空

当前您在: 主页 > 英语 >

panda3d基础学习

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-03 14:06
tags:

-

2021年3月3日发(作者:tiara)



.





















PANDA3D


入门









----------


古道天



一、前言



这个是我自学的总结。



因为刚开始看


PANDA3D


的教程,发现在看天书,静下心来学后,感觉其 实是教程不


够深入浅出,


没有照顾我们这些一点基础都没有的初 学者。


因此,


把我自学的一点心得记录


下来,便于自己及他人参考。



学习


P ANDA3D


的目的是编制一个三维的设备管理程序。嫌


C#< /p>


运行效率低下,


C++


的语言不够简练, 看好了


PYTHON


编程。百度了一下,


PYTHON



3D


图形库有


PYGLET,PANDA3D



BLEND ER


等,最初是想用


BLENDER


, 但是


BELNDER


侧重于建模,


于我 的用途不太符合。改用


PYGLET


的,看中它也是很简练的库 ,后来发现


PYGLET


缺乏


维护,教 程也少。因此转向


PANDA3D



P ANDA3D


的教程以及维护要完善的多。


< br>但是按网上的说法,


学习曲线是比较陡峭的。


果然,刚开 始时一头雾水,经过查阅官方


教程后,又通过自己一点点的实验和摸索,稍微有点头绪了 。顺便提一下,我的


PYTHON



P ANDA3D


是同步学的,都在初级阶段。这里侧重写


PAND A3D


的特点


,PYTHON


的略


微提到些。



注意:这不是手册,很多进阶的东东请查官网手册。




二、安装



我的系统是


WIN7 64


位,安装< /p>


PYTHON



2.7.6


版本


32


位版,




.



/ftp/python/2.7.6/


PANDA3D



1.8.1


版本 (自带


2.7.3


版本的


PYTHON





/download/panda3d-1.8.1/




打开“开始”菜单,运行


PANDA 3D


下的范例文件,第一个范例



AS TEROIDS


,小行星。








点击“


Run Asteroids



,


出现游戏界面





这说明


P ANDA3D


内含的


PYTHON2.7.3

< br>已经可以运行了。


现在,大家肯定都迫不及待的要看看源代码了吧。



点击


View Source Code




.









出现文件夹





点击



,结果 出现提示没有找到模块,说明你的


PYTHON2.7.6


还没 找到


PANDA3D


的模块。那么按下面的方法做。

< p>



C:Python27Libsite-pa ckages


的目录下,建一个



的文件 ,用写字本添


加下列文本(这里的文件路径是默认的,如果你修改过的话,根据实际情况 调整)




C:Panda3D-1.8.1


C:Panda3D-1.8.1/direct/src/actor


C:Panda3D-1.8.1/direct/src/cluster


C:Panda3D-1.8.1/direct/src/controls



.



C:Panda3D-1.8.1/direct/src/directbase


C:Panda3D-1.8.1/direct/src/directdevice s


C:Panda3D-1.8.1/direct/src/directnotify


C:Panda3D-1.8.1/direct/src/directscript s


C:Panda3D-1.8.1/direct/src/directtools


C:Panda3D-1.8.1/direct/src/directutil


C:Panda3D-1.8.1/direct/src/distributed


C:Panda3D-1.8.1/direct/src/extensions


C:Panda3D-1.8.1/direct/src/extensions_n ative


C:Panda3D-1.8.1/direct/src/ffi


C:Panda3D-1.8.1/direct/src/fsm


C:Panda3D-1.8.1/direct/src/gui


C:Panda3D-1.8.1/direct/src/interval


C:Panda3D-1.8.1/direct/src/leveleditor


C:Panda3D-1.8.1/direct/src/motiontrail


C:Panda3D-1.8.1/direct/src/particles


C:Panda3D-1.8.1/direct/src/physics


C:Panda3D-1.8.1/direct/src/pyinst


C:Panda3D-1.8.1/direct/src/showbase


C:Panda3D-1.8.1/direct/src/showutil


C:Panda3D-1.8.1/direct/src/task


C:Panda3D-1.8.1/direct/src/tkpanels



.



C:Panda3D-1.8.1/direct/src/tkwidgets


C:Panda3D-1.8.1/bin




再次点击



, 看看是否成功运行。






.




三、正式开始



现在安装工作已经完成,我们可以正式开始了。



右键



文件,用


IDLE


打开,我们可以看到源程序,按


F5


可以调 试运行。



不过拿这个源程序作为我们的开端,显然是不合适。




3.1


第一个

PANDA


程序



现在我们开始编 写第一个


PANDA3D


程序。



第一个程序,当然要简单粗暴些。




新建一个



(注:


PANDA3D


似乎不支持中文目录,


所以你的程序不要放在 中文目录


下)


,用


IDLE

< p>
编辑(原则上你也可以用其它文本编辑器编辑)



输入以下两行




import


Start


run()



CTRL-S


保存,


F5


运行


(顺便 提一下,


PYTHON2.7


以前的


I DLE


是不支持右键复制黏贴的,


不用快捷键会很蛋疼,


2.7


的版本是懒人的福音)



出现一个灰色的空窗口,比较简陋些,不过作为第一个程序已经够了。




.




根据官网的解释,



第一句


import


Start


,建立


ShowBase


的实例

< p>


第二句


run()


,循 环运行


ShowBase


实例,监视键盘鼠标输入,并反馈。< /p>



(


试试:如果删了

RUN()


会咋样?


)



老版本的


PANDA


的语法是这样写的。



from


direct.


showbase


.


ShowBase



import


ShowBase


p3dApp = ShowBase


()



p3dApp.


run()



这里的


ShowBase


是显式的,新的语法里 都简化了。有兴趣的话,你可以打开


C:Panda3D-1.8.1directdi rectbase


看看里面的源程序。





不过,本着初学者够用就行的态度 ,咱们就不用深究这些了,只要记住这两句的作用如下:



import


Start #


建立舞台



run() #


演出开始了!



#

< br>是


PYTHON


的注释方法



保存时,程序会提示你有中文注释,要加



# -*- coding: cp936 -*-


,同意它修改就好。




3.2


加料




.



灰色窗 口太不起眼了,需要加点料,事实上只要加两行就能让它大变样。




# -*- coding: cp936 -*-


import


Start #


建立舞台





environ = del(


ntTo(render)



run() #


演出开始了!




F5


出现





哈哈,两行代码就有这么大变化,


: -O


,厉害的!



还有更厉害的,试着按住鼠标左右键拖动看看!



默认的鼠标控制方式如下:


(当然,这个控制方式很不人道)



Key


鼠标左键



鼠标右键



鼠标中键



Action


左右进行平移



前后移动



围绕程序的坐标原点进行旋转




.



鼠标右键和中键



围绕视野中心轴进行滚动





对这两句代码的解释如下



environ = del(


导入模型



ntTo(render) #


将模型加入渲染列表



第一句代码:



environ, < /p>


是我们自行规定的一个变量,这个变量现在代表了我们在等号后面导入的模型。

< p>
del( ),


它的作用是导入一个模型。


(


注意


:PYTHON


对大小写敏感


)


这句代码稀奇的是,


我们并没有新建这个模 型,


可是却可以导入这个模型。


那么这个模型在


哪里呢?原来,这个模型在


C:Panda3D-1.8.1models


下,文件名为






(


注意


:


在代码里面的文件路径用的是


LINUX


的斜杠”


/



,和


WIN


下的反斜杠”




”不一



)







这个


*.pz


文件,是一种压缩格式,后面 会提到。



这里我们只要理解了,程序在



默认的文件夹下找到了



enviro nment


的模型文件。当然,


这个文件有可能是



或者



或者

< br>




(试试,将


C:Panda3D-1.8.1models < /p>


下的



改名或者挪个位置)



事实上,


如果我们在程序所在文件夹下新建一个


models


文件夹并将


< br>拷贝在此文件夹下,程序同样可以找到模型。



(想想,如果有两个同名模型会咋样?)





.



第二句代码:


ntTo(render)




意思是将


environ

< p>
模型置于


render


节点下。

< br>


节点是个术语,


是为了更好的组织各个模型。


模型只有置于节点下,才能被程序渲染。


整个


结 构是个树型表。



有个比较容易理解的比喻是,


将节点看成文件夹。



Render

< br>就是根目录


C:



模型就是文件 ,


我们要看到模型,就必须把文件拷到


C



(关于节点的用法,我们后面详述)




当然,为了方便管理,我们可以在

C:


盘下建立目录,以及子目录,这种目录叫做空节点




四、创建模型


上面那个


environment


模型,

< br>超出了我们的理解能力。


现在,


我们试着自行建立一个模 型。



在你程序所在文件夹下,创建一个


models


文件夹。



4.1


建立正方形




models


文件夹下,新建一个



模 型文件。



用记事本编辑



,并拷入下列代码。




{ Z-up }



{




Cube {






0 {








1.0 1.0 -1.0






}






1 {








1.0 -1.0 -1.0






}






2 {








-1.0 -1.0 -1.0



.







}






3 {








-1.0 1.0 -1.0






}




}




{






{ 0 3 2 1 { Cube } }




}


}



现 在将我们的



修改为



# -*- coding: cp936 -*-


import


Start #


建立舞台





box = del(


导入模型



ntTo(render) #


将模型加入渲染列表




run() #


演出开始了!




F5


运行,咦,还是没东东啊。



我们还需要加代码。




# -*- coding: cp936 -*-


import


Start #


建立舞台





box = del(


导入模型



ntTo(render) #


将模型加入渲染列表



(0,20,-3) #


设置模型原点的位置




run() #


演出开始了!




.



(0, 20,-3)



含义是将模型按其原点



0,0,0



对应

< br>PANDA3D


坐标的



0,2 0



-3



的 对应关系放置。







一个梯形。



如果你按住鼠标左键移动 的话,会发现,原来是个一个水平放置的正方形。




现在我们得了解一下


PANDA3D


的坐标系以 及


EGG


文件了。




下面是


PANDA3D


的坐标系










.










从屏幕上看,就是


X


方向是屏幕的宽,


Z


方向就 是屏幕的高,


Y


方向就是屏幕的深了。















简单解释一下



文件代码的含义



{ Z-up } //Z


方向



向上,这和


PANDA


的坐标系是一致的。


< br>(你可以试试


X



向或者


Y


方向向上会如何)




.




{









//


给顶点集和多边形编组





Cube { //


顶点集,我们将这个集命名为


CUBE






0 {








// CUBE


顶点集下的第


1


个点,编号为


0


,你也可以从别的序号开始编









1.0 1.0 -1.0






//


顶点的




X Y Z


坐标







}






1 {








1.0 -1.0 -1.0






}






2 {








-1.0 -1.0 -1.0






}






3 {








-1.0 1.0 -1.0






}




}




{








//


多边形







{ 0 3 2 1 { Cube } } //


多边形的顶点是顶点集


CUBE


下 的


4


个点。





}


}


上 面点的坐标是相对模型空间的原点(


0,0,0


)的值,原点也 是


setPos( )


函数操作的点。



(0,20,-3) #


设置模型原点的位置



这句的意思就 是将


box


模型按照模型空间原点(


0 ,0,0


)对应屏幕空间点(


0,20,-3

< br>)的方式


放置。



实践:



1


) 调整程序文件中的


setPos()


的参数,看看有什么变化。




2


)模型 文件中的增加或者减少多边型的点,改变点的坐标,改变多边形点的排列顺序,看


看能否 找到什么规律(注意,一次最好只改一项)




刚才我们在用鼠标移动那个水平放置的正方形时,会发现正方形移动到屏幕上方会消失。


-


-


-


-


-


-


-


-



本文更新与2021-03-03 14:06,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/700568.html

panda3d基础学习的相关文章