Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何创建真实的.scn文件?_Ios_Scenekit_Arkit - Fatal编程技术网

Ios 如何创建真实的.scn文件?

Ios 如何创建真实的.scn文件?,ios,scenekit,arkit,Ios,Scenekit,Arkit,看看apple示例AR应用程序,有许多看起来很逼真的对象(杯子、蜡烛等)。但是,在Xcode上使用场景工具包编辑器显然只允许创建基本对象 我的问题是,什么软件/文件可以用来创建真实的scn对象?我确信有一种软件可以让你创建3D模型并将它们转换成scn文件。我只是不知道该使用哪个软件,或者哪些文件可以转换成scn 注意:我理解这个问题对于Stackoverflow指南来说可能过于模糊/宽泛。我只是不知道在哪里提出我的问题,而这似乎是最好的地方您可以使用许多工具支持的.DAE格式创建真实的三维模型。

看看apple示例AR应用程序,有许多看起来很逼真的对象(杯子、蜡烛等)。但是,在Xcode上使用场景工具包编辑器显然只允许创建基本对象

我的问题是,什么软件/文件可以用来创建真实的
scn
对象?我确信有一种软件可以让你创建3D模型并将它们转换成
scn
文件。我只是不知道该使用哪个软件,或者哪些文件可以转换成
scn


注意:我理解这个问题对于Stackoverflow指南来说可能过于模糊/宽泛。我只是不知道在哪里提出我的问题,而这似乎是最好的地方

您可以使用许多工具支持的.DAE格式创建真实的三维模型。然后在Xcode中,您可以将该.DAE文件转换为.SCN格式。对于转换,请选中此项


< XCODE的ScEnKIT编辑器不是3D艺术创作包——就像它的SpRITEKIT编辑器和界面生成器组件不等同于PS图象处理软件、插图器、PixelMator、亲和设计师等一样,为了自己创建3D艺术资产,你需要学习Brder,玛雅,3DS马克斯,或其他主要3D创作工具之一。要注意,成为3D艺术家的学习曲线比学习如何在2D中绘画要陡峭一些

SceneKit编辑器的作用是获取3D艺术家的输出,并准备或组合它以用于基于SceneKit的应用程序或游戏-调整材质定义,使其与SceneKit的渲染器保持一致,安排单独的资源以创建游戏级别或其他场景,添加动态场景特定功能,如粒子效果和物理等

通过以SceneKit可以导入的格式之一从3D艺术工具中导出资源,可以在这两个世界之间架起桥梁。数字资产交换(.dae)是这里最好的选择之一,但通过SceneKit的较低级别的对应项,您还可以导入其他格式,如OBJ或Pixar USD

在Xcode中打开这些内容时,您将获得SceneKit编辑器,这样您就可以开始标记特定于SceneKit的编辑,并将结果保存为.scn文件,以便在应用程序中使用


在创作和准备3D资源的过程中,您可以做一些事情,使它们在ARKit中看起来更真实。(以及该会话附带的示例代码项目中的自述文件)包括一些这样的提示:

  • 使用基于物理的材料
  • “烘焙”环境光遮挡和其他静态照明效果
    • 添加不可见的阴影平面

为了让一些现有的模型可以使用,下面是我所做的……只是我所知道的基本知识

  • 我找到了一个适合我的3D模型
  • 确保它有OBJ文件。购买并下载
  • 下一次下载。导入您刚购买的OBJ文件
  • 导出DAE文件
  • 将DAE文件和任何纹理(png文件)拖动到项目中的.scnassets文件夹中
  • 单击.scnassets文件夹中的DAE模型。单击以在场景图中选择对象
  • 单击右上角的球体
  • 我单击了“漫反射”,并选择了一个我拖入的PNG以将其应用于模型
  • 您也可以跳过搅拌机转换,只需使用其中一个免费的在线OBJ到DAE转换工具。谷歌。试着在Turbosquid上买一个5美元的便宜型号,它只有一个OBJ锉刀,没有很多其他零件。它们太大了,不管怎么说,都会造成其他问题

    更新在Xcode中观看了Apple WWDC在Model IO上的演示后,我现在看到您可以将OBJ文件放入.scnassets文件夹中。选择该文件,转到编辑器并选择转换为SCN文件。这应该也行,但我没有试过。值得一试你的OBJ文件的副本

    2018年12月更新: 我一直在更多地使用3D文件。这里有一些关于这个问题的增量帮助

    尝试使用MeshLab导入三维模型并将其转换为.DAE文件。将.DAE文件拖动到Xcode中的文件夹中。这就是您将在应用程序中显示的内容

  • 如果源三维模型是.OBJ文件,则有两个相关文件应与.OBJ文件位于同一文件夹中。它们是*.mtl文件和*.jpg或*.BMP文件。可以使用TextEdit打开.mtl文件

    打开并确保它有一行写着:map_Kd*.jpg。.jpg是环绕3D网格文件的纹理图像。我发现最好确保你的纹理文件是.jpg格式的。如果不是,请将其更改为.jpg格式(在预览中,例如,将其重新保存为jpeg),然后编辑.mtl文件以获得新的.jpg文件名

    我有一些纹理文件是.bmp,我刚刚转换成.jpg,编辑了.mtl文件,我很好

    第二个问题是.obj文件中节点的名称。也可以使用TextEdit打开.obj文件。.obj文件应引用同一文件夹中的.mtl文件。如果没有,你就有问题了

    这里是棘手的部分。将子节点添加到SceneKit场景中的根节点时,必须填写“withName:”文本名称。打开由.obj+.jpg+.mtl生成的转换后的.DAE文件(导入到MeshLab时使用这三个文件,但导出到.DAE后,只有.DAE文件),然后搜索“node id=”。它可能会说:“node id=“node”。如果是这样,则单词“node”是在场景的“withName:”属性中为文本名输入的childNode的名称。rootNode.childNode(withName:“node”,递归:true)调用

    如果尚未将节点名称ID更改为节点,则可以将其更改为节点


    希望这能有所帮助。为了理解下一轮使用3D模型的工作,需要花费大量的时间和他人的帮助。

    在SceneKit的
    场景图中
    
    // Editor - Convert to SceneKit file format...