2010-11-29 5 views
0

私はopenglを使い慣れています。学習の練習として私は手動でいくつかの基本的な図形を構築し始め、次に汎用のオフファイルビューアを書くことに移った。openglは任意の形にフィットします

私の質問は、任意のサイズのモデルに適合する「サイズ」「ウィンドウ」です。私はx、y、z座標の範囲に基づいて何らかの要因で-z方向に平行移動してモデルから「引き戻す」ことを試みていましたが、これは通常は必ずしもそうとは限りません。 。申し訳ありませんが、私は私が新しいと言っているようにいくつかの用語が不足しています。

これは、違いがある場合は、opengl es 1.0を使用してアンドロイドプラットフォームで発生します。

誰でも私にこれを達成するためのベストプラクティスを教えてもらえますか? ありがとうございます。

+0

[ウィンドウ内の3次元モデルにフィット](0120-17753)をご覧ください。 – genpfault

答えて

1

ビューボリューム/錐台の設定には、OpenGL関数をよく知っておく必要があります。

ここにはarticle specific to OpenGL ES (iPhone)がありますが、標準のOpenGLプログラミングガイドとリファレンスはどちらもこれらの概念に適用されます。

楽しくお楽しみください!

+0

私はそれが問題だとは思わない。私はすでに記事のようにビューポートを設定しています。問題は、私がモデルに近すぎるか、モデルの中にいるか、またはモデルが単にビューポートにとって大きすぎるということです。モデルを-z方向に平行移動することでそれを処理していました。ビューのポートはすでに画面のサイズに設定されているので、私はそれをもっと大きくすることはできません。ビューポートを拡大/縮小できますか? –

+0

この場合、おそらくgluLookAtを使用して "カメラ"をセットアップし、ModelViewマトリックスで読み上げるべきでしょう - ここでは、開始のためのよくある質問です:http://www.opengl.org/resources/faq /technical/viewing.htm – holtavolt

0

ビューア内のすべてのオブジェクトに対してFit-to-Windowを実現するには、まずxmin、xmax、ymin、ymax、zmin、およびzmaxのすべてのオブジェクトの範囲を知る必要があります。通常、境界球はすべての個々のオブジェクトに対して事前に計算され、オブジェクトがビューアに追加されるたびに、その境界球が既存のグローバル境界球に追加/包含されます。つまり、半径が1のx0、y0 z0を中心とするビューアの境界球が最初にあります。新しいオブジェクトがビューアに追加されるたびに、あらかじめ計算された境界球がビューアに追加されます。追加することで、最初の球の中心と半径を更新し、新しい球を包囲/包含し、新しい球を収容するためにグローバル球を成長させることを意味します。これが完了すると、ユーザーがフィットのためにコマンドを発行するたびに、カメラは球の中心に配置され、glOrthoの範囲値は球の半径に更新されます。新しいシェイプが追加されると、オブジェクトが離れて配置されるためグローバル球の中心も変わります。球を追加すると、半径が大きく中心が異なる新しい球が生成されます。この方法では、さまざまなビュー投影(上、前、左など)に従って正確にフィットすることはありません。異なる投影にもっと正確にフィットさせたい場合は、球の代わりにBoundingBoxを用意する必要がありますが、計算には多くの投影とオフセットの計算が必要になります。これは面倒です。

関連する問題