画像の拡大・縮小で疑似3Dを作りたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

画像の拡大・縮小で疑似3Dを作りたい

#1

投稿記事 by YYSS » 9年前

タイトルの通り、拡大・縮小を使って疑似3Dを表現したいのですが、なかなか立体的に見えません・・・

普通に3D機能を使えば解決するのですが、
3Dの使い方を知らないのと、レトロゲームチックな雰囲気を出したいので2Dで表現したいのです。

~開発環境~
○Windows 7 Ultimate SP1
○Visual C++ 2010 Express
○DXライブラリ使用


ソースはこんな感じで

コード:

			SetDrawBlendMode( DX_BLENDMODE_ALPHA, Tree[i].Alpha );
			DrawRotaGraph( (int)Tree[i].X, (int)Tree[i].Y, Tree[i].Scale, 0, Image, Trans, false );

			Tree[i].X		+= ( Tree[i].X - CEN_X ) /50;

			Tree[i].Y		+= 4;
			Tree[i].Scale	+= 0.01;

			if( Tree[i].Alpha < 255 ){
				Tree[i].Alpha	+= 3;
			}
			if( Tree[i].Scale >= 2 ){
				Tree[i].Flag	= false;
			}
サンプルとして、桜の木の画像を、輝度と大きさが0の状態から始まり、
少しづつ拡大させて輝度を上げたら疑似3Dが表現できると思ったのですが、立体的に見えないのが現実です;;


プロジェクトを添付するのでアドバイスをいただけると嬉しいです。
添付ファイル
Ideal.zip
(12.92 MiB) ダウンロード数: 14 回

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

Re: 画像の拡大・縮小で疑似3Dを作りたい

#2

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

描画順番が奥のものからにソートされていないのが問題のうちの一つですね。
あとスケールとY座標は透視変換をしたほうが良いと思います。

[追記]
とりあえず、透視変換だとややこしく思えると思うので最低条件。
仮想的なカメラからの距離が半分になると見える大きさは倍になるって事を守ってください。
つまり、スケールの変化や座標の変化は同じ幅で変化しません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

Re: 画像の拡大・縮小で疑似3Dを作りたい

#3

投稿記事 by YYSS » 9年前

回答ありがとうございます

色々と頑張ってみたのですが、処理がどんどん重くなっていき、
3Dを使って表現した方が良いような気がしてきたので結局3Dを使うことにしました。

閉鎖

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