QML加载并显示带有颜色属性的.ply网格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QML加载并显示带有颜色属性的.ply网格相关的知识,希望对你有一定的参考价值。
我正在尝试使用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材料替换材质属性来解决这个问题:property Material materialPoint: PerVertexColorMaterial {}
。不幸的是,场景中没有可见的每顶点颜色。
有没有推荐的方法在QML中导入带有顶点颜色数据的PLY文件? (我想如果用C ++编写逻辑并创建一个专门的QML实体就可以实现这个目的,但功能应该已经可用)。
在Qt3D中加载PLY不包括你注意到的颜色。我担心,目前Qt3D的课程是标准杆。
你可以:
构建并加载支持PLY中颜色属性的Qt Assimp Sceneparser plugin,或者:
用C ++编写自己的Qt3D几何加载器。当需要在每个顶点中加载具有额外数据的自定义OBJ模型时,我已经完成了类似的操作。加载器代码非常简单易用,您只需修改它以读取额外数据,您可以修改Qt3D本身的代码,或者创建一个插件并将其加载到您的应用程序中以使其工作。
注意:没有必要创建专门的QML实体。加载器将以QMesh
的形式读取您的文件。
以上是关于QML加载并显示带有颜色属性的.ply网格的主要内容,如果未能解决你的问题,请参考以下文章
26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段