2

我有一个包含 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
    }

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

4

3 回答 3

5

在将 3D 模型从 SketchUp Make 2017(我使用简单模板 -用于绘图的米)导出到 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 场景文件的新文件;将其保存在文件夹中;然后从您的项目中删除文件 ( Remove reference ),以便仅在文件夹中引用它。.scnassets.scnassets

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

  5. 将文件嵌入.dae场景中并修复轴:

    一个。打开.scn文件。

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

    C。在Node Inspector的Transforms下,选择Editing 空间Local

    d。将本地位置设置为x : 0y : 0z : 0(或任何需要的位置)。

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

    F。将本地Scale设置为x : 0.0254 , y : 0.0254 , z : 0.0254。我假设.dae文件导入需要以英寸为单位的大小。

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

于 2017-09-28T14:15:53.477 回答
1

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

于 2017-07-04T08:13:56.007 回答
0

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

于 2017-06-28T12:23:24.627 回答