通过 Qt3D 模块导入 STL 文件:如何配置灯光和材质

Posted

技术标签:

【中文标题】通过 Qt3D 模块导入 STL 文件:如何配置灯光和材质【英文标题】:Import STL files by Qt3D module: how to do configuration of light and material 【发布时间】:2018-06-28 14:19:20 【问题描述】:

我使用某人上传的代码here on Bitbucket 用Qt3D 打开和查看STL 文件。代码中有一个实体对应于导入的 STL 模型:

        Entity
        
            id: monkeyEntity
            components: [
                SceneLoader
                
                    id: sceneLoader
                
            ]
        

上述sceneLoader正在通过QML对话框加载导入的STL模型:

FileDialog

    id: fileDialog
    onAccepted:
    
        sceneLoader.source = fileDialog.fileUrl
    

但是当我导入 STL 文件时,灯光不工作。无论我如何改变灯光或材质,导入的 3D STL 模型都是白色的,不显示 3D 形状:

但是,当我使用Blender software 将 STL 文件转换为 Wavefront OBJ 文件时,导入到 Qt3D 应用程序中的 OBJ 文件正确显示:


我尝试了 Qt3D 的许多灯光和材质特性,但无法正确查看 STL 模型。谁能提供一个适用于 STL 文件的 Qt3D 光/材质配置示例?

【问题讨论】:

【参考方案1】:

当我使用 Qt 5.9.0 构建/运行应用程序时,它运行良好,即它可以导入具有所有颜色的 STL 文件:

但是对于 Qt 5.11,它不能正常工作:

我认为问题在于 SceneLoader 在 Qt 5.9.0 和 Qt 5.11 中的工作方式不同。


请看this report on Qt和this report on assimp

【讨论】:

以上是关于通过 Qt3D 模块导入 STL 文件:如何配置灯光和材质的主要内容,如果未能解决你的问题,请参考以下文章

将 Qt3D 用于巨大的地形模型?

在 Qt3D 中找不到适合 QUrl 的导入器插件 - .dae 对象

spaceclaim 2014怎样导入stl文件

stm32点亮led灯用到的模块

windows下为android部署qt3d项目

如何在页面模块上使用实体?