Re: マップの表示で ( No.1 ) |
- 名前:いっち 日時:2010/10/20 23:42
仰るとおりにそのままモデルを読み込んでみたのですが、強制終了してしまいました。
再現用のソースをご提供頂けますか?
|
Re: マップの表示で ( No.2 ) |
- 名前:Ike_SDK 日時:2010/10/21 18:53
これが、そのソースです
ttp://www1.axfc.net/uploader/Sc/so/165277
サンプルプログラムと同じで一定の座標?にいくと画面が黒くなってしまうのも確認しています。
また、実行したらカメラアングルを変えるとどのようにおかしくなるか確認できます
|
Re: マップの表示で ( No.3 ) |
- 名前:いっち 日時:2010/10/21 22:34
すみません、SetScaleの値を大きくしたら動作したことを報告し忘れました。
Ike_SDKさんにご提供頂いたソースのMV1SetScaleの値は一律4000倍なのですが、
ためしに2000倍にしたところ、おおむね問題なく表示されているように見受けられました。
(だだし、その場合は PLAYER_MAX_HITCOLL を4096ぐらいに設定しないと落ちました)
逆に10000倍にしたところ、ほぼ正常な表示は得られませんでした。
ですので、これは計算精度に絡んだ事象という気がします(全然確証は無いですが・・・)。
マップサイズにそこそこフィットしたモデルとパラメータを使うことでうまくいくのではないでしょうか。
|
Re: マップの表示で ( No.4 ) |
- 名前:いっち 日時:2010/10/22 21:08
4000倍ぐらいでどうこうなるかなという気もするのでもうちょっと見てみます。
詳しい方いらっしゃいましたらご教授下さい。
|
Re: マップの表示で ( No.5 ) |
- 名前:いっち 日時:2010/10/22 22:05
どこかで見た事象だなと思ったので、SetCameraNearFar の Far の値を大きくしたら改善されました。
一応ソースです。(モデルのパスが違うかもしれないので修正してください。)
> ttp://www1.axfc.net/uploader/Sc/so/165653.zip&key=dxlib
ただ、「SetCameraNearFar の値でなぜこのような事象が起きるのか」や、
「適切な値をどうやって求めるのか」と言った事は分かりません。
ご存知の方がいらっしゃいましたらご教授下さい。
※ソースの手を入れた部分には"//-"の形でコメントを入れてあります
※追記
40000.f ぐらいではまだ不十分で 50000.f で発生しなくなりました。
どうやらモデルがすっぽり入るぐらいの値は必要なようです。
|
Re: マップの表示で ( No.6 ) |
- 名前:Ike_SDK(解決) 日時:2010/10/23 09:16
いっちさんありがとうございます
確かにカメラのファークリップの値の問題で解決しますね。
キャラクターの移動やマップとの当たり判定など勉強していてなぜそうなるのかわからなくて躓いてましたが
おかげで先へ進むことが出来ます。ありがとうございます。
|
Re: マップの表示で ( No.7 ) |
- 名前:いっち 日時:2010/10/23 16:21
単に遠くの物体が表示されなくなるのは良いのですが、
カメラの視線がX軸やY軸に垂直(水平?)に近くなるときにモデル全体が描画されなくなるのが、
仕様なのかDXライブラリのバグなのかちょっと分からないので、できれば管理人さんのご意見をお伺いしたいところです。
|
Re: マップの表示で ( No.8 ) |
- 名前:通りすがり 日時:2010/10/24 00:00
横から失礼します。
自分も広いマップを作ろうとして地面を一枚の平面ポリゴンにしましたが、この問題に突き当たりました。
そのとき色々試したのですが、カメラのfar以外では平面ポリゴンを100*100とか詳細に割ってやるとちらつきもなく表示されるようになりました。
でもただの平面の地面でポリゴンを一万とか細かく割る意味はないですよねえ。
|
Re: マップの表示で ( No.9 ) |
- 名前:管理人 日時:2010/10/24 03:30
いっちさんいつもご対応ありがとうございます
> カメラの視線がX軸やY軸に垂直(水平?)に近くなるときにモデル全体が描画されなくなる
すみません、試してみたのですがそれらしい状況になりませんでした
モデル全体が描画されなくなるということは画面が真っ暗になるということでしょうか?
もしそうだとしますとDXライブラリのバグだと思います
> 通りすがりさん
カメラを低くすると地面が消えてしまうのは、カメラが映している範囲が地面にめり込んでいるからです
( カメラが映る範囲は幅があるので、点の座標として壁にめり込んでいなくても、
映る範囲としては壁や地面にめり込んでしまう )
ちょっとプログラムが長くなってしまいましたが、カメラが映る範囲も地面や壁にめり込まないように
変更してみましたので、よろしければご覧になってみてください
http://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DAction.html
( 関数 Camera_Process の中のマップモデルとのあたり判定の部分を変更しました )
|
Re: マップの表示で ( No.10 ) |
- 名前:いっち 日時:2010/10/24 16:14
事象再現用のモジュールを作ってみました。(カメラのFarの値を3000.fにしたものです)
起動するとキャラクタのみで周囲が真っ暗な画面が表示されると思いますが、
Shift+左右キーでカメラを移動すると、周囲も表示されるようになります。
> ttp://www1.axfc.net/uploader/Sc/so/166353.zip&key=dxlib
事象を再現した際のキャプチャー(と事象の説明)です。
> ttp://nukkorosu.80code.com/redirect.php?u=./img/nukkorosu17266.jpg
|
Re: マップの表示で ( No.11 ) |
- 名前:通りすがり 日時:2010/10/25 22:11
>管理人さん
わざわざ変更して頂いてありがとうございます。
ただ、説明が足りなくて申し訳ないのですが、私の場合はサンプルプログラムの事象ではないのでめり込みではないと思われます。
10000.0f四方程度の大きなサイズ地面をどの高さから写しても地面全体が消えてしまうのです。
カメラの視線に関係なく、地面のような水平なもののみで構成されるポリゴンで発生するようです。
愚考するに、farの向こう側に含まれる頂点のあるポリゴンだけ消えるのが正常な動作かと思われるのですが、いかがでしょうか。
>>No.10のいっちさんが再現されたとおりの症状で、ファイルをダウンロードして試させて頂きましたが、うちでもまったく同じように再現されています。
|
Re: マップの表示で ( No.12 ) |
- 名前:管理人 日時:2010/10/31 17:53
ご解説&サンプルプログラムのアップありがとうございます
私の環境でも3Dモデルが消えてしまう現象を確認できました、DXライブラリのバグです
この現象が発生する条件は
「クリッピングチェックに使用する『フレームが収まるボックスを形成する8座標』が
すべて Near より手前、又は Far より奥にある」
でした
正しい条件は
「クリッピングチェックに使用する『フレームが収まるボックスを形成する8座標』が
すべて Near より手前にあるか、すべて Far より奥にある」
でした( 片方に偏っている必要あり )
なので、そうなるように修正しました
よろしければお試しになってみてください m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
Re: マップの表示で ( No.13 ) |
- 名前:いっち 日時:2010/10/31 19:24
修正確認しました。綺麗にクリップされています(Nearも問題ない感じでした)。
対応ありがとうございました。
|