以下の内容はhttps://www.karvan1230.com/より取得しました。


【Unity】プロジェクト内のアセットの名前を一括変換できるツール「Unity All Renamer」

送別会

「今月で退職される方に贈るプレゼントのカンパを募ります」のメッセージを返信期日を過ぎて読んだ薄情な皆さんこんにちは。ごめんなさい、色々あってメッセージを見落としてました。ああ、来週の送別会に出席するのが辛い。

 

出資金付きコンテスト

最近XのTLで「出資金(賞金)付きコンテスト」が減ったか増えたかの議論になってましたが、確かに他業種からゲーム参入という形での出資金付きコンテストは減った気がしますね。きっと出資してゲームを作っても利益にならなかったり、そもそもリリースまで至らないケースもあったりで継続して続けよう、という形にならなかったのでしょう。非常に残念ですが、そういった指摘を上げると「嫉妬してる」の一言で片づけられてしまうのが大変口惜しい。まぁ実力の世界ですからね。

 

色々と優しいゲーム

2年ぐらい前の展示会で試遊させてもらい、それ以降気になっていたゲームが最近リリースされたので早速購入して遊んでみました。

タイトルからゲーム内容が大体イメージできると思いますが、体からロープが伸びる「ロープくん」を操作して、敵を捕縛したり電気を送電したり光線を反射させステージを攻略していくアクションパズルゲームです。
幾種類かのロープを使い分け設置と解除を駆使して進路を切り開いていくシンプルなゲーム構造で、ロープが燃えるのを避けたり、敵の移動ルートを読みながら支点を設置したりと、考えさせられる要素が多いものの、全てのステージにはいつでも確認可能なヒントが用意されており、ゲーム初心者でも詰まりにくい優しい設計になっています。

通常のモードだと3回のミスでゲームオーバーとなってしまいますが、難易度で「やさしい」を選ぶとロープくんは無敵状態になるのでパズルは好きでもアクションが不得手な方、もしくは小さなお子様のファーストゲームにも最適だと思います。
現にゲーム中に表示されるストーリーパートの文章は全て平仮名&カタカナで、子供向け絵本風の内容なのでメインターゲットを小学校低学年ぐらいに設定しているかと思われます。

8つのステージで1ワールドの構成となっており、最終ステージではボス戦が用意されていますが、いずれも3回ダメージを与えればクリアとなる難易度で厳しいアクションは求められません。全体的な難易度はかなり易しめで、コアゲーマーな方には物足りないかもしれませんが、全10ワールドにエクストラステージとして3ワールド用意されているので全ステージクリアを目指すと結構なボリュームがあります。
最近はインディーゲームでも多機能&高難易度化が顕著ですが、こういったミニマムな機能で低難易度ながらも十分楽しめる作品というのはゲーム制作者として瞠目に値するものだと思います。

 

地味に面倒臭い

日頃からUnityのアセットストアを漁ってゲーム制作に必要な素材を購入していますが、アイコンで使用する画像のアセットって総じて内包するアセット数(画像数)が500個とか1000個とかで非常に多く、購入しても使い切れないことが多いです。
先日は6000個以上収納されたアイコンのアセットを購入しました。

色々とジャンル別にIcon用の画像が揃っていて大変有難いアセットなんですが、なんせ数が多い上に一部のファイル名が


上の画像の通り数字の連番となっているので、アイコン画像を探す際に検索バーにキーワードを入力して絞ることができず、画像を見つける苦労します。

できればファイル名の頭に検索用のキーワードを付加したい所ですが、Unityエディタ上でファイル一つ一つをRenameするとか気が遠くなる作業になるので実質的に無理。
Windows上でBatchを使えば一括置換できますが、その場合は一度metaファイルを削除した後にUnityエディタ上へリネーム後のファイルをDorp&Drag→画像ファイルをSpriteに変換する作業も必要でこれも地味に面倒臭い。
Unityエディタ上でアセットの名前を一括変換できるツールがないか探したところBTOOHにて「Unity All Renamer」というツールに辿り着きました。

booth.pm

 

Unity All Renamer

その名前の通りUnityエディタ上でHierarchyやProject内の複数アセット・オブジェクト名を一括で変更できるツールです。選択順維持や子オブジェクトの一括リネーム、プレビュー確認が可能です。
BTOOHからダウンロードしてpackageファイルをimportするとメニュー内に「TakedaTools」の項目が追加されるので、そこから「TakedaTools > All Renamer」を選択、

ツールウィンドウを開きます。

ツールウィンドウ内でリネームモードを選択し、各種設定を行います。
今回はリネームモードに「文字列の追加」、追加する位置「前へ」を設定し、先ほどのアイコンアセットからOtherフォルダ内のファイルに対して一括で先頭に文字列を追加します。

Otherフォルダ内には1000以上のファイルがありますが、それらを一括で名前の変換ができました。

変換後(前に「Icon_Flat_」を追加)のファイル名

 

リネームモードには「文字列の追加」以外にも

文字列の置換

 

大文字・小文字変換

 

番号の整形

 

などがあります。どの変換方法でもプレビューに変更後の名前が表示されるのを確認し、「変更」ボタンを押してください。

【Unity】『Reference Viewer』で自作スクリプトの影響範囲を確認する

等価交換

大きな幸運が訪れる前後には必ず小さな不幸の積み重ねが発生する人生塞翁が馬の皆さんこんにちは。身に余るような出来事が起こって喜んでいたのも束の間、贔屓のサッカーチームの成績がズタボロになり、机の角に頭を打ってスマートウォッチを紛失しました。偶には幸せな出来事だけが起こるターンがあっても良いと思いますが、なぜか毎回等価交換のように不幸の連鎖でバランスが取られている気がします。幸せの総量って人によって上限があるのかもしれない。

 

影響範囲を調べる

自力で作成しようがAIに頼もうが自作したスクリプトを改修する際にはその改修の影響範囲を把握する事は必須なんですが、プロジェクトの規模が大きくなっていくと、どのシーンのどのオブジェクトにアタッチしているのかなんて忘れてしまうので、その確認作業に時間がとられてしまい作業が滞りがちになります。

例えば・・・

 

一つのシーン内に限ってどのオブジェクトにアタッチされているかを調べる場合は、ファイルを右クリックして「Find References In Scene」を選択すると、Hierarchyに当該のスクリプトと関連のあるオブジェクトが絞り込まれ表示されます。

しかし「Find References In Scene」は当該のスクリプトがアタッチされているオブジェクトだけでなくそのオブジェクトを参照しているオブジェクトも検索に引っ掛かります

アタッチされているオブジェクトのみピンポイントで探したい場合はHierarchyの検索欄に「t:スクリプトの名前」を入力して調べる必要があります。



プロジェクト内の全シーンを調べる

参照先を調べたいスクリプトがプロジェクト内の複数のシーンで使用されている場合はAMAGAMI氏がGitHubで公開している『Reference Viewer』を使うと便利です。

amagamina.jp

GitHub経由でインストールすると参照を検索したいスクリプトを右クリックした時のメニューに「Find References In Project」が追加されているので選択します。

プロジェクト内で指定したスクリプトを参照しているシーンと参照しているPrefabが表示されます。

これによりスクリプトが使用されているシーンを特定して、そのシーン内で前述の「t:スクリプトの名前」で検索するとアタッチされているオブジェクトがわかります。

 

【Unity】LitMotionを使って好きな方向に回転させる

展示会

出展を狙っていた展示会がスポンサーという名目の高額な出展料でしか出展できないことを知ってガッカリしている清貧な皆さんこんにちは。3日間のBitSummitでさえエントリー料を加えても4万円いかないのに1日1ブースの金額がそれ以上とか流石に手が出せないです。いや、多少無理をすればお金は出せますが、そもそもこういった出展条件になっているいう事は主催側がインディゲームの展示会とは銘打ってはいるものの、個人や少人数サークルが製作する有象無象の作品は排してTGSみたいな企業体が主体の展示会を開催したいように感じられ、わざわざ無理して出展する気になれません。これならBitSummitにエントリーしとけば良かった。

 

濃さが増したゲーム

以前から発売を待ち望んでいたソウルライクの代表的タイトルの最新作を購入しました。

Team NINJAらしいスタイリッシュアクションとソウルライクにハスクラの要素を加えた仕様が特徴なこのシリーズ。ステージ制だった前作から今作は複数マップを行き交うオープンフィールド制に変わり作品全体のボリュームが増しています。
操作キャラが武者スタイル・忍者スタイルといった2パターンの戦闘スタイルを持ち、それぞれで上中下段の構えや忍術を切替えたり、陰陽符と呼ぶ魔法系の攻撃や使役符と呼ぶ召喚魔法、果ては助人といったNPCを使って強敵を倒し、よりレアで強力な装備品を手に入れて高難易度のミッションに挑んでいく、というゲーム仕様。
前作以上にプレイヤーの操作する要素が多いので元々高かった敷居が更に高くなった感がありますが、その敷居を超えると爽快感のあるスタイリッシュアクションを存分に楽しめるようになっていて、アクション面では「文句なしに過去最高の出来!」と評する方が多いのも納得するクオリティです。

ただ、戦国ダークファンタジーという世界観を意識してか複数あるマップのどの場所に行っても鬱蒼として荒廃した風景ばかりであまりメリハリが感じられません。
また、オープンフィールドとは行っても仁王2のマップがシームレスに繋がっているような構成なので、ひたすら広く長く続いているステージの中で延々と戦闘と探索を繰り返しているように感じられ、その分ゲーム体験としては非常に濃いものとなりますが、濃い目の中華料理をずっと食べ続けるのと同じで、人によってクリア前に飽きてしまうかもしれません。
あと個人的には戦闘時のカメラの挙動がRise of Roninを継承していなかった事が非常に残念。

とは言え、オープンフィールド化したことで探索の面白さは前作より増していますし、戦闘の歯ごたえは相変わらずで強敵を倒した時の達成感は高く、何より戦闘を含むアクション面には全く不満はないので攻略の楽しさは値段に見合うものだと思います。

 

LitMotionによる回転

LitMotionはUnity向けに公開されているTween系のアセットでDOTweenやLeanTweenと比べてハイパフォーマンスである事が特徴のアセットです。

github.com

LitMotion は基本的にメソッドチェーンという記法で記述しますがDOTweenとは異なり移動用の関数(DOMove)や回転用の関数(DORotate)などは用意されておらず、基本的に特定の値に変化させるTweenを作ってそれをGameObjectのtransform.positionやtransform.rotationに紐づける(Bindする)ことでGameObjectを動作させます。

LMotion.Create(Vector3.zero, new Vector3(0,5,0), 1f) // (0,0,0)から(0,5,0)まで1f(秒)かけて移動するTweenを作る
    .WithEase(Ease.Line)                             // イージングの指定
    .BindToPosition(this.transform);                 // それをtransform.positioに紐づけ

 

オブジェクトを回転させる場合も同様ですが、Vector3を扱う場合だとEulerAngleに紐づけることになります。

Vector3 StartAngle = new Vector3(0f,0f,0f);
Vector3 EndAngle = new Vector3(0f,0f,90f);

LMotion.Create(StartAngle, EndAngle, 1f)
    .WithEase(Ease.Linear)
    .BindToEulerAngles(this.transform);

transform.rotationに紐づけたい場合はQuaternionを使います。ただQuaternionに直接角度の値を設定するのは難しいので事前にVector3(=オイラー角)からQuaternionに変換する必要があります。

Quaternion StartRot = Quaternion.Euler(StartAngle);
Quaternion EndRot = Quaternion.Euler(EndAngle);

LMotion.Create(StartRot, EndRot, 1f)
            .WithEase(Ease.Linear)
            .BindToRotation(this.transform);

 

半回転以上できない

一見すると何も問題ないように見えますが実は上記の方法では180度以上の回転はできません
何故なら開始角度を0度、終了角度を270度とすると0→90→180→270度の回転より、0→270(=-90)度の回転の方が内積が小さくなるため、そちらの回転方向に補間されて動作するからです。

開始角度0度~終了角度180度を指定した回転

 

開始角度0度~終了角度270度を指定した回転

これを回避する為にVector3.Slerp使って0~270度までの補間値を計算して、その値をthis.transform.eulerAnglesに代入する方法がありますが

LMotion.Create(0f, 1f, 1f)
    .WithEase(Ease.Linear)
    .Bind(value =>
    {
        // Vector3.Slerpを使って開始角度から終了角度まで変化させる
        this.transform.eulerAngles = Vector3.Slerp(StartAngle, EndAngle, value);
    });

この手法を使うと開始角度:-45度~終了角度:45度などの指定パターンでは意図しない動きになります。

あらぬ方向軸の回転が発生する

 

これはTween中にVector3(=オイラー角).Slerpで強引に補間した値をQuaternionに変換する為の不具合でありQuaternion.Slerpを使えば正しい動作を得られますが、そうすると前述のように半回転以上の回転を行うことが出来ません。

本来の正しい動作

 

Quaternionを使い半回転以上したい

問題はQuaternion.Slerpだと必ず内積が小さい方向の回転になるという事で、逆に内積が大きい方向の補間ができれば解決することが出来ます。
幸いに、こじゃら氏のブログ ねこじゃらシティにて遠回り経路の補間処理(LongSlerp)が紹介されているので、こちらが利用できそうです。

nekojara.city

上記の記事内のMathUtil_QuaternionLongSlerp.csを流用してBind内で補間値を求めてtransform.rotationに設定します。

StartRot = Quaternion.Euler(StartAngle);
EndRot = Quaternion.Euler(EndAngle);

LMotion.Create(0f, 1f, 1f)
    .WithEase(Ease.Linear)
    .Bind(value =>
    {
        // LongSlerpを使ってQuaternionを開始角度から終了角度まで変化させる
        this.transform.rotation = MathUtil.LongSlerp(StartRot, EndRot, value);
    });

実際の動作を確認すると270度の回転が出来る事が確認できます。

 

最後に

LitMotionで回転を行う場合は少し面倒かもしれませんが、180度以内の回転なら従来通りの手法、それ以上なら前述のLongSlerpを使うといった感じで実装する事になりそうです。
ただしこれらの手法でもQuaternionの制約により360度以上の回転は出来ないので一つのTweenは0~360度内(実際は359.9度ぐらい)の回転に制限されます。
1回転以上の回転が必要な場合は、一つのTweenが0~360度内に収まるようにSequenceを使って実装する必要があります。

 

【レポート】東京ダームダンジョン11 イベント参加レポート

親知らず

親知らずを抜いたら思いのほか痛みが続いて柔らかい物しか口にできず強制ダイエットと化した痛みに弱い皆さんこんにちは。歯を磨くも患部当たらないように恐々なので結構不便です。

 

東京ゲームダンジョン11

既に結構日にちが経っていますが、先日の2月8日に東京都浜松町産業貿易センター2/3Fで東京ゲームダンジョン11が開催され、出展してきましたので今回はそのレポートとなります。

gamedungeon.jp

この東京ゲームダンジョンに制作中のリズムゲーム「Under A Groove」を展示するのはこれで3回目となります。
このようなゲームの展示会を制作のマイルストーンにおいて開発を進めているので毎回違うステージを披露しているのですが、前回(2025年8月)披露したステージの内容を覚えていて今回も試遊に訪れてくれた方が何人かいて非常に有難かったです。
前回から特に知名度が上がっているというわけでありませんが、こうしてゲームの名前を覚えてくれる方がいる、というだけでも制作の励みになりますね。

www.karvan1230.com前回の振り返り記事

 

さて、この日(2/8)は全国各地で大雪に見舞われ、東京でも珍しく積雪を観測するなど例年にない開催日だったわけですが、私は前日から東京入りしており、幸いにもホテルから会場までの移動経路も雪の影響を受けなかったので予想よりもスムーズに会場入りしてブースの設営をすることが出来ました。

雪の東京

 

心配していた事前配送してた荷物もちゃんと届いていたので設営は何事もなく速やかに行えました。

三度目ともなると慣れたもので10時半ぐらいには設営を終えられたのですが、大雪の影響か時間内に設営が間に合わないブースもチラホラ、中には結局出展を諦めたサークルもあったようです。

当日のブース

東京ゲームダンジョンではPCモニターの貸し出しをしており、今回も借りられたので自前の14incモニターはなし、横のiPadにはこれまで作成したステージのプレイ動画がエンドレスで流れています。

 

開場直前の様子

開場後

東京ゲームダンジョンは毎回11:00に早期入場チケットの開場で12:00から一般チケットの開場となっていますが、雪の影響か開場しても暫くは殆ど人が来ないという状況でした。
あまりに人が来ないので今回の為に用意した配布用のクリアファイルと缶バッチを消費せずにそのまま持ち帰ることになるのかと冷や汗をかいたんですが、13時過ぎぐらいからお客さんが一気に増えて結局は50人以上の方に遊んでいただくことが出来ました。

youtu.be東京ゲームダンジョン11版のプレイ動画

 

もともと一回の試遊時間が短いゲームなのでお客さんの入れ替わりも早いのですが、それでもトイレ休憩には行けないぐらいの頻度で人が訪れてくれて、遅延やバグの確認には十分なテスト数を稼ぐことが出来ましたし、試遊版を遊んだ方の感想も上々だったので実りの多い展示会になったと思います。

最初のバージョンでは「何をしたらよいか分からない」「どこを見てよいか分からない」といった声も聞かれていたのですが、最近ではそうした不満点は聞くことが少なくなり、小さなお子さんでも最後までプレイして頂けていたので自分の作品が成長していることを実感することができました。
また、色々な方からSteamページやSNSでの情報の有無を聞かれて、気に掛けてもらえたようで嬉しかったです。まだSteamなどへの出店は準備段階なので特に伝えらえるような情報が無く、その場限りの交流となってしまい心苦しかったのですが、そういった声が今後の励みになりました。

改めまして、皆さん本当にありがとうございました。

 

【告知】東京ゲームダンジョン11に出展します

SNS

選挙期間は全てのSNSを停止すれば良いのにと思っている無党派層の皆さんこんにちは。基本的にXなどはゲーム関連のアカウントしかフォーロしていないつもりなんですが選挙期間になると何故か政治関連のポストがTLにあふれてウンザリします。まぁ候補者のつぶやきをリポストするのは分からんでもないが、見ず知らずのオジサン・オバサンの政策論議とか見たくないので勘弁してください、ニュースで十分なんで。noteとかもそうだけど一般人の評論とかどこの層に需要があるんだろう?

 

2月8日

というわけで2月8日(日)は東京・浜松町 産業貿易センター浜松町館2・3F東京ゲームダンジョン11が開催される日です。
私は既に期日前投票を済ませたので大手を振って福岡の片田舎から東京の中心へ制作中のゲームを抱えて上京する予定です。

tokyogamedungeon.com

私の出展ブースは会場2Fの「2G-13」、フロアー中央にある休憩スペースのすぐ横の場所となっています。
東京ゲームダンジョンへの出展はこれで4回目となり、リズムゲーム「Under A Groove」を出展するのは3度目となりますが、過去三回と同様に今回もゲムダン11に向けて作成した新しいステージを展示していますので前回遊ばれた方でもきっと楽しんで頂けると思います。

 

展示内容

出展する「Under A Groove」は基本的にリズムゲームなんですが、一般的な音ゲーとは少し趣向を変えて『遊べるアニメーションMV』をコンセプトに、楽曲に沿ったアニメーションとプレイヤーの操作がリンクする新感覚なリズムゲームとなっています。
昨年は色々な展示会に出展しフィードバックを頂く事でゲームの「形」を纏める一年でしたが、今年はゲームの「遊び」の部分を強化していこうと思っており、今回の展示バージョンはリズムゲームとしての「遊び」の比重を大きくした内容となっています。

 

このため、前回までのバージョンと比べて映像(アニメーション)とプレイヤー操作がリンクする場面が減る形となりましたが、その分楽曲のリズムに合わせて操作する「遊び」の場面が増え、ゲームとしてより楽しんでいただけるのではないかと思っています。
まぁ、ここら辺の塩梅は去年と同様に色々な展示会でのフィードバックを参考に調整していく必要があると思っています。

ちなみに今回の試遊版の楽曲にはBGMerさんの「電気街の悪魔」を使用させて頂いてます。

www.youtube.com

ムーディなオシャレEDMで、楽曲の雰囲気に沿った「大人の夜」をテーマに絵作りを頑張りました。
当日会場にこらえた方は他のブースの試遊待ちで手が空いた時間にでも立ち寄ってください。どうぞよろしくお願いいたします。

 

【Unity】ポストエフェクトの「Color Grading」について

大寒

最高気温が10℃以下とか法律で禁止すべきだと思っている寒さに弱い皆さんこんにちは。加えて阿保みたいに空気が乾燥するのは何の嫌がらせでしょうか、加湿器使っても朝のどが痛くて目が覚めるし。もうそろそろ寒さによる欠勤とか認められても良いこと思う。公約に掲げている政党ないかな。

 

誰がそのレトロ感を望んだのか

最近巷では平成レトロがブームですがその流れに乗ったかのようなゲームが発売されています。


一見するとモノクロ時代のゲームボーイを意識した粗目なドットの2Dゲームのようですが実際は3Dのボクセルで構成されている3Dパズルアクションゲームです。RPG的要素もありますがおまけ程度で、ちょっと斬新なパズルシステムが最大の売りのゲームとなっています。


カメラを回転させることで死角を作り、その死角の部分に重なったオブジェクトは敵を含めて「存在しない」というルール。例えば障害物で道が阻まれていてもカメラを動かして高い壁などで隠すとその障害物は「存在しない」ことになるので通れるようになる、という仕組みになっており、それを生かした謎解きがいろいろな場面で提示されます。


ゲームの展開は散らばってしまった「月の欠片」というアイテムを集めるという事を目的に主人公が色々なフィールドを探索、各フィールドには謎解きが必要なダンジョンと主人公を襲う敵や最深部にはボスが存在し、フィールドのクリア報酬として「月の欠片」がもらえるという、ある種ゼルダライクの王道的展開となっていますが、正直アクション性は高くないので探索と謎解きがメインのゲームと考えて問題ないと思います。

「死角に隠れて物は存在しない」というルールを生かした種謎解きは単純なルールながら楽しいもので、難易度もそれほど高くないので少しの閃きがあれば誰でもクリアできると思います。ストーリーの途中で入手する「隠れたものが見える」「小さくなる」といった能力を生かした謎解きの展開も面白かったです。
全体的に満足度は高いのですが、レトロ感を出すための「モノクロ」「粗目のドット(ボクセル)」といったビジュアル要素がゲーム画面の「見づらさ」を強くし、段差やスイッチなどのギミックを見逃す要因となっている点と、探索を必要するストーリーながら各イベントへの導線が弱く「何をして何処へ向かったらよいのか?」と悩む場面が多かった事は非常に残念でした。
また、初期ゲームボーイ時代のゲーム仕様を再現したかったのかマップやファストトラベルといった機能が無いも関わらず、「"ダンジョンA"で取得したアイテムで"ダンジョンB"の途中にある扉が開く」といった面倒臭い展開がそこそこあって「そのレトロ感って必要?」と思うこともありました。
ともあれメインのパズル要素は斬新で楽しむことができますし、値段分の価値はあるゲームだと思います。

 

Color Grading

Unityでポストエフェクトを実装するために公式が配布しているアセット「Post Processing」には色々なエフェクト効果が提供されていますが、その中でもゲームのビジュアルイメージづくりに最も重要だと思われるが「Color Grading」だと思います。

Color Grading」ではUnityが生成する最終的な画像の色と輝度に変更を加えるため、ゲーム空間全体の色を自由に設定することができ、空間表現がより豊かになります。

今回は以下のようなゲーム画面を使って「Color Grading」のエフェクト効果を見ていきたいと思います。

 

Color Gradingの設定

Color GradingのInspectorを見ると多くの設定項目があることがわかります。

■Mode

このうち最初に設定すべき項目は「Mode」になります。

これはColor GradingによるPCへの負荷を考慮するものでローエンドプラットフォーム向けの「Low Definition Range(LDR)」とハイエンドプラットフォーム向けの「High Definition Range(HDR)」を決めます。

HDRの方が当然効果は高いのですが、HDRを使いたい場合はプロジェクトの「Color Space」の設定をGammmaからLinearに変更する必要があります。

ちなみにColor SpaceはProject Settings→Player内のOther Settingsにあります。

 

■White Balance

・Temperature
こちらは色温度で補正をするモードになります。
数値を+側にずらせばずらすほど赤みがかり、-側に行くほど青くなります。 


・Tint
「色合い」を補正します。
数値が+100に行くほどマゼンタ(赤紫)寄りに、-100に行くほど緑寄りの色合いになります。

 

■Tone

こちらは空間の色調を調整するモードです。主に明るさ、彩度、色相を調整できます。

 

・Color Filter:空間全体にカラーフィルターをかけることができます。

 

・Hue Shift:色相を変更します。

色相を+180~-180まで変更

・Saturation:彩度を変更します。

彩度を+100~-100まで変更

・Brightness:輝度を変更します。

輝度を+100~-100まで変更

・Contrast:コントラストは明るい箇所と暗い箇所の差を調整します。

コントラストを+100~-100まで変更

 

■Channel Mixer
Channel Mixerは、RGB(赤、緑、青)にそれぞれ分かれていて上部のタブで選択した色が入力されたRGBに対して、どれだけの影響を与えるのかを設定するモードです。


■Trackballs
Lift(暗い部分)、Gamma(中間の部分)、Gain(明るい部分)のそれぞれについて色相環の真ん中にあるトラックボールを操作して調整していきます。
真ん中のトラックボールが色相環に近づくほど、その色の影響が強くなっていきます。

 

LookUp Texture

Color Gradingの項目について色々と説明しましたが、手っ取り早く画面の色を変えたい場合にはLookUp Texture(LUT)を利用するのが簡単です。

LUT は色をほかの色にマッピングするテーブルテクスチャのことで自力で作成するのは手間ですがアセットストアに有料・無料関わらず多く取り扱われているので、そこから好みのテクスチャを利用するのがお勧めです。

設定は簡単でLookUp Textureの項目にLUTテクスチャを設定するだけ、Contributionでその効果の強さを設定します。

 

モノクロ化

 

特定の色を残してモノクロ化

 

ポスターイラスト化

 

テクスチャを変えだけで画面の雰囲気もそれに応じて変わるので非常に便利。

【Unity】カメラ毎に違うPostProcessを適用する(Built-in)

ゲーム制作者

ゲームを作っていると言うと何故かアニメと漫画にも詳しいとレッテルを貼られる被害者の会の皆さんこんにちは。そりゃ鬼滅ぐらいは知ってますが呪術廻戦もチェンソーマンも観てないのでキャラクターの名前とか出されても答えようがないです。何だレゼって?「今期おすすめのアニメは何ですか?」とか聞かれても何が放送されているのかすら知らないので聞かないでください。でもフェルン可愛い。

 

東京ゲームダンジョン11

2/8(日)に東京・浜松町の東京都立産業貿易センターで開催される東京ゲームダンジョン11に制作中のリズムゲーム「Under A Groove」を出展します。
今回は2,3Fの2フロワーで開催されていますが、私のブースは2Fの【2G-13】となっています。

東京ゲームダンジョンへの出展は去年夏の東京ゲームダンジョン9以来、通算4度目となるので出展自体はかなり慣れてきましたが、今回は私のブースの周りに有名なタイトルが多くていつも以上に埋没してしまわないか心配です。
隣や眼前のブースにパブリッシャーやらマスコミやらサークルのファンやらが集まって和気あいあいと談笑しているのを横目にポツンと座っている姿が想像できますが、今回の出展を終えると次の出展まで大きく間が空きそうなので、とりあえず配布用に用意したクリアファイル、缶バッチをすべて配り終える程度に頑張りたいと思います。

 

PostProcessingStack

今回はRender PiplineにBuilt-inを指定している時のお話となります。
Unityではカメラ映像に対してPostProcessingStackを利用してグレイスケール化やBloomなどのエフェクトをかけることが出来ます。

手順としてはエフェクトをかけたいカメラ側にPost-Process Layerのコンポーネントをアタッチし、任意のオブジェクト(空オブジェクトでも可)にPost-Process Volumeのコンポーネントをアタッチ、Post-Process Volumeのコンポーネント側に「Grayscale」や「Bloom」などの効果を追加して行きカメラにエフェクトを掛けていきます。
ここら辺の手順はこのブログでも紹介しているので参考にしてください。

www.karvan1230.com

UnityのPostProcessingStackはとても便利で使いやすいですが、あくまで「カメラが描画した映像に対してエフェクトを適用される」ものなので、基本的には映像の一部だけとか特定のオブジェクトだけを絞ってエフェクトを適用することはできません。
もしポストプロセスの効果を限定的にしたい場合は映像を撮影するカメラを別にしてカメラ単位にポストプロセスを分ける必要があります。

例えば下のようなゲーム画面にて

 

遠くのオブジェクト(山や空)に対しては距離感を出すためにFogエフェクトを掛けたいが、手前のオブジェクトに対してはコミックチックな表現のためにエッジ検出したいと考えた場合、一つのカメラで捉えた映像でそれを賄うことはできないので、遠景用と近景用でカメラとオブジェクトを分け、それぞれでポストプロセスのエフェクトを掛けることになります。

近景用カメラで捉えた映像

 

遠景用カメラで捉えた映像

 

レイヤー分けとプロファイル分け

しかしカメラを分けてそれぞれにPost-Process Layerのコンポーネントをアタッチ、Post-Process Volumeのコンポーネントをアタッチしたオブジェクトを作成しただけではエフェクト効果を別々に掛けることはできません。
カメラ単位にエフェクトの効果を分けるにはその設定ファイル(プロファイル)とレイヤーを分ける必要があります。

 

■設定ファイル(プロファイル)

ポストプロセスのエフェクトは場面毎にその効果を使い分け出来るように、設定ファイル(プロファイル)に保持する必要があります。今回の場合は近景と遠景のカメラそれぞれで使いたいエフェクトが異なるため、近景用と遠景用それぞれで設定ファイル(プロファイル)を用意します。

Post-Process VolumeのInspector内にProfile項目がありその右側にNewボタンがあるのでクリックして設定ファイル(プロファイル)を作成します。

 

■レイヤー

カメラにアタッチされたPost-Process Layerコンポーネントには、シーン内に存在するどのPost-Process Volumeコンポーネントのエフェクト定義を採用するのか、を定義します。

そのためには

  1. Post-Process Volume側のオブジェクトのレイヤーを近景用のレイヤー(Post-Process)と遠景用のレイヤー(Far-Post-Process)それぞれに設定
  2. Post-Process Layerコンポーネントの「Layer」の項目に「近景用のレイヤー(Post-Process)」「遠景用のレイヤー(Far-Post-Process)」を指定

します。

 

Post-Process Volumeのレイヤー

 

Post-Process Layerの設定

上記の設定を行った後に近景用のPost-Process Volumeにはエッジ検出のポストプロセスを追加し、遠景用のPost-Process VolumeにはFogのポストプロセスを追加。それぞれで別のエフェクトを掛けることが出来ます。

 

それを重ね合わせるとこんな感じになります。

 

注意すべき点

近景用と遠景のカメラはDepth値によって近景>遠景となるように設定し、遠景の映像の上に近景の映像が重なって描画されます。
その為、近景側のエフェクト効果は遠景の映像にも掛けられてしまう事になるので、Color Grading(色調補正)などの画面全体に関わるエフェクトはDepth値の高いカメラ側に設定した方が良いです。




以上の内容はhttps://www.karvan1230.com/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14