トップページ > 過去ログ > 記事閲覧
3D空間に2Dのものがひょうじされない
名前:baru 日時: 2012/04/04 19:51

次のプログラムを実行しても2Dのものが表示されません どうすれば3D空間に3Dの物体と2Dのものが一緒に表示されるのでしょうか? #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } int Rc=0,Jump=0,Jc=0;//Rcループカウンター,Jumpジャンプフラッグ,Jcジャンプカウンター // Zバッファを有効にする SetUseZBuffer3D( TRUE ) ; // Zバッファへの書き込みを有効にする SetWriteZBuffer3D( TRUE ) ; float MYX=320,MYY=240,MYZ=0; float Range, Atten0, Atten1, Atten2 ; int KabeModel=MV1LoadModel( "Kabe.mqo" ) ; int FrameNo=0; int i; int j; Range = 2000.0f ; Atten0 = 0.0f ; Atten1 = 0.0006f ; Atten2 = 0.0f ; VERTEX3D Vertex[ 6 ] ; char Map[ 16 ][ 16 ] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,0, 0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0, 0,1,1,1,1,1,1,0,1,0,0,1,1,1,1,0, 0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0, 0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,0, 0,0,0,1,1,1,0,1,0,0,0,1,0,0,1,0, 0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0, 0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0, 0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0, 0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,0, 0,1,1,1,0,1,0,0,0,0,1,0,1,0,1,0, 0,1,0,1,1,1,0,0,0,1,1,0,1,0,0,0, 0,1,0,1,0,0,0,1,1,1,0,0,1,1,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, } ; // ライトのアンビエントカラーを赤色に変更 SetLightAmbColor( GetColorF( 0.4f, 0.0f, 0.0f, 0.0f ) ) ; MATERIALPARAM MatParam ; MatParam.Diffuse = GetColorF( 1.0f, 1.0f, 1.0f, 1.0f ) ; // ディフューズカラーは白 MatParam.Ambient = GetColorF( 1.0f, 1.0f, 1.0f, 1.0f ) ; // アンビエントカラーは白( ライトのアンビエントカラーをそのまま反映する ) MatParam.Specular = GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ) ; // スペキュラカラーは無し MatParam.Emissive = GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ) ; // エミッシブカラー( 自己発光 )もなし MatParam.Power = 0.0f ; // スペキュラはないので0 // マテリアルのパラメータをセット SetMaterialParam( MatParam ) ; ChangeLightTypePoint( VGet( 320.0f, 1000.0f, 200.0f ), Range, Atten0, Atten1, Atten2 ) ; while(1){ if(CheckHitKey(KEY_INPUT_LEFT)==1)MYX-=1; if(CheckHitKey(KEY_INPUT_RIGHT)==1)MYX+=1; if(CheckHitKey(KEY_INPUT_UP)==1)MYZ+=1; if(CheckHitKey(KEY_INPUT_DOWN)==1)MYZ-=1; if(CheckHitKey(KEY_INPUT_SPACE)==1){ if(Jump==0){Jump++; Jc=Rc; }} if(Jc+20>=Rc){ if(Jump==1){ MYY+=3;}} else{ if(Jump==1){ Jump++; } } if(Jump==2){ MYY--; if(MYY<240){ Jump-=2; } } if(MYY>240)MYY--; // マップを描画する for( i = 0 ; i < 16 ; i ++ ) { for( j = 0 ; j < 16 ; j ++ ) { // 道ではないところは描画しない if( Map[ i ][ j ] == 0 ) continue ; // 壁モデルの座標を変更する MV1SetPosition( KabeModel, VGet( j * 1000.0f, 0.0f, i * 1000.0f ) ) ; // 4方の壁の状態で描画するフレーム番号を変更する FrameNo = 0 ; if( Map[ i ][ j + 1 ] == 0 ) FrameNo += 1 ; if( Map[ i ][ j - 1 ] == 0 ) FrameNo += 2 ; if( Map[ i + 1 ][ j ] == 0 ) FrameNo += 4 ; if( Map[ i - 1 ][ j ] == 0 ) FrameNo += 8 ; // 割り出した番号のフレームを描画する MV1DrawFrame( KabeModel, FrameNo ) ; } } // 3D空間上に球を描画する DrawSphere3D( VGet( MYX, MYY, MYZ ), 80.0f, 32, GetColor( 10,24,231 ), GetColor( 100, 40, 100 ), TRUE ); // Windows システムからくる情報を処理する if( ProcessMessage() == -1 ) break ; // ESCキーが押されたらループから抜ける if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ) break ; WaitTimer(20); ClearDrawScreen(); Rc++; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }

Page: 1 |

Re: 3D空間に2Dのものがひょうじされない ( No.1 )
名前:いっち 日時:2012/04/04 22:17

> 次のプログラムを実行しても2Dのものが表示されません > どうすれば3D空間に3Dの物体と2Dのものが一緒に表示されるのでしょうか? 「2Dのもの」とはソースでいうところのどの部分でしょうか?
Re: 3D空間に2Dのものがひょうじされない ( No.3 )
名前:baru 日時:2012/04/05 09:55

>「2Dのもの」とはソースでいうところのどの部分でしょうか? コメントの「//マップを描画する」 の一個下のfor文の中です
Re: 3D空間に2Dのものがひょうじされない ( No.4 )
名前:すにー 日時:2012/04/05 13:30

MV1Draw〜は3Dモデルを表示するものです 2Dっぽく表示したいのならSetupCamera_Orthoでしょうか 平行投影されるので3Dらしさが無くなるとは思います
Re: 3D空間に2Dのものがひょうじされない ( No.5 )
名前:baru 日時:2012/04/05 15:12

そうなんですか 実はこれはこのサイトの「迷路を3Dで表示」を参考にしてつくったものなんです でもMV1Draw〜を使っても3Dモデルが表示されないんですよ
Re: 3D空間に2Dの ( No.6 )
名前:獅子 日時:2012/04/05 18:05

パッと見なんで見当違いなら申し訳ないのですが、カメラの視点の問題では?
Re: 3D空間に2Dのものがひょうじされない ( No.7 )
名前:すにー 日時:2012/04/05 19:55

"3D"モデルを表示したい、ということでよろしいですね 私も最初カメラの視線を疑ったのですが僅かに写ってはいたんですよ モデルとテクステャはフォルダにコピーしましたか? ログにKabe.mqoが開けません。などと書かれていませんか?
Re: 3D空間に2Dのものがひょうじされない ( No.8 )
名前:baru 日時:2012/04/05 20:51

ちゃんとフォルダの中にはいっています ログにもKabe.mqoが開けませんとも 悪いことはなにもかいてありません ローカル変数が一回も使われてないという 警告だけです mqoファイルはDXライブラリ置き場のサンプルプログラムの「迷路を3Dで表示」をつかいました
Re: 3D空間に2Dのものがひょうじされない ( No.9 )
名前:いっち 日時:2012/04/06 01:02

baruさん> 私の環境でビルドした実行ファイルをアップロードしました。 宜しければ動作をご確認下さい。 > h t t p : / / w w w1.axfc.net/uploader/Sc/so/334765.zip&key=dxlib ・URLは途中のスペースを削ってください。 ・DXライブラリは4/1日付けのテストバージョンを使用しています ・私の環境でのスクリーンショットを"実行結果.bmp"として同梱しています。 ・テストしやすいようにコードを少しだけ変えてあります 同様に事象が発生する場合は起動直後のスクリーンショットをとって画像をアップロードして頂けますか?
Re: 3D空間に2Dのものがひょうじされない ( No.10 )
名前:baru 日時:2012/04/06 20:58

ダウンロードしたファイルに入っていたソースコードをそのままコピーして コンパイル実行したところ黒い空間に球が表示されるだけです。 また昔にペイントを消してしまったのでスクリーンショットをアップロードできません。すいません またダウンロードしたファイルに入っていたビルドしてある ファイルを実行したところちゃんと迷路が表示されていました また同様のことが3D空間に三角形を表示する時にもおきて三角形がカメラにうつらないんですよ
Re: 3D空間に2Dのものがひょうじされない ( No.11 )
名前:いっち 日時:2012/04/06 22:40

baruさん> > ダウンロードしたファイルに入っていたソースコードをそのままコピーして > コンパイル実行したところ黒い空間に球が表示されるだけです。 開発環境は何をご使用でしょうか? もし、VisualStudio 系をご使用で VisualStudio 上からプログラムを実行した場合、 カレントディレクトリはプロジェクト(拡張子が .vcproj のファイル)の存在するフォルダになります。 ですので VisualStudio 上からプログラムを実行する場合は"Kabe.mqo"と"KabeTex.bmp"を プロジェクトの存在するフォルダに入れてください。("Debug"フォルダや"Release"フォルダの中では駄目です) > またダウンロードしたファイルに入っていたビルドしてある > ファイルを実行したところちゃんと迷路が表示されていました このように実行ファイルを直接実行した場合のカレントディレクトリは実行ファイルと同一のフォルダになりますので、 "Kabe.mqo"と"KabeTex.bmp"は実行ファイルと同じフォルダに入れることになります。 > また同様のことが3D空間に三角形を表示する時にもおきて三角形がカメラにうつらないんですよ 現在の段階では本件とは別の事象だと思います。
Re: 3D空間に2Dのものがひょうじされない ( No.12 )
名前:baru(解決) 日時:2012/04/07 12:06

ぼくのミスでした 同じ名前のフォルダが2こあって1この方でコンパイル実行してもう一つのほうにmqoファイルがはいってました 今まで付き合っていただいてありがとうございました あと本当にすみませんでした

Page: 1 |