新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴 |
ねこまたや web 出張所
INDEX

トップページ
お知らせ
twitter
お道具箱
技術資料と雑談
ライブラリ
雑貨や(ダウンロード)
最近の更新
ねこまたやについて

twitter

ねこまたやのついった

企画モノ

psAxe情報ページ
自主制作アニメ
ぽこあぽこ られんたんど


あやかしあやし
エフェクトネタ帳



りまぴん
AE エクスプレッション
レンダー乙女とか
簡易版XPSリンカ
おまけギャラリ

BBS

ねこまたやBBS
開発室BBS

Language



開発室みたいなものでしたが
spamアクセスがはげしいのでページは凍結中です。
書き換えは管理人のみが可能です。
Nekomataya/2024

パースペクティブにそった作画 2



前のページの続きです

さて、計算式の説明です。(キョーミない人は、無視してくださいね)

図(1)
図-1


まず、被写体 X が 画角 aθ にみえる 視点 P を設定してここを「原画 A」 とします。
同じ 被写体 X が 画角 bθ に見える点まで移動したとして、「原画 B」 を考えます。

視点 P から任意の距離に置いた仮想投影面 を考えると、ここに投影された 画角
aθ および bθ が、それぞれの原画の寸法 a b となります。

図(2)
図-2

任意の中間地点「 原画(または動画) C 」の 寸法 c が欲しいので、
以下の様な計算式を立てます。

前提条件として

	原画 A のサイズ = a
	原画 B のサイズ = b


	A-B  間の分割数 = K
	(A-B  間の中枚数 = K-1)

	求める原画 C のポイント = P   :( P は A から近い順に 1.2.3...K-1.)
                                      :( P=0 で A    P=K で B  に なる。 )
	求める原画 C のサイズ   = c

	被写体の仮想の寸法 = X
	仮想投影面迄の距離 = D

	仮想投影面から被写体までの距離
		原画 A に対して = Za
		原画 B に対して = Zb
		原画 C に対して = Zc

と、仮定します。
-----------------------------------------------------------------------------
原画の寸法は、共通の仮想投影面で切り取った被写体の画角の寸法なので
以下の様な式にできる。(* これが、厳密に成立するのは単点透視の場合のみです)

(1)	a=(D*X)/(D+Za)
(2)	b=(D*X)/(D+Zb)
(3)	c=(D*X)/(D+Zc)

ここで、仮想投影面と原画 C の間の距離は仮定から、以下の様に導かれる。

(4)	Zc=P*(Zb-Za)/K+Za

式(4) を 式(3) に代入して以下の 式(6)が得られる

(6)	c=(D*X)/(D+P*(Zb-Za)/K+Za)

-----------------------------------------------------------------------------
式(1) を移項して Za に代入できる 式(7) にする

(1)	       a=(D*X)/(D+Za)

	a*(D+Za)=(D*X)

	a*D+A*Za=(D*X)

	    a*Za=(D*X)-(a*D)

		a*Za=D*(X-a)

(7)	      Za=D*(X-a)/a

-----------------------------------------------------------------------------
同様の手順で Zb に代入できる 式(8) を得る

(8)	      Zb=D*(X-b)/b

-----------------------------------------------------------------------------
式(6) に 式(7) および 式(8)で、得られた Za Zb を代入してみると・・・

	c=(D*X)/(D+P*((D*(X-b)/b)-(D*(X-a)/a))/K+(D*(X-a)/a))

	 =(D*X)/(D+P*(((D*X-D*b)/b)-((D*X-D*a)/a))/K+((D*X-D*a)/a))

	 =(D*X)/(D+P*((D*X/b-D)-(D*X/a-D))/K+(D*X/a-D))

	 =(D*X)/(D+P*(D*X/b-D*X/a)/K+(D*X/a-D))

	 =(D*X)/(D+P*(a*D*X-b*D*X)/(a*b*K)+(D*X/a-D))

	 =(D*X)/(D+(a*D*P*X-b*D*P*X)/(a*b*K)+(D*X/a-D))

	 =(D*X)/((a*b*D*K+a*D*P*X-b*D*P*X+b*D*K*X-a*b*D*K)/(a*b*K))

	 =(a*b*D*K*X)/(a*b*D*K+a*D*P*X-b*D*P*X+b*D*K*X-a*b*D*K)
           ~           ~     ~       ~       ~         ~
	 =(a*b*K*X)/(a*b*K+a*P*X-b*P*X+b*K*X-a*b*K)
                 ~~~~~     ~     ~     ~ ~~~~~
	 =(a*b*K*X)/X*(a*P-b*P+b*K)

(9)	 =(a*b*K)/(a*P+b*(K-P))

あら不思議、未知数だった X と D は すっぱりと消えてなくなって
式(9) が、あらわれました。

-----------------------------------------------------------------------------

	よって、 求める原画 C の サイズは、

		c =  (a * b * K) / (a * P + b * (K-P))

	と なります。

-----------------------------------------------------------------------------

おまけ ですが、同様の計算で画面上の位置も求める事ができます。
(*これが成立するのは、被写体の軌道が直線移動のときだけです)


	A 点の座標 = (Xa,Ya)
	B 点の座標 = (Xb,Yb)

	C 点の座標 = (Xc,Yc)

と、おくと
-----------------------------------------------------------------------------

	Xc = Xa * Xb * K / ( Xa * P + Xb * (K-P))

	Yc = Ya * Yb * K / ( Ya * P + Yb * (K-P))


-----------------------------------------------------------------------------

	  以上の式は、 「 単点透視 」 及び 「 視線方向に垂直な長さ 」 に のみ、
	正確な値が得られる式です。

	  それ以外の場合には近似値として扱ってください。



page-BACK sub-INDEX NEXT-page

Nekomataya/kiyo 2001