我想将panda3D用于我的个人项目,但是在阅读了文档和一些示例sourcecodes之后,我仍然有几个问题:
-
如何仅渲染一个帧并将其保存在文件中?实际上,我需要渲染2个不同的图像:一个对象,以及一个包括上一个对象在内的多个对象的场景,但每个对象只有一个帧,它们都需要将其保存为图像文件。
-
该应用程序将在Python中进行编码,并且需要非常可扩展(数千用户使用)。Panda3D会在这里适合该法案吗?(关于我在Python的程序,这几乎是一个恒定的复杂性,因此这里没有问题,而3D模型将是低点,每个场景约为5至20个)。
-
我需要计算每个对象对相机的透视图投影。是否可以直接访问顶点(位置,参数等)?
-
我可以重新涂3D对象吗?我需要为整个对象设置简单的颜色,但是每个对象的颜色不同。是否可以?
另外,请注意,我在图形和游戏开发领域中是一个新手,但是我知道3D建模和3D理论的一些位以及计算机成像理论。
感谢您阅读我。
ps:我目前的主要替代方案是使用Soya3D或Pysoy,但是它们似乎并没有非常积极地发展或优化,因此,尽管它们都会有较小的内存足迹,但我不知道他们是否真的会性能比熊猫3D更快,因为它们不是很优化...
-
您可以使用
self.win.saveScreenshot(Filename)
屏幕截图。示例:from panda3d.core import Filename file_name = Filename('whatever.png')) self.win.saveScreenshot(file_name)
-
我自己从未使用过Panda3D网络API,但应该在客户端做得很好。在服务器方面的性能与数千位用户可能不那么好,但是您可以使用其他更合适的技术来为C或NODEJS等重型网络进行编码。
-
是的,您可以访问和修改顶点并将其分组为面。默认顶点数据允许您设置顶点位置,正常,颜色和纹理坐标,尽管您可以设置自己的自定义顶点格式。查看手册:PANDA3D手册:创建和填充GeomverTexData
-
是的,可以使用
object.setColor(r,g,b,a)
设置对象颜色。更多信息:Panda3D手册:着色和重新上色
希望它有帮助!
- 您可以使用启用setOneShot的缓冲区来使其仅渲染一个帧。您可以通过将" Window-Type" Prc变量设置为"无",然后自己打开屏幕外缓冲区,从而在没有窗口的情况下启动Panda3D。(注意:没有主机窗口的屏幕外缓冲区可能不普遍支持。)如果将"窗口类型"设置为"屏幕外",则
base.win
实际上将是一个缓冲区(这比必须设置自己的设置要容易一些),然后您可以致电base.graphicsEngine.render_frame()
以在避开顶部开发的同时渲染单个帧任务管理器。您必须两次称其为两次。 - 是的。迪斯尼用于一些MMORPG。我确实必须补充说,熊猫的高级网络接口的文献很少。
- 您可以使用
nodepath.get_transform(base.cam)
计算从对象到相机的转换,这是一个转换对象,您可以选择使用ts.get_mat()
转换为矩阵。这是令人惊讶的快速,因为熊猫维护着转换的组成缓存,因此不必多次发生这种情况。您可以使用lens.get_projection_mat()
或使用lens.get_projection_mat_inv()
的cC_7获得投影矩阵(从视图空间到剪辑空间)。您也可以使用GEOM接口访问单个顶点数据,这是在Panda3D手册中详细介绍的。 - 您可以使用
set_color
更改对象的基本颜色(替换任何顶点颜色),也可以使用set_color_scale
来吸引对象,即。应用乘以现有颜色的颜色。如果您使用灯光并想将不同的颜色用于分散,镜头和环境组件。