ページ 11

グラフィックの重なりの処理について

Posted: 2013年11月20日(水) 19:50
by nanashi
言語はC++です。
イメージとしては2D時代のゼルダの伝説を想像してください。

■ ・・・上半身
■ ・・・下半身
という一つのキャラ(Aとする)と
● ・・・上半身
● ・・・下半身
という一つのキャラ(Bとする)がいたとします。

プログラムがB表示→A表示の順だとすると
AがBよりY座標的に上かつ重なってるときは下図のように問題はないのですが、
 ●
 ●  ←■
    ←■
 
 ●
 ■
 ■

AがBよりY座標的に下かつ重なってるときは
手前にいるBの上半身がAの下半身に重なって隠れ、下図のようにおかしくなってしまいます。
 ■
 ■  ←●
    ←●

 ■
 ■
 ●

例のように二体のキャラなら座標の比較で簡単に処理できますが
複数いるとどのように処理したらいいのかわかりません。
どなたか知恵をお貸しください。

Re: グラフィックの重なりの処理について

Posted: 2013年11月20日(水) 21:28
by みけCAT
「手前にいる」の定義がよくわからないですが、
全てのキャラの下半身を描画→全てのキャラの上半身を描画 ではダメですか?
もしくは、「Zバッファ」を使用するべき状況かもしれません。

Re: グラフィックの重なりの処理について

Posted: 2013年11月20日(水) 21:41
by softya(ソフト屋)
下半身の座標で普通は描画順をソートします。下半身と上半身は同時描画です。

【補足】
ちなみにファミコンとかはハード制約で仕方なく上半身と下半身に分かれていましたが、PCなら別に分ける必然はないです。

Re: グラフィックの重なりの処理について

Posted: 2013年11月20日(水) 23:06
by nanashi
softya(ソフト屋) さんが書きました:下半身の座標で普通は描画順をソートします。下半身と上半身は同時描画です。
みけCATさんの下半身と上半身を分けて描画する案もいいと思いましたが
やはり座標で描画順に並び替えるのがよろしいですか。

大変参考になりました。ありがとうございます。

Re: グラフィックの重なりの処理について

Posted: 2013年11月21日(木) 00:15
by ISLe
nanashi さんが書きました:みけCATさんの下半身と上半身を分けて描画する案もいいと思いましたが
やはり座標で描画順に並び替えるのがよろしいですか。
ソートしないで下半身と上半身を分けて描画するだけでは胴体切断が発生しますよ。

Zバッファを使う場合でもZソートが必要な場面は多いので覚えておくべきかと思います。