将panda3d用作pyqt5小部件的绑定
QPanda3D的Python项目详细描述
Qpand3D
pyqt5的一个工作panda3d包装器 目标是能够在同一个屏幕上显示panda3d和pyqt小部件。
这个包裹还在制作中。 工作原理:
- 在一个seemlessly qwidget对象中创建一个panda3d世界,该对象可以与其他qt对象放在一起
- 完全访问panda3d对象、灯光…
什么还不起作用:
- 鼠标和键盘交互
- Qwidget正在调整大小。目前,小部件的大小是固定的,这意味着您不能在不裁剪3d场景的情况下将其与其他qt小部件一起使用。
安装
pip install QPanda3D
用法
1-通过从panda3dworld继承来创建您的世界
fromQPanda3D.Panda3DWorldimportPanda3DWorldclassMyWorld(Panda3DWorld):Panda3DWorld.__init__(self)# from this point, act as if you are defining a classic panda3D environmentself.cam.setPos(0,-28,6)self.testModel=loader.loadModel('panda')self.testModel.reparentTo(render)
2-在你的主体中,创建一个你的世界的实例,创建一个q
fromQPanda3D.QPanda3DWidgetimportQPanda3DWidgetif__name__=="__main__":world=MyWorld()app=QApplication(sys.argv)appw=QMainWindow()appw.setGeometry(50,50,800,600)pandaWidget=QPanda3DWidget(world)appw.setCentralWidget(pandaWidget)appw.show()sys.exit(app.exec_())
小部件大小调整策略
从v 0.4开始,小部件会自动调整大小,而不会产生任何拉伸的人工制品。调整策略参数(在v 0.2中引入)的大小已被删除,因为不再需要它们。
fromQPanda3D.QPanda3DWidgetimportQPanda3DWidgetif__name__=="__main__":world=MyWorld()app=QApplication(sys.argv)appw=QMainWindow()appw.setGeometry(50,50,800,600)pandaWidget=QPanda3DWidget(world)appw.setCentralWidget(pandaWidget)appw.show()sys.exit(app.exec_())
您还可以告诉panda3dworld对象在创建视图时您喜欢的默认视图大小。
fromQPanda3D.Panda3DWorldimportPanda3DWorldclassMyWorld(Panda3DWorld):Panda3DWorld.__init__(self,width=1024,height=768)# from this point, act as if you are defining a classic panda3D environmentself.cam.setPos(0,-28,6)self.testModel=loader.loadModel('panda')self.testModel.reparentTo(render)
只需确保您的比率足够您的实际小部件大小。
待办事项
- 添加鼠标和键盘交互