ページ 11

モデルが床にめり込んでしまう

Posted: 2014年7月28日(月) 23:55
by kenn
お世話になります。

3Dモデルを用いたプログラムを書いているのですが、カメラを上から向けたとき接地しているはずのモデルが床にめり込んでしまいます。
Fieldという高さがない平面の上をmachineというモデルを走らせています。カメラの描画範囲は0.1~2000にしています。

コード:

MV1SetPosition(Field, VGet(0, 0, 0));
MV1SetPosition(machine, VGet(y, 0, -x));


コード:

SetCameraPositionAndTarget_UpVecY(VGet(170, 1, -10), VGet(170, 1, -20));

このように床に面した場所から見た場合はmachineの下から上までハッキリと映っているのですが、

コード:

SetCameraPositionAndTarget_UpVecY(VGet(170, 100, -10), VGet(170, 100, -20));

このように少し上から移すとmachineの下のほうがFieldにめり込んでしまいます。

コード:

SetCameraPositionAndTarget_UpVecY(VGet(680, 1500, -1020), VGet(681, 100, -1020));
極端な例だとほぼ真上から見た場合machineの半分程度がめり込みます。
machineを別のモデルに変えて試した際も同じ現象が起こったためモデルが原因ではないと思います。

いろいろ試したのですが解決策が思い浮かばないため質問させていただきます。
よろしくお願いします

Re: モデルが床にめり込んでしまう

Posted: 2014年7月29日(火) 00:05
by softya(ソフト屋)
モデルの大きさ次第ですが、Zバッファの細かさが関係しているかもしれません。
実際にデータを見ないとなんともいえない所ではありますが。
立方体を描画してもめり込むのでしょうか?

Re: モデルが床にめり込んでしまう

Posted: 2014年7月29日(火) 00:21
by kenn
200四方の立方体で試した結果、同じようにめり込んでしまいました。

Re: モデルが床にめり込んでしまう

Posted: 2014年7月29日(火) 00:25
by softya(ソフト屋)
SetCameraNearFar(1.0f,2000.0f);にしても変わりませんか?

【補足】
確認を忘れてました。
SetUseZBuffer3D(TRUE);
はされてますよね?

Re: モデルが床にめり込んでしまう

Posted: 2014年7月29日(火) 00:32
by kenn
SetCameraNearFar(1.0f,2000.0f)にすると直りました!
Farのほうはいろいろ弄っていたのですがNearのほうはあまり重要ではないと思ってしまい触っていませんでした。
どうもありがとうございました。