BISHAMON免許皆伝！
短期で差をつける完全マスター講座〜後編〜
マッチロック株式会社
BISHAMONエバンジェリスト／後藤誠アジェンダ

⾃⼰紹介
前篇•
BISHAMON基本操作のおさらい•
ブレンドとマテリアルの詳細•
強⼒なＵＶスクロールの詳細•
⾃由⾃在なディストーションとその活⽤•
後編•
パターンアニメーションの詳細と活⽤•モデル／ストライプエミッタの活⽤•
外⼒を与えるフィールドの詳細と活⽤•機能の組み合わせによって⽣まれる活⽤法
•
おまけ•
•

⾃⼰紹介

⾃⼰紹介
マッチロック株式会社
取締役／BISHAMON エバンジェリスト

後藤 誠@SquashSesame
概略
中⼩・⼤⼿ゲーム会社にてプログラマーとして 「良いゲームは良い開発環境から産まれる」という信念のもと⻑年カットシー
ンツールやエフェクトツールの制作を通して、プランナー／デザイナーのためのゲーム開発環境の構築・改善に取り組んで来た。
現在、BISHAMONを通して、会社間を超えより良い作品制作に貢献すべく活動中！

パターンアニメーションの詳細と活⽤

パターンアニメーション問題！
パターンごとのタイミングを指定してアニメーションをするには？

パターンアニメーション問題！
パターンごとのタイミングを指定してアニメーションをするには？

任意の画像を選択「パターン」

押す！
フレームを指定「追加」ボタン

シーンビューパターンアニメーション問題！
どれかのパターンをランダムに表⽰するには？

パターンアニメーション問題！
どれかのパターンをランダムに表⽰するには？

シーンビュー

ランダム
テクスチャー

ランダムにチェック！
あり得ないほど長いフレーム数にする

エフェクトが生成される度に違う画像になる。

モデル／ストライプエミッタの活⽤モデル・エミッター：モデルを設定
シーンビュー

モデル・エミッターを追加します
モデルを指定します

モデルが表示！

モデル・エミッター：各種設定「深度書き込み」により奥面が描画されなくなる。

「カリング」により背面ポリゴンが非表示になる。

モデル・エミッター：各種設定「透過」により背景が透けなくなる。

ディフューズ設定

アンビエント設定

モデル・エミッター

問題！
モデル・エミッターの縁をいい感じにぼかすには？

モデル・エミッター：フォールオフ

フォールオフで、縁側（法線がカメラ面と垂直近くになるポリゴン）に色が反映されます。

縁側のアルファをゼロにすると透ける。

ストライプ・エミッター

問題！
リボンのようなエフェクトを作るには？

ストライプ・エミッター：エミッタ追加

テクスチャも設定

このようにヌルエミッターを挟んでノードを生成します。

残像を残してリボンとしてつなげるため、親からの影響を「生成時の受ける」に設定します。

寿命とリピートでリボンの長さを調整

ストライプ・エミッター：リボンの軌跡

シーンビュー

リボンの軌跡を作るには、ヌルエミッターを動かします。

ストライプの寿命に従うようにします。

カーブでヌルエミッターを動かします。

これでやっとリボンを見ることができます。

外⼒を与えるフィールドの詳細と活⽤フィールドの機能問題！
放出された後のパーティクルの移動⽅向を変更するには？

フィールドの機能「渦」によって、放出されたパーティクルに外力を加える

フィールドの機能：様々なフィールド
重力の力を与えます。

風の力を与えます。

渦の力を与えます。

引力・斥力を与えます。

フィールドの機能：様々なフィールド

減速する力を与えます。

衝突する処理を行います。

指定の点、面へ吸い寄せます。

フィールドの機能問題！
複数のフィールドを加えるとどうなるの？

フィールドの機能：フィールドの組合せ「渦」+「重力」（上方向）など複数を組み合わせることもできます。

Vortex+Gravity
Vortexフィールドの機能：組合せの応⽤

フィールドの「位置」や「範囲」を変えて複数組み合わせると、範囲で指定した領域毎に振る舞いを変えることができます。

フィールドの機能問題！
フィールドの注意点ってなに？

フィールド：ローカルとグローバルグローバル座標に設定される

エフェクト毎にローカ
ル座標に設定される

フィールド：フィールドの順番「コリジョン」最後のとき「コリジョン」が反映されている

フィールド：フィールドの順番「コリジョン」の後に、他のフィールドがあるとき「コリジョン」の計算の後に、他のフィールド計算がされるので反映されない。

機能の組み合わせによって⽣まれる活⽤法

３種類のソート問題！
エミッター毎に描画優先度を調整するには？

３種類のソート「ソート優先度」は、エミッター単位での優先度を設定します。

３種類のソートエミッタが持つ「Zソート」は、そのエミッタから放出されたパーティクルを奥から順にソートします。

ルートノードだけが持つ「全体Zソート」は、全てのパーティクルを奥から順にソートします。

３種類のソート

ソート優先度＜Zソート＜全体Zソート
処理が軽い

処理が重い

ビルボードとポリライン問題！
イナズマを放射状に出すには？

ビルボードとポリライン

こんな感じのイナズマを放射状に出します！

ビルボードとポリライン

この階層以下を「ビルボード」に設定します。

イナズマ（子ノード）の放射状に発生させるため回転させます。
イナズマ（子ノード）の数や頻度

ビルボードとポリライン

縦軸に、少し動きをつける

ビルボードとポリライン

イナズマのパーティクルを「ポリライン」（Y軸ビルボード）に設定

イナズマのパーティクルの中心点を移動

おまけより最適で⾼速で表現⼒のあるエフェクトをつくるために！

ワンポイント：最適化

その１問題！
ドローコールを減らすには？

ワンポイント：最適化

その１

BISHAMONは最適化の中で、なるべくドローコールをまとめるように処理をしていますが、下記条件の場合ドローコールがわかれてしまいます。

1. 指定している「テクスチャファイル」が違う場合
2. 「ブレンド」の「ブレンドタイプ」が違う場合
3. 「テクスチャ」の「マッピングタイプ」が違う場合
4. 「マテリアル」の「描画タイプ」が違う場合
5. 「マテリアル」の「深度テスト」が違う場合
6. 「マテリアル」の「カリング」「深度書き込み」が違う場合
7. 「詳細」の「ソフト」が違う場合

ワンポイント：最適化

その１

ざっくりですが、描画に関するもの（「テクスチャ」「ブレンド」「マテリアル」「詳細ーソフト」）が違う場合、ドローコールは分けざる得なくなります。

極力、「同じテクスチャ」や、同じ描画タイプのものを利用するとドローコールは、纏められ数を減らすことができます。

ワンポイント：最適化

その１

補足：「全体Zソート」の注意点

全体ZソートOFF

全体ZソートON

ブレンドタイプが違ってもドローコールは、「２」で済んでいます。

ブレンドタイプが違うため、ソートの結果、ドローコールは「５４」まで跳ね上がってしまいます。

ワンポイント：最適化

その２問題！
お⼿軽な⾼速化をするには？

ワンポイント：最適化

その２

クアッドエミッターを利用するとき、下記の条件を満たすとジオメトリ・シェーダーを利用した高速化が行われます。

1. 「詳細」のクアッドタイプが「ビルボード」である
2. 「詳細」の「ソフト」を利用していない（ソフトパーティクルを利用していない）
3. 「テクスチャ」のマッピングタイプ が「基本」（テクスチャ２を利用していない）
4. 「テクスチャ色スケール」を利用していない
5. 「色」がフラットである
6. 「変形」の中心座標がゼロである。
7. 「変更」の頂点変形を利用していない
クアッドエミッターの描画が、シンプルパーティクルの描画利用できるとなり、高速化されます！！

ワンポイント：最適化

その３問題！
このエフェクトを更に最適にするにはどこを修正すればいいの？

ワンポイント：最適化

その３

明るい箇所で、細かいパーツを⼤量に表⽰するとオーバードローとなってしまい、折⾓の表現も⾒え憎いばかりか、処理とメモリーを消費してしまいます。
背景が明るい場合や、少しカメラを離して効果的なデザインのパーツであれば問題ないのですが、ほとんど変わらない場合であれば、思い切った削減を試みるのが、効果的です。

ワンポイント：最適化

その３

オーバードローに関連する修正内容としては下記の通りです！！

•••

得にストライプの使い方によって大量に発生し、メモリーを大量消費していたブレンドが「ゼロ」のタイムラインが長く続いていた。
複数のパーティクルが重なっているため、折角の演出も見えなくなっている•••

見栄えが損なわれない限り、ストライプの削減
ブレンドが「ゼロ」の段階で、寿命が終了するように削減
複数のパーティクルが重なっているところは極限まで削減

お疲れ様でした！！
これで全ての内容は終了です！！

Ｑ＆Ａ