投稿
さとし SatoshiMcCloud
秘技・Zソート! 説明しよう、Zソートとは、ポリゴンの前後位置関係のみを頼りに3Dモデルを描画する手法だ!ポリゴン同士が交差していると正しく描けない弱点があるが、Zバッファをソフトウェアで実装するよりはスピードで勝っている!はず!
7そうだね
プレイ済み
返信[1]
親投稿
れい rei-nntnd
正しく書けないときは、凸なポリゴンなら3つ以上が互いに重なってる状態なので、互いに重ならないようにうまくごにょごにょすればソートだけで正しくかけますよー
0そうだね
プレイ済み
返信[2]
親投稿
おにぎり EasyPuzzler65
そこはやっぱりBSPtreeを作って(ry
0そうだね
プレイ済み
返信[3]
親投稿
さとし SatoshiMcCloud
れいさん 同一モデル内ではポリゴン交差が発生しないよう工夫してあります。 モデルとモデルが重なるような場合は…そうならないゲームなので問題なし(えっ おにぎりさん BSPtree…調べたけど分からんかった!3D空間ゲームなどの策敵アルゴリズムでしょうか
0そうだね
プレイ済み
返信[4]
親投稿
おにぎり EasyPuzzler65
binary space partition tree ある面 に対して、それより表にある面と裏にある面とで2分木を作る。表裏にまたがる面はそこで分割する。隠面消去なら単純だけど陰線消去だと辺情報の持ち方に工夫がいる。空間二分法とかで引っかかると思います。
0そうだね
プレイ済み
返信[5]
親投稿
さとし SatoshiMcCloud
調べるには調べてみましたが、立体表現にどう結び付くのか全く分かりませんでした…時間の出来たときにゆっくり取り組んでみます
0そうだね
プレイ済み
返信[6]
親投稿
おにぎり EasyPuzzler65
bspツリーができたら、各ノードの面に対して、視点がその面の表か裏かを計算します。面の法線ベクトルと内積をとればいいですね。で、視点が面の表側にあったら、その面の裏側の面を描き、面自身をかき、表側の面を描き、という手順で木を探索しながら書いていくと、面を描画する順序が自然にもとまっていきます。zソートがいらなくなるわけです。万能ではなく欠点もありますが、動かない背景立体の描画などに威力を発揮します。
0そうだね
プレイ済み
返信[7]
親投稿
さとし SatoshiMcCloud
あー、それだったらたぶん今の私の理解であってました。ベクトルの計算は必要なんですね。 プチコンでやろうとした場合…配列のソートはSORT命令が使えるのに対して、ベクトル計算は面一つに3回のかけ算と2回の足し算以上が必要になると思います。結果、Zソートのほうが速く描画出来そうな気もします。やってみないと分かりませんが。
0そうだね
プレイ済み
返信[8]
親投稿
れい rei-nntnd
切り方工夫すれば内積は掛け算1回でごまかせるけど それでも数十程度のポリゴン数ならsortのほうがはやいだろうね
0そうだね
プレイ済み
返信[9]
親投稿
さとし SatoshiMcCloud
そんなことを言っていたら、自慢のZソートがうまく機能しない事態が発生。描画順が狙い通りにならない… もしやバイナリ空間分割ならうまく描画できるか!?しかし実装の手間が…!
0そうだね
プレイ済み
返信[10]
親投稿
おにぎり EasyPuzzler65
BSP法は表裏にまたがった面を分割しながら作っていく必要があることと,木がかたよらないように作ることが難しい欠点がありますね...Zソートするまえに座標計算しますよね.BSP法だと2次元座標がわかればよいから積和の回数を減らせると思います.
0そうだね
プレイ済み