为什么在 Qt3D 中沿 Z 轴缩放平面时会出现部分不可见区域

Why do I got partial invisible areas when scale the plane along the Z axis in Qt3D

我用Qt3D创建了一个3D场景,场景中有一个正交相机和一个平面,我想让相机捕捉到恰到好处的平面。问题是,当我调用 QTransform::setScale3D() 沿 Z 轴放大平面时,从 1 开始增加,当值超过 2 时,部分图像突然变黑。经过大量测试,我确保飞机和相机的位置和旋转都没有改变。

部分代码如下:

rootEntity = new Qt3DCore::QEntity;
// create a plane
plane = new Qt3DCore::QEntity(rootEntity);
// mesh
auto planeMesh = new Qt3DExtras::QPlaneMesh;
planeMesh->setWidth(1.0f);
planeMesh->setHeight(1.0f);
// transform
transform = new Qt3DCore::QTransform;
transform->setTranslation(QVector3D(0, 0, 0));
transform->setRotation(QQuaternion::fromEulerAngles(QVector3D(0, 0, 0)));
transform->setScale3D(QVector3D(1, 1, 2));
//transform->setScale3D(QVector3D(m_planeWidth, 1, m_planeHeight));
// material
//auto mat = new Qt3DExtras::QPhongMaterial;
texMat = new Qt3DExtras::QTextureMaterial;
// add component
plane->addComponent(planeMesh);
plane->addComponent(transform);
plane->addComponent(texMat);
// configure camera
camera()->setPosition(QVector3D(0.0f, 1.0f, 0.0f));
//camera()->rotate(QQuaternion::fromEulerAngles(QVector3D(-90, 0, 0)));
camera()->transform()->setRotation(QQuaternion::fromEulerAngles(QVector3D(-90, 0, 0)));
//camera()->setViewCenter(QVector3D(0.0f, 0.0f, 0.0f));
camera()->lens()->setOrthographicProjection(
    m_planeWidth / 2,   // left
    m_planeWidth / 2,   // right
    m_planeHeight / 2,  // bottom
    m_planeHeight / 2,  // top
    0.3f,               // nearPlane
    1000.0f);           // farPlane

截图:

当平面的scale-Z为1时:

当飞机的比例Z变为2时:

欢迎任何有帮助的讨论。提前致谢。

好的,我把正交相机的参数left/right/bottom/top设置错了。 left 和 bottom 应该是负数,但我都设置为正数。当我打印正交相机的这 6 个属性的默认值时,我发现了我的错误,它们是 -0.5、0.5、-0.5、0.5。有点尴尬。