![](/img/trans.png)
[英]How to use DAE file with different Scene Graphs in iOS SceneKit
[英]How can I use OBJ file or CTM file instead of DAE file in SceneKit?
我曾經在IOS上使用openGL和metal渲染3d場景,我使用的文件格式是OBJ和CTM。 這些天我正在嘗試Scene Kit。 看來SceneKit只加載DAE文件。 我可以在Internet上找到的所有演示都使用DAE文件,我無法在其代碼中看到頂點和構面的數組。 如何加載OBJ文件或CTM文件而不是DAE文件?
它就像傳遞MDLAsset一個有效的URL一樣簡單。
private func nodeForURL(url: NSURL) -> SCNNode
{
let asset = MDLAsset(URL: url)
let object = asset.objectAtIndex(0)
let node = SCNNode(MDLObject: object)
return node
}
這不僅會正確加載.obj
文件,還會加載引用的.mtl
文件。
你可以通過編寫自己的導入器來做到這一點。 看一下SCNGeometry
, SCNGeometrySource
和SCNGeometryElement
。
編輯:啟動iOS 9.0和OS X 10.11 SceneKit可以打開OBJ文件或Model I / O支持的任何其他文件格式。 您可以使用以前存在的API來執行此操作(例如+sceneNamed:
+sceneWithMDLAsset:
或新的+sceneWithMDLAsset:
方法。
編輯:ModelIO現在可以加載OBJ文件。 我自己沒有試過這條路。 這個答案是在iOS 9和OS X 10.11之前編寫的:
SceneKit無法在iOS上加載DAE文件,實際上,它實際上是將DAE文件預編譯為iOS設備的內部格式。
如果你想將OBJ轉換為DAE,你可以在OS X上編寫一個簡單的導入器/導出器 - 在OS X上,SceneKit實際上會讀取OBJ文件(它沒有記錄,但它可以工作)並且會編寫DAE。
或者您可以在github上下載“Assimp”項目,如果您想嘗試自己閱讀OBJ,但是將它轉換為SceneKit對象會有一些工作。
從iOS 9 / OS X 10.11開始,您可以使用Model I / O的MDLAsset
導入OBJ文件(以及其他一些格式)。 如何將Wavefront OBJ文件轉換為具有模型I / O的SCNNode具有示例代碼。
有關支持的文件格式的更多信息:
SceneKit支持以下3D文件格式,可以使用Xcode中的場景編輯器將其導入.scn
文件:
DAE,OBJ,Alembic,STL和PLY文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.