タグ付けされた質問 「voxels」

VOlumetric piXEL(ボリュームピクチャエレメント)。ボリュームデータを値の通常のグリッドとして保存する方法。このタグは、ボクセルに関する質問で使用する必要があります。

6
Minecraft風のボクセルの世界を最適化するにはどうすればよいですか?
Minecraftの素晴らしい大きな世界は、クアッドコアと肉付きのグラフィックカードを使用しても、ナビゲートが非常に遅いことがわかりました。 Minecraftの遅さは次の原因によるものと思われます。 Java。空間分割とメモリ管理がネイティブC ++で高速であるため。 弱い世界分割。 私は両方の仮定で間違っている可能性があります。しかし、これは大きなボクセルの世界を管理する最良の方法について考えさせられました。それは、ブロックは、世界の任意の部分に存在することができる真の3D世界は、であるように、それは大きな3Dアレイ基本的には[x][y][z]世界の各ブロックタイプを有する(すなわちBlockType.Empty = 0、BlockType.Dirt = 1等) このような世界をうまく機能させるには、次のことが必要だと思います。 さまざまなツリー(oct / kd / bsp)を使用して、すべてのキューブを分割します。三角形ごとではなくキューブごとにパーティション分割できるため、oct / kdの方が適しているようです。 ユーザーに近いブロックが背後のブロックを難読化し、それらをレンダリングすることを無意味にする可能性があるため、いくつかのアルゴリズムを使用して、現在どのブロックが見えるかを判断します。 ブロックオブジェクト自体を軽量にしておくと、ツリーにすばやく追加したり削除したりできます。 これに対する正しい答えはないと思いますが、このテーマに関する人々の意見を見てみたいと思います。 大きなボクセルベースの世界でパフォーマンスをどのように改善しますか?

3
ボクセル地形エンジンはどのように作られていますか?
数日前、ボクセル地形と呼ばれるものを見つけましたが、それらはかなりクールだと思います。しかし、それらを生成するものは知りません。モデリングソフトウェアでモデリングしますか、それともハイトマップのようなものを使用しますか?私はウィキペディアで、ボクセルは3Dピクセルまたは体積ピクセルのようなものだと読みました。 ボクセルテレインを作成した後、これらのボクセルを取得して破壊可能/掘削可能にするにはどうすれば よいですか? 以下に基づいてベストアンサーを選択します。 コードとアルゴリズム。できればC#に基づく 説明。私はアルゴリズムの初心者ですが、オブジェクト指向プログラミングには非常に精通しています 段階的なデモ。コンセプトだけでなく、方向性。 ダイアグラム/イラスト。いいえ、他のエンジンのスクリーンショットではありません。 これは複雑な問題であることを知っています。しかし、助けてくれてありがとう! いいえ、Minecraftのクローンを作成しようとはしていません。 編集 あなたの多大な助け(特にニック・ウィギル)に感謝します!これが私がなんとかしてやったことです(進行中の作業)。


7
ボクセル/マインクラフトタイプのゲームのレンダリング速度を改善するにはどうすればよいですか?
Minecraftの独自のクローンを作成しています(Javaで作成されています)。今はうまく機能します。40メートルの視聴距離で、MacBook Pro 8,1で60 FPSを簡単に達成できます。(Intel i5 + Intel HD Graphics 3000)。しかし、視距離を70メートルにすると、15〜25 FPSにしか達しません。実際のMinecraftでは、問題なく遠方(= 256m)に表示距離を置くことができます。だから私の質問は、ゲームをより良くするために何をすべきですか? 私が実装した最適化: ローカルチャンクのみをメモリに保持します(プレーヤーの視聴距離に応じて) 錐台カリング(最初にチャンクで、次にブロックで) ブロックの実際に見える面のみを描く 可視ブロックを含むチャンクごとのリストを使用します。表示されるチャンクは、このリストに追加されます。それらが非表示になると、このリストから自動的に削除されます。ブロックは、隣接するブロックを構築または破壊することにより、見えなくなります。 更新ブロックを含むチャンクごとのリストを使用します。表示可能なブロックリストと同じメカニズム。 newゲームループ内ではステートメントをほとんど使用しません。(私のゲームは、ガベージコレクターが呼び出されるまで約20秒実行されます) 現在、OpenGL呼び出しリストを使用しています。(glNewList()、glEndList()、glCallList())ブロックの種類の各側に。 現在、私は照明システムを使用していません。私はすでにVBOについて聞いたことがあります。しかし、私はそれが何であるかを正確に知りません。ただし、それらについてはいくつか調査します。パフォーマンスが向上しますか?VBOを実装する前にglCallLists()、呼び出しリストのリストを使用して渡したいと思います。代わりに千回使用しglCallList()ます。(実際のMineCraftはVBOを使用していないと思うので、これを試してみたいと思います。正しいですか?) パフォーマンスを改善する他のトリックはありますか? VisualVMプロファイリングはこれを私に示しました(わずか70フレームのプロファイリング、70メートルの視聴距離): 40メートル(246フレーム)のプロファイリング: 注:別のスレッドでチャンクを生成しているため、多くのメソッドとコードブロックを同期しています。ゲームループでこれを行う場合、オブジェクトのロックを取得することはパフォーマンスの問題だと思います(もちろん、ゲームループのみがあり、新しいチャンクが生成されない時間について話します)。これは正解? 編集:いくつかのsynchronisedブロックといくつかの他の小さな改善を削除した後。パフォーマンスはすでにはるかに優れています。70メートルの新しいプロファイリング結果は次のとおりです。 それがselectVisibleBlocksここの問題であることはかなり明らかだと思います。 前もって感謝します! マルティン 更新:いくつかの追加の改善(for eachの代わりにforループを使用する、ループ外で変数をバッファリングするなど)後、60の距離を表示できるようになりました。 できるだけ早くVBOを実装するつもりだと思います。 PS:すべてのソースコードはGitHubで入手できます:https : //github.com/mcourteaux/CraftMania


3
ボクセルレンダリングの場合、より効率的なものは何ですか:既製のVBOまたはジオメトリシェーダーですか?
かなり静的なボクセル配列を考えると、より効率的です:CPUを使用してVBOを事前に生成し、ボクセルフェイスをレンダリングします(現時点では、マーチングキューブのような高度なレンダリング形式は無視します)。その場で顔? 変化するボクセルを更新することについてはそれほど心配していませんが、もちろんVBOを再構築する必要がないため、GPUバージョンの利点です。また、GSアプローチはもう少しモダンだと感じています:) 一方、最新のGPUでGSがラスタライズパイプラインと実際にどのように機能するかについては詳しく見ていない。頂点を一種のストリームキャッシュに出力しますか、それとも頂点が通常のGPUメモリに書き込まれますか?後者の場合、オンザフライで生成すると、利用可能な帯域幅と処理能力が残りのGPUタスクから減少する可能性があり、CPUで実行する方が有益です。

6
無料のボクセルエディター?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 6年前に閉鎖されました。 誰もが優れた無料のボクセルエディタやボクセルからメッシュへのコンバータを知っていますか?
25 tools  models  editors  voxels 

4
ボクセルゲームでブロックを選択するためにレイをキャストします
ブロックで作られたMinecraftのような地形でゲームを開発しています。これで基本的なレンダリングとチャンクの読み込みが完了したので、ブロック選択を実装したいと思います。 したがって、私は一人称カメラが直面しているブロックを見つける必要があります。シーン全体を投影解除すると聞いたことがありますが、それはハッキリと聞こえ、正確ではないので、私はそれに反対しました。どういうわけか、視線方向に光線を投げることができましたが、ボクセルデータ内のブロックとの衝突をチェックする方法がわかりません。もちろん、ゲームロジック操作を実行するには結果が必要なので、この計算はCPUで実行する必要があります。 それでは、どのブロックがカメラの前にあるかをどのようにして見つけることができますか?それが望ましい場合、どのように光線を投じて衝突を確認できますか?

3
Minecraftのようなエンジン用に浮遊陸地を生成するにはどうすればよいですか?
XNAでMinecraftのようなエンジンを作成しています。私がやりたいのは、このビデオに示すような浮島を作成することです。 http://www.youtube.com/watch?v=gqHVOEPQK5g&feature=related ワールドジェネレーターを使用してこれをどのように複製しますか?Perlinノイズアルゴリズムを使用する必要がありますか?そのような土地を作るのにどのように役立つかわかりません。 以下は、私が使用しているパーリンノイズジェネレーターのコードです。 private double[,] noiseValues; private float amplitude = 1; // Max amplitude of the function private int frequency = 1; // Frequency of the function /// <summary> /// Constructor /// </summary> /// public PerlinNoise(int freq, float _amp) { Random rand = new Random(System.Environment.TickCount); noiseValues = new double[freq, …

2
これらのボクセルデータファイル形式の長所と短所は何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 7か月前に閉鎖されました。 .VXL .VOX .KVX .KV6 .V3A .V3B 上記のいずれかを使用する価値があるかどうか、または自分でロールバックする必要があるかどうかを判断しようとしています。重要度の決定要因は次のとおりです。 ボクセルデルタまたは数値変換記述を使用した、アニメーションサポート(ボクセルに関してはこれが難しい側面であることは承知しています)。 シンプル(または少なくとも簡潔な形式) 圧縮 私の知る限り、Tiberian Sun VXL形式はアニメーション用に設計された唯一の形式ですが、Voxelstein3Dの名声のKen Silvermanは、VXLはアニメーションをサポートしていないと主張しました(彼の言葉では)。したがって、ボクセルデータのファイル拡張子の明らかな選択のように思えるので、2つの異なる.VXL形式がないのではないかと思います...医療画像のコンテキストからかもしれません。 ボクセル形式の確かな経験を持つ人が来て、彼らの経験で実際の長所と短所についてコメントする必要があります。この質問は、JPGとPNGとGIFを比較するのと同じ方法で検討してください。

4
ボクセル地形を表すためにどのデータ構造を使用する必要がありますか?
ボクセルに関するウィキペディアのページによると、「[...]ボクセルの位置は、他のボクセルとの相対的な位置(つまり、単一のボリュメトリックイメージを構成するデータ構造内の位置)に基づいて推測されます。」 そのようなデータ構造をどのように実装する必要がありますか?私は八分木について考えていましたが、聞いたことがない何か他のものがあるかどうか疑問に思っています。

6
無制限の詳細は本当ですか?
Unlimited Detailsの多くの側面Unlimited Detail Technologyは、入門的な段落でさえ、私には疑わしいようです(無制限という言葉の用法のため): Unlimited Detailは、リアルタイム3Dグラフィックスを作成するための新しいテクノロジーです。Unlimited Detailは、無制限のポイントクラウドデータをリアルタイムで処理でき、これまでにない最高レベルのジオメトリを提供できるため、既存の3Dグラフィックスシステムとは異なります。 上記の引用は、もはや存在しないUnlimited Detail Technology Site からのものです(2011年のarchive.orgスナップショット) 私の質問は、この無制限の詳細技術は実際に存在するのでしょうか?そして、もしそうなら、なぜゲームで現在使用されていないのですか? 無制限の詳細技術への他の参照: Rock Paper Shotgunに関する記事 Game Trailers.comのビデオデモ The Creator(Bruce Dell)とのインタビュー ダウンロードチームに関する記事 更新 Unlimited Detailは最近、新しいYouTubeビデオをリリースしました。私はもう確信していません。Notch(彼はそれが詐欺だと考えている)と同様に、私はそれについてブログ記事を書いた。
17 3d  voxels  point-cloud 

1
ボクセル地形に応力/ひずみ力学を実装する方法は?
私は地形がボクセルに分割されるMinecraftのような世界を開発している最中です。しかし、風景の不安定な構成が予想どおりに崩壊することも望んでいます。たとえば、オーバーハングが大きすぎると、「高応力」ボクセルで破壊されて破損し、非対称に侵食された基部を持つピラー構造が破損します。私は、地形の各ボクセルに「応力ベクトル」フィールドを追加し、次のことを行うことを考えていました(擬似コード): foreach voxel in terrain foreach neighbor in voxel.neighbor_voxels() if magnitude(voxel.stress - neighbor.stress) > stressThreshold detach_voxels(voxel, neighbor) しかし、問題は、これらの個々のストレスをどのように計算するかわからないことです。ボクセル単位で応力を計算するために使用できる、ボクセル離散化に特化したFEAベースのアルゴリズムはありますか?または、私はこれにすべて間違っていますが、これを行う他の方法がありますか?

1
滑らかなボクセル地形
個人的なプロジェクトとして、私はCastle Storyの滑らかな地形のような地形を作成する地形ジェネレーターを作成しようとしています。 あなたがそれを見たことがないなら、ここに: ご覧のとおり、ブロックと「スムーズ」ブロックの組み合わせです。 この外観をエミュレートするために私が試みたのは、各サーフェスブロックにミニハイトマップを与えることです。これは通常は機能しますが、いくつかの問題があり、次のような地形が生じます。 問題は、各ブロックが1x1x1であるが、特定の場所の高さがマイナスまたは> 1である場合があることです。その場合、クリップして、高さを0または1に設定します。 私が意味することをよりよく説明するために、図を示します。 高さを生成するために、基本的に次のことを行います。 genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = Block.Grass; b.HasHeightMap = true; // generate heightmap for(int ix = …

4
Minecraftスタイルのゲームでオクルージョンを使用してボクセルベースの照明を実装するにはどうすればよいですか?
C#とXNAを使用しています。私の現在の照明のアルゴリズムは、再帰的な方法です。ただし、5秒ごとに1つの8x128x8チャンクが計算されるほど高価です。 暗闇の可変シャドウを作成する他の照明方法はありますか? または、再帰的な方法は良いですか、おそらく私はそれを間違っていますか? 再帰的なものは基本的に高価なようです(チャンクごとに約25kブロックを通過させる)。レイトレーシングに似た方法を使用することを考えていましたが、これがどのように機能するかわかりません。私が試した別のことは、リストに光源を保存し、各ブロックが各光源までの距離を取得し、それを使用して正しいレベルに照明することでしたが、照明は壁を通り抜けます。 私の現在の再帰コードは以下です。これは、太陽光とトーチライトをクリアして再度追加した後、チャンク内の光レベルがゼロでない任意の場所から呼び出されます。 world.get___atこのチャンクの外部のブロックを取得できる関数です(これはチャンククラスの内部にあります)。Locationは、のような独自の構造ですがVector3、浮動小数点値の代わりに整数を使用します。light[,,]チャンクのライトマップです。 private void recursiveLight(int x, int y, int z, byte lightLevel) { Location loc = new Location(x + chunkx * 8, y, z + chunky * 8); if (world.getBlockAt(loc).BlockData.isSolid) return; lightLevel--; if (world.getLightAt(loc) >= lightLevel || lightLevel <= 0) return; if (y < 0 || …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.