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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kenn

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

#1

投稿記事 by kenn » 11年前

お世話になります。

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を別のモデルに変えて試した際も同じ現象が起こったためモデルが原因ではないと思います。

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 11年前

モデルの大きさ次第ですが、Zバッファの細かさが関係しているかもしれません。
実際にデータを見ないとなんともいえない所ではありますが。
立方体を描画してもめり込むのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kenn

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

#3

投稿記事 by kenn » 11年前

200四方の立方体で試した結果、同じようにめり込んでしまいました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 11年前

SetCameraNearFar(1.0f,2000.0f);にしても変わりませんか?

【補足】
確認を忘れてました。
SetUseZBuffer3D(TRUE);
はされてますよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kenn

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

#5

投稿記事 by kenn » 11年前

SetCameraNearFar(1.0f,2000.0f)にすると直りました!
Farのほうはいろいろ弄っていたのですがNearのほうはあまり重要ではないと思ってしまい触っていませんでした。
どうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る