プロが教えるわが家の防犯対策術!

CGの原理みたいなものを勉強をしています。
HPをいろいろ探したのですが、わかりやすいページがみあたらなくて、
ここに載せました。

「レンダリング」の隠面消去のところで「奥行きソート法」でつまづきました。
奥行き値を求めて降順、または昇順に並べて、多面体の前後関係を決めるのはわかるのですが・・・。ソートのアルゴリズムもわかるのですが。

本には「データ列をデータのキー項目について並べること」
「データはポリゴンとその奥行き値、キー項目は奥行き値」
とかかれているのですがよくわかりません。

たぶん「ポリゴン」がよくわからないのでイメージがわかないのです。
「ポリゴン」のなにから「奥行き値」が求められるのですか?
「ポリゴン」とはなんですか?
解説またはわかりやすいHPを教えてください。

A 回答 (3件)

ポリゴンは多角形という意味です。


CGで扱う場合、主に小さな三角形のポリゴンを組み合わせて、モデルを作ります。
三角形のポリゴンの場合頂点は3つあります。
各頂点毎に(x、y、z)の座標を持ち、空間での位置を表します。
xが横、yが縦、zが奥を表します。
三角形ポリゴンは3頂点あるので、基準になるZは、
1、もっとも値の大きいもの
2、もっとも値の小さいもの
3.3つのzの平均
などから、そのポリゴンの基準となる奥行き値(Z)を求めます。

奥行きソートの場合、このZをキーにしてポリゴンをソートします。
Zの値を基準にして並べるので、「Zソート」とも呼ばれます。
このように、ポリゴンを並べておいて、奥から順に描画していけば、次々手前にくるポリゴンによって上書きされるので、隠面消去ができます。

わかりにくければ、追加を・・・

この回答への補足

空間図形が苦手なので、イメージがわきにくい(T_T)

例えば、立方体があって、そのポリゴンはどうやってきまるのですか?
確かに3次元だもん、(x、y、z)座標をもっているんですけど、
どのx座標とどのy座標とどのz座標のくみあわせで、三角形(ポリゴン)をつくるのかな?

お時間ありましたら、説明お願いしますm(_'_)m

補足日時:2001/11/03 13:49
    • good
    • 0
この回答へのお礼

お返事おそくなりまして。
立方体についてはよくわかりました。
例えば球の場合はどんな三角形のポリゴンを考えるのかな?
めちゃくちゃ小さな三角形でかんがえるのかな?

お礼日時:2001/11/10 18:36

面を分割していくと、最終的にはいくつかの三角形になるのはわかりますか?


(四角形に対角線を1本引くと三角形2つになる)
これをサイコロ(立方体)にあてはめると・・・

1の面の頂点を左上(A)、右上(B),左下(C),右下(D)とします。
1の面はA,B,C と B,C,D の頂点を持つ2つの三角形になります。

6の面の頂点を左上(E)、右上(F),左下(G),右下(H)とします。
6の面はE,F,G と F,G,H の頂点を持つ2つの三角形になります。
他の(2,3,4,5)面はA~Hの頂点のどれか3つを使うと表せます。

以上のことから、サイコロは、8つの頂点と、12の三角形ポリゴンからできることになります。(適当な箱に線を引いたりするとわかりやすいと思います)

まだまだ、付き合いますので、追加をどうぞ。
    • good
    • 0

>例えば、立方体があって、そのポリゴンはどうやってきまるのですか?



デザイナーのポリゴン分割による(笑)
何か勘違いなされているようですが、立方体があってポリゴンが決まるのではなく、ポリゴンがあって立方体が表示される、というのが現状の3Dシステムでは一般的です。
ポリゴンとは多角形を意味していますが、いわゆる「板切れ」です。
リアルタイム3Dシステムではこの「板切れ」をいくつも表示して立体を表示しています。
なので、たとえば直方体、さいころなどでは6つの面がありますので6つの正方形ポリゴンを用いて表示されたりします。
(実際には正方形ポリゴンが使われる事は余りありません。3角形のポリゴンがよく使われます。理由はポリゴンの描画方法に関係しますが、現行の方法では凹面ポリゴンの表示ができない事、また4つ以上の座標点は必ず同一の平面上に存在する事が決まっていないという事等から避けられる事が多いです。データ側でちゃんと保証できるのであれば問題ないんですけどね)

>確かに3次元だもん、(x、y、z)座標をもっているんですけど、
>どのx座標とどのy座標とどのz座標のくみあわせで、三角形(ポリゴン)をつくるのかな?

多角形の頂点座標をもつのが一般的です。
なお、普通はポリゴンの表面から適当な頂点を一つ決定し、辺を右回り、または左回りにたどる順で頂点座標をセットで保持する事が一般的かと思います。(面付けができますし、法線を求める場合に便利なので)

んでポリゴンの奥行き値ですが、これ、といった求め方はありません。プログラマの裁量で決められます。良くある手法としてはポリゴンの第一頂点のZ値をそのまま採用とか、ポリゴンの頂点全部の平均取って・・・とか色々考えられます。元々Zソート(奥行きソート)法自体が結構いい加減な結果しか出ないためあまりまじめにやっても意味がありません。
というのも射影側から見てZ方向に奥行きを持つポリゴンが2つあり、近いZ値を持つ場合、その前後関係はかなりいいかげんにしか決定できません。
また、「ポリゴン単位でソートし、描画する」という事実からポリゴンを貫通したポリゴンはまともに表示されません(どちらかが手前に表示されます)。

ちゃんとした方法を取るのであればZバッファ等の描画方法を使うのがスジです。(昔ならともかく今ではハードウェアで実装されてないものの方が珍しいですし)

で解説ですがDirect3DやOpenGLなど実際に実装されて動いてる3Dシステムの入門書などがよいと思います。
実際に物があるわけですし、いざとなればプログラムを組んで動かす事ができますので。

後はCG検定(名前変わってたかも)の参考書なんかも結構使えるかもしれません。
    • good
    • 0
この回答へのお礼

実はCG検定の本を使って勉強しているのです。

おかげでなんとなくつかむことができました。
本屋で3Dシステムの入門書をみてみようと思います。
それで少し3Dを動かしてみようかな・・・と。
がんばってみます!!

お礼日時:2001/11/10 18:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!