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_())