HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0402
93thひよこKAKKA[3D]FPSゲーみたいにカメラの方向を動かしたい7未解決


93thひよこKAKKA

リンク

2018/4/2(Mon) 20:50:11|NO.83872

カメラ(look)の垂直方向回転の仕方がわかりません。
どのようにして計算すれば垂直回転できますか?

↓これ
_|_
/ |x \
-----+-----y
\| →
|

こういう感じでぐるぐる回したい



この記事に返信する


93thひよこKAKKA

リンク

2018/4/2(Mon) 20:55:22|NO.83873

*.=空白
上の図で間違いがあったので修正しました

.....|x.........._____........|.......
.....|........../.....\......|.y
-----+-----z....|......| .....|......z
.....|..........\../__/......+______
.....|..............\......./x.......



あまら

リンク

2018/4/2(Mon) 22:04:05|NO.83875

申し訳ないんですが、図がよくわからないです。

たぶん左から順に XZ平面図、時計回りの矢印、左手座標系XYZ立体図 だと思うのですが
それが何を意味してるのかがイマイチわかりません。

しかし、3Dでカメラをグルグル回したいというのであれば
まず必要な各変数を以下のように定義したとして

CPX = 0.0; // 3D上のカメラの位置X CPY = 0.0; // Y CPZ = 0.0; // Z // 角度は360度 CAngleY = 0.0; // 垂直方向のカメラの角度(0.0が水平、プラスが上、マイナスが下) CAngleXZ = 0.0; // 水平方向のカメラの角度(0.0がZ軸方向、プラスが上から見て時計回り) CLen = 1.0; // カメラの位置と注視点までの距離(これはあまり考えなくてもいい) CLX = 0.0; // カメラの注視点X CLY = 0.0; // Y CLZ = 1.0; // Z

このときのカメラ位置は好きに変えてください。

そしてこれらの変数を使って注視点を計算します。

// 注視点の計算 dx = CLen * sin(deg2rad(CAngleY)) * sin(deg2rad(CAngleXZ)); // カメラが原点にある場合の注視点の位置X dy = CLen * cos(deg2rad(CAngleY)); // Y dz = CLen * sin(deg2rad(CAngleY)) * cos(deg2rad(CAngleXZ)); // Z CLX = CPX + dx; // カメラの位置に合わせた実際の注視点を求める CLY = CPY + dy; // CLZ = CPZ + dz; //

これで注視点が求められ、カメラの向きをCLX,CLY,CLZに設定すれば
グルグル回るような演出が可能になるはずです。
やったのが結構前なので少々あやしいですが……

注意点としては、CAngleYの値が 90.0(真上)や -90.0(真下)を入れると
たしかエラーになります。(3Dの計算上0で除算になるとかだったはず)
なので、89.0までにするなどの対策が必要になります。



あまら

リンク

2018/4/2(Mon) 22:14:23|NO.83876

失礼、少し間違えました。

dx = CLen * sin(deg2rad(CAngleY+90.0)) * sin(deg2rad(CAngleXZ)); // カメラが原点にある場合の注視点の位置X dy = CLen * cos(deg2rad(CAngleY+90.0)); // Y dz = CLen * sin(deg2rad(CAngleY+90.0)) * cos(deg2rad(CAngleXZ)); // Z

90度加算するのを忘れてました。



93thひよこ閣下☆ぐん

リンク

2018/4/4(Wed) 22:57:58|NO.83891

すみません、図がわかりづらくしかも間違えてました。


clx = scx/2 + mousex *6 cly = scx/2 - mousex *6 clz=0

この文をd3mインクルードしたプログラムにぶち込むと、顔(=カメラ目線)が少ししか動かせないです。
多分、何も全くわからずに書いたんだと思います。
顔を垂直回転する方法を教えてほしいです。おなしゃす



あらや(旧名あまら)

リンク

2018/4/5(Thu) 00:38:39|NO.83897

顔……?

えーっと、何らかのキャラクターの顔があって
カメラ位置を動かすと、カメラは常にキャラクターの方向を向きつつ、
キャラクターは常にカメラ目線になるという理解であっているのでしょうか?



中村実

リンク

2018/4/8(Sun) 19:31:08|NO.83938

ドラクエ10のFPSチェッカー(?)的な感じで、
キャラを中心に、
視点を、
円を描くように回す
ということですか?



AviSoftware

リンク

2018/4/30(Mon) 20:43:54|NO.84223

あ、これloop入ってないからだね。

repeat任意の数値 clx = scx/2 + mousex *6 cly = scx/2 - mousex *6 clz=0 loop await 1
少ししか動かせない->たくさん実行すれば動く->loop使えばたくさん実行できる
loopは便利だから、たくさん使っときな。
あと、await 1がないとアプリがダウンするから注意。



ONION software Copyright 1997-2023(c) All rights reserved.