一人称視点で歩き回れる仮想風景があります。45度以下ならどんな坂道も歩けるようになりたい。私の知る限り、これには現在の位置を x 単位で変換し、変換した点と地面の間の距離を見つけることが含まれます。その距離が x 単位以上の場合、ユーザーはそこを歩くことができます。そうでない場合、ユーザーはできません。負の y 方向にある点と最も近い点の間の距離を見つける方法がわかりません。Java3D でこれをプログラムしましたが、OpenGL でこれをプログラムする方法がわかりません。
2 に答える
2
OpenGL でこの問題をほのめかすことは、間違ったツリーをほのめかすことです: OpenGL の唯一の目的は、素敵な画像を画面に描画することです。数学ライブラリではありません!
あなたの要求に応じて、いくつかの解決策があります。これが私がこの問題に取り組む方法です。適切なシェーディングのために計算した法線から、各ポイントの勾配が得られます。高さマップ (=地形) が XY 平面にあり、重力ベクトルがであるとするとg = -Z
、法線力はterrain_normal(x,y) · g
です。通常の力は、足を地面に「押し付ける」ものです。十分な法線力がないと、筋肉の力を地面に対して垂直な動きに伝えるのに十分な摩擦がありません。法線力の式を見ると、g
との間の角度がterrain_normal(x,y)
ずれているほど、法線力が小さくなることがわかります。
したがって、プログラムでは、法線力があるしきい値を超えているかどうかを簡単にテストできます。正しくは、発生した摩擦力を地形に投影し、それを加速度ベクトルとして使用します。
于 2011-05-11T07:41:16.337 に答える