如何使用大球体上的纹理作为背景



我想使用Qt(版本5.11(创建一个3D场景。

我想在几乎无限的球体上映射一个JPG图像,以支持3D场景的背景。

以下是相关的源代码:

Qt3DCore::QEntity *aGalaxyBackground = new Qt3DCore::QEntity(rootEntity);
Qt3DExtras::QSphereMesh* aGalaxyBackgroundSphereMesh = new Qt3DExtras::QSphereMesh();
aGalaxyBackgroundSphereMesh->setRadius(100);
aGalaxyBackground->addComponent(aGalaxyBackgroundSphereMesh);
Qt3DRender::QTextureLoader* aGalaxyBackgroundLoader = new Qt3DRender::QTextureLoader(aGalaxyBackground);
Qt3DExtras::QTextureMaterial* aGalaxyBackgroundMaterial = new Qt3DExtras::QTextureMaterial(aGalaxyBackground);
aGalaxyBackgroundLoader->setSource(QUrl::fromLocalFile("D:/Qt/starfield.jpg"));
aGalaxyBackgroundMaterial->setTexture(aGalaxyBackgroundLoader);
aGalaxyBackground->addComponent(aGalaxyBackgroundMaterial);

这种方法的问题是JPG映射在球体的"外部"表面上。当摄影机位于球体内部时,背景不可见。

这种方法有什么问题?

您可以将球体半径设置为-100而不是100,并且法线指向内部。然后,该纹理将从球体内部可见,而不是从外部可见。

最新更新