【问题标题】:QML load and display .ply mesh with color attributesQML 加载并显示具有颜色属性的 .ply 网格
【发布时间】: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 实体,就可以实现这一点,但功能应该已经可用。

【问题讨论】:

    标签: qt graphics 3d qml qt3d


    【解决方案1】:

    如您所见,在 Qt3D 中加载 PLY 不包括颜色。恐怕目前 Qt3D 的课程标准。

    您可以:

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

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

    注意:不需要创建一个专门的 QML 实体。加载程序会将您的文件读取为QMesh

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2015-12-30
      • 2021-03-14
      • 1970-01-01
      相关资源
      最近更新 更多