查看苹果示例 AR 应用程序,有许多看起来很逼真的对象(杯子、蜡烛等)。但是在 Xcode 上使用场景工具包编辑器很明显,这只允许您创建基本对象。
我的问题是,可以使用哪些软件/文件来创建逼真的scn
对象?我确信有软件可以让您创建 3D 模型并将它们转换为scn
文件。就是不知道用什么软件或者可以转换成什么文件scn
注意:我知道这个问题对于 Stackoverflow 指南来说可能过于模糊/宽泛。我只是不知道在哪里提出我的问题,这似乎是最好的地方
为了让一些现有的模型可以使用,这就是我所做的......只是我所知道的基础知识。
您也可以跳过 Blender 转换,只使用免费的在线 OBJ 到 DAE 转换工具之一。去谷歌上查询。并尝试在 Turbosquid 上购买一个便宜的 5 美元范围的模型,它只有一个 OBJ 文件,没有很多其他零件。它们太大了,无论如何都会产生其他问题作为入门方法。
更新在 Xcode 中观看有关 Model IO 的 Apple WWDC 演示后,我现在看到您可以将 OBJ 文件放入您的 .scnassets 文件夹中。选择该文件,转到编辑器并选择转换为 SCN 文件。这也应该有效,但我没有尝试过。值得尝试使用 OBJ 文件的副本。
2018 年 12 月更新: 我一直在使用 3D 文件。这是有关此问题的一些增量帮助。
尝试使用 MeshLab 导入您的 3D 模型并将其转换为 .DAE 文件。将 .DAE 文件拖到 Xcode 中的文件夹中。这就是您要在应用程序中显示的内容。
如果您的源 3D 模型是 .OBJ 文件,则有两个相关文件应与 .OBJ 文件位于同一文件夹中。它们是 *.mtl 文件和 *.jpg 或 *.BMP 文件。.mtl 文件可以用 TextEdit 打开。
打开并确保它有一行写着:map_Kd *.jpg。.jpg 是环绕 3D 网格文件的纹理图像。我发现最好确保您的纹理文件是 .jpg 格式。如果不是,请将其更改为 .jpg 格式(例如在预览中,通过将其重新保存为 jpeg),然后编辑 .mtl 文件以获取新的 .jpg 文件名。
我有一些 .bmp 的纹理文件,我刚刚转换为 .jpg,编辑了 .mtl 文件,效果很好。
第二个问题是 .obj 文件中节点的名称。.obj 文件也可以用 TextEdit 打开。.obj 文件应引用同一文件夹中的 .mtl 文件。如果没有,你就有问题了。
这是棘手的部分。当您在 SceneKit 场景中将 childNode 添加到 rootNode 时,您必须填写“withName:”文本名称。打开您从 .obj + .jpg + .mtl 制作的转换后的 .DAE 文件(导入 MeshLab 时会使用这三个文件,但导出到 .DAE 后,只有 .DAE 文件),然后搜索“node编号 = 。它可能会说:“node id="node"。如果是这样,则单词“node”是您在 scene.rootNode.childNode(withName:" 的“withName:”属性中为文本名称输入的 childNode 的名称节点”,递归:true) 调用。
如果还没有,您可以将节点名称 ID 更改为 node。
希望这可以帮助。许多小时的工作和其他人的帮助来理解下一轮使用 3D 模型的工作。
Xcode 的 SceneKit 编辑器不是 3D 艺术创作包——就像它的 SpriteKit 编辑器和 Interface Builder 组件不等同于 Photoshop、Illustrator、Pixelmator、Affinity Designer 等。要自己创建 3D 艺术资产,您将需要学习 Blender、Maya、3DS Max 或其他主要的 3D 创作工具之一。请注意,成为 3D 艺术家的学习曲线比学习如何在 2D 中绘画要陡峭一些。
SceneKit 编辑器的用途是从 3D 艺术家那里获取输出,并准备或组合它以在基于 SceneKit 的应用程序或游戏中使用 - 调整材质定义,使它们与 SceneKit 的渲染器看起来正确,安排单独的资产以创建游戏关卡或其他场景,添加动态 SceneKit 特定的功能,如粒子效果和物理等。
通过以 SceneKit 可以导入的格式之一从 3D 艺术工具中导出资产,您可以在这两个世界之间架起一座桥梁。数字资产交换 (.dae) 是这里的最佳选择之一,但通过 SceneKit 的较低级别对应物Model I/O,您还可以导入其他格式,如 OBJ 或 Pixar USD。
当您在 Xcode 中打开它们时,您将获得 SceneKit 编辑器,因此您可以开始标记特定于 SceneKit 的编辑并将结果保存为 .scn 文件以在您的应用程序中使用。
在创作和准备 3D 资产的过程中,您可以做一些事情,使它们在 ARKit 中看起来更逼真。WWDC的ARKit 会话(以及该会话附带的示例代码项目中的自述文件)包括一些这样的提示:
您可以以许多工具支持的 .DAE 格式创建逼真的 3D 模型。然后在 Xcode 中,您可以将该 .DAE 文件转换为 .SCN 格式。对于转换,检查这个
在 SceneKit 中Scene graph
,您可以导入带有动画的 3D 资产(来自 Blender、Maya 或 Houdini),创建 3D 图元(SCNBox、SCNSphere、SCNPlane、SCNCylinder 等)并在 5 个 SceneKit 的着色器(Blinn、Lambert、Phong、Constant)上分配 UV 映射纹理和 PBR)。
创建栩栩如生的动画模型的正确方法是使用专业的 3D 创作工具,例如 Autodesk Maya、Autodesk 3dsMax、Maxon Cinema 4D、The Foundry Modo、Blender 或 SideFX Houdini。这些应用程序不仅可以创建完美的几何体,还可以创建逼真的 UV 映射纹理,其中包含 SceneKit 材质编辑器的漫反射、透明度、金属度、凹凸和遮挡槽的渲染通道。
当您的 3d 模型和一组 UV 映射纹理准备好使用时,您需要做的就是保存一个.dae
或.usdz
文件。格式.dae
必须转换为.scn
. 为此.dae
,从菜单中选择一个文件并应用命令:
// Editor - Convert to SceneKit file format...
然后对于转换后的.scn
模型,您可以Physically Based
在Material Inspector
. Physically Based
着色器.scn
,.usdz
并使您的模型看起来真实可信。