在我的应用程序中,我正在从医学数据集中生成3D网格。现在,我想在QML的Qt应用程序中显示它。我已经找到了如何从文件中显示网格的方法,但这要求我每次修改网格时都要保存网格(例如,通过更改分割参数)
Mesh {
id: mesh
source: "mesh.obj"
}
我想在3D查看器中显示网格,而不必先将网格保存到文件中。
如何在QML中做到这一点?
答案 0 :(得分:2)
Qt3D主要包装OpenGL,这意味着您可以使用顶点/索引数组对象以已知的方式继续将网格数据上传到图形卡-当然,可以通过Qt3D的类,而不是原生OpenGL的类。
看看Qt3D示例的this code,它们仅在内存中创建一个三角形。您可以将所有C ++指令轻松转换为QML树。您需要做的就是将已经拥有的顶点数据传输到属性中。如果您将渲染策略留在RenderSettings
上的Always
上,则Qt3D应该绘制网格。
如果C ++中包含网格数据文件,则另一种方法是编写一个自定义C ++类,该类将数据映射为示例中的格式,然后将其提供给QML。
修改
在尝试将顶点数据直接传递到QML中的Qt3D时,似乎存在问题,因为无法将其转换为QByteArray
。但是这里是example如何使用自定义C ++类解决它的方法。