首页 > 解决方案 > 通过 Qt3D 模块导入 STL 文件:如何配置灯光和材质

问题描述

我使用了某人在 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 形状:

STL模型全白,不显示3D形状

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

Wavefront OBJ 模型正确查看


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

标签: qtqmlqt3d

解决方案


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

在此处输入图像描述

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

在此处输入图像描述

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


请看一下这份关于 Qt的报告和这份关于 assimp 的报告


推荐阅读