QML 加载并显示具有颜色属性的 .ply 网格
Posted
技术标签:
【中文标题】QML 加载并显示具有颜色属性的 .ply 网格【英文标题】:QML load and display .ply mesh with color attributes 【发布时间】:2018-08-10 12:26:44 【问题描述】:我正在尝试使用 QML 从斯坦福 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 实体,就可以实现这一点,但功能应该已经可用。
【问题讨论】:
【参考方案1】:如您所见,在 Qt3D 中加载 PLY 不包括颜色。恐怕目前 Qt3D 的课程标准。
您可以:
构建并加载支持 PLY 颜色属性的 Qt Assimp Sceneparser plugin,或者:
用 C++ 编写您自己的 Qt3D 几何加载器。当需要在每个顶点中加载带有额外数据的自定义 OBJ 模型时,我也做了类似的事情。加载器代码使用起来非常简单,您只需修改它即可读取额外数据,您可以在 Qt3D 本身中修改代码,或者创建一个插件并将其加载到您的应用程序中以使其工作。
注意:不需要创建一个专门的 QML 实体。加载程序会将您的文件读取为QMesh
。
【讨论】:
以上是关于QML 加载并显示具有颜色属性的 .ply 网格的主要内容,如果未能解决你的问题,请参考以下文章