设置光线投射
我将QRayCaster添加到我的根实体,并将其信号连接到一个插槽:
void MySceneClass::createRootEntity()
{
// ...
// Add ray caster to root entity
m_rayCaster = new Qt3DRender::QRayCaster(m_rootEntity);
m_rayCaster->setRunMode(Qt3DRender::QAbstractRayCaster::SingleShot);
m_rootEntity->addComponent(m_rayCaster);
// Set up signal to slot connection
QObject::connect(m_rayCaster, &Qt3DRender::QRayCaster::hitsChanged,
this, &MySceneClass::handleRayCasterHits);
// ...
}
我通过插槽记录光线投射命中情况:
void MySceneClass::handleRayCasterHits(const Qt3DRender::QAbstractRayCaster::Hits hits)
{
qDebug() << "Ray casting resulted in hits";
}
触发射线投射器
我在循环中迭代地触发射线投射器:
void MyOtherClass::triggerRayCaster()
{
for (int i = 0; i < 100; ++i) {
m_mySceneClass->castRay(QVector3D(i, i, 50.0f), // origin
QVector3D(0.0f, 0.0f, -1.0f), // direction
-1 // length (-1 means infinite)
);
}
}
问题
问题在于,在所有测试中,只有 triggerRayCaster()
函数内最后一次循环产生的结果被 handleRayCasterHits()
函数捕获并记录。
我不明白,我是否漏掉了什么?