2016-12-02 10 views
1

私はココア/ iOSのプロジェクトに取り組んでいます。 私は、Scenekitシーンを管理する一般的な迅速なクラスを持っています。iOS用の大きなSCNGeometry SceneKit

大きな地形を描画したい(約5000x5000ポイント)。 私は4点につき2つの三角形を持っています。

これらの点を6-Float構造体(x、y、z、r、g、b)に格納することに決めました。私は空の配列を作成しようとしたり、大きな配列を最初から割り当てようとしました。同じ問題がありました。 私は、indices配列に対してIntデータ型を扱います。 プロジェクトはCocoaでうまく動作しますが、iOSでメモリエラーが発生します。私はこれが、頂点のための大きく連続した配列を持つ必要があるためだと思います。

ジオメトリオブジェクトのチャンクをいくつか作成しようとしましたが、シーンキットは以前のバッファを消去しても好きではありません。

この場合のベストプラクティスは何ですか?

メモリアレイ/バッファの代わりにマスストレージに頂点を格納する方法はありますか?ピカピカの新しい5Kディスプレイ上のピクセルがあるよう

おかげ

+0

コードを表示します。 –

答えて

1

だから... ... 2倍の地形ポイント?これは、iOSで一度に使用できる膨大な量のメモリです。そして、あなたはiOSデバイスでその解像度を見ることができません。

それでは、どの程度:

    は、小さなタイルに独自のSCNNodeの各をご2500万ピクセル地形をブレーク
  • 。タイルをループして、1つのSCNNodeを作成し、そのタイルの6-Float配列をスローして、次に移動します。
  • SCNLevelOfDetailを使用すると、それらのノードの非常に単純なバージョンを生成し、非常に遠くにあるときに表示することができます。
  • OS Xで構築作業を行います。シーンをアーカイブします(NSSecureCoding)。そのシーンをiOSアプリにバンドルします。
  • メインのSCNSceneで参照ノードを使用し、各タイルを別々のSCNSceneファイルとしてアーカイブすることを検討してください。
  • 三角形ではなく、三角形のストリップを使用して、ジオメトリを作成していることを望みます。
+0

実際に私は高解像度の場面を望んでいません、私はこの地形でカメラを動かすことが大好きで、世界は大きいです – Bob5421

+0

実際に私はいつバッファを解放したり、再利用できるかわかりません。ノードがシーンに追加されたら?私のインデックスは常に三角形のストリップです:scngeometryオブジェクトのインデックス配列なしで動作する方法はありますか? – Bob5421

+0

私はいくつかのクラスを持っているので、私のコードを表示することは容易ではありません。私はあなたが言ったことを試みたが、私はまだメモリエラーがある – Bob5421

関連する問題