聞きたいことがあるのですが
フェードインした部分とフェードアウトする部分を
画面の中心を軸にして
添付した黄色の線に沿って回転する感じ(壁が軸に対して回る感じ)にしたいのですが、
どうしたらいいでしょうか?
龍神録60章にて
Re:龍神録60章にて
全然イメージがつかめないのですが、「フェードインした部分とフェードアウトする部分」って
どこのことでしょうか?
ただ画面全体が回転すればいいのですか?
どこのことでしょうか?
ただ画面全体が回転すればいいのですか?
Re:龍神録60章にて
3D部分だけなら、ワールド行列かカメラ(ビュー行列)をZ軸で回転させれば回ります。
2Dも含めて回したい場合は、回したい部分だけを一旦別のテクスチャに
レンダリングしておいて、そのテクスチャを回転させて画面に描画すればOKです。
2Dも含めて回したい場合は、回したい部分だけを一旦別のテクスチャに
レンダリングしておいて、そのテクスチャを回転させて画面に描画すればOKです。
Re:龍神録60章にて
一応、Justyさんのサンプルも使ってるのですが
http://www.play21.jp/board/formz.cgi?ac ... &rln=36229
そのZ軸に値する場所ってどこなのでしょうか?
http://www.play21.jp/board/formz.cgi?ac ... &rln=36229
そのZ軸に値する場所ってどこなのでしょうか?
Re:龍神録60章にて
すみません。ここということが分かったのですが、
どうしたらいいのでしょうか?
static void UdateCamera() { const float range = 50; VECTOR r; r.x = -((float)(ch.x - FX) / (FMX - FX) * range - range*0.5f); r.y = ((float)(ch.y - FY) / (FMY - FY) * range - range*0.5f); r.z = 0.f; const float k = 0.04f; camera.pos_offset.x += (r.x - camera.pos_offset.x) * k; camera.pos_offset.y += (r.y - camera.pos_offset.y) * k; camera.pos_offset.z += (r.z - camera.pos_offset.z) * k; VECTOR pos; VectorAdd(&pos, &camera.base_pos, &camera.pos_offset); MATRIX cameraMatrix; CreateLookAtMatrix(&cameraMatrix, &pos, &camera.target, &camera.up); SetTransformToView(&cameraMatrix); }カメラ自体を回す方法が分からないのですが
どうしたらいいのでしょうか?
Re:龍神録60章にて
なるほど。回すのは3D部分だけでいいのですね。
CreateLookAtMatrixの第3引数に上向きのベクトルを指定してあげてください。
先のスレのままなら、camera.upが指定されているはずで、中身は [0, 1, 0]、
つまり真上を向くようになっています。
これを例えば、[-1, 0, 0] とかにすれば右に 90度回転することができますし、
[0, -1, 0]なら 180度、上下逆さまになります。
CreateLookAtMatrixの第3引数に上向きのベクトルを指定してあげてください。
先のスレのままなら、camera.upが指定されているはずで、中身は [0, 1, 0]、
つまり真上を向くようになっています。
これを例えば、[-1, 0, 0] とかにすれば右に 90度回転することができますし、
[0, -1, 0]なら 180度、上下逆さまになります。
Re:龍神録60章にて
>綺麗に角度をゆっくり変える方法はないでしょうか?
ベクトルを指定すればその向きが上になる(正確にはちょっと違いますが)のですから、
ベクトルをゆっくりなめらかに回してあげればいいだけです。
60章のサンプルの場合、視線の Zの符号が一定なので [0, 1, 0]を
Z軸で指定角度だけ回転した行列を使って求めてもいいですし、
単純に xと y要素を円の方程式を使って回転したベクトルを指定すれば、
滑らかになるはずです。
Re:龍神録60章にて
>具体的にどういった計算方法で算出すればいいのでしょうか
60章であれば
[color=#d0d0ff" face="monospace]
const float angle40 = 40.f * (float)PI / 180.f;
camera.up.x = -sinf(angle40);
camera.up.y = cosf(angle40);
[/color]
でいいと思います。
カメラを本格的にいじり始めたらこれじゃダメですけど。
Re:龍神録60章にて
短文で申し訳ないですが、
ver3が出たいまやもう昔の3D関数を使う意味はないので、
本格的に3D描画をしたいなら、新しく実装された3D関数をお使いになってはいかがでしょうか?
あんなに苦労したのにDXライブラリは便利になりすぎだよ、うぅ(悲嬉涙
ver3が出たいまやもう昔の3D関数を使う意味はないので、
本格的に3D描画をしたいなら、新しく実装された3D関数をお使いになってはいかがでしょうか?
あんなに苦労したのにDXライブラリは便利になりすぎだよ、うぅ(悲嬉涙