gpt4 book ai didi

qt - QML 加载并显示具有颜色属性的 .ply 网格

转载 作者:行者123 更新时间:2023-12-04 15:55:46 24 4
gpt4 key购买 nike

我正在尝试使用 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 Material 替换 Material 属性来解决这个问题: property Material materialPoint: PerVertexColorMaterial {} .
不幸的是,场景中没有可见的逐顶点颜色。

是否有任何推荐的方法可以在 QML 中导入带有顶点颜色数据的 PLY 文件? (我想如果用 C++ 编写逻辑并为此创建专门的 QML 实体,则可以实现这一点,但该功能应该已经可用)。

最佳答案

如您所见,在 Qt3D 中加载 PLY 不包括颜色。恐怕目前是 Qt3D 类(class)的标准。

您可以:

构建并加载 Qt Assimp Sceneparser plugin它支持 PLY 中的颜色属性,或者:

用 C++ 编写你自己的 Qt3D 几何加载器。当需要在每个顶点加载带有额外数据的自定义 OBJ 模型时,我做了类似的事情。加载器代码使用起来非常简单,你只需要修改它来读取额外的数据,你可以修改 Qt3D 本身的代码,或者创建一个插件并将它加载到你的应用程序中以使其工作。

注意:没有必要创建专门的 QML 实体。加载程序将读取您的文件为 QMesh .

关于qt - QML 加载并显示具有颜色属性的 .ply 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51786536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com