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

5
ゲームの俳優は自分自身を描く責任がありますか?
私はゲーム開発は初めてですが、プログラミングは初めてです。 私は(再び)JavaScriptのcanvas要素を使用してPongタイプのゲームで遊んでいます。 Paddle次のプロパティを持つオブジェクトを作成しました... width height x y colour 次のPongようなプロパティを持つオブジェクトもあります... width height backgroundColour draw()。 draw()現在、メソッドはをリセットしてcanvasおり、そこで問題が発生しました。 必要があるPaddleオブジェクトが持つdraw()その描画方法は責任、または必要があるdraw()のPongオブジェクトがその役者を描くための責任がある(私が間違ってる場合、私はそれが正しい用語であると仮定し、私を修正してください)。 私はのためにそれがadvantagousだろうと考え出しPaddle自体を描画するために、私は2つのオブジェクトをインスタンス化するように、PlayerとEnemy。それはでなかった場合Pongのdraw()、私は二度同様のコードを記述する必要があると思います。 ここでのベストプラクティスは何ですか? ありがとう。

2
ゲームのスペースパーティション分割の最新技術は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 長い間使用されていたBSPツリー、Octrees、Portalについて知っています。しかし、現代のゲームはまだこのシステムを使用していますか、それとも新しいものを使用していますか? 長所と短所で可能であれば、レンダリングと衝突検出を検討してください。
18 octree  bsp 

1
大きな地形メッシュを効率的にレンダリングする方法は?
最近、ゲームに地形を生成する最良の方法について考えている問題に悩まされています。別のプロジェクトでは、通常はハイトマップを使用したため、すべてのコアワークは使用されたエンジンに基づいていましたが、地形には正確に描画する必要がある数百万の特定のポリゴンがあるため、これは実行できません。また、それらの多くはYベクトルから解析できません(ポリゴンが下に隠れているため)。つまり、ハイトマップはここでは役に立ちません。この場合、COLLADAオブジェクトを使用する必要がありました。 誰かがBlenderのようなソフトウェア内でモデルを手動で分割するように言ったが、残念なことに、これらの地形は別のソフトウェアのチャンクで作成され、ゲームに読み込まれるため、これも不可能である(それはアイデアだ)。したがって、これは毎回手動でスライスすることを余儀なくされる大きな仕事になるでしょう。 したがって、この問題を1週間解決して、このメッシュ、つまり地形をカメラのフラストラムに応じて手続き的にロードする方法について1週間研究してきました。これにより、可能な限りパフォーマンスを節約できます。手続き型メッシュの生成に関する多くのドキュメントに出くわしましたが、メッシュを八分木にマッピングすることで問題を解決できると思います。これは少なくとも私にとっては大きな仕事であり、それが私がここにいる理由です。なぜなら、私は経験豊富な人々から聞く前に間違った道をたどるリスクを冒したくないからです。 要するに、私には何百万もの頂点とインデックスがあり、それらが一緒になって地形を形成していますが、明らかな理由により、それらを同時に描画することはできません。何らかの手続きが必要です。大きなメッシュを地形として扱うために、それを行うための最良の方法は何ですか?それに関する具体的な本はありますか?それを実装する最良の方法はありますか? どんな間違いでもすみません、私はこの分野の初心者です。

1
地形生成のためのOctreeの構築
以前にマーチングキューブ/四面体を実装して、IsoSurfaceをレンダリングしました。これは機能しましたが(YouTube)、ビューの距離に基づいて可変の詳細レベルを実装する(または古い、遠いチャンクを削除する)ことを回避できなかったため、パフォーマンスは悲惨でした。 今回はもう一度やってみることにしました。Build()が呼び出されたときに次のように機能するOctreeNodeを作成することから始めました。 チャンクが小さすぎてビルドできない場合は、すぐに戻ります。 サーフェスがこのチャンクのボリュームを通過する場合は、ワークアウトしてください。 その場合は、LODを上げるかどうかを決定します(カメラが近いため)。 その場合、8つの子を生成し、同じプロセスを呼び出します そうでない場合は、現在のノードの寸法を使用してメッシュを構築します いくつかのPseudoCode: OctNode Build() { if(this.ChunkSize < minChunkSize) { return null; } densityRange = densitySource¹.GetDensityRange(this.bounds); if(densityRange.min < surface < densityRange.max) { if(loDProvider.DesiredLod(bounds)² > currentLoD) { for(i 1 to 8) { if(children[i] == null) { children[i] = new OctNode(...) } children[i] = children[i].Build(); } } …
9 unity  c#  voxels  octree 

4
octreesまたはkd-treesのライブラリは何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 6年前休業。 オブジェクトのインデックスを作成するための堅牢なパフォーマンスライブラリはありますか? オブジェクトは、点で表されるのではなく、境界自体を持ちます。したがって、インデックスが固定サイズのパーティションに物を分割する場合、オブジェクトは複数のコンパートメントに存在する可能性があります。 それは、錐台の選別と、光線が当たったオブジェクトの訪問、および近傍検索が必要になります。 多くの場合、単純なCではなく代数としてコンポーネントパーツの数学を示す記事をたくさん見つけることができますが、それらをまとめたものは何もありません(おそらくOgreを除いて、PyOrgeはoctreeを公開していません)。確かに、趣味のゲームメーカーは、独自の部分インデックスを作成する必要はありませんか? (私は自分の球球、球線、光線aabb、円錐aabb、円錐fustrum、abb fustrumおよびoctreeの実装を書いているところに座っています。確かに、より良い方法があります。つまり、誰かがすでにこれを行って、素敵なパッケージ?!?!) (PythonまたはC / C ++ w /バインディングを推奨)

1
オクトリー部門
私は内部にハイポリウサギがいるオクツリーと12ポリゴンプラットフォームを持っています。 取引はこれです。あなたはうさぎに光線を発射しています。もちろん彼はかわす(またはあなたが逃す)。 黄色のビームはあなたの死のレーザーです。 ヒットした八分木の一部のために選択された「候補」の三角形は、紫色で表示されます。 ルートノードがヒットしたため、ルートノードのポリゴンをテストしてしまいました。そして、octreeサブディビジョンの境界にあるポリゴンは、最終的にルートノードになり、使用しているサブディビジョンアルゴリズムが適用されます。 ルートノードのポリゴン数を減らしたいのですが。 バニーを角に移動するだけで 隅にバニーがいる場合、シーン全体のレイトレーシングにかかる​​時間は3分の1になります(バニーが中央にいる場合は35秒と95秒)。これは、バニーの三角形のルートにあるものが少なく、ルートのみのoctreeヒットでチェックされるポリゴンが少ないためです。 パフォーマンスを改善する方法を調査しています。基本的には、トリスをツリーのできるだけ下に押して、オブジェクトが主に葉にあるようにします。 私はこれを素朴にやってみました、そして私が作ったこの細分化アルゴリズムを使いました: split root into 8 CANDIDATE CHILDREN foreach TRI in root: foreach of the 8 CANDIDATE CHILDREN if the CANDIDATE CHILD partially contains TRI (at least one vertex of TRI) add TRI to CANDIDATE CHILD CLEAR tris in root これにより、三角形が階層を下ってリーフノードにプッシュされます。しかし、私は特定の角度から穴を開けますが、奇妙なミスパターンがあります。 (予想) …
7 octree 

3
Octreeレンダリングの最適化
たとえば、オクツリーがあり、特定のレベルでVOCをそのオクツリーに格納するとします。基本的な錐台カリングを実行できるように、vboを​​所有するノードの次元を知っています。画面外のすべてがレンダリングされることはないため、これはうまく機能します。 しかし、私の世界は非常に大きく、私は現在、すでに描かれたオクトリーの背後にも物事を描いています。他のノードによって隠されているノードを描画しないために何を使用しますか? OpenGL superbibleでオクルージョンカリングに関するいくつかの言及を見ましたが、オクルーダーとオクルーディーを明確に区別していない場合に、それをどのように利用できるのかわかりません。
7 3d  opengl  octree 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.