Ios 从Blender导出到COLLADA/.dae格式以在SceneKit中使用时包括纹理
我可以使用COLLADA/.dae格式导出Blender中创建的网格,以便在SceneKit中使用-但是iOS设备上没有显示纹理Ios 从Blender导出到COLLADA/.dae格式以在SceneKit中使用时包括纹理,ios,blender,collada,scenekit,Ios,Blender,Collada,Scenekit,我可以使用COLLADA/.dae格式导出Blender中创建的网格,以便在SceneKit中使用-但是iOS设备上没有显示纹理 此外,OS X上的预览不会打开从Blender导出的任何COLLADA文件,但侧栏预览会显示网格。导出时需要哪些选项才能执行此操作?Collada文件不嵌入纹理,它们只有对纹理的引用。确保在预览中打开collada文件时可以从该文件访问纹理,并确保在构建应用程序时将纹理包含在应用程序包中。首先创建一个scnassets文件夹(不是必需的,但很有用) 在桌面上创建文件夹
此外,OS X上的预览不会打开从Blender导出的任何COLLADA文件,但侧栏预览会显示网格。导出时需要哪些选项才能执行此操作?Collada文件不嵌入纹理,它们只有对纹理的引用。确保在预览中打开collada文件时可以从该文件访问纹理,并确保在构建应用程序时将纹理包含在应用程序包中。首先创建一个scnassets文件夹(不是必需的,但很有用)
let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
let newMaterial = SCNMaterial()
newMaterial.diffuse.contents = UIColor.redColor()
yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
let source = SCNSceneSource(URL: url, options: nil)
let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
let newMaterial = SCNMaterial()
newMaterial.diffuse.contents = UIColor.redColor()
yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
let newMaterial = SCNMaterial()
newMaterial.diffuse.contents = UIColor.redColor()
yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
let newMaterial = SCNMaterial()
newMaterial.diffuse.contents = UIColor.redColor()
yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
如果要在scnassets文件夹中添加或删除某些内容,请导航到项目文件夹,而不是xcode。这件事我花了一段时间才弄明白,所以我想我可以省去大家的麻烦 3件事我必须做才能让它工作
注意c3d格式。使用该选项,您的游乐场现在也可以识别dae。(另一个注意事项:如果您想在游乐场中使用dae,您需要将其放入游乐场的resources文件夹)我认为您需要告诉我们有关如何导出这些纹理的更多信息。此外,如果预览甚至无法打开纹理,那么这听起来更像是Blender的问题,而不是Scene Kit的问题。我一直在四处寻找关于如何从Blender导出到SceneKit的教程或说明,但没有真正找到任何内容。这段文字很有趣,但很老:到目前为止,我刚刚尝试从Blender导出到COLLADA,更改了一些有关COLLADA的导出选项-起初它没有导出我正在玩的一个纹理文件,但后来让它这样做了-它将它放在同一个文件夹中。不过,我得到的结果与我的问题一样。如果你在Xcode中启动scenekit游戏,模板“ship”在“ship.dae”中定义,打开xml文件可以发现苹果使用“scenekit Collada Exporter v1.0”导出它-这看起来像是他们自己的工具。让你想知道他们首先导出的是什么工具/格式,可能是3dsmax、Maya或其他东西。Collada版本为1.4.1,与Blender相同。我会继续,看看有什么不同…还有一个注意事项:苹果的ship.dae有Y向上,Blender有Z向上。也许它会破坏东西。我知道我在Blender Jonny上为你回答了这个问题,但我想我也会把它放在这里。只是做了一个更新,演示加载场景后如何切换材质。很抱歉延迟。这是正确的方法。Blender并没有以OSX/iOS能够理解的方式编写COLLADA。只有在Xcode 3d编辑器中手动设置纹理并保存后,.dae文件才能在预览中打开并与SceneKit一起使用。谢谢手头有足够的时间,可以比较Xcode和Blender编写的COLLADA格式。然后可能为Blender编写一个插件或类似插件,允许Blender首先编写与SceneKit兼容的COLLADA,这将大大节省时间