モデルを中心としたカメラ移動

DSsec
記事: 0
登録日時: 14年前

モデルを中心としたカメラ移動

投稿記事 by DSsec » 14年前

仕様:
キャラ位置ベクトルCharaPos=(a,b,c) カメラ位置ベクトルCamPos=(x,y,z)
カメラ方向ベクトルCamDir=CharaPos-CamPos=(行き先-出発地点、だったはず)(a-x,b-y,c-z)
カメラ位置座標は(a,b,c)を中心とする球の面上に存在、球の半径はr
カメラ位置はy軸に関して上下60°以内
x軸は横、y軸は垂直、z軸は縦
キャラ移動方向ベクトルCharaMoveDir=VNorm(CamDir)
キャラ速度ベクトルCharaVel=CharaMoveDir*C(定数)

さてこれをどうすればいいのやら。球座標の公式を使えば、CamPos=(rsinθsinφ,rcosθ,rsinθcosφ)となる、のかな?
θはy軸ベクトルとCamDirのなす角、φはz軸ベクトルとCamDirのなす角、となるはず。

そもそもこんな大層なもん利用する必要があるのか、あるならどんな風に、ないなら代案は何か、となっていく。
必要あるとすれば、まずはCharaPosとCamPosを初期化。するとrは勝手に定まる。r^2=(x-a)^2+(y-b)^2+(z-c)^2だから。
後はθとφさえいじくれたら問題ない…はずなんだがなぁ。実際やったら悲惨なことになったorz
もう一度コード練り直してみよう。
最後に編集したユーザー DSsec on 2011年7月25日(月) 00:38 [ 編集 1 回目 ]

DSsec
記事: 0
登録日時: 14年前

Re: モデルを中心としたカメラ移動

投稿記事 by DSsec » 14年前

あ、球座標はCamPos=(rsinθsinφ+a,rcosθ+b,rsinθcosφ+c)の方がいいのかな。二次元の円でやるとこんな風にやらないとおかしくなるし。
最後に編集したユーザー DSsec on 2011年7月25日(月) 10:06 [ 編集 1 回目 ]