qt - 通过 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 形状:
但是,当我使用Blender 软件将 STL 文件转换为 Wavefront OBJ 文件时,导入的 OBJ 文件会正确显示到 Qt3D 应用程序中:
我尝试了 Qt3D 的许多灯光和材质特性,但无法正确查看 STL 模型。谁能提供一个适用于 STL 文件的 Qt3D 光/材质配置示例?
解决方案
当我使用 Qt 5.9.0 构建/运行应用程序时,它工作正常,即它可以导入所有颜色的 STL 文件:
但是对于 Qt 5.11,它不能正常工作:
我认为问题在于SceneLoader
Qt 5.9.0 和 Qt 5.11 中的工作方式不同。
请看一下这份关于 Qt的报告和这份关于 assimp 的报告
推荐阅读
- android - 如何在android studio中自动生成“realese/res”和“debug/res”?
- laravel - artisan 命令总是显示消息 Not a git repository (or any parent directory)
- windows - 批处理:对于不适用于延迟扩展的目录
- python - 每次求和通过某个阈值时如何重新采样?
- python-3.x - 已经访问数据库后出现错误“文件不是数据库”
- windows - 由于“无法实现的基础版本”而无法安装 ghc-mod
- javascript - Mongoose - 不能在 post findOneAndUpdate 钩子中调用 model.find()
- flutter - 使用 Flutter 时 MapBox 地图不显示
- spring - 如何使用 thymeleaf 和 spring 验证表单?
- ios - 从父级删除后保留的子视图控制器