LightWaveでアルファ抜きのやりかたを覚える
今回はアルファ抜きについて。
他のソフトでは恐らく大半が黒でアルファ抜きをするようですが、何故かLightWaveではうまくいかない。
参考書通りにやっても何故かできない、そんなことが長く続きました。
たまたまできた時もありましたが、当時はちゃんと記録していなかったので消失。
ずっと分からずにいましたが、ようやく扱い方が分かりました。
なので、また忘れてしまわないようにしっかりメモしていきます。
準備
モデラー
まずモデラーで地面と切り抜きたい板ポリを用意。
板ポリを少しだけ上に移動させます。
色・質感(サーフェイスの色・質感設定)を開いて、それぞれ地面をground、板ポリをgridという名前にしました。
そして、gridだけUVマップを作成して、EPSファイルで保存。
あとはEPS形式ファイルを開けるペイントソフトで簡単にペイントしちゃいます。(PhotoshopやGIMPなど)
後で分かったのですがどうやらLightWaveは白で切り抜くみたいなので、透過させたい部分を白で塗りました。(他のソフトは黒で切り抜く仕様だったような・・・)
ただの確認用なので適当です。
レイアウト
レイアウトではライトの位置と角度を変更します。
Lightを選択して光が真上から当たるようにしました。
これで準備完了。
クリップマップとは?
クリップマップの意味
clip
別表記:クリップ
「clip」とは、「切る」「刈る」「切り抜く」「切り取る」「穴をあける」といった物体や状況などの一部を取り出す行為のことを意味する英語表現である。
これからオブジェクトにアルファチャンネルとかUVマップをセットしていきますが、その前にクリップマップの “クリップ" とは何ぞやとなったので、少し意味を調べてみました。
どうやらクリップには “切り抜き" とか あるものの一部を “切り取った" とかそういった意味があるようです。
なるほど、何かを切り抜くための機能なのかと認識しました。
クリップマップの設定箇所が2か所ある
クリップマップの設定なんですが、なんと2か所存在していました。
どっちを使えば良いんだと思ったので、こちらも少し調べました。
- オブジェクト単位のクリップマップ:オブジェクトプロパティ
- サーフェイス単位のクリップマップ:サーフェイスエディター(色・質感編集)
どうやらオブジェクト単位かサーフェイス単位で使い分けができるようです。
なのでどちらか一方のクリップマップを使うのが正しいと判断。
今回はオブジェクトプロパティ側のクリップマップを使っていこうと思います。
共通項目
設定内容
ではマップを設定していきます。
よく使うマテリアルが以下。
- Standard
- Principled BSDF
このマテリアルに対してそれぞれのアルファチャンネルの使い方を覚えます。
共通する項目があったので、まずはオブジェクトプロパティ側のクリップマップを設定します。
レンダリングタブの中にあるクリップマップを開きます。
その中の投影・マップ・画像を以下のように設定。
- 投影:UV
- マップ:UVマップ
- 画像:テクスチャ
下に “テクスチャ使用" とあるのでクリック。
この状態でVPR表示すると・・・
このようになります。
設定した画像の背景が白の部分だけが切り抜かれた状態になりました。
ただ色がないので色を付けていきます。
Standardの場合
テクスチャを設定
まずスタンダードの場合は色の項目の隣に “T" があるのでクリック。
テクスチャ編集を開きます。
開くと先ほどクリップマップで開いた画面と同じような画面が表示されます。
よくみると下段に “テクスチャ使用" などのボタンがありません。
テクスチャ編集の場合はこのボタンが無いようなので、ここでクリップマップの物なのか否かを見分けることになりそうです。(ここもうちょっと分かりやすくして欲しいなぁ・・・)
レンダリング結果
以上の設定でVPR、もしくはレンダリングすると色が反映されていることが確認できました。
BSDFの場合
直接テクスチャ設定できない
次はマテリアルをPrincipled BSDFに切り替えて同じことをやってみます。
ただStandardにあった画像を読み込む “T" がありません。
どうしたものか。
ノードを使う
ノードとは?
調べた結果、ノードを使うとBSDFでもテクスチャの利用が可能ということがわかりました。
うん・・・ノード・・・とは???
ノード編集は正直ほとんど使ったことがないです。
ただ今現在思っていることはノード自体は単機能で、組み合わせることでいろんな表現ができるものととらえています。
これもしかしてプログラムでいうところの関数といった感じですかね?
- ノード = 関数
- 入力 = 引数(受け取る値)
- 出力 = 戻り値(取り出す値)
以上のような。
どこかのタイミングでもう少しノードについて学んでおきたいところです。
ノード編集
gridのノード編集をひらくと画像のようなものが現れます。
中を見るとBSDFのマテリアルがSurfaceのマテリアルに繋がっているのが分かります。
ここに別のノードを追加して設定していくことになります。
Imageノード
Imageノードを追加
画像関連のノードが必要だと思ったので、ノード編集の検索欄から漁ってみました。
- Color
- Image
- Texture
以上のキーワードで調べて2D Texturesの中にImageノードがあったので、まずこちらをBSDFのcolorに接続。
Imageノードの設定
Imageノードを開いて
- 画像
- 投影
- UVマップ
以上3か所の項目を変更しました。(画像が大きすぎて見切れた)
Imageノードでのレンダリング結果
VPRで確認するとStandardでやった時と同じ結果が得られました。
中央もちゃんと切り抜かれていますね。
Color Layerノード
Color Layerノードを追加
同じことがColor Layerノードを繋げた場合でもできることが分かったので、こちらも載せます。
Layersの中のColor Layerノードを追加してBSDFのColorに接続。
Color Layerノードの設定
これまでと同じように3項目を変更します。
こっちの画面の方が見慣れているせいか楽かもしれません。
Color Layerノードでのレンダリング結果
レンダリング結果がこちら(ちょっと動きを付けてみた)
Color Layerノードでも同じことができました。
これで謎が解決。
結果としてはこちら側の勘違い。
一般的には黒でアルファ抜きをするそうなので、てっきりLightWaveでも同じと思っていたので。(当時は疑いもしなかった)
まさか白黒逆だったとは・・・
“LightWaveでは白で切り抜く"
また一つ賢くなった。
ちょっと違うような気がしたので訂正。
正確には黒でマスク(何も影響を与えない)、白で切り抜く。
以上です。
お疲れさまでした。
使用したツール
- GIF:Screen to GIF
- モデリング:LightWave 2024.1.0