2022/12/19(月) [n年前の日記]
#1 [cg_tools] Shade12を試用中その4
_昨日
に引き続き、Shade 12 を試用しているところ。動作確認環境は、Windows10 x64 22H2 + Shade 12.1.0 Standard。
◎ いつものUFO画像を作った。 :
せっかくだから、いつもついつい作ってしまうUFO画像を ―― 2DのSTG(シューティングゲーム)で使えそうな雑魚敵画像を作成してみた。
「またコレかよ。コイツ一体何回似たような画像ばっかり作ってるんだ」と言われそうだけど、これが意外と侮れないお題で…。実際に作ってみると、どう処理するか悩む瞬間が何度も出てきて、結果的に各ツールの操作方法の把握に繋がるところもあるわけで。
それはさておき。以下のような画像になった。
80x80ドット x 8パターンのスプライトシートは以下。
_ufo2_spritesheet.png
アニメgifにしてみた。
_ufo2_anime.gif
レンダリングした元画像。512x512ドットでレンダリング。
_ufo02_image.png
せっかくだから、Shade のファイル形式(.shd) + .obj + レンダリング画像その他もzipにして置いときます。ライセンスは CC0 / Public Domainってことで。自由に使ってください。
_ufo02_20221219.zip (6.5MB)
スプライトシートの作成は、ImageMagick 7.1.0-37 Q16-HDRI x64 を利用した。以下の指定をすることで、80x80ドットに Lanczosアルゴリズムで縮小して、スプライトシートに並べてる。
スプライトシートからアニメgifを作るのは以下。
余談。今回の形状は、基本的にブーリアンレンダリングで作ってみた。
Shade は、各オブジェクト名の先頭に「*」や「-」等の任意の文字を入れることで、レンダリング時にブーリアン演算をしてレンダリングしてくれる。元々、レイトレーシングでレンダリングしていたソフトなので、発想が POV-Ray に近いというか…。ただ、その形状を他の3DCGソフトに持っていくと、ブーリアン演算用の形状がそのままドーンと残っているので、Shade 用にモデリングしたデータを他のソフトで流用するのはちょっと面倒臭い。一応、「ブーリアンモデリング」という機能があって、レンダリング用のブーリアン指定を反映させた状態でポリゴンメッシュに変換することもできるけど、変換結果が思った通りにならないことが多くて…。そのあたりなかなか難しい。
「またコレかよ。コイツ一体何回似たような画像ばっかり作ってるんだ」と言われそうだけど、これが意外と侮れないお題で…。実際に作ってみると、どう処理するか悩む瞬間が何度も出てきて、結果的に各ツールの操作方法の把握に繋がるところもあるわけで。
それはさておき。以下のような画像になった。
80x80ドット x 8パターンのスプライトシートは以下。
アニメgifにしてみた。
レンダリングした元画像。512x512ドットでレンダリング。
せっかくだから、Shade のファイル形式(.shd) + .obj + レンダリング画像その他もzipにして置いときます。ライセンスは CC0 / Public Domainってことで。自由に使ってください。
_ufo02_20221219.zip (6.5MB)
スプライトシートの作成は、ImageMagick 7.1.0-37 Q16-HDRI x64 を利用した。以下の指定をすることで、80x80ドットに Lanczosアルゴリズムで縮小して、スプライトシートに並べてる。
magick montage -filter Lanczos -resize 78x78 -unsharp 10x5+0.7+0 -geometry +1+1 -background none INPUT_DIR/*.png PNG32:SPRITESHEET.png
スプライトシートからアニメgifを作るのは以下。
magick -delay 2 -dispose Background SPRITESHEET.png -crop 80x80 +adjoin +repage -adjoin -layers OptimizeFrame -loop 0 ANIME.gif
余談。今回の形状は、基本的にブーリアンレンダリングで作ってみた。
Shade は、各オブジェクト名の先頭に「*」や「-」等の任意の文字を入れることで、レンダリング時にブーリアン演算をしてレンダリングしてくれる。元々、レイトレーシングでレンダリングしていたソフトなので、発想が POV-Ray に近いというか…。ただ、その形状を他の3DCGソフトに持っていくと、ブーリアン演算用の形状がそのままドーンと残っているので、Shade 用にモデリングしたデータを他のソフトで流用するのはちょっと面倒臭い。一応、「ブーリアンモデリング」という機能があって、レンダリング用のブーリアン指定を反映させた状態でポリゴンメッシュに変換することもできるけど、変換結果が思った通りにならないことが多くて…。そのあたりなかなか難しい。
◎ ポリゴンメッシュの分離ができない。 :
Shade 12.1.0 で、ポリゴンメッシュの中の任意の面を別オブジェクトとして分離したい。昨今のバージョンのShadeなら「分離」という機能が用意されていて簡単に分離できるらしいけど、自分が使ってる Shade 12 はバージョンが古いのでそんな機能は見当たらない。
仕方ないので、元のポリゴンメッシュをコピー+貼り付けして、それぞれの面を選択後、消去して分離していったのだけど、何故か分離した結果の見た目の色が大きく変化してしまう。
面単位で選択して、Deleteキーで削除した際、境界部分の法線が変わってしまって見た目の差がついたのだろうか。ならばと、面ではなく頂点を選択して分離相当をしてみたのだけど、それでも見た目の色が変わってしまう…。頂点だろうと面だろうと、一部を消去すると法線が変わってしまうということだろうか…。
仕方ないので、元のポリゴンメッシュをコピー+貼り付けして、それぞれの面を選択後、消去して分離していったのだけど、何故か分離した結果の見た目の色が大きく変化してしまう。
面単位で選択して、Deleteキーで削除した際、境界部分の法線が変わってしまって見た目の差がついたのだろうか。ならばと、面ではなく頂点を選択して分離相当をしてみたのだけど、それでも見た目の色が変わってしまう…。頂点だろうと面だろうと、一部を消去すると法線が変わってしまうということだろうか…。
◎ 面ごとに違う材質を設定したい。 :
ポリゴンメッシュに対して、面ごとに違う色を設定したいのだけど、そういうことはできないのだろうか…。形状別(オブジェクト別)で材質設定するしかないのかな。これがblenderなら、面ごとに異なるマテリアルを設定できるのだけど。
何か方法はないものかとググっていたら、関連しそうな解説ページに遭遇。
_ポリゴンメッシュで両面対応し、異なる表面材質を割り当てたい
_ 複数のポリゴンメッシュ形状を1つに結合する
上記の記事を眺めた感じでは、一旦それぞれを別形状にして、異なる材質設定にしてから、結合することで目的を果たせそうな気がする。
試してみたところ、それらしい結果になった。ポリゴンメッシュは1つだけど、2つの材質(色)を割り当てることができている。
このような結合をした場合は、ポリゴンメッシュの「フェイスグループ」に複数の属性が列挙されるようだなと…。
もっとも、一般的には「パート」を作って、その中に複数の形状を入れておけば済む場面も多そう。もっとも、その場合も、任意の面を分離する機能がないと、操作が猥雑になるというか、不便極まりないだろうなと…。
何か方法はないものかとググっていたら、関連しそうな解説ページに遭遇。
_ポリゴンメッシュで両面対応し、異なる表面材質を割り当てたい
_ 複数のポリゴンメッシュ形状を1つに結合する
上記の記事を眺めた感じでは、一旦それぞれを別形状にして、異なる材質設定にしてから、結合することで目的を果たせそうな気がする。
試してみたところ、それらしい結果になった。ポリゴンメッシュは1つだけど、2つの材質(色)を割り当てることができている。
このような結合をした場合は、ポリゴンメッシュの「フェイスグループ」に複数の属性が列挙されるようだなと…。
もっとも、一般的には「パート」を作って、その中に複数の形状を入れておけば済む場面も多そう。もっとも、その場合も、任意の面を分離する機能がないと、操作が猥雑になるというか、不便極まりないだろうなと…。
[ ツッコむ ]
以上、1 日分です。