swift - 如何在将场景保存/导出为 .dae 格式时保留 SceneKit 中纹理的平铺信息(contentTransform 属性)?

标签 swift macos scenekit

我在将场景导出为 mac 中的 .dae 格式时遇到问题。我创建了一个包含前墙、左墙和右墙的场景,以及一个地板和三个 3D .dae 模型。对于墙壁,我设置了这样的纹理。

wall.geometry!.firstMaterial!.diffuse.contents = "art.scnassets/wall.jpg"
wall.geometry!.firstMaterial!.diffuse.contentsTransform = SCNMatrix4Mult(SCNMatrix4MakeScale(8, 2, 1), SCNMatrix4MakeTranslation(0, 1, 0));
wall.geometry!.firstMaterial!.diffuse.wrapS = SCNWrapMode.Repeat;
wall.geometry!.firstMaterial!.diffuse.wrapT = SCNWrapMode.Mirror;

这是我运行应用程序时的样子。 enter image description here

现在,我想将其导出为 .dae 格式,以便 Blender 或 3DS max 可以直接将其作为输入并从中渲染高质量图像。这是我编写的用于将场景导出为 .dae 格式的代码。

scnView.scene!.writeToURL(NSURL(fileURLWithPath: "/Users/srikanth/Mac/TestRender/TestRender/testrender.dae"), options: nil, delegate: nil, progressHandler: nil)

导出的文件看起来像这样。 enter image description here

这是我用作墙壁纹理的图像,它通过墙壁 Material 的 contentTransform 属性在水平和垂直方向重复。

enter image description here

.dae 导出的文件具有除应用于 Material 的 contentsTransform 属性之外的所有信息。我想在导出时也保留此信息。自相矛盾的是,如果我将同一个场景导出为.scn格式,contentsTransform属性值会保留,但唯一的问题是我没有找到任何工具或软件可以读取 Xcode 以外的 .scn

请帮助我了解如何在导出为 .dae 格式或帮助我读取 .scn 文件的任何插件或软件时保留 Material 的 contentTransform 属性。

最佳答案

我还没有尝试过,但我想知道您使用模型 I/O 导出是否会更好。每WWDC 2015 Model I/O talk ,您可以编写 STL 和 OBJ,但显然不能编写 DAE。

import SceneKit.ModelIO

let asset = MDLAsset(SCNScene: scene!)
asset.exportAssetToURL

关于swift - 如何在将场景保存/导出为 .dae 格式时保留 SceneKit 中纹理的平铺信息(contentTransform 属性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013391/

相关文章:

快速,旋转 ImageView 并将旋转 ImageView 设置为 uibutton

eclipse - 显示 "Accept Permanently"对话框时,子片段忽略 "Accept Digital Certificate"

ios - 在 SceneKit 中指向正确的方向

ios - 在设备上运行时没有子节点

ios - 无法使用物理形状的凹面表示

ios - 为具有圆角的 UIImageView 创建阴影?

ios - 从结构中删除重复项

ios - 如何在另一个函数中执行任务并随着任务的进行从那里更新 UI?

ruby - 如何在 Mac OS 上使用 ruby​​ 设置文件创建时间?

macos - OpenSSL 无法使用 gem ruby​​gems 或 brew 或 bundle 加载库