我正在尝试使用QML从Stanford PLY文件中加载具有每个顶点颜色信息的简单多维数据集。
我的实体看起来像这样:
Entity
{
id: circle
property Material materialPoint: Material {
effect: Effect {
techniques: Technique {
renderPasses: RenderPass {
shaderProgram: ShaderProgram {
vertexShaderCode: loadSource("qrc:/imports/org/aid/shared/geometry/shaders/point.vert")
fragmentShaderCode: loadSource("qrc:/imports/org/aid/shared/geometry/shaders/point.frag")
}
}
}
}
parameters: Parameter { name: "pointSize"; value: 2 }
}
property alias translation: circleTransform.translation
property alias rotation : circleTransform.rotationZ
Mesh
{
id: circleMesh
source: "qrc:/resources/models/rg.ply"
}
Transform
{
id: circleTransform
scale : 1
}
components:
[materialPoint, circleTransform, circleMesh]
}
我还尝试用专门为解决此问题而创建的默认Qt材质替换material属性:
property Material materialPoint: PerVertexColorMaterial {}
。
不幸的是,场景中没有可见的每顶点颜色。
在QML中,是否有建议的方法来导入带有顶点颜色数据的PLY文件? (我想如果有人用C ++编写逻辑并为此创建一个专门的QML实体,就有可能实现这一目标,但功能应该已经可用。)
答案 0 :(得分:0)
在Qt3D中加载PLY不包含您所注意到的颜色。恐怕目前Qt3D的课程还没达到标准。
您可以:
构建并加载Qt Assimp Sceneparser plugin,它确实支持PLY中的颜色属性,或者:
用C ++编写自己的Qt3D几何图形加载器。当需要在每个顶点中加载带有额外数据的自定义OBJ模型时,我已经做了类似的事情。加载程序代码非常简单易用,您只需对其进行修改即可读取额外的数据,并且可以在Qt3D本身中修改代码,也可以创建一个插件并将其加载到您的应用程序中以使其正常工作。
注意:创建专门的QML实体不是。加载程序将以QMesh
的形式读取您的文件。