コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
なぎ ◆2vQDAT5B8579
2017/11/28 19:16
みなつさんのやまあるきを改造しようとしてたけど、やまあるきををしてたつもりが沼にはまってしまったので保留。(*´ー`*)

平行射影だとスプライト表示でここまで出来るけど透視射影にするとうまくいかなーい(´・ω・‘)

コメント

アバター
なぎ 2017/11/28 22:49 ◆2vQDAT5B8579
ツララさんコメントありがとうございます。(*´ー`*)
2点透視や3点透視はよくしらないのでしらべて検討してみます(*´ー`*)
アバター
おちゃめ 2017/11/30 12:53 ◆jH1opV6FnGyx
平行投影では上手く表現できるのに透視投影では変になってしまうというのは「距離」で見え方が変わるのが考慮されてないからです。
平面的な物体だど距離で変わるのは大きさだけですが、立体物だと大きさだけではなく見え方も変わります。
この「距離」というのはメインとして描画するオブジェクトのサイズが同じ場合は「画角」という言葉にも置き換えることができます。


上記の解説図のにあるように同じ立方体でも距離(画角)によって形が別ものになっていることが分かると思います。
これに関して詳しくは私のサイトのお絵かき講座を見てください。
http://ochameclub.web.fc2.com/CG/lecture.htm#kihon

つまり、カメラに対してX方向、Y方向、Z方向にずらした立方体に加えて距離を変えた4次元的なデータを参照すれば透視投影時でも1スプライトで立方体を表現することが可能になるということです。
ただし、プチコン3号で使えるスプライト数の上限は512なので1次元あたり4〜5通りだからこの方法で実現が可能といっても実際はかなり厳しいですね。
したがって、ある程度の妥協をする必要があるかもしれません。
アバター
おちゃめ 2017/11/30 12:58 ◆jH1opV6FnGyx
注意しなくてはならないのは広角、望遠といった画角で見え方が分かるのではなくあくまで距離で見え方が変わるという点です。距離が同じ(かつカメラに対しての向きも同じ)であれば広角であろうと望遠であろうと見え方は変わりません。
この辺についてはリンク先の解説には何度も書いているのですが、その解説を見ずに「画角で変わるんだ」と勘違いされると困るので補足させて頂きました。
アバター
おちゃめ 2017/11/30 13:08 ◆jH1opV6FnGyx
距離による見え方の違いというのは特別何か物理的な事象があるわけではなく3D表示でよく使われている「距離で割る」ということさえ分かれば理解できます。
例えば立方体の大きさを一辺1m、立方体はカメラに対して平行、垂直な面で構成されているとする(一点透視の状態)とカメラから1m先にある立方体の近い面は1mでと遠い面は2mで距離は2倍の開きがありますが、10m先にある立方体だと近い面は10mで遠い面は11mなので距離は10%の開きしかありません。
近い面を基準に考えると1m先の場合は2で割る必要があるのに対して10m先の場合は1.1で割ることになるため「カメラとの向きは同じ」にも関わらず立方体そのものの形が変わって見えるわけです。
アバター
なぎ 2017/12/1 5:31 ◆2vQDAT5B8579
おちゃめさん返事がおそくなって申しわけありません。(*´ー`*)

広角・望遠という用語に馴染みがなかったので理解するのに時間がかかってしまいました。(*´ー`*)

スプライトの枚数に制限があるのでX,Y,Z方向のずれや距離による変形を考慮せずに平行射影的な(望遠で合ってるでしょうか?)近似でしようと思ってました。(´・ω・‘)大雑把ですけど。

この大雑把な近似でも計算が間違ってるのかブロックがあさっての方向を向いてしまいもう少し時間がかかりそうです(*´ー`*)
アバター
なぎ 2017/12/1 5:45 ◆2vQDAT5B8579
ツララさんへ
2点透視と3点透視を調べてみたのですが厳密には相似形にはならいけど近似を使うなら1点透視より良くなるかもしれないのでもう少し検討してみます。(*´ー`*)

さらにお待たせすることになって申しわけありません(´・ω・‘)
アバター
おちゃめ 2017/12/1 14:08 ◆jH1opV6FnGyx
平行投影の立方体ブロックを元に透視投影っぽくするのに現状ではカメラの向きに合わせて回転させたようなブロックを表示しているのではないかと思います。
実際は透視投影というのはカメラに対して平行な平面上に投影されるため位置的な角度に合わせて回転するのではどうしても違和感が出てしまいます。
それを表したのが上図です。

この違和感を減らすには画角を狭くする(望遠で描画する)というのが1つの改善策です。(平行投影というのは言い換えれば焦点距離無限大の望遠レンズとなる)
別の方法だとカメラとの角度に合わせて回転させた状態のブロックを表示するのではなく側面の見え方を実際の見え方に近いものを選択という方法があります。実際に試したわけではありませんが、少なくとも現状よりは違和感は大きく改善が可能だと思います。
より正確に近似するならば元となるブロックに距離のパラメータが必要ですね。
アバター
おちゃめ 2017/12/14 13:42 ◆jH1opV6FnGyx
ツララさんへ

カメラの回転を行わないならば一点透視であれば簡単に実現できそうですね。
透視図法において○点透視というのは○軸方向に消失する図法であるため四点透視ならば4次元、五点透視ならば5次元になってしまいますね。(四点透視、五点透視という言葉は魚眼レンズ的な描写で使っている人が多い)
アバター
MONO-CASEI 2018/11/25 21:14 ◆4AyJE72/nkvY
Fight(適当)

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -