変形面


10

私はレベルサーフェスの変形する物理的な動作を達成しようとしていますが、これまでの実装から始める方法がわかりません。

表面の形状(平面、立方体、球…)に関係なく、ゲームエンティティ(プレーヤー、敵、オブジェクト…)の位置に小さなインデントを設定したいと思います。

説明するのはちょっと複雑なので、私が話していることを説明しました。球の例を次に示します。

イラスト変形面ゲーム

したがって、表面は少し変形する必要があります(本当に柔らかいベッドやソファーのように見えるようにするため)。私のサーフェスでは、スムーズな変形を実現するためにおそらく高い頂点数が必要ですが、私の大きな問題は、この変形を計算するための数学です。

私はOpenGLを使用してC / C ++でプログラミングしていますが、正しい方向のアドバイスは問題ありません。

回答:


5

単純な変形の場合、操作するサーフェス/オブジェクト上の点を選択して、それに変換(たとえば、移動)を適用できます。次に、そのポイントから特定の距離内にあるすべてのポイントを同じ方法で変換しますが、選択したポイントから離れるほど変換の強度が失われます。

したがって、キャラクターの下に物をインデントするには、彼/彼女が立っているポイントを選択し、それを下にずらします。

アーカイブする効果に応じて、グローバルに、ローカルに、またはオブジェクトセンターに向かって/オブジェクトセンターから離れて変換を適用したり、さまざまな機能を使用してさまざまなマテリアルをシミュレートしたりできます。

sin / cosフォールオフ関数を使用して平面をインデントする簡単な例は、www.lighthouse3d.com / opengl / terrain /にあります。


1
リンクで403 forbiddenエラーが発生します。
George Duckett、

1
ハックリルまあ...」(また、直接問題のセクションに)、その後の順序である:web.archive.org/web/20100927141645/http://lighthouse3d.com/...
Exilyth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.