2016-01-08 22 views
5

Zaimportowałem plik OBJ Wavefront z adresu URL i teraz chciałbym wstawić go do mojej sceny (SceneKit) w mojej aplikacji na iOS 9 (w Swift). Do tej pory zrobiłem:Jak przekonwertować plik Wavefront OBJ do węzła SCNNode za pomocą Model I/O

let asset = MDLAsset(URL: localFileUrl) 
print("count = \(asset.count)") // 1 

Zostanie doceniona jakakolwiek pomoc przy konwersji do SCNNode. Według do docs Apple:

Model I/O can share data buffers with the MetalKit, GLKit, and SceneKit frameworks to help you load, process, and render 3D assets efficiently.

Ale nie jestem pewien, w jaki sposób dostać się bufor z MDLAsset w SCNNode.

Odpowiedz

7

To całkiem proste, ponieważ wiele z klas ModelIO już się mostuje. Robiłem import ModelIO, co dało mi dostęp do wszystkich klas ModelIO i podobnie jak import SceneKit, co dało mi klasy SceneKit, ale brakowało mi import SceneKit.ModelIO, aby wprowadzić obsługę SceneKit dla Modelio.

let url = NSURL(string: "url-to-your-obj-here") 
let asset = MDLAsset(URL: url!) 
let object = asset.objectAtIndex(0) 
let node = SCNNode(MDLObject: object) 

Łatwy jak ...

+4

uwaga, że ​​'+ [SCNScene sceneWithURL: opcje: error:]' będzie również działać. – mnuages

+2

Należy również zauważyć, że niektóre koszty parsowania/importowania OBJ. Jeśli jest to zasób, który wysyłasz do aplikacji, zastanów się najpierw, czy nie przekształcić go na '.scn' w Xcode (lub na własne narzędzia uruchomione na Macu, używając Model I/O). – rickster

+0

Dzięki @mnuages – guru