Blenderで作成されたメッシュをSceneKitで使用するためにCOLLADA/.dae形式を使用してエクスポートできますが、iOSデバイスにテクスチャが表示されません。
また、OS Xでのプレビューでは、BlenderからエクスポートされたCOLLADAファイルは開かれませんが、サイドバーのプレビューではメッシュが表示されます。これを機能させるためにエクスポート時に必要なオプションは何ですか?
最初にscnassetsフォルダーを作成します(必須ではありませんが便利です)
デスクトップにフォルダを作成し、「。scnassets」の拡張子を付けます
Collada(.dae)ファイルを、使用するテクスチャと一緒に配置します。
フォルダをプロジェクトにドラッグし、通常どおりコピーとして保存します。
Scnassetsフォルダーをクリックすると、「y」上軸に変換するためのチェックボックスが表示されます(チェックされていない場合)。
シーンモデルへのテクスチャの割り当て
Xcodeでプロジェクト内のcollada(.dae)ファイルをクリックします。
シーンとその左側にカメラ、ライト、マテリアルなどのリストが表示されます。これはあなたのシーンツリーです。
[マテリアル]タブを開き、マテリアルの1つをクリックします。
検査ウィンドウの右側にある青いボール型のアイコン(マテリアルインスペクター)をクリックして、その1つのマテリアルの拡散や鏡面反射などを表示します。
[拡散]タブをクリックすると、開いたときにプロジェクト内の色とテクスチャのオプションが表示されます。 3Dプログラム内でモデルで使用したテクスチャを選択します。 3DプログラムでUVラップを適切にアンラップしている限り、シーンビュー内に即座に適用されます。
シーンの読み込み後にマテリアルを変更したい場合はどうすればよいですか?質問してくれてうれしいです!
これを行うには、SCNSceneSourceクラスのentryWithIdentifierメソッドを使用する必要があります。 Swift素晴らしいので、ここで使用します!ここで...
そのようにあなたのシーン(.dae)のURLを取得してください...
let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
次に、そのURLを使用してみましょう...
let source = SCNSceneSource(URL: url, options: nil)
.daeをクリックすると、シーングラフの下にアイテムのリストが表示されます。そのうちの1つがジオメトリです。そのすぐ右側にティーケトルがあります。ここではその名前を使用します。ジオメトリの名前がGeoだとします。そのように使用してください...
let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
これで、yourGeomertyというSCNNodeにアタッチされたソースができました。このようなUIColorで新しいマテリアルを作成しましょう...
let newMaterial = SCNMaterial()
newMaterial.diffuse.contents = UIColor.redColor()
最後に、古いマテリアルを新しいマテリアルに切り替えます...
yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
複数の資料がある場合は、それや他のインデックスを試してみてください。 UIImageクラスを使用して、色の代わりに別のテクスチャを使用することもできます。
[〜#〜] tip [〜#〜] scnassetsフォルダーに何かを追加または削除する場合は、xcodeではなくプロジェクトフォルダーに移動します。これは私が理解するのに少し時間がかかったので、私はみんなの手間を省くことができると思いました。
Colladaファイルはテクスチャを埋め込みません。テクスチャへの参照のみが含まれます。プレビューで開いたときにcolladaファイルからテクスチャに到達できることを確認し、アプリをビルドするときにアプリバンドルにテクスチャを含めるようにしてください。