4

Bullet Physics のデバッグ描画インターフェイスを QML に統合しようとしているので、drawLine()メソッドを実装する必要があります。

void drawLine(const btVector3 &from, const btVector3 &to, const btVector3 &color);

私が試したのは、QQuickItem3D と btIDebugDraw の両方から、シーンで使用されるアイテムを継承したことです。ではdrawLine()、ラインをメンバー ベクトルに追加します。QtdrawItem()では、行を反復処理し、OpenGL 呼び出しを使用してレンダリングします。ただし、画面には表示されません。

3D 空間で正しいカメラ ビューから線を描画するにはどうすればよいですか?

void DebugDrawer::drawItem(QGLPainter *painter)
{
    if (lines_.size() < 1)
        return;

    // Draw current lines
    painter->modelViewMatrix().push();
    glBegin(GL_LINES);
    for (auto &line : lines_) {
        glColor3f(line.color.getX(), line.color.getY(), line.color.getZ());
        glVertex3f(line.from.getX(), line.from.getY(), line.from.getZ());
        glVertex3f(line.to.getX(), line.to.getY(), line.to.getZ());
    }
    glEnd();
    painter->modelViewMatrix().pop();

    // Reset buffer
    lines_.clear();
}
4

1 に答える 1