3D模型通常是在专门为此制作的另一个程序中设计的。它们充满了您在SceneKit编辑器中找不到的功能。后者更多用于编辑和添加效果。无论您是自己创建还是购买,都需要将它们导入Xcode。在本节中,您将学习如何导入3D资源并进行调整,以使其在您的应用中运行良好。
3D建模软件
3D艺术家在他们用于创建图形的建模软件方面有自己的偏好。我们将瞥一眼一些专业人士。
Blender
Blender是多功能和免费的,非常适合那些想要开始干预3D设计的人。虽然它是免费的,但它起初并不容易解决,因为它具有很多功能。它甚至还配备了集成的游戏引擎。
Blender
Cinema 4D
Cinema 4D具有详细的功能,并且由于其直观的用户界面,易于携带。它快速可靠。它甚至允许用户在项目中保存场景的多个版本,以免丢失以前的作品。但是,它的价格很高。有许多许可证包可供选择,以满足任何人的需求。您可以先使用演示版试用它。
Cinema 4D
Autodesk Maya
Autodesk Maya在为视频游戏和动画电影创建交互式3D内容方面非常强大。它适用于动画,动画,角色创作等等。这个细节集中的工具可以产生令人惊叹的工作室效果。如果您是学生或教育工作者,您可以下载免费试用版或获得 3年许可证。
Maya
Sketchup
Sketchup对于建筑和室内设计非常有用。它配备了一个存储和共享模型的库。3D Warehouse中的所有资产都可以免费下载。我们将使用此平台下载我们的3D模型。
Sketchup Pro
Autodesk 3ds Max
Autodesk 3ds Max在视频游戏开发人员和建筑工程师中很受欢迎。此工具非常适合查看动画和视觉效果。艺术家甚至可以从任何物理对象或地点捕获的点云数据创建模型,这样他们就不必从头开始。可以轻松地与其他协作者共享图形。但是,它只支持Windows。
3DS
3D的常用文件格式
无论使用哪种建模软件,您都可以导入或导出到其他类型的文件中。这是您可以找到的常见格式列表。
- .dae for Digital Asset Exchange文件,也称为COLLADA文件,因为它们基于XML COLLADA格式
- .obj用于Wavefront 3D Object文件,通常附带.MTL文件,其中引用了材质描述
- .3DS用于由Autodesk的3D Studio的场景文件
- .fbx for FBX文件(Filmbox)由Autodesk用于跨平台查看模型
Xcode等自动支持上面提到的前两种格式。
在2018年的WWDC上,Apple刚刚宣布了与Pixar合作的增强现实内容的新文件格式。该USDZ文件将是整个软件使用通用的格式,可以与朋友和同事之间轻松共享。我们甚至可以在新的AR Quick Look应用程序中进行真实预览。
下载导入3D模型
要学习本教程,您需要Xcode 10或更高版本,以及SceneKit场景编辑器中的最终Xcode项目。您可以下载本节的最终Xcode项目,以帮助您与自己的进度进行比较。
下载资产
在开始之前,请确保下载资产包(如果尚未下载)。
下载模型
让我们开始。转到3D模型库网站。在搜索栏中,键入iPhoneX。请注意这里的大小写。再往下,我们将从Sketchup Designer中选择模型。在下一页上,单击红色的“ 下载”按钮,然后选择“ Collada文件”。
接下来,转到下载资产的目录,您将看到一个名为iPhoneX (Apple )的新文件夹。3D模型保存在文件model.dae下。您可以打开它以直接预览它。文件夹模型实际上是材质,因为它有一个iPhoneX屏幕的图像文件。在我们导入之前,我想将文件夹重命名为iPhoneX。
导入模型
现在,让我们导入。返回Xcode,打开Project导航器。拖放iPhoneX正确的文件夹下art.scnassets。所以你刚刚导入了3D模型。它是如此简单!
将文件转换为场景
首先,展开文件夹,然后单击刚刚在项目中添加的文件。建议将3D资源转换为场景文件以优化性能。在菜单栏中,转到编辑器,然后转换为SceneKit场景文件格式(.scn)。现在您可以看到您的模型具有.scn扩展名。
节点布局
在场景图中,我们可以看到节点是如何布局的,哪些是父节点,哪些是子节点。节点的层次结构对于每个设计是唯一的。有时,您可以找到相机节点,在这种情况下您可以删除它们。它们不是必需的,因为ARKit使用设备的相机。
重命名
我将重命名模型的文件和文件夹以使其更加明确。更改model.scn到iPhoneX.scn,模型文件夹的材质和最终图像名称这只是一个下划线iPhoneX_screen.jpg
让我们回到我们的场景。由于重命名,纹理的链接被破坏了。要解决此问题,请单击手机屏幕,转到“ 材质”检查器并将漫反射更改为iPhoneX_screen.jpg。在此期间,让我们将背景更改为Procedural Sky。
中心点
我要谈的下一件事是支点。它是所有箭头的交集。旋转对象时,它将转向该点。最重要的是,当您将对象添加到曲面上时,初始放置将是该点。现在,它位于手机的左下方,所以不好。我们将把它改为模型的中间部分。顺便说一下,这一步不是强制性的。它也可以通过代码修复。但这是一个很好的诀窍。
这该怎么做?请注意,我们只能这样做,因为这个模型有许多节点布局,父节点是SketchUp。我们将改变其直接子组group_0的位置。首先,我们将从前面看模型。好吧,似乎角度已经改变,如果你去节点检查员,你可以看到它。我们将视图改为顶部。选择SketchUp,我们将检查Bounding框。如果手机的宽度是2.819,那么它的中心位于1.410。同样,如果高度为5.635,由边界框的深度定义,其中间点为2.818。考虑到父节点对x,y和z放置为0并且原始枢轴点位于左侧,我们应该将group_0的x位置设置为-1.410。选择SketchUp,您将看到x位置是固定的。对z执行相同操作,将其设置为2.818。现在枢轴点位于模型的中心。
展平节点
最后,我们现在需要做的是将所有节点展平为只有一个节点。如果我们不这样做,我们稍后会遇到一些操纵模型的问题。例如,您将旋转手机的边框而不是整个手机。要展平节点,请右键单击SketchUp,然后展平选区。现在,您将处理一个节点而不是多个节点,但只有在您完成模型编辑后才能执行此操作。让我们从前面看看它的样子。当我运行应用程序时它会是这样的,但我希望它现在站起来所以将x角度改为90度。
更改场景参考
是时候模拟我们的应用程序并检查iPhone了。但在此之前,我们首先要改变对场景的引用,从船舶场景到我们的新场景文件。转到ViewController.swift文件,在viewDidLoad中我们引用场景,让我们将单词ship改为iPhoneX/iPhoneX。
从
代码语言:javascript复制let scene = SCNScene(named: "art.scnassets/ship.scn")!
至
代码语言:javascript复制let scene = SCNScene(named: "art.scnassets/iPhoneX/iPhoneX.scn")!
现在,让我们运行应用程序。
缩放模型
那么这里发生了什么?你可能会想到什么都没发生。但如果你退一步,你终于可以看到你的模型。发生的事情是你在对象的中间,你在这个位置什么也看不见。什么都不是一个银盘子,对吗?通常,3D模型超大。所以,我们要缩小规模。回到iPhoneX场景,将其缩放到0.025,即x,y和z为2.5%。再次运行该应用程序。
导入资产
我们完成了iPhoneX模型的导入。对于应用程序,如果您看到该演示,则可以选择其他模型。幸运的是,它们已经包含在下载的资产文件夹中。因此,打开它,访问3D文件夹并将所有内容导入到art.scnassets下的Xcode中。
在这里,我们也将导入其他资产。单击Assets.xcassets,打开2D文件夹并将所有内容拖动到那里。接下来,仅选择文件夹,转到“ 属性”检查器并选中“ 提供命名空间”。这将添加文件夹名称作为图像名称的前缀。如果您具有相同名称但位于不同文件夹中的资源,则此功能特别有用。它有助于整理它们。然后,选择除按钮图标之外的那些文件夹中的所有图像,并将Scales属性更改为Single Scale。这些图像不是图标,我们不需要多种尺寸。
我们仍然保留了应用图标。单击AppIcon,在finder中打开文件夹App Icon,并将2x和3x图标放在适当的位置。
当应用程序出现在我们的设备上时,让我们将图标与另一个名称相关联,而不是项目名称。转到项目文件DesignCodeARKit并将显示名称更改为Angle AR。
重命名场景文件
为了完成这个,我们应该重命名船舶场景,因为我们用它来代替我们的手表。代码将不再引用它。将文件ship.scn重命名为myWatch.scn。记住,也删除它不需要的纹理文件texture.png。
3D资产的推荐网站
在我们结束本课程之前,我想带您浏览一些3D资产网站。那里有很多,但我喜欢这些。
- Sketchfab
- TurboSquid
- CGTrader
纹理推荐网站
对于材质,这里列出了一些您可以查看的网站。
- 3D Textures
- Motionworks
- Vray Textures
结论
因此,在这里您学习了如何将3D模型导入Xcode,调整它以便在程序中进行优化并实现更好的交互。您还了解了一些建模软件,可供下载模型的站点以及适用于它们的纹理站点。您现在可以找到要添加到项目中的优秀模型。请注意,使用3D非常耗时,因为要在应用程序中很好地集成,需要进行大量操作。有了这个,祝你好运,玩得开心!
原文: https://designcode.io/arkit-importing-3d-models