3ds Max 2014 では、MAXScript のビットマップ ガンマの処理が見直され、長い間放置されていたいくつかの問題が解決されました。
3ds Max 2014 より前のバージョンの MAXScript では、ファイルからロードされた、スクリプトによって作成された、あるいはさまざまなフォーマットでディスク ビットマップ ファイルに保存されたビットマップ値のガンマ設定へのアクセスが制限されていました。
上記の問題を解決するため、3ds Max 2014 では、ビットマップ値のガンマをスクリプトが適切に処理できるように MAXScript が拡張されました。
いずれの場合も、追加は拡張機能として実装されます。すなわち、古いスクリプトも構文上正しいものとしてそのまま残ります。
3ds Max 2014 以降では、ビットマップ値のガンマは #auto 、 #default あるいは上書きの 3 つの方法によって制御することができます。
openBitmap() 関数は、オプションの gamma: キーワード引数を受け付けるようになり、次のように使用することができます。
例: |
a = openBitmap "test.jpg" gamma:#auto -- auto mode b = openBitmap "test.exr" gamma:1.0 -- an override |
同様に、ビットマップ save() メソッドはオプションの gamma: キーワードにより拡張され、次のように使用することができます。
save a gamma:#auto -- auto mode save b gamma:1.0 -- an override
また、 save() 関数はオプションのキーワード metadata: を提供します。これは、さまざまなビットマップ ファイル名選択関数である SelectSaveBitmap() 、 getBitmapSaveFilename() および getBitmapOpenFilename() から取得されたダイアログ設定を渡すために使用することができます。 詳細については、このページの以降の部分を参照してください。
render() 関数を使用してファイルをレンダリングする場合は、オプションの gamma: キーワードを使用してガンマを設定することもできます。
既存の .gamma プロパティはビットマップの実際のガンマを表現するように修正されました。 以前は、出力と入力のガンマが 1 つのパラメータに含まれていて、問題の原因となっていました。
これを解決するため、2 つの新しいプロパティが追加され、入力ガンマおよびそのガンマがどのように取得されたかを明示的に処理するようになりました。
.inputGamma はロードされたファイルのガンマを通知します。 これは #auto、#default、あるいは上書きの値を返します。 これは、たとえばガンマ情報がどこから取得されたかなどを表示するために使用することができます。 また、たとえば、ロードされたビットマップを確実に保存するために使用することもできます。
.inputGammaValue は、使用された実際の値を返します。たとえば、#auto の場合はファイル タイプに応じて 1.0 または 2.2、#default の場合は 2.2、上書きの場合は上書き値を返します。
オプションの by-reference 出力パラメータとしてガンマ値、およびダイアログのセットアップ データを返す機能が MAXScript ビットマップ ファイル ダイアログに追加されました。
これらのオプションのパラメータを使用する場合、ガンマ オプションが表示され、有効になります。 使用しない場合、ガンマ オプションは、ファイル ダイアログ内でグレー表示になります。
getBitmapOpenFilename() getBitmapSaveFilename() SelectSaveBitmap()
これらの各関数では、オプションのキーワード引数 gamma: は、 #auto 、 #default あるいは数値を返す by-reference 変数を参照することができます。
例: |
x = SelectSaveBitmap caption:"Select a file" gamma:&gma |
関数が正常に返った場合、変数 'gma' にはダイアログからのガンマ値が含まれています。 |
同様に、ビットマップの[保存](Save)ダイアログは、[設定](Setup)ボタンによって格納されたメタデータを、by-reference のオプションの引数 metadata: を介して要求することによって返すことができます。
関数 getPixels() は、オプションのブール演算パラメータ linear: により拡張されました。
例: |
a = openBitmap "hello.jpg" gamma:#auto --this will set gamma to 2.2 p = getPixels a [0,0] 50 linear:true --get the linear pixel values (gamma 1.0) p[1].r *= 2.0 --make first pixel twice as red... |
次のスクリプト例はすべてのビットマップ テクスチャに適用され、 #default (レガシー モード)に設定された場合は、ガンマを 2.2 の上書きに変更します。
ビットマップ値のガンマ(ロード時に書き込まれる)を変更することはできませんのでご注意ください。新しいガンマを使用して元のソース ファイルから再ロードすることは可能です。