在我的应用程序中,我从一个医学数据集生成了一个3D网格。现在我想用QML在一个Qt应用程序中展示它。我已经找到了如何从文件中显示网格,但这需要我在每次修改网格时保存它(例如,通过更改分割参数)
Mesh {
id: mesh
source: "mesh.obj"
}我想在3D查看器中显示网格,而不必先将网格保存到文件中。
我如何在QML中做到这一点?
发布于 2019-02-19 16:21:38
Qt3D主要包装OpenGL,这意味着你可以使用顶点/索引数组对象以已知的方式将网格数据上传到图形卡-当然是通过Qt3d的类,而不是原生的OpenGL类。
看看Qt3D示例的this code,其中他们只在内存中创建一个三角形。您可以很容易地将所有C++指令转换为QML树。您需要做的是将已有的顶点数据传输到您的属性。如果您将渲染策略留在位于Always的RenderSettings上,则Qt3D应绘制网格。
如果你的网格数据存在于C++中,另一种选择是编写一个定制的C++类,它将你的数据映射到示例中的格式,然后使其可用于QML。
编辑
在尝试将顶点数据直接传递给QML中的Qt3D时,似乎有一个问题,因为它不能转换为QByteArray。但是这里有一个使用自定义C++类来解决这个问题的example。
https://stackoverflow.com/questions/54751301
复制相似问题