トップページ > 過去ログ > 記事閲覧
CheckCameraViewClipについて
名前:ジャム 日時: 2012/11/01 16:24

こんにちは、いつも利用させていただいています。 さっそく質問ですが、CheckCameraViewClip関数では指定した座標が画面内、外の判定をしますが、内外だけでなくxyzのどの方向が外なのか確かめることができる方法はありますか? 内外判定をしたのちにカメラで座標を追うという動作をしたいと思っています。

Page: 1 |

Re: CheckCameraViewClipについて ( No.1 )
名前:いっち 日時:2012/11/03 23:24

> CheckCameraViewClip関数では指定した座標が画面内、外の判定をしますが、内外だけでなくxyzのどの方向が外なのか確かめることができる方法はありますか? 私の知る限りではありません。 視点とカメラ座標と目的の座標を比較すれば方向は分かると思います。
Re: CheckCameraViewClipについて ( No.2 )
名前:管理人 日時:2012/11/04 00:53

いっちさんも仰られていますが、どの方向の外なのかを取得することはできません なので機能を追加しました、よろしければこちらのバージョンをダウンロードしてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) 以下の関数を追加しました // 指定の座標がカメラの視界に入っているかどうかを判定する、戻り値で外れている方向も知ることができる // // 戻り値 0:視界に入っている // 0以外:視界に入っていない // ( DX_CAMERACLIP_LEFT や DX_CAMERACLIP_RIGHT が or 演算で混合されたもの、and 演算で方向を確認できる ) int CheckCameraViewClip_Dir( VECTOR CheckPos ) ; 引数は CheckCameraViewClip と同じくチェックしたい3D座標です 戻り値が CheckCameraViewClip とは違い、外れている方向の値の組み合わせです 以下の define 定義されている値が組み合わさります // クリッピング( 外れ )方向 #define DX_CAMERACLIP_LEFT (0x01) // 画面左方向にクリップ #define DX_CAMERACLIP_RIGHT (0x02) // 画面右方向にクリップ #define DX_CAMERACLIP_BOTTOM (0x04) // 画面下方向にクリップ #define DX_CAMERACLIP_TOP (0x08) // 画面上方向にクリップ #define DX_CAMERACLIP_BACK (0x10) // 画面後方向にクリップ #define DX_CAMERACLIP_FRONT (0x20) // 画面前方向にクリップ GetJoypadInputState の戻り値で、どのボタンが押されているかを PAD_INPUT_LEFT などの値と & 演算を使って if( ( PadInput & PAD_INPUT_LEFT ) != 0 ) { // 方向ボタン左が押されている } このように判定しますが、それと同じで CheckCameraViewClip_Dir の戻り値を int result = CheckCameraViewClip_Dir( position ) ; if( ( result & DX_CAMERACLIP_LEFT ) != 0 ) { // 画面左方向に見切れている } if( ( result & DX_CAMERACLIP_RIGHT ) != 0 ) { // 画面右方向に見切れている } if( ( result & DX_CAMERACLIP_TOP ) != 0 ) { // 画面上方向に見切れている } このように DX_CAMERACLIP_LEFT などの値と & 演算して、0ではなかったらその方向に 見切れている、というような判定の仕方をします ( 戻り値が0だった場合は座標は画面内に収まっているということになります ) よろしければお使いください
Re: CheckCameraViewClipについて ( No.3 )
名前:ジャム 日時:2012/11/04 21:35

いっちさん、管理人さん回答ありがとうございます。 関数の機能の追加本当に助かります。 早速ダウンロードさせていただきました。 これで順調に組んで行くことができそうです。 ありがとうございました。

Page: 1 |