[swift4] daeファイルをインターネットからダウンロードしてScenekitで配置

daeファイルをインターネットからダウンロードしてScenekitで配置するには以下の手順で実現できる

目次

daeファイルをコンバート

daeファイルはそのままインターネット上からダウンロードしてきてもiOS用にコンバートされていないため、予めコンバートしたものをインターネット上に配置しておく。

コンソールでdaeファイルがおいてあるフォルダに移動してから以下のコマンドでコンバートする

/Applications/Xcode.app/Contents/Developer/usr/bin/copySceneKitAssets ./ -o ./optimized

 

コンバートが正常に実行されると、指定フォルダ内にコマンドで指定した「./optimized」というフォルダができており、その中にコンバートされたdaeファイルが新しくできている。

 

参考サイト:

Dynamically load Collada files in SceneKit at runtime

ちなみに参考サイトでは、「product1.scnassets」フォルダを作成とあるが、実際はフォルダの名前は何でもよい。scnassetsがつかなくても動作する。

 

またdaeファイルのダウンロードは.dae形式ではダウンロードできないので、zip化してダウンロードしてからデバイス上で解凍する処理を経る必要があるので注意

[swift4] ダウンロードしたzipを解凍するSSZipArchive実装方法

 

scenekitでdaeファイルを使用する

ダウンロードしたdaeファイルをscenekit上で使用するには以下のコードで使用可能

filepathは保存してあるdaeファイルのURL。

頭にFile://がないと認識してくれないので注意。

let sceneSource: SCNSceneSource = SCNSceneSource(url: NSURL(string: "file://"+filepath)! as URL, options: nil)!
            
//identifier一覧をログ表示
print(sceneSource.identifiersOfEntries(withClass: SCNNode.self))
            
let node = sceneSource.entryWithIdentifier("identifier", withClass: SCNNode.self) as! SCNNode
scene.rootNode.addChildNode(node)

もしくは

let scene = SCNScene(named: "file://"+filepath)
let node = scene!.rootNode.childNodes[0]
scene.rootNode.addChildNode(node)

もしくは

let node:SCNReferenceNode = SCNReferenceNode(url: NSURL(string: "file://"+filepath)! as URL)!
node.load()
scene.rootNode.addChildNode(node)

2 thoughts on “[swift4] daeファイルをインターネットからダウンロードしてScenekitで配置

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です