我正在尝试使用 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 实体,就可以实现这一目标,但该功能应该已经可用)。
正如您所注意到的,在 Qt3D 中加载 PLY 不包括颜色。恐怕与目前的 Qt3D 课程持平。
您可以:
构建并加载Qt Assimp 场景解析器插件它支持 PLY 中的颜色属性,或者:
用 C++ 编写您自己的 Qt3D 几何加载器。当需要加载每个顶点带有额外数据的自定义 OBJ 模型时,我做了类似的事情。加载器代码使用起来非常简单,您只需修改它即可读取额外的数据,并且您可以修改 Qt3D 本身中的代码,或者创建一个插件并将其加载到您的应用程序中以使其工作。
注:是not创建专门的 QML 实体是必要的。加载程序将读取您的文件QMesh
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)