【问题标题】:Loading SketchUp Models in SceneKit for ARKit App在 SceneKit 中为 ARKit 应用程序加载 SketchUp 模型
【发布时间】:2017-09-29 21:05:11
【问题描述】:

我有一个包含 car.dae 模型的 scene.scn 文件。这是图片:

我有以下代码来加载场景。

override func viewDidLoad() {
        super.viewDidLoad()

        // Set the view's delegate
        sceneView.delegate = self

        // Show statistics such as fps and timing information
        sceneView.showsStatistics = true

        // Create a new scene

        let scene = SCNScene(named: "art.scnassets/scene.scn")!

        // Set the scene to the view
        sceneView.scene = scene
    }

我没有看到场景中正在装载的汽车。有任何想法吗?

【问题讨论】:

  • 这辆车有多大?如果您正在查看截取屏幕截图的 Xcode 场景编辑器,则检查器中应该有边界框信息。此外,您可能希望重新调整模型的方向,使 Y 向上。
  • 我可以让汽车显示出来。我卸下了相机,现在它可以工作了!另一个问题是汽车随着用户的移动而移动。我希望将汽车固定在一个位置,这样我就可以四处走动并从不同的角度观察汽车。
  • 我也有同样的问题。我认为这与我的模型有关,因为其他 scn 文件也可以工作。
  • 我修好了。问题是大小。我调整了模型的比例,做了很多,然后它开始正常工作了。

标签: ios scenekit arkit


【解决方案1】:

在将 3D 模型从 SketchUp Make 2017(我使用 Simple Template - Meters 进行绘图)导出到 Xcode 9.0 时,以下工作流程为我生成了可重复的结果:

  1. 在 Xcode 中,创建 SceneKit 资产目录:创建资产目录并将扩展名更改为 .scnassets,然后再保存。

  2. 在 Xcode 中,在资产目录设置中,确保 始终使用 Y-up 轴选中。这个设置有问题;虽然它在运行时有效,但场景编辑器不会考虑它。

  3. 在 SketchUp 中,使用 Export 3D Model... 导出模型并选择文件格式 COLLADA File (*.dae)。将其导出到资产目录的.scnassets 文件夹(或其子文件夹)。

    提示:如果您导出到其他位置,请使用 Finder 复制或移动文件。不要将导出的模型拖放到 Xcode,因为它只会创建对模型的引用,并且您会在途中丢失纹理,因为它们在 .dae 文件中通过相对路径引用。

  4. 在 Xcode 中,创建一个 SceneKit 场景文件:首先,选择项目并创建一个 新文件,其中包含模板 SceneKit 场景文件;保存在.scnassets文件夹中;然后从您的项目中删除该文件(删除引用),使其仅在.scnassets 文件夹中被引用。

    提示:您不能直接在资产目录中创建 .scn 文件,因为新建文件功能会创建场景编辑器不会创建的空文件'无法识别,即使您使用 .scn 扩展名重命名它。

  5. 在场景中嵌入.dae文件并修复坐标轴:

    一个。打开.scn 文件。

    b.将.dae 文件拖放到场景中。这将创建对模型的引用。确保选择了对模型的引用。

    c。在 Node InspectorTransforms 下,选择 Editing spaceLocal

    d。设置本地Positionx0y0z0(或任何需要的位置)。

    e。设置局部欧拉角为x-90y0, z:0。现在,对象按预期定向,例如在场景编辑器底部的工具栏中选择Front 视点时,会显示其正面。

    f。设置本地Scalex0.0254y0.0254z0.0254。我假设 .dae 文件导入需要以英寸为单位的大小。

    g.仍然在 Node Inspector 中,在 Transforms 下,选择 Editing spaceWorld .检查边界框的大小。我假设这里使用米作为测量单位。保存更改。

【讨论】:

    【解决方案2】:

    Xcode 的 scnassets 检查器中有一个标志来设置哪个轴“向上”。在 SceneKit 中,Y 向上。 IIRC SketchUp 默认使用 Z up。

    【讨论】:

      【解决方案3】:

      提示:我发现对于 SketchUp 创建的所有 collada (dae) 模型,您需要在场景编辑器中将 Euler x 轴调整为 -90 为了在加载模型时以正确的方式向上。

      【讨论】:

      • 谢谢!但是你如何处理大小和 x、y 和 z 位置。这是一团糟。任何其他建议
      • 我正在使用的应用程序可以移动、向左或向右旋转、使用标准触摸屏手指手势手动缩放模型。这是在智能手机上操作 3D 模型的最佳方式。
      猜你喜欢
      • 2020-05-08
      • 2019-09-12
      • 2017-12-24
      • 1970-01-01
      • 2018-03-13
      • 2019-05-18
      • 2018-11-05
      • 2018-07-13
      • 2019-08-24
      相关资源
      最近更新 更多