トップページ > 過去ログ > 記事閲覧
3Dモデルの奥行き
名前:NULL 日時: 2011/01/15 17:12

お世話になっております。ゲーム制作で躓いてしまったので質問させてください。 現在3Dのモデルを表示しようとしたのですが、モデルが奥行き感を無視して配置になってしまいます。 ステージ→キャラの順に描画するとキャラが常に手前に表示されてしまいます。 本来はステージの凹凸の影に隠れてほしいのでそのようにしたいと思っています。 ちなみにサンプルの3Dアクションの基本を見ながら制作していて、サンプルは問題なく動きます。

Page: 1 |

Re: 3Dモデルの奥行き ( No.1 )
名前:いっち 日時:2011/01/15 20:18

事象の発生するソースをご提供頂けますか?
Re: 3Dモデルの奥行き ( No.2 )
名前:NULL 日時:2011/01/15 23:56

そのままですと長くなってしまうため、問題のところだけをまとめたソースを作りました。 以下の通りです。 -------------------------------------------------- #include "DxLib.h" #define kDEFAULT_NEAR 0.f #define kDEFAULT_FAR 10000.f #define kPLAYER_SPEED 10.0f char Key[256]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ if( SetOutApplicationLogValidFlag(FALSE) == -1 || ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理 SetDrawScreen( DX_SCREEN_BACK ); //裏画面に設定 // プレイヤー初期化 VECTOR vPos = VGet( 0.0f, 0.0f , 0.0f ); int g_nPlayerHandle = MV1LoadModel( "Data/Model/Player.x" ); // ステージ初期化 int g_nStageHandle = MV1LoadModel( "Data/Model/Stage2.mqo" ); // カメラ初期化 { VECTOR vEye, vTarget, vUp; float fNear, fFar; vEye = VGet( 0,100,-1500 ); // 座標 vTarget = VGet( 0,0,0 ); // 注視点 vUp = VGet( 0,1.0f,0 ); // アップベクトル SetCameraPositionAndTargetAndUpVec( vEye, vTarget, vUp ); fNear = kDEFAULT_NEAR; fFar = kDEFAULT_FAR; SetCameraNearFar( fNear, fFar ); } while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){ // 移動制御 --------------------------------------- if( Key[KEY_INPUT_LEFT] ) vPos.x -= kPLAYER_SPEED; else if( Key[KEY_INPUT_RIGHT] ) vPos.x += kPLAYER_SPEED; if( Key[KEY_INPUT_UP] ) vPos.z += kPLAYER_SPEED; else if( Key[KEY_INPUT_DOWN] ) vPos.z -= kPLAYER_SPEED; // プレイヤー座標更新 MV1SetPosition( g_nPlayerHandle, vPos ) ; //------------------------------------------------- // 描画 MV1DrawModel( g_nStageHandle ); MV1DrawModel( g_nPlayerHandle ); ScreenFlip();//裏画面を表画面に反映 } DxLib_End(); return 0; } -------------------------------------------------- 以上です。 よろしくお願いします。
Re: 3Dモデルの奥行き ( No.3 )
名前:いっち 日時:2011/01/16 00:48

SetCameraNearFar に設定する値に問題があるのではないかと思います。 詳しくはリファレンスをご覧下さい。 > ://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R12N1 私の環境では kDEFAULT_NEAR を 5.0f 以上にするとおおむね正常な描画が得られているように見受けられました。
Re: 3Dモデルの奥行き ( No.4 )
名前:NULL(解決) 日時:2011/01/16 01:13

リファレンス確認しました。 ニアの値はすごく大切なようですね。 無事に解決できました。 ありがとうございました。

Page: 1 |