[swift4] daeファイルをインターネットからダウンロードしてScenekitで配置
daeファイルをインターネットからダウンロードしてScenekitで配置するには以下の手順で実現できる
目次
daeファイルをコンバート
daeファイルはそのままインターネット上からダウンロードしてきてもiOS用にコンバートされていないため、予めコンバートしたものをインターネット上に配置しておく。
コンソールでdaeファイルがおいてあるフォルダに移動してから以下のコマンドでコンバートする
/Applications/Xcode.app/Contents/Developer/usr/bin/copySceneKitAssets ./ -o ./optimized
コンバートが正常に実行されると、指定フォルダ内にコマンドで指定した「./optimized」というフォルダができており、その中にコンバートされたdaeファイルが新しくできている。
参考サイト:
ちなみに参考サイトでは、「product–1.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)
Pingback: [swift4] scenekit上に読み込んだdaeノードにテクスチャーを貼り付ける | BlueBear I/O
Pingback: [xcode] インターネットからダウンロードしたdaeファイルのサイズを適切に行う方法 | BlueBear I/O