トップページ > 過去ログ > 記事閲覧
3Dモデルのテクスチャのフィルタリングについて
名前:ateff 日時: 2009/09/24 05:00

色々と調べましたが解決しませんので初めて質問させてもらいます。 あまり知識が少ないのと、説明ベタなので下手な質問かもしれません。ごめんなさい。 MacのHyperCardのように画面を白黒二色のゲームを作りたいのですが メタセコイアで作った3Dモデルを最近点フィルタリング方式で読み込んで見たところ思い通りにならないのです。 何が思い通りにならないのかといいますと、メタセコイアのプレビューのように完全に白と黒にならないのです。 メタセコイアの最近傍補間法(?)のプレビューのように完全に白と黒にするにはどうすればいいんでしょうか? テクスチャの画像のサイズを変えてみたりしたのですがやはり無理でした。 もしくは画面の色彩を完全に単色化してしまう方法なんてないんでしょうか? 下手な説明だけでは理解できないと思いますので画像をアップしました。 URLが貼れない様なのでアップローダー名とファイル番号をお伝えします。 どっとうpろだ.org dotup.org177484.jpg 回答いただけたらありがたいです。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {ChangeWindowMode( TRUE ) ; int ModelHandle ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } // 3Dモデルの読み込み ModelHandle = MV1LoadModel( "fsdfs.mqo" ) ; // モデルを画面に映る位置に移動 MV1SetPosition( ModelHandle, VGet( 320.0f, 120.0f,0.0f ) ) ; // テクスチャ0番のフィルタリングモードを DX_DRAWMODE_NEAREST に変更 MV1SetTextureSampleFilterMode( ModelHandle, 0, DX_DRAWMODE_NEAREST ) ; // モデルを描画する MV1DrawModel( ModelHandle ) ; // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }

Page: 1 |

Re: 3Dモデルのテクスチャのフィルタリングについて ( No.1 )
名前:管理人 日時:2009/09/24 23:50

対処法から申し上げますと、2のn乗( 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 ... )の 幅、高さを持つ画像にして頂ければメタセコイアの最近傍補間法と同じ見た目になります 元のくっきりした画像が滲んでしまう原因は、線形補間による拡大処理が行われているからです DXライブラリではモデルに貼るテクスチャの画像が2のn乗サイズではない場合は プラス方向に最も近い2のn乗サイズの画像に拡大してからテクスチャに転送します 例: (幅x高さ) 50x50 → 64x64 200x200 → 256x256 17x17 → 32x32 513x65 → 1024x128 この際拡大の方式を線形補間方式を使用しているので、2のn乗サイズではない画像は 元の画像よりも少しボヤけた見た目になります ( ateffさんがお試しになられたモデルに貼られているテクスチャのサイズが100x100なので  128x128サイズに線形補間拡大が行われて、ピクセルとピクセルの境界が滲んだ感じになっています ) この処理をしている理由は、2のn乗サイズではないテクスチャを扱うことができない グラフィックスデバイスがあるからです 2のn乗サイズのテクスチャしか対応していないグラフィックスデバイスで2のn乗サイズ 以外の画像をテクスチャとして扱うには、プラス方向に一番近い2のn乗サイズの画像に 拡大してからテクスチャに転送して扱うなどの手法を採る必要があります ( メタセコイアでも2のn乗サイズ以外のテクスチャに対応していないグラフィックスデバイスで 2のn乗サイズ以外のテクスチャを使ったモデルを表示した場合は、一番近い2のn乗サイズに 拡大されてからテクスチャとして扱われています( ただ線形補間拡大ではなく最近点サンプリングの拡大です ) ) いずれすべてのグラフィックスデバイスが2のn乗サイズ以外のテクスチャを扱えるように なると思いますが、現時点では2のn乗サイズ以外のテクスチャを扱えないグラフィックス デバイスが多く存在するので、そちらに合わせています
Re: 3Dモデルのテクスチャのフィルタリングについて ( No.2 )
名前:ateff 日時:2009/09/25 06:36

回答ありがとうございます!本当に助かりました。無理かと思ってました・・・ そういえば、DrawPolygon3Dも2のn乗じゃないとダメなんですよね。試してみればよかったものを・・・ DXライブラリも3D機能がどんどん豊富になってきて嬉しいです。 開発頑張ってください。応援してます!

Page: 1 |