トップページ > 過去ログ > 記事閲覧
3D描画領域の設定
名前:maruo 日時: 2012/02/29 10:22

#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle ; VECTOR CameraPos, TargetPos, Vect1, Vect2 ; MATRIX Matrix ; float CenterY[2]; RECT Rect[2]; ChangeWindowMode ( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } // モデルの読み込み ModelHandle = MV1LoadModel( "mmd_batokin_island/batokin_island5.x" ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; TargetPos = VGet( 0.0f, 0.0f, 0.0f ); Vect1 = VGet( 0.0f, 0.0f, 100.0f ); Matrix = MGetIdent(); Rect[0].left = 0; Rect[0].right = 640; Rect[0].top = 0; Rect[0].bottom = 240; Rect[1].left = 0; Rect[1].right = 640; Rect[1].top = 240; Rect[1].bottom = 480; CenterY[0] = 120.0f; CenterY[1] = 360.0f; // ESCキーが押されるかウインドウが閉じられるまでループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { // 画面をクリア ClearDrawScreen() ; if( CheckHitKey( KEY_INPUT_UP ) == 1 ) { Matrix = MMult( Matrix, MGetRotX( PHI_F / 180.0f ) ); } if( CheckHitKey( KEY_INPUT_DOWN ) == 1 ) { Matrix = MMult( Matrix, MGetRotX( PHI_F / -180.0f ) ); } Vect2 = VTransform( Vect1, Matrix ) ; CameraPos = VAdd( TargetPos, Vect2 ) ; SetCameraPositionAndTarget_UpVecY( CameraPos, TargetPos ) ; for( int i=0; i<2; i++ ) { SetDrawArea ( Rect[i].left, Rect[i].top, Rect[i].right, Rect[i].bottom ); SetCameraScreenCenter( 320.0f, CenterY[i] ); // モデルの描画 MV1DrawModel( ModelHandle ) ; } // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } 上記の方法で描画して回転させると 下の領域で表示しているモデルだけが消える角度があります。 こういったことをしたい場合はどういう風に書くのがよろしいのでしょうか? モデルは http://loda.jp/batokin/?id=7 こちらを使わさせて頂きました。

Page: 1 |

Re: 3D描画領域の設定 ( No.1 )
名前:いっち 日時:2012/03/02 20:28

私の環境でも事象の確認が出来ました。 特におかしな部分は見当たらないので管理人さんの見解をお待ちするのが良いと思います。
Re: 3D描画領域の設定 ( No.2 )
名前:管理人 日時:2012/03/04 20:45

掲載していただいたテストプログラムで私の環境でも現象が再現しました 調べてみたところ、DXライブラリの視野クリップの処理が根本的に間違っていました ( 殆どの場合意図した結果が得られるのですが、意図した結果が得られる保証が無いという ) 正しいクリップ処理に変更したバージョンをアップしましたので、 よろしければお試しになってみてください 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/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
Re: 3D描画領域の設定 ( No.3 )
名前:maruo(解決) 日時:2012/03/05 15:15

>いっちさん 確認ありがとうございました。 書き方は特に問題なさそうなのでこの方法でがんばります。 >管理人さん 修正ありがとうございます。 問題なく表示できるのを確認しました。

Page: 1 |