ページ 11

3Dポリゴンが表示されない

Posted: 2009年6月03日(水) 23:06
by チルチル
3Dポリゴンを描画しようと思ったのですが
なぜか表示されません・・
一応コードを添付しますが
本家リファレンスをコピーしただけです
何か原因に心当たりはないでしょうか?
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
			 LPSTR lpCmdLine, int nCmdShow )
{
	int GrHandle ;
	float Z, ZAdd ; 
	VERTEX_3D Vertex[6] ;	// ポリゴン2枚なので、頂点は6個

	// DXライブラリ初期化処理
	if( DxLib_Init() == -1 )	
		 return -1 ;	// エラーが起きたら直ちに終了

	// 描画先を裏画面にする
	SetDrawScreen( DX_SCREEN_BACK ) ;

	// テクスチャの読み込み
	GrHandle = LoadGraph( "TestTex1.jpg" ) ;

	// Z値の初期化
	Z = 0.0F ;

	// Z値の加算値を初期化(最初は近づける)
	ZAdd = -1.0F ;

	// 何かキーが押されるまでループ
	while( CheckHitKeyAll() == 0 )
	{
		// メッセージ処理
		if( ProcessMessage() != 0 ) break ;

		// 画面の初期化
		ClearDrawScreen() ;

		// Z値の処理
		Z += ZAdd ;

		// 一定のラインを越えていたら進行方向を反転する
		if( Z < -300.0F || Z > 300.0F ) ZAdd = -ZAdd ;

		// 頂点情報のセット
		{
			// 画面の中央に幅・高さ100で描画
			Vertex[0].pos.x = 320.0F - 50.0F ;	Vertex[0].pos.y = 240.0F + 50.0F ;	Vertex[0].pos.z = Z ;
			Vertex[0].u = 0.0F ;
			Vertex[0].v = 0.0F ;

			Vertex[1].pos.x = 320.0F + 50.0F ;	Vertex[1].pos.y = 240.0F + 50.0F ;	Vertex[1].pos.z = Z ;
			Vertex[1].u = 1.0F ;
			Vertex[1].v = 0.0F ;
	
			Vertex[2].pos.x = 320.0F - 50.0F ;	Vertex[2].pos.y = 240.0F - 50.0F ;	Vertex[2].pos.z = Z ;
			Vertex[2].u = 0.0F ;
			Vertex[2].v = 1.0F ;

			Vertex[3].pos.x = 320.0F + 50.0F ;	Vertex[3].pos.y = 240.0F - 50.0F ;	Vertex[3].pos.z = Z ;
			Vertex[3].u = 1.0F ;
			Vertex[3].v = 1.0F ;

			Vertex[4].pos.x = 320.0F - 50.0F ;	Vertex[4].pos.y = 240.0F - 50.0F ;	Vertex[4].pos.z = Z ;
			Vertex[4].u = 0.0F ;
			Vertex[4].v = 1.0F ;

			Vertex[5].pos.x = 320.0F + 50.0F ;	Vertex[5].pos.y = 240.0F + 50.0F ;	Vertex[5].pos.z = Z ;
			Vertex[5].u = 1.0F ;
			Vertex[5].v = 0.0F ;

			// 輝度は全要素100%
			Vertex[0].r = Vertex[0].g = Vertex[0].b = 255 ;
			Vertex[1].r = Vertex[1].g = Vertex[1].b = 255 ;
			Vertex[2].r = Vertex[2].g = Vertex[2].b = 255 ;
			Vertex[3].r = Vertex[3].g = Vertex[3].b = 255 ;
			Vertex[4].r = Vertex[4].g = Vertex[4].b = 255 ;
			Vertex[5].r = Vertex[5].g = Vertex[5].b = 255 ;

			// a も最大値
			Vertex[0].a = 255 ;
			Vertex[1].a = 255 ;
			Vertex[2].a = 255 ;
			Vertex[3].a = 255 ;
			Vertex[4].a = 255 ;
			Vertex[5].a = 255 ;
		}

		// ポリゴンを透過色無しで2枚描画
		DrawPolygon3D( Vertex, 2, GrHandle, FALSE ) ;

		// 裏画面の内容を表画面に反映
		ScreenFlip() ;
	}

	// DXライブラリ使用の終了処理
	DxLib_End() ;

	// ソフトの終了
	return 0 ;
}

Re:3Dポリゴンが表示されない

Posted: 2009年6月03日(水) 23:39
by yu
TestTex1.jpg は正常にロードできていますか?

Re:3Dポリゴンが表示されない

Posted: 2009年6月03日(水) 23:40
by チルチル
できているようです

Re:3Dポリゴンが表示されない

Posted: 2009年6月03日(水) 23:48
by yu
過去にこのプログラムを試しましたが正常に動作しました。

すみませんが、何が原因なのか私ではわかりません;

Re:3Dポリゴンが表示されない

Posted: 2009年6月04日(木) 00:14
by yu
今試したところ
自分も同じようなことが起こりました。

真中に消失点があると描画されない?・・・

以下の3行をDrawPolygon3D関数の上に書くと自分の方では描画されました。
MATRIX Matrix;
CreateViewportMatrix(&Matrix , 320.0F , 240.0F + 1.0F , 640.0F , 480.0F);
SetTransformToViewport(&Matrix);

Re:3Dポリゴンが表示されない

Posted: 2009年6月04日(木) 00:49
by チルチル
DrawPolygon3D関数の上に処理を加えてみると確かに描画されました

どうもありがとうございます

しかし、描画されない→真中に消失点があるから?
という考えに行きつくのがすごいですね・・

とりあえず問題は解決しましたが
原因がよくわからないので
もう少し解決にはしないでおきます

Re:3Dポリゴンが表示されない

Posted: 2009年6月04日(木) 18:23
by yu
以前のバージョンでは指定しなくても描画されたので
最新のDXライブラリの問題でしょうか・・・

あちらの掲示板で質問されたほうがよろしいかもしれません;

Re:3Dポリゴンが表示されない

Posted: 2009年6月05日(金) 20:23
by チルチル
そういえば最近ヘッダファイルを更新したような・・

ちなみにあちらってどこですか?

あとSetUseZBufferFlagを有効にすると描画されなくなるんですが・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月05日(金) 20:47
by Mist

Re:3Dポリゴンが表示されない

Posted: 2009年6月05日(金) 21:13
by チルチル
あ~なるほど本家の掲示板ですか
下の方に小さく表示されていたので気付きませんでした・・

あとx,y,zの値を大きくしすぎると正常に描画されないという問題も発生しました・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月06日(土) 14:58
by yu
>ちなみにあちらってどこですか?

Mist様が貼ってくださったURL先です。
って、もう質問されてましたねw


>あとSetUseZBufferFlagを有効にすると描画されなくなるんですが・・

ZBufferは使ったことが無いです。orz

ですが、確かにUseFlagとWriteFlagを立てても描画されませんでした。
しかし比較モードを変更すると描画されました。
描画はされました。
が、どの比較モードにしてもZ値が小さい値(カメラとの距離)ものを先に描画させることができませんでした;

使い方が悪いのでしょうか。orz
それとDrawFormatStringで描画していた文字が消えたりしました;


>あとx,y,zの値を大きくしすぎると正常に描画されないという問題も発生しました・・

これはかなり前から気になっていました。一部が欠けるように描画されるんですよね・・・
大きくなりすぎる前に描画しないようにすれば対処できました。

Re:3Dポリゴンが表示されない

Posted: 2009年6月06日(土) 20:17
by チルチル
う~んこれは厄介な問題ですね・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月08日(月) 16:20
by チルチル
やっぱり大きく描画しないといけない時もありますからね・・
何か方法はないものか・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月09日(火) 22:53
by チルチル
本家の掲示板でヘッダファイルを最新の物に更新したらポリゴンが表示されなくなりました・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月09日(火) 22:57
by yu
私の場合だけかもしれませんが、
消失点が中心にあっても描画されるようになりました。

ですが、ZBufferの問題は変わりません・・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月09日(火) 23:17
by チルチル
って事はやはりヘッダファイルのバージョンが関係していると言う事か・・?
最新版にするとX,Y,Zの最大値が低くなって今まで表示されていたポリゴンが表示されないようです・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月10日(水) 17:48
by チルチル
小さいポリゴンに分ければ描画できるのですが・・

Re:3Dポリゴンが表示されない

Posted: 2009年6月10日(水) 22:38
by チルチル
そもそもポリゴンの大きさと消失距離は関係するんでしょうか・・