swift - .DAE 或 .SCN 文件在 Xcode 中无法正确显示
问题描述
我购买了一些 3D 模型用于我正在制作的应用程序中。购买的文件有.fbx
格式,所以我将它们转换为.dae
.
不幸的是,当我将它们放入 Xcode 中的 art.scnassets 文件夹并查看它们时,它们只是显示为模型应该是什么的橙色轮廓。没有质感。如果我选择 .dae 然后转到编辑器,然后“转换为 SceneKit 场景文件格式(.scn
),也会发生同样的情况。
我找到了.tga
模型纹理的文件。每个模型都有 3 个 .tga 纹理文件(albedo、ao 和 normals)。我可以将这些文件组合成一个纹理以在 Xcode 中使用吗?
Also, when the 3d model is selected, I cannot open the material inspector, it says it is Not Applicable. 我一直使用材质检查器将纹理文件应用于特定模型。
解决方案
将.dae
模型转换为.scn
Xcode 的原生格式后,您需要通过 Material Inspector 中的 Properties 槽将所有可用的纹理应用到您的 3D 模型。
Xcode 中纹理的最佳格式可能是.png
(不是 a .tga
),因为.png
文件的大小相对较小并且可以容纳四个通道 - RGBA(.jpg
仅容纳 RGB)。
您不能合并Albedo
, AO
, 和Normals
因为这些文件用于 Material Inspector 的不同插槽:Albedo
用于漫反射颜色、AO
用于 Ambient Occlusion 软阴影、Normals
用于凹凸效果。
或者,您可以使用 Swift 4.1 以编程方式分配这些纹理:
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "Albedo.png")
material.ambientOcclusion.contents = UIImage(named: "AO.png")
material.normal.contents = UIImage(named: "Normals.png")
PS 如果您在 Xcode 的场景图中看不到 3D 模型的任何部分,则有一个normals issue
. 您需要在 3D 创作软件中反转多边形的法线。
推荐阅读
- c - 将带有字符串节点标签的边缘列表映射到整数标签
- html - 使用类时 HTML5 字段之间的边距不准确
- webpack - 开发中的 Webpack 长块名
- angular - 当我使用角材料通过打字稿发送新代码时,我的选择没有更新
- django - 如何将视图限制为用户组?
- javascript - 无法在 javascript 中获取 php 变量
- c# - 使用 MassTransit 的 RabbitMQ 集群连接给出 BrokerUnreachableException
- azure - 将 MVC webapp 发布到 Azure webapp 服务,提供默认页面
- msbuild - Azure DevOps 服务器构建管道中的 SonarQube MSBuild 在运行代码分析任务上失败
- powerapps - PowerApps:AddMedia 控件 - 添加超过 1 个元素?