Qt3D文档正在增加但仍缺少一些信息,特别是关于如何在没有Qml/QtQuick的情况下执行操作.在大量搜索关于在线框模式下渲染网格的网页之后,我发现了很多有用的提示和示例,这些提示和示例共同产生了一个示例查看器,我想在此处作为对所有撰写文章的人和其他人的贡献搜索了类似的例子.最有用的链接是这些:
Stackoverflow关于在Qt3DWindow中使用事件过滤器的问题和答案:鼠标控制Qt 3D窗口
可以使用鼠标旋转和缩放网格.
观众的截图

欢迎任何关于如何改进这一点的评论.特别是我对如何编写着色器程序感兴趣,该程序可以渲染不同颜色的正面和背面,或者渲染每个顶点的颜色.
这是代码:
// ######### Opening the viewer #########
void MainWindow::import3dMeshInMeshViewer(QString name)
{
if (!m_viewer3D)
{
m_viewer3D = new Viewer3D(this);
}
m_viewer3D->sceneModifier()->addTriangleMeshCustomMaterial(name, m_meshVector);
m_viewer3D->show();
}
// ######### Viewer class h #########
class Viewer3D : public QDialog
{
Q_OBJECT
public:
Viewer3D(QWidget *parent = 0);
SceneModifier* sceneModifier() {return m_sceneModifier;}
protected:
bool eventFilter(QObject *obj, QEvent *ev);
void mouseMoveEvent(QMouseEvent *ev);
void mousePressEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
void wheelEvent(QWheelEvent *we);
private:
QPointer<Qt3DCore::QEntity> m_rootEntity;
QPointer<SceneModifier> m_sceneModifier; …Run Code Online (Sandbox Code Playgroud)