2012-02-25 30 views
0

これは、OpenGLの不規則球を作成する方法です。私はウェブを検索しましたが、すべての文書で正規の球体を作成する方法が示されています。OpenGL球のモーフィング

私が必要とする効果は、気泡をシミュレートすることです。ユーザーが気泡に触れると、気泡に触れるようになり、球の気泡はタッチ位置でその形状が変化します。言って、タッチ部分をくぼませてください。

私はこの種のシミュレーションを実現する方法を考え出すことができません。私はタッチ部分の頂点の位置を変更する必要がありますか?または、シェーダーを使用してこの効果を実装できますか?

同時に、私はどのようにして凹面を現実的にシミュレートできるのか分かりませんが、そのようなプロセスを記述する数学的手順はありますか?

ありがとうございます!

答えて

1

オブジェクトをモーフィングするときは、開始点から終了点までのアニメーションだけを使用します。アニメーションは、約200フレーム程度あります。最初の頂点から最後の頂点まで階段をどのようにして集計することができるかわかりません。多分三角関数がありますか?あなたの例では、私はボタンで球を作成し、それをターゲットフレームとして使用します。私はシェイダーがあなたをここでどのように助けることができるか分かりません。

+0

したがって、新しい3Dモデルを作成して、触れられたバブルの状態を提示することを意味します。しかし、2つの問題が残っています。1.タッチポイント上の最終的なオブジェクトの形状はどのようになっていますか?私はそれを生成するための数学的手続きが必要です。 2.ユーザーはバブルの任意の位置に触れることができますが、どのモデルを使ってそのモデルに適合させることができますか? –

2

まず、緯度/経度の頂点を使用して作成するのではなく、測地線スタイルの球を使用することをお勧めします。それはより予測可能に変形します。

そこから、いくつかの方法があります。私が考えることの1つの方法は、各ノードがあなたのメッシュの頂点にインデックスを付け、各ノードがその隣接ノードへのリンクを含むグラフを作成することです。次に、頂点が押されると、頂点をその頂点に近づけることができます。安価な方法は、押された頂点を単純に移動し、元の距離(非常に簡単なベクトル演算)を維持しながら、新しい位置に近づけることです。次に、各隣人が引っ張られる距離が十分に小さい閾値に達するまで、それらの隣人に対して繰り返す。

完了すると、メッシュはGPUに再アップロードする必要があります。

+0

測地系の球が何であるか分かりますか? –

+0

まあ、いくつかの球は、基本的に球に包まれた頂点のグリッドです。これにより、極で多くの頂点が生成され、赤道では頂点が少なくなります。測地球は、その表面の周りに頂点が均等に分布しています。 –

関連する問題