iOS中.obj、.usdz、.dae和.scn格式之间的转化(思路清晰版)

文章讲述了在iOS开发中使用SceneKit库展示3D模型时遇到的格式问题,重点讨论了USDZ、.scn、.obj和.DAE格式之间的转换。作者提供了利用苹果的RealityConverter和Xcode工具将不同格式的3D模型转换为适用于SceneKit的.scn文件的方法,强调了转换的简便性。
摘要由CSDN通过智能技术生成

作者最近在写项目的过程中遇到了一些3d模型格式问题,故写下这篇文章记录一下解决问题的过程。

 

示例

如果我们想用SceneKit库来实现在默认背景中展示一个3D模型,大致可以这样写代码:

    var sceneView: SCNView!
    var scene: SCNScene!
    override func viewDidLoad() {
          super.viewDidLoad()
          // 创建一个SCNView
          sceneView = SCNView(frame: self.view.frame)
          self.view.addSubview(sceneView)
          // 自动启用默认照明
          sceneView.autoenablesDefaultLighting = true
          // 创建一个scene
          let scene = SCNScene(named: "art.scnassets/cup1.scn")!
          sceneView.scene = scene
          //允许相机控制
          sceneView.allowsCameraControl = true
      }

  很明显的看到,我们的scene接受的是一个.scn文件(即一个场景),那么我们在Maya或者3dsmax做出来的.dae、.obj为后缀的3d模型文件如何在我们项目中使用呢?经作者过一个晚上的苦肝,才发现原来方法很简单。

不同格式文件为什么能转化?

首先我们先来谈一谈为何这几个文件可以互相转化。

区别

  1. USDZ格式:USDZ是苹果公司开发的一种3D模型文件格式,用于在iOS和macOS设备上显示AR和VR内容。它是基于USD(Universal Scene Description)格式的,其中包含了模型、材质、动画和场景信息,以及用于显示和交互的代码。
  2. SCN格式:SCN是苹果公司用于在iOS和macOS设备上显示3D场景的格式。它是基于Collada格式的,其中包含了模型、材质、动画和场景信息,以及用于显示和交互的代码。
  3. OBJ格式:OBJ是一种开放的3D模型文件格式,用于在多个3D软件和游戏引擎中共享模型。它包含了模型、材质和纹理信息,但不包含动画和场景信息。
  4. DAE格式:DAE是一种开放的3D模型文件格式,也称为Collada格式。它可以包含模型、材质、动画和场景信息,以及用于显示和交互的代码。DAE格式被广泛应用于各种3D软件和游戏引擎中。

  综上所述,USDZ格式是为AR和VR应用而设计的,SCN格式是为苹果设备上的3D场景设计的,而OBJ和DAE格式是为多个3D软件和游戏引擎之间的模型共享而设计的。每种格式都有其特定的用途和优劣势,具体的选择应该根据实际应用场景来进行。

本质

  USDZ、.scn、.obj和.dae都是三维模型文件格式,它们的本质是描述三维模型的数据结构和存储方式。虽然这些格式之间有些许差异,但它们都是基于三维模型的顶点、面、材质和纹理等数据构成,描述了一个三维模型的完整信息。

  因此,这些格式之间可以通过转化工具进行转换,其本质是将三维模型的数据结构和存储方式从一种格式转换为另一种格式,而不会改变三维模型本身的形状和内容。这种转化通常是因为不同的3D软件或3D引擎支持不同的格式,或者因为不同的应用场景需要不同的格式。

转化方法

既然我们可以直接使用.scn文件于我们的项目中,那么我们的最终目的就是将其他格式的文件转为.scn文件,这里就不得不提苹果提供的几个强大工具了。

工具:

1.Reality Converter: 这款工具可以将.obj格式转换为.usdz格式

可以在苹果开发者官网搜索找到它.

 2.usdz工具:同样也是将.obj转为.usdz,即为上图中右下角的工具。

操作方法:

在终端输入以上命令,可以看到有两个路径,第一个路径为待转化的.obj文件,第二个路径为转化的.usdz目的路径。

3. xcode工具

这算是xcode中的一个彩蛋啦,在xcode中可以将.dae格式和.usdz格式直接转化为.scn格式,就能直接使用在项目中了.

操作方法:

 

总结一下,.dae和.usdz格式的文件可以直接在xcode中转成.scn格式,而.obj格式需要先通过Reality Converter或者usdz工具转化为.usdz格式,再由xcode转成.scn格式。

是不是非常简单方便呢?如果本文对你有帮助的话就点个赞➕关注吧,感谢支持!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值