参考ページ:
環境:
- macOS Catalina v10.15.3
- Xcode v11.3
- VRoid Studio v0.8.3
- Blender v2.82
1. VRoidStudioのモデルをBlenderに移動する
別の記事で書いています。コチラをご参照ください。
2. Blenderからモデルを出力する
- ファイル → エクスポート → Collada(デフォルト)(.dae)
Collada形式とは”COLLAborative Design Activity” の略。
読み方はコラーダ。らしいです。
3. 出力したデータの確認
- 出力ファイルが.daeの拡張子で出力できているか
- プレビューした時にグレー一色のモデルが表示されるか
Macのプレビューでモデルが表示されていない場合、おそらく出力に失敗しています。
(私は自分で追加変更したモデルがこの状態で少し悩みました)
4. Xcodeにモデルを追加する
- XcodeでSceneKitのプロジェクトを作成する(※1)
- ドラッグ&ドロップで画像の位置に.daeファイルを追加する
- 追加した.daeファイルを選択して、Editor → Convert to SceneKit file format (.scn)を実行する
- .scnファイルが出来上がります。Xcodeではこれを利用します。
※1: ここではプロジェクトの作成手順は載せません。
もしわからない方がいれば、上部の参考ページにやり方が載っていますのでそちらをご参照ください。
5. 実行してみる
// 書き換え
let scene = SCNScene(named: "art.scnassets/character.scn")!
// 以下はサンプルファイルのオブジェクトのためコメントアウト
// let ship = scene.rootNode.childNode(withName: "setar-001", recursively: true)!
// ship.runAction(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))
表示されました。
でも残念ながらテクスチャなどが反映されていません。
6. マテリアルの設定
- VRoidStudioからモデルをエクスポートした時に作成される「tex_******」の様なフォルダをXcodeに追加する。
- モデルのマテリアル情報プロパティに該当テクスチャを設定する
シェーディングタイプについて
Appleのドキュメントを見ると6種類のタイプがある。
テクスチャの種類からすると、blinn、phong、physicallyBasedのどれかになると思う。
パラメーターについて
テクスチャ名がパラメーター名に大体一致しているため、それを目安に設定する。
ここで詳しく書くと長くなるので、まとめる場合はまた別記事にします。
あ、あれ、くすんでる?影がさしているのが原因です。
影は必要ないので、光源を削除します。
// 以下の光源を追加しているコードを削除します。
// // create and add a light to the scene
// let lightNode = SCNNode()
// lightNode.light = SCNLight()
// lightNode.light!.type = .omni
// lightNode.position = SCNVector3(x: 0, y: 10, z: 10)
// scene.rootNode.addChildNode(lightNode)
//
// // create and add an ambient light to the scene
// let ambientLightNode = SCNNode()
// ambientLightNode.light = SCNLight()
// ambientLightNode.light!.type = .ambient
// ambientLightNode.light!.color = UIColor.darkGray
// scene.rootNode.addChildNode(ambientLightNode)
完成
無事Xcodeで動かすことができました。
それにしてもVRoidStudioのモデルが綺麗すぎる。