在一个窗口PyQt中嵌入blenderplayer

时间:2017-02-17 14:35:21

标签: blender pyqt5

我一直试图在一个窗口PyQt5中嵌入blenderplayer但是我收到两个窗口而不是一个窗口PyQt嵌入了blender播放器。 你能帮助我取悦我吗? 这是我的剧本:

import sys
from PyQt5.QtCore import QProcess
from PyQt5.QtGui import QWindow
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication, QPushButton, QFrame

class embedBlender(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.setMinimumWidth(800)
        self.setMinimumHeight(600)
        self.frame = QFrame(self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.frame)
        layout.addWidget(QPushButton('button'))
        self.process = QProcess(self)
        # -i Window_ID -w Width Height X Y
        self.process.start(' '.join(('blenderplayer -i', str(self.frame.winId().__int__()), '-w 400 400 c:\V2.blend')))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = embedBlender()
    main.show()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

你可能知道,搅拌机在一个窗口界面上大量倾斜,这会进入游戏引擎。 blenderplayer的-i选项设置父窗口ID - 这与播放器用作主显示的包含窗口不同。

如果您按照代码进行操作,您会发现将创建一个新窗口并在X11 it's parent is set to be the windowID上传入。在Windows上,再次创建新窗口并将it's input device设置为父窗口使用的输入。因此,该选项不会达到预期效果。

我认为,如果没有你改变和建立自己的搅拌机副本,搅拌机会做你正在尝试的事情。

只是一个理论,但是搅拌机(不是blenderplayer)有一个--window-borderless选项 - 您可能能够启动没有窗口边框的搅拌机,位于正确的位置,以便它位于您希望它的区域上方没有任何视觉区别。您可以使用启动脚本启用游戏引擎并开始播放。当然,游戏窗口会落在主窗口后面而不会移动时会出现问题。

另一种方法是完全使用搅拌机,即使用一种布局将游戏放置在您想要的位置,并customise blender's interface创建您想要的周围环境。作为极端的示例,请查看Fluid Designer - 它使用了blender,但已调整UI以使其成为一个独特的应用程序。