1

我想使用 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 映射在球体的“外部”表面上。当相机在球体内部时,背景是不可见的。

这种方法有什么问题?

4

1 回答 1

3

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

于 2018-10-15T09:48:35.830 回答