Error bei PYQT3D

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
tryyan
User
Beiträge: 23
Registriert: Freitag 7. Oktober 2022, 13:08

Guten Tag, ich probiere eine obj Datei in ein PyQt5 Window zu laden, das funktioniert so weit auch, das Problem ist ich möchte das 3D Model in einem Widget darstellen, schaffe das aber nicht, es stürzt ab gibt aber keinen error. Kann mir jemand helfen?

Code: Alles auswählen

import sys

from PyQt5.QtCore import pyqtSlot, QObject, QSize, Qt, QUrl
from PyQt5.QtGui import QColor, QQuaternion, QVector3D
from PyQt5.QtWidgets import (QApplication, QCheckBox, QCommandLinkButton,
                             QHBoxLayout, QVBoxLayout, QWidget)
from PyQt5.Qt3DCore import QEntity, QTransform
from PyQt5.Qt3DExtras import (Qt3DWindow, QConeMesh, QCuboidMesh,
                              QCylinderMesh, QFirstPersonCameraController, QPhongMaterial,
                              QPlaneMesh, QSphereMesh, QTorusMesh, QDiffuseMapMaterial)
from PyQt5.Qt3DInput import QInputAspect
from PyQt5.Qt3DRender import QCamera, QTextureImage

from skinminecraft import RenderableEntity


class SceneModifier(QObject):

    def __init__(self, rootEntity):
        super(SceneModifier, self).__init__()
        self.m_rootEntity = rootEntity
        
        chest = RenderableEntity(rootEntity)
        chest.transform().setScale(0.03)
        chest.mesh().setSource(QUrl.fromLocalFile('assets/chest/Chest.obj'))
        diffuseMapMaterial = QDiffuseMapMaterial()
        diffuseMapMaterial.setSpecular(QColor.fromRgbF(0.2, 0.2, 0.2, 1.0))
        diffuseMapMaterial.setShininess(2.0)

        chestDiffuseImage = QTextureImage()
        chestDiffuseImage.setSource(QUrl.fromLocalFile('assets/chest/diffuse.webp'))
        diffuseMapMaterial.diffuse().addTextureImage(chestDiffuseImage)

        chest.addComponent(diffuseMapMaterial)




app = QApplication(sys.argv)

view = Qt3DWindow()
view.defaultFrameGraph().setClearColor(QColor(0x4d4d4f))
container = QWidget.createWindowContainer(view)
screenSize = view.screen().size()
container.setMinimumSize(QSize(200, 100))
container.setMaximumSize(screenSize)

widget = QWidget()
hLayout = QHBoxLayout(widget)
vLayout = QVBoxLayout()
vLayout.setAlignment(Qt.AlignTop)
hLayout.addWidget(container, 1)
hLayout.addLayout(vLayout)

widget.setWindowTitle("Basic shapes")

aspect = QInputAspect()
view.registerAspect(aspect)

# Root entity.
rootEntity = QEntity()

# Camera.
cameraEntity = view.camera()

cameraEntity.lens().setPerspectiveProjection(45.0, 16.0 / 9.0, 0.1, 1000.0)
cameraEntity.setPosition(QVector3D(0.0, 0.0, 20.0))
cameraEntity.setUpVector(QVector3D(0.0, 1.0, 0.0))
cameraEntity.setViewCenter(QVector3D(0.0, 0.0, 0.0))

# For camera controls.
camController = QFirstPersonCameraController(rootEntity)
camController.setCamera(cameraEntity)

# Scene modifier.
modifier = SceneModifier(rootEntity)

# Set root object of the scene.
view.setRootEntity(rootEntity)

# Create control widgets.






# Show the window.
widget.show()
widget.resize(1200, 800)

sys.exit(app.exec_())
Antworten