モデルの読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ヒューガ

モデルの読み込み

#1

投稿記事 by ヒューガ » 13年前

http://www1.axfc.net/uploader/Sc/so/364563
上のモデルですが、mqoファイルは表示されるのにxファイルは表示されません。
どうすればいいでしょうか?

コード:

#include"DXlib.h"
int model;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
				model=MV1LoadModel("qube.mqo");	
		

 while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0  && GetKey()==0 && GetPad()==0 && comand()==0){
	 MV1SetPosition(VGet(320.0f,225.0f,-350.0f));
	 MV1DrawModel(model);
}

DxLib_End(); 
	return 0;
}

ヒューガ

Re: モデルの読み込み

#2

投稿記事 by ヒューガ » 13年前

ごめんなさいこっちです。

コード:

#include"DXlib.h"
int model;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
                model=MV1LoadModel("qube.x"); 
        
 
 while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){
     MV1SetPosition(model,VGet(320.0f,225.0f,350.0f));
     MV1DrawModel(model);
}
 
DxLib_End(); 
    return 0;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: モデルの読み込み

#3

投稿記事 by softya(ソフト屋) » 13年前

その前にDXライブラリの掲示板を放置してませんか?

それとこれも。
「3次元から2次元へ • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11080#p89357

まずやるべき事は行なってくださいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ヒューガ

Re: モデルの読み込み

#4

投稿記事 by ヒューガ » 13年前

ごめんなさい。解決してました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: モデルの読み込み

#5

投稿記事 by softya(ソフト屋) » 13年前

すごい遠くにありますが表示されてますよ。
あとインデントはキレイに揃えてくださいね。

【補足】
mqoとxで立方体が置かれている座標が違うようです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

nil
記事: 428
登録日時: 14年前

Re: モデルの読み込み

#6

投稿記事 by nil » 13年前

コード:

#include"DXlib.h"
int model;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
	model=MV1LoadModel("qube.x");

	while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){
		MV1SetPosition(model,VGet(320.0f,225.0f,350.0f));//ここが原因ですね-350.0f
		MV1DrawModel(model);
	}

	DxLib_End(); 
	return 0;
}

ヒューガ

Re: モデルの読み込み

#7

投稿記事 by ヒューガ » 13年前

動きが予測できません・・・
VGet(320.0f,240.0f,-373.0f));で表示されてたいして大きく写ってないのに
VGet(320.0f,240.0f,-374.0f));で表示されなくなったり・・・
mqoファイルでの座標をどう変換すればいいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: モデルの読み込み

#8

投稿記事 by softya(ソフト屋) » 13年前

原因が分かりました。スケールが違いました。
qube.xを100倍するとqube.mqoと同じ大きさです。

コード:

#include"DXlib.h"
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
	ChangeWindowMode( TRUE ), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
	int model1 = MV1LoadModel( "qube.mqo" );
	int model2 = MV1LoadModel( "qube.x" );
	MV1SetScale(model2,VGet(100,100,100));	//	model2が1/100の大きさだった。

	//	モデルの回転
	float rotY = 0.0f;

	//	カメラ設定
	SetCameraNearFar(10.0f,10000.0f);
	float cposx = 0.0f;
	
	while( ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 ) {
		//	カメラ設定
		if( 1==CheckHitKey(KEY_INPUT_LEFT) ) cposx-=5;
		if( 1==CheckHitKey(KEY_INPUT_RIGHT) ) cposx+=5;
		SetCameraPositionAndTarget_UpVecY(VGet(cposx,500.0f,-500.0f),VGet(0.0f,0.0f,0.0f));
		
		//	表示
		MV1SetPosition( model1, VGet( 150.0f, 0.0f, 350.0f ) );
		MV1SetRotationXYZ( model1, VGet( 0.0f, rotY, 0.0f ) );
		MV1DrawModel( model1 );

		MV1SetPosition( model2, VGet( -150.0f, 0.0f, 350.0f ) );
		MV1SetRotationXYZ( model2, VGet( 0.0f, rotY, 0.0f ) );
		MV1DrawModel( model2 );
		
		//	回転
		rotY += PHI / 180.0f;
	}

	DxLib_End();
	return 0;
}
おまけ。ちょっと遊んでみた。

コード:

#include"DXlib.h"
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{
	ChangeWindowMode( TRUE ), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
	int model1 = MV1LoadModel( "qube.mqo" );
	int model2 = MV1LoadModel( "qube.x" );
	MV1SetScale(model2,VGet(5,5,5));	//	model2が1/100の大きさだった。

	//	モデルの回転
	float rotY = 0.0f;

	//	初期設定
	SetUseZBuffer3D(TRUE);
	SetWriteZBuffer3D(TRUE);
	SetCameraNearFar(10.0f,10000.0f);
	VECTOR cam = VGet(0.0f,500.0f,-500.0f);
	
	while( ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 ) {
		//	カメラ設定
		if( 1==CheckHitKey(KEY_INPUT_LEFT) ) cam.x-=5;
		if( 1==CheckHitKey(KEY_INPUT_RIGHT) ) cam.x+=5;
		if( 1==CheckHitKey(KEY_INPUT_LSHIFT) || 1==CheckHitKey(KEY_INPUT_RSHIFT) ) {
			if( 1==CheckHitKey(KEY_INPUT_UP) ) cam.z+=5;
			if( 1==CheckHitKey(KEY_INPUT_DOWN) ) cam.z-=5;
		} else {
			if( 1==CheckHitKey(KEY_INPUT_UP) ) cam.y+=5;
			if( 1==CheckHitKey(KEY_INPUT_DOWN) ) cam.y-=5;
		}
		SetCameraPositionAndTarget_UpVecY(cam,VGet(0.0f,0.0f,0.0f));
		
		//	グリッド
		for( float x=-1000 ; x<=1000 ; x+=100 ) {
			DrawLine3D( VGet(x,0,-1000),VGet(x,0,1000),GetColor(255,255,255));
			DrawLine3D( VGet(-1000,0,x),VGet(1000,0,x),GetColor(255,255,255));
		}
		
		//	表示
		MV1SetPosition( model1, VGet( 200.0f, 0.0f, 300.0f ) );
		MV1SetRotationXYZ( model1, VGet( 0.0f, rotY, 0.0f ) );
		MV1DrawModel( model1 );

		MV1SetPosition( model2, VGet( -200.0f, 0.0f, 300.0f ) );
		MV1SetRotationXYZ( model2, VGet( 0.0f, rotY, 0.0f ) );
		MV1DrawModel( model2 );
		
		//	回転
		rotY += PHI / 180.0f;
	}

	DxLib_End();
	return 0;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ヒューガ

Re: モデルの読み込み

#9

投稿記事 by ヒューガ » 13年前

100倍にしたらmqoファイルと同じように映りました。ありがとうございました。

ヒューガ

Re: モデルの読み込み

#10

投稿記事 by ヒューガ » 13年前

解決です。

閉鎖

“C言語何でも質問掲示板” へ戻る