我在将场景导出为 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;
现在,我想将其导出为 .dae 格式,以便 Blender 或 3DS max 可以直接将其作为输入并从中渲染高质量图像。这是我编写的用于将场景导出为 .dae 格式的代码。
scnView.scene!.writeToURL(NSURL(fileURLWithPath: "/Users/srikanth/Mac/TestRender/TestRender/testrender.dae"), options: nil, delegate: nil, progressHandler: nil)
这是我用作墙壁纹理的图像,它通过墙壁 Material 的 contentTransform 属性在水平和垂直方向重复。
.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/