Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Highlight Plus でオブジェクトにハイライトをつける【Unity】

今回はアセットの紹介をしていきます。
紹介するのはHighlight Plus
オブジェクトにハイライトやグロウなどエフェクトをつけるアセットです。

f:id:Raspberly:20211011032612p:plain

f:id:Raspberly:20211011032859p:plain




 

お得なセール情報

現在アセットストアでは、アジアのユーザー限定のメガバンドルセールを開催中!終了しました
最大43.99ドルで23の高品質アセットが入手できちゃいます!詳しくは↓のバナーからどうぞ

f:id:Raspberly:20211011021646p:plain

今回紹介する「Highlight Plus」も対象アセットです。

 

 

どんなアセット?

オブジェクトにハイライトをつけたり、
他のオブジェクトに遮られた時に透過したりなどエフェクト効果をつけるアセットです。

ハイライトプラスは、シーン内の3Dオブジェクトにアウトライン、グロー、オーバーレイ、シースルー、その他の効果追加する強力なアセットですHPは、プラットフォームの互換性パフォーマンスおよび汎用性を念頭に置いて設計されています

**プラットフォームの互換性**

 

ビルトイン/標準パイプライン(Unity 2018.4+)

-MacWindowsAndroidiOSWebGLと互換性があります。

-VR互換。

-モバイルで超高速。

 

ユニバーサルレンダリングパイプライン(Unity 2019.3+)

アセットには、ユニバーサルレンダリングパイプライン用に設計されたバージョンも含まれています。

f:id:Raspberly:20211011032434g:plain



 

 

開発環境

Unity 2020.3.14f1

Universal RP ver10.5.1

HighlightPlus ver6.9

 

今回はURPプロジェクトで行いますが、Built-inでも同様の手順でできます。

 

 

 

インポートの確認

アセットインポート完了時はこんな感じです。
Unity標準のBuiltinとURP2種類のパッケージが用意されています。
プロジェクトに合ったパッケージをインポートします。

f:id:Raspberly:20211006004858p:plain

今回はURPでやります。
Assets/HighlightPlusBundle/HighlightPlus_URP_Pipelineをインポート

f:id:Raspberly:20211006014150p:plain

f:id:Raspberly:20211006014222p:plain

Built-inの場合はHighlightPlus_Builtin_Pipelineをインポートします。

 

インポート後は「HighlightPlus」というフォルダが作成されます。

f:id:Raspberly:20211006014950p:plain



URP版の初期設定

URPプロジェクトのみ以下の設定をします。
Project Settingsを開き、Graphics/Scriptable Render Pipeline Settingsから現在設定中のURP Assetをダブルクリック

f:id:Raspberly:20211006231308p:plain

 

InspectorビューのRenderer ListにあるRendererDataをダブルクリック

f:id:Raspberly:20211006232152p:plain

RendererDataのAddRendererFeatureボタンから、Highlight Plus Render Pas Featureを追加します。
これで準備完了です。

f:id:Raspberly:20211007000721p:plain

公式で解説動画もあります

youtu.be

 

 

デモシーンの確認

デモシーンはAssets/HighlightPlus/Demoの中にあります。

f:id:Raspberly:20211010225113p:plain

マウスが重なるとハイライトされるのが確認できます。

f:id:Raspberly:20211010230521g:plain

 

 

 

 

実際に試してみる

手っ取り早くキャラクターにハイライトをつけてみます。

今回はUnityChanURPを使用します。

raspberly.hateblo.jp

 

コンポーネントのアタッチ

MeshRendererのルートになるオブジェクトにHighlightEffectコンポーネントをアタッチします。
今回のメインとなるハイライトや透過効果をつけるコンポーネントです。

f:id:Raspberly:20211010235602p:plain

 

ハイライトを有効化

HighlightEffectコンポーネントHighlightedにチェックを入れるとハイライトが有効になります。

f:id:Raspberly:20211011000744p:plain

 

これは当然Scriptからも制御できます。

f:id:Raspberly:20211011002145p:plain


ハイライトが有効になるとこんな感じ、アウトラインや色味がつき強調表示されてる感を演出できます。

f:id:Raspberly:20211011002428p:plain

 

ここからはそれぞれの細かい機能を見ていきます。

 

アウトラインの設定

Outlineからアウトラインの設定ができます。
スライダーを0にするとアウトラインが無効化されます。

f:id:Raspberly:20211011002637p:plain

色や太さなどが調整できます。

f:id:Raspberly:20211011003400p:plain

 

 

グロウの設定

Outer GlowとInner Glowでグロウの設定ができます。
オブジェクトを発光させるような演出です。
スライダーを0にするとアウトラインが無効化されます。

f:id:Raspberly:20211011002803p:plain

 

Outer Glowはオブジェクトの外側に作用するグロウです。
強弱するアニメーション機能もあります。

f:id:Raspberly:20211011005138g:plain

 

Inner Glowはオブジェクトの内側に作用するグロウです。

f:id:Raspberly:20211011003712p:plain

 

 

オーバーレイの設定

Overlayからオーバーレイの設定ができます。
オブジェクトの上に色を重ねて強調するような演出ができます。

f:id:Raspberly:20211011003032p:plain

Outer Glowと同じくアニメーション機能もあります。

f:id:Raspberly:20211011005146g:plain

 

 

ターゲットの設定

Targetにチェックを入れるとターゲット機能が設定できます。
Rendererの位置に合わせてターゲットマーカーを表示する機能です。

f:id:Raspberly:20211011003206p:plain

ScriptでHighlightEffect.TargetFX()を呼び出すと表示できます。

f:id:Raspberly:20211011014836g:plain

 

 

シースルーの設定

SeeThroughはオブジェクトが別のオブジェクトに遮られたときに透過表示する機能です。
Neverにすると無効になり、Always When OccludedにするとHighlighted状態に関係なく表示されます。

f:id:Raspberly:20211011003229p:plain

f:id:Raspberly:20211011005215g:plain

 

シースルー機能が強すぎる時

別のオブジェクトに遮られたわけでもないのにオブジェクトのエッジが強調表示される場合、
DepthOffsetの値を調整することで解決できます。

f:id:Raspberly:20211011025735p:plain

f:id:Raspberly:20211011030143p:plain

 

 

ヒットFXの設定

HitFXはオブジェクトを一瞬強調表示する機能です。
見え方はオーバーレイに近い。

f:id:Raspberly:20211011005354p:plain

HitFX()を呼び出すと表示されます。

f:id:Raspberly:20211011005204g:plain

f:id:Raspberly:20211011005311p:plain

 

 

 

まとめ

Highlight Plusを使うと、オブジェクトに対してハイライトやアウトライン、シースルーなどエフェクトを与えることができる。

f:id:Raspberly:20211011032434g:plain



過去に類似する機能を持つアセット「Easy Performant Outline 2D | 3D」を紹介したことがあります。

raspberly.hateblo.jp

どちらも一長一短なので、必要な機能に応じて使い分けるといいでしょう。
「Easy Performant Outline 2D | 3D」は2D3D両方で使えますが、
Highlight Plusで2Dをやりたい場合別売りのアセットが必要になります。

 

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【勉強会レポ】: 📣 unity1week online共有会 #6

勉強会のレポート(メモ)です。
参加したのはこちら「📣 unity1week online共有会 #6」

meetup.unity3d.jp

ハッシュタグ : #u1w共有会

f:id:Raspberly:20211010175004p:plain

 

アーカイブはこちら

youtu.be

 

 

前回はこちら

raspberly.hateblo.jp

 

 

 

unity1week共有会って何?

unity1weekでいろんなゲームを遊んでいると
「どういう実装をしているんだろう」「どんな人が作っているのか」など気になることがいっぱい!

それら気になることを直接聞けばいいじゃん!というのがunity1week共有会の始まりで、
みんなで学んで成長することが趣旨です。

 

unity1weekについてはこちら

Unity 1週間ゲームジャム | フリーゲーム投稿サイト unityroom

今回は10人の発表者にトークしていただきます。

 

 

 

#1 ガワに振ったu2d振り返り

ゲーム : 製造中

開発でやってみてよかったことをお話します

配色のお話

既存のデザインから配色しました。
テーマに合ったイラストを探し、AdobeColorからカラーパレットを抽出したものをイラレでデザイン。
結構いいものができたが、カラーパレットにない色はちょっと使いづらい

アニメーションのお話

アニメーションがだるい。→DOTweenで解決!圧倒的楽

短期決戦のお話

みんなUnity2Daysをやろうぜ!
Unity2Daysは二日間で完成させて投稿するというものです。

時間的・精神的余裕ができ、だらけないメリットがあるが二日間取り組める環境が必要。

 

 

 

#2 GithubActionsを使ったu1wの開発の話

ゲーム:プルプルスライム

GitHub Actionsとは

GitHubの機能です。
テスト、ビルド、デプロイなどを自動化できます。
デプロイ先としてGithubPagesを採用しました。
手間をなくすためにGame CIを導入しています。

導入してよかったこと

・修正するごとにビルドする手間がなくなり、いつでもデバッグすることができFBを簡単にもらえた

・本番環境に近い環境でデバッグできたので前日に焦ることがなかった

つまづきポイント

・decompression fallbackはtrueにしないといけない、ただしunity roomに上げるときはfalse
・ビルドした後のファイルが100MBを超えるとアップロードできない

まとめ

u1wなど短期のゲームジャムだったらGitHub Actions+GameCIで簡単デバッグができる

 

 

 

 

#3 継続は力なり

ゲーム:诺亚的任务

u1wと継続開発についてお話します

リソースの再利用

ボクセルモデルやアウトゲーム部分などを流用でき、今後に活かすこともできる
诺亚的任务も過去のプロジェクトをクローンして作られている

チームとしての継続開発

チームとして開発した時間、関係性などが蓄積されスムーズに開発できる

合わせて読みたい

note.com

まとめ

・継続して参加することで次に活かせる
・u1wと継続開発のループはいいぞ
・次回のお祭りも楽しむぞ

 

 

 

#4 作業単位で目的を決めたら上手くいった話

ゲーム:成長は戦闘中に

なぜu1wではRPGSLGは少ないのか

作るのが大変(ボリュームがいる、調整が難しい)
1週間で作るのは難しいが好きなゲームなので挑戦しました

開発スケジュール

今まではサイクルでやっていたが、今回は手戻りなしの直線型で開発しました。

仕様を考える:Excelでペーパープロトタイプ(神とペンで遊べるような)
素材をつくる:画面レイアウトの確定、Inkscapeで作成
後はひたすら書く、仕様が確定しているので拡張性やメンテナンス性は無視して書く

まとめと感想

・各フェーズごとに目的が明確で迷いが減った
・初心に帰った開発だった、とても楽しい開発ができた

 

 

 

 

#5 ゲームの面白さを最初に決めると捗る話

ゲーム:中つなぎ

ゲームの面白さを最初に決めておくと迷いにくくなるお話をします。

中つなぎの開発

最初に面白さ(コンセプト)を決めて、コンセプトに沿って開発をする。
コンセプトを決めると、「ゲームが面白いか」ではなく「ゲームがコンセプトに沿っているか」という
客観的な問題に置き換えることができる。

開発はコンセプトに沿うものはやり、コンセプトに沿わないものはやらない(ハイスコアシステムなど)

工夫した点

・アクションに合わせたサウンド、エフェクトの設定(気持ちよくなるように)
・中を含んだ言葉を作る遊びなので中を目立たせる
・熟語はすぐに思い出せないのにあらかじめ表示しておく

まとめ

面白さ(コンセプト)を最初に決めてから開発することで
・そうすれば面白くなるのか迷わずに済んだ
・面白くするための作業が明確になった
・仕様変更が発生しないため手戻りが起きなかった

 

 

 

#6 失敗しにくい『企画』と『調整』の話

ゲーム:ActionNowLoading...

企画の話

ゲームはプレイヤーの感情を動かすためのシステム。
「どのような感情/体験をさせたいか」を決め、それを実現するための仕様を考える。

オススメの企画フローは既存のゲームをプレイして面白いと思ったゲームの「何が面白いか」を抽出。
これを別の仕様で再現するとオリジナルの企画を作れる。

調整の話

調整とは基本的な実装以外の細かい作業全て。
ゲームをプレイして面白いと感じる瞬間には間違いなく作者の意図がこもっている。
作る側としては、この調整がプレイヤーにいくつ届くかが勝負。

全体のバランス設計

パズルゲームは簡単すぎても難しすぎてもつまらない。
苦手な人はとりあえずクリアができるように、
得意な人には課題を用意することでいろんな人が満足できるように調整しました。

 

u1wにはたくさんゲームがあるためみな忙しく、他のゲームをすぐやりたいと思っている。
そのようなプレイヤーがすぐ満足できる規模感にした。
他細かいステージ設計など

まとめ

・仕様を考える前に、要件を決める
・面白いゲームには糸を込めた調整が多く必要

 

 

 

 

#7 ゲーム作りの楽しさをゲームに

ゲーム:UnderDevelopment

イデアのこだわり

きっかけは「開発中のゲームをそのままだしたらお題回収できるじゃん」というジョーク
→作りかけの要素をヒントに完成系を推理というパズルゲーム的アプローチ
→ゲームを完成させるパズルゲームなのでUnity

目的はあるけど正解は関係なくふざけてもいいというデザインにしました。

デザインのこだわり

・説明分は英語を減らし画面に出す
・操作できる部分できない部分をわかりやすくする

サウンドのこだわり

・自作サウンドLogicProMagical 8bit Plugを使用し、チップチューンを作成
・何度も聞くことになるので、イントロに時間をかけない、ネズミっぽい曲に

 

 

 

 

 

#8 親切なチュートリアルを試みた

ゲーム:Choose Your Bullet ~宇宙に爆裂を~

動機

自分のゲームの操作方法が複雑なのではと気づいた
たくさんゲームがあるため説明は読み飛ばしがち、
そこでチュートリアルを親切にすれば制作者が狙った体験をしてもらえるのではないかと考えた

構成

チュートリアルはゲームプレイ中に表示する。タイミングに応じて段階的に説明できる。

チュートリアルの作成

・仕様の文書化
→その文書から操作方法などプレイヤー視点で必要な情報を引き出し、
→同時にゲームを通じて制作者が与えたい体験を抜き出す
→それらの情報を適切な順番に並び替える(ステージデザインにも組み込める)

音声の活用

u1wでは肉声音声は少ない、そのためそこに注意がいきがち
聴覚からも情報を与えられるのでより説明が残りやすい

成果

チュートリアルを読んだ、親切だった~といったコメントがいただけた

まとめ

ゲームのわかりやすさはゲーム体験の向上に大事!
操作方法やわかりやすさをゲーム内で伝える効果は大きい

 

 

 

 

#9 "シンプルで印象に残るゲーム"の追求

ゲーム:ハイパー中国メイカー

今回の目標

プレイした人の印象に強く残るゲームを作る
・極力シンプルで奥深く
・ボイスの加工によるインパク
・何をするゲームなのかを明白に

極力シンプルで奥深く

奥深さはランキング登録のタイミング。
失敗したらランキング登録できずに終了するようにし、駆け引きを発生させる

ボイスの加工によるインパク

太鼓や銅鑼の音をつけて印象を変える

何をするゲームなのかを明白に

ゲームの遊び方はゲーム内で完結させる

u1wのページ内に操作方法を書いても見ない

これらを実行して

高い評価を得られた

反省点

誰にでも見せられるゲームにするべきだった(中国国籍の人がいい気になるかは・・・)

ややネタに走ってしまった

 

 

#10 一から素材を自作して、アクションゲームを作ってみた

ゲーム:ぷらなりんかねーしょん!

作ろうと思った経緯

最初はお題「回」で何回でも復活するというコンセプトのゲーム。
当時はアクションゲームを作ったことがなく、グラフィックを作るスキルがなかった。
タイトルなどゲームで使えそうなものだけ作っていた。

次にキャラクターデザインに挑戦してみた

オリジナルのキャラクターデザイン

キャラクターを作る時にシルエット(特徴)を作るというテクニックが紹介されていたので、頭にプラナリアを載せて特徴をつくった。

www.youtube.com

2Dのアニメーション

動画を参考に作成
・頭をつぶれたおまんじゅうのように
・目を強調
・2頭身キャラの場合手足を長めに

www.youtube.com

 

アニメーションはこちらを参考に

aniduku.com

 

アニメーション制御はUniRxで制御

 

タイルマップ

回復用、ダメージ用のタイルマップを作成。
それぞれクラスを持たせて回復値やダメージの大きさを設定

 

ステージごとのBGM切り替えもタイルマップで設定。

シーンの切り替え

シーンをいきなり切り替えるのではなくフェードイン・フェードアウトを挟む

github.com

 

 

 

 

 

以上です。
発表者のみなさんお疲れさまでした。👏👏👏

 

 

 

感想

個人的によかったと思うのはLT6の調整のお話です。
クリアは簡単+やりこみ要素というのは、苦手な人得意な人ともに楽しめるいい調整だと思います。

ランキング上位ですとシロペンロードがまさにその通りでした。
あちらもクリアだけなら簡単ですが(簡単ではない)、チャレンジ要素もあるのでコンプリートしようと思うと、かなりのボリュームになるのがすごい。(それ抜きでも40ステージ用意されてる時点ですごい)

 

今回のu1wでもパズルゲームはたくさん投稿されていますが、難しすぎて○○で止まっちゃった系のコメントをちらほら見ます。
後に再開せずそのまま離れてしまう人のことを考えると、なんらかの救済措置やヒント表示機能を搭載したゲームが今後増えるのかもしれませんね。

 

 

他の投稿作品はこちら

unityroom.com

 

こちらは少し前に作ったランキング上位作品のリール動画です

youtu.be

 

 

 

 

 

間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。

【勉強会レポ】: Gotanda.unity #20

勉強会のレポート(メモ)です。
参加したのはこちら「Gotanda.unity #20」

meetup.unity3d.jp

ハッシュタグ : #gotandaunity

 

この記事は私の主観でのまとめです。
重要な情報が削られていたり、解釈違いの場合があるのでアーカイブの動画と合わせてどうぞ。

 

アーカイブはこちら

www.youtube.com

 

Gotanda.unityとは

都内近郊を中心に活動を行うUnityユーザのコミュニティです
Unityに興味がある人であれば、どなたでも気軽にご参加いただけます!
(五反田発の勉強会であることから「Gotanda.unity」というネーミングになっております)

 

 

LT#1 さい: Unityでペイントツールを作ってみる

解像度はどこまで上げるか

解像度は1024*1024以上がよさそう。これ以上は解像度より境界線をぼかしたほうがよい。

Unityのお絵描きで検索するとヒットするコードでよく見るSetPixelsは結構無駄が多い

→Graphics.BlitでGPUに処理させる

なめらかな線を引きたい

代表的アルゴリズム「ブレゼンハムのアルゴリズム」では円とかがきれいにかけない
→Catmull-Rom splineで曲線補間する

カラーの計算

重ね塗りで色が濃くなったり混ざったようにしたい。
乗算とスクリーンの組み合わせを使用しました。

 

こちらのアプリで試し書きができるのでぜひさわってみてください

laughter.inc

 

 

 

LT#2 なかじ: Unityで使える汎用的なハンバーガーメニューの実装

Vフレットの紹介

ギターに合わせてアバターで弾き語りができるアプリ
今回はVフレットを作っている時に生まれたアセットを紹介

UniHamburgerの紹介

メニューからゲーム中のパラメータを操作できるアセット
リアルタイムのプレビューが可能
GitHubで公開予定です

github.com

UniHamburgerの特徴

・uGUIベースで簡単に導入できる
・要素の追加はワンライナーでできる
Enumのドロップダウン化ができて便利
・パラメータの保存機能

細かい便利機能

・ラベルの詳細の記述
・呼び出し元から非アクティブにして編集できないようにする
・パラメータのリセット

最後に

・近日中にリリース予定
・Bフレットもそのうち出すのでお楽しみに #Vフレット

 

 

 

LT#3 やまだ: 「なんかバグった」と言わせないためのデバッグ

5W2H

何かバグった時は5W1Hヒアリングすると思います
それに加えて、How Many(どのくらい発生するのか)が重要
発生率が低いほど直すのも確認するのも大変→バグが発生したチャンスを逃したくない

5W2Hの情報をどうやって集めるか

デバッグシートの作成→情報の粒度が人によってバラバラ
・テスト仕様書の作成→仕様書にないものに対応できない、テストコードでやったほうが便利

自動で5W2Hを収集しよう

・エラーが発生した時にログを収集する仕組みを作ろう、ログはチャットツールに通知
・開発中にだけにわかりやすい情報を増やそう

まとめ

デバッグの情報は人によってバラバラ
・欲しい情報のヒアリングにコミュニケーションコストがかかる
・バグが発生するとは限らない

→チャットツールのAPIで自動的にログを収集するというのをオススメします

SRDebuggerのオススメ

デバッグをするのに便利なツールです

 

 

 

LT#4 (スポンサー枠) まつの: f4samurai社内ゲームライブラリのパッケージ管理手法

共通ライブラリ

これまではプロジェクトごとにスクラッチで実装していた
→似た機能を共通ライブラリを作りたい

しかし、修正が発生した時の影響範囲がわからないため細かいモジュール単位で管理

どう実現するか

PackageManagerを使う、ライブラリはカスタムパッケージ化してGitHubで管理
パッケージの依存関係はGitDependencyResolverForUnityで解決

github.com

まとめ

・各プロジェクトで共通で使える機能はライブラリ化しましょう
・大きいライブラリだと管理が大変なので、小さい単位で管理
・依存関係はPackageManagerとGitDependencyResolverForUnityで解決
・非エンジニアの人が困らないような配慮が必要

 

 

 

 

LT#5 tktr: アバターの着せ替え・カラバリってどうやるの? / TextMeshProを使った絵文字対応について

バーチャルカラオケ配信アプリ「トピア」のアバター実装についてのお話

アバターの着せ替え実装

素体モデルを用意して衣装メッシュのボーンと素体のボーンを紐づける
衣装モデルSkinnedMeshRenderer.bones配列に対応する素体のボーンを設定。

アバターのカラバリ実装

1衣装につき3色まで色変更可能。
衣装テクスチャとRGBテクスチャを用意して、シェーダー側で色を変更する

TextMeshProを使った絵文字対応

実装して発生した問題

・文字化けの発生(用意されていない絵文字の使用、文字コードが崩れたとき)
→入力終了後に範囲外チェックを行う

・TextMeshProの絵文字は改行位置がおかしくなる
→絵文字の後ろにゼロ幅スペースを置くと単語ではなくなるので改行がされなくなる

解決方法

絵文字を使うならUnityのInputFieldは使用してはいけない
入力はTouchScreenKeyboardで受け取り、TextMeshProで表示

 

 

 

 

LT#6 ふしっきー: Unityで作るパフォーマーのためのモバイルARフィルター

取り組み

パフォーマー向けのモバイルARフィルターを作っています。
・プロダンサーリアルタイム合成配信
・映像コンテストでそれぞれ映像投稿

使用技術の紹介

検出はUnity AR Foundation+iOS ARKit
エフェクトはShader、Trail、ParticleSystem、Vfx Graph

モバイルARフィルター撮影のいいところ

スマートフォンを向けるだけで誰でもエフェクト合成できる
・リアルタイムで体験できる

大変な所

・リアルタイム撮影だと後から編集が難しい
・モバイルなの毎回ビルドが必要
・トラッキング技術難易度が高い

まとめ

制作事例と使用技術についてまとめました
大変だけど楽しく撮影しています

 

 

 

 

LT#7 たけし: そろそろ輪郭線について見直しませんか?

現行の主要な輪郭線の手法

背面法:モデルを拡大して背面を線として描画する手法
輪郭線フィルタ:G-bufferに対して輪郭線検出フィルタを適用する手法

輪郭線について見直し

これからは幾何情報をより多く活用するアプローチだったり、機械学習レイトレーシングを有効活用するアプローチが考えられる。

実際にやってみたサンプル

github.com

ライブラリ

github.com

まとめ

・現行の輪郭線アルゴリズムは良くも悪くも枯れた手法
・ハードウェアの機能を活かすことで発展の可能性あり
・みんなで輪郭線界隈を盛り上げていきましょう

 

 

 

 

LT#8 にー兄さん: VFX Graphの気になるアップデートを軽率に紹介したい

VFX Graphを新機能3つ紹介します

Sample Skinned Mesh

SkinnedMeshをSampleしてくれるノード
メッシュの表面からパーティクルをスポーンしたりなどができる

youtu.be

Sample Graphics Buffer

配列からGraphics Bufferを生成し直感的で便利に。

デモ

github.com

SDF Bake Tool

SDFとは任意の点から形状への距離と方向を保持したデータ。3Dテクスチャとして扱われる。
過去にSDFを使用したVFXで登壇したこともあります

スキャンデータを使った リッチなVFXを軽率に作ろう - Speaker Deck

デモ

github.com

まとめ

・SimpleXX系ノードがアツい
・頑張ればできる機能が頑張らなくてもできるようになった
・アーティスト向けツールとして正当な進化
VFX Graphはいいぞ

 

 

 

 

 

スポンサー紹介

株式会社f4samurai

スマホ向けのゲームの企画・開発を行っています。
採用ページがリニューアルしました!

recruit.f4samurai.jp

 

ワンダープラネット株式会社

プロダクト紹介

crashfever.com

jumputi.game.line.me

 

エンジニア募集中です

www.wantedly.com
技術ブログもやっています

developers.wonderpla.net

 

株式会社キッズスター

子供向けのプロダクトを作っています

biz.kidsstar.co.jp

さまざまなジョブを募集中です。Wantedlyからご応募ください。

www.wantedly.com

 

 

 

 

 

感想

今回もおもしろいLTばかりでしたが、
一番興味を持ったのはLT#3の「「なんかバグった」と言わせないためのデバッグ」ですね。
ピンポイントでぶっ刺さる内容なのでめちゃくちゃタメになりました。
LT#4の「f4samurai社内ゲームライブラリのパッケージ管理手法」も興味深い!

 

 

そしてとうとうごたゆにも20回目!
思い返してみると初めて参加したのが、7回目のGotanda.unityでした。

gotanda-unity.connpass.com

 

たしかUnite Tokyo 2018でとと様と直接話したのが参加したきっかけでしたね。
9回目の時はとうとうLT初登壇もキメてやりました
それ以降も毎回参加していろいろ学ばせていただいています。

raspberly.hateblo.jp

 

参加しすぎてキッズスターの会社紹介はもはや暗唱できるレベルです。
これからもよろしくお願いします。

 

 

 

 

間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。

【アセット紹介】Dreamteck Splines でスプライン曲線に沿った移動をさせる【Unity】

今回はアセットの紹介をしていきます。
紹介するのはDreamteck Splines
スプライン曲線を作成するアセットです。

f:id:Raspberly:20210916221442p:plain

 

どんなアセット?

スプラインを使って曲線を作るアセットです。
曲線に沿ってオブジェクトを移動させたり、メッシュを生成するコンポーネントも含まれています。

Dreamteck Splinesは、使い慣れたツールとインターフェイスを活用して、Unityのネイティブ部分のように感じるように設計されています。設計者にとってもプログラマーにとっても使いやすく、独自の動作の迅速なプロトタイピングと実装が可能です。柔軟性、使いやすさ、パフォーマンスに重点を置いており、小規模、中規模、大規模の両方のプロジェクトに適しています。

 

主な機能:
-エディターとランタイムスプラインの作成
-エルミート、ベジェ、Bスプラインおよび線形スプライン
-一定速度でのパス追跡
-メッシュ生成
-ジャンクション
-オブジェクトと粒子の制御
-スプライン投影
-モバイルフレンドリー
-プリミティブとプリセット
-インポートとエクスポート機能
-モーフ状態
-マルチスレッド
-簡単に拡張可能な機能
-例を含む広範なユーザーマニュアル
-オープンソース

f:id:Raspberly:20210917020448g:plain

f:id:Raspberly:20210917020423g:plain

ドキュメントはこちら

 

Humble Bundleのバンドルに含まれているアセットです。
マイアセットへの追加方法はこちら

www.asset-sale.net

 

 

 

開発環境

Unity2020.3.14f1

Dreamteck Splines ver2.09

 

 

 

インポートの確認

アセットインポート完了時はこんな感じ。

f:id:Raspberly:20210915225144p:plain

デモシーンの確認

デモシーンを確認するには付属のunitypackageをインポートする必要があります。

f:id:Raspberly:20210915225344p:plain

AudioVisualization

AudioClipに合わせてウェーブを変形させるシーン

f:id:Raspberly:20210916230245g:plain

 

Following

スプラインに沿ってカメラが移動するシーン

f:id:Raspberly:20210915232039p:plain

f:id:Raspberly:20210916221523g:plain

 

Junctions

スプラインに沿って線路を生成するシーン

f:id:Raspberly:20210916223300g:plain

 

LengthEvents

2つのボールをつなぎ、距離に応じてイベントを行うシーン

f:id:Raspberly:20210916223508g:plain

他にもいくつかデモが用意されています。

 

 

 

 

 

実際に試してみる

実際にスプラインを作成して、カメラやエフェクトを移動させてみます。

ステージの用意

同時期にパブリッシャーセールで配布されていたPOLYGON Cityをステージとして使います。

f:id:Raspberly:20210916235557p:plain

 

 

スプラインの作成

スプラインを作成します。
Hierarchy右クリックから3D Object/Spline Computerを選択。

f:id:Raspberly:20210916230645p:plain

Spline ComputerコンポーネントがアタッチされたGame Objectが作成されます。

 

スプラインポイントの作成

Spline ComputerのEditを開き、+ボタンを押すとポイント作成モードに入り、

f:id:Raspberly:20210917000907p:plain

シーンビューで左クリックするとその場にスプラインポイントを作成します。

f:id:Raspberly:20210917002333g:plain

再度+ボタンを押すとポイント作成モードを終了します。

f:id:Raspberly:20210917001640p:plain

お察しの方もいる通り、-ボタンを押すとポイント削除モードに移行します。

 

スプラインポイントの調整

Spline Computerの以下のボタンを押すと、ポイントの移動・回転・拡大が行えます。

f:id:Raspberly:20210917002617p:plain

f:id:Raspberly:20210917003005g:plain



Cameraの移動

Cameraをスプラインに沿って移動させます。
CameraにSpline Followerコンポーネントをアタッチ。
これはオブジェクトをスプラインに沿って移動させるコンポーネントです。

f:id:Raspberly:20210917003735p:plain

最初に作ったSplineを割り当てゲームを再生するとスプラインに沿って移動します。

f:id:Raspberly:20210917004721g:plain

Spline Followerでは、移動速度の設定、速度ではなく時間に合わせて移動させたり終点についたときのループ処理などが行えます。

 

 

パーティクルを移動させる

次はパーティクルエフェクトをスプラインに沿って移動させます。

新しくParticle Systemを作成しパラメータは以下の通りに、大きさと角度をバラバラにしているのがポイント。

f:id:Raspberly:20210917011610p:plain

さらにCubeを描画するようにします。(とと様の記事を参考)

f:id:Raspberly:20210917011647p:plain

qiita.com

 

さらにParticle Controllerをアタッチ。
Particle Systemをスプラインに沿って移動させるコンポーネントです。
スプラインを割り当て、Volumetricにチェックを入れScaleを大きくします。

f:id:Raspberly:20210917012610p:plain

Volumetricにチェックを入れると、スプラインに対して立体的な追従を行います。

f:id:Raspberly:20210917020604g:plain

 

 

これで完成です。スプラインに沿ってパーティクルが移動しました。

f:id:Raspberly:20210917020423g:plain

 

カメラとパーティクル2つ合わせるとこんな感じ。

f:id:Raspberly:20210917020448g:plain

 

 

 

まとめ

・Dreamteck Splinesはスプライン曲線を作るアセット
・オブジェクトやパーティクルをスプラインに沿って移動させるコンポーネントも含まれている

 

今回は3Dのみでしたが2Dでも使えるアセットです。
まだまだ使っていない機能もいっぱい!

 

以上です。

 

 

 

参考資料

www.youtube.com

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【アセット紹介】Space Graphics Toolkit で宇宙空間を作る【Unity】

今回はアセットの紹介をしていきます。
紹介するのはSpace Graphics Toolkit
宇宙空間を作成するアセットです。

f:id:Raspberly:20210906143005p:plain

 

 

お得なセール情報

現在アセットストアでは、Unity Technologies Japan創立10周年を記念したメガバンドルを発売中!終了しました
最大54.99ドルで14の人気アセットが入手できちゃいます!詳しくは↓のバナーからどうぞ

f:id:Raspberly:20210906221633p:plain

いつもより期間が短いためお早めに!今日まで!

今回紹介する「Space Graphics Toolkit」も対象アセットです。

www.youtube.com

 

 

どんなアセット?

リアルなあるいはファンタジーな宇宙空間を作成できるアセットです。
宇宙空間を構成する様々なエフェクトを表現できます。全SRPに対応。
モバイル、コンソール、WebGLVRもサポートされています。

Space Graphics Toolkitを使用して、夢の宇宙シーンを作成します。この膨大なエフェクトのコレクションは、あらゆる方法でカスタマイズおよび組み合わせることができるため、リアルな世界やファンタジーの世界をすばやく作成できます。

f:id:Raspberly:20210907033405p:plain

オンラインドキュメントはこちら

 

 

開発環境

Unity2020.3.14f1

Space Graphics Toolkit ver3.9.2

 

 

 

インポートの確認

アセットインポート完了時はこんな感じです。

f:id:Raspberly:20210907031224p:plain

まずはGUIDEからドキュメントを確認しましょう。
アセットの動作確認をしたい場合は、Features及びPacksにあるサンプルシーンが参考になります。

Feature:各機能のコードとサンプルシーンがあり、動かすうえで参考になる

Packs:機能がグループごとにわかれていて、そのヴィジュアルやサンプルシーンを確認できる

 

デモシーンで機能の確認

各機能を確認します。(たくさんあるので一部のみ)

降着円盤

f:id:Raspberly:20210907031814g:plain

小惑星帯ステロイドベルト

f:id:Raspberly:20210907032032g:plain

オーロラ

f:id:Raspberly:20210907033246p:plain

Continuum 

重力作用による歪み的な

f:id:Raspberly:20210907032131g:plain

Dark Start

f:id:Raspberly:20210907032332p:plain

Elliptical Galaxy

ボリューメトリックな楕円形の銀河

f:id:Raspberly:20210907032459g:plain

Jovian

輪のある木星チックな惑星

f:id:Raspberly:20210907032736g:plain

Nebula

ボリューメトリックな星雲

f:id:Raspberly:20210907032846p:plain

 

 

 

 

実際に試してみる

実際に宇宙空間を作ってみます。
事前準備として、CameraをSolidColorにし黒塗り状態に。

f:id:Raspberly:20210907040811p:plain


SceneビューもSkyboxを非表示にし、背景を真っ黒にしておくと作業がしやすいです。

f:id:Raspberly:20210907040907p:plain

f:id:Raspberly:20210906011314p:plain

 

また、DirectionalLightがアタッチされているオブジェクトに、
SGT Lightコンポーネントをアタッチしておきます。

f:id:Raspberly:20210907040611p:plain

 

 

背景を作る

果てまで広がる星雲や星々など、背景を作っていきます。Skyboxみたいな感じ。
背景を作るには、SGT Backdropコンポーネントを使います。

 

Hierarchyビューの右クリックからBackdropを選ぶと、
SGT Backdropコンポーネントがアタッチされたゲームオブジェクトが作成されます。

f:id:Raspberly:20210905233253p:plain

f:id:Raspberly:20210905233527p:plain

作った直後はこんな感じのものが画面に表示されるはずです。

f:id:Raspberly:20210906013954p:plain

星雲を作る

星雲を作っていきます。
作成したBackdropにあるSGT Backdropコンポーネントを以下のように調整。

f:id:Raspberly:20210906231543p:plain

これでぼやけた雲のようなものができあがります。

f:id:Raspberly:20210907030929g:plain

星を作る

星雲だけだと物足りないので星々も追加します。
SGT Backdropを新しく追加し、パラメータを以下のように調整。

f:id:Raspberly:20210906232517p:plain

Star Colorsはこんな感じ、この辺は好みでいいと思います。

f:id:Raspberly:20210906020317p:plain

これで完成。BrightnessやStartCountなどを変えて自分好みするといいでしょう。

f:id:Raspberly:20210906020338p:plain

ただしこれだと星の大きさがみな均等なので、もう一つBackdropを追加します。
パラメータは以下の通り、星を大きくし生成数を少なくしています。

f:id:Raspberly:20210906232618p:plain

これでやや大きめの星がちらほら混じるようになるのでより見た目がよくなりましたね。

f:id:Raspberly:20210907030903g:plain

 

 

 

 

惑星を作る

地球のような惑星を作ります。

マテリアルの作成

最初に惑星のマテリアルを作ります。
新規にマテリアルを作成し、Space Graphics Toolkit/Planetシェーダーを設定。

f:id:Raspberly:20210906223849p:plain

Albedoに「Planet_Albedo」を、Heightに「Planet_Height」を設定。

Planetの作成

Hierarchyビューの右クリックからPlanetを選ぶと、
SGT Planetコンポーネントがアタッチされたゲームオブジェクトが作成されます。

f:id:Raspberly:20210906225032p:plain

パラメータはこんな感じ。
Radiusは大きさ、Materialには先ほど作ったPlanetマテリアルを使います。
Radius5でScale10のSphereと同じくらいの大きさです。

f:id:Raspberly:20210906232832p:plain

これで惑星が作成されました。

f:id:Raspberly:20210907030700g:plain

 

 

 

 

大気を作る

最後に惑星を取り巻く大気の層を作ります。

Planetを右クリックして、SpaceGraphicsToolkit/Atmosphereを選択。
SGT SharedMaterialとSGT AtmosphereがアタッチされたオブジェクトがPlanetの子オブジェクトとして作成されます。

f:id:Raspberly:20210907004950p:plain

SGT Atmosphereコンポーネントの下にある、ボタン2つ押します。
すると必要なテクスチャを自動的に生成してくれます。

f:id:Raspberly:20210907010945p:plain


Litにチェックボックスを入れ、下にあるボタンも押します。
ここでもテクスチャの設定を自動で行ってくれます。

f:id:Raspberly:20210907025941p:plain


パラメータは以下の通り

f:id:Raspberly:20210907030444p:plain

 

これで惑星に大気の層ができました。

f:id:Raspberly:20210907030602g:plain


ポストプロセスをつけるとさらにいい感じですね。

f:id:Raspberly:20210907033405p:plain

まだまだエフェクトはたくさんありますがひとまずここまで。


背景・惑星・大気を作成しましたが、結構省略した部分もあります。
惑星であれば地形の隆起、水の生成など非常に多くの機能が用意されています。

 

 

 

まとめ

・Space Graphics Toolkitを使うと、宇宙空間を簡単に構築できる

かなり価格の高いアセットですが期間限定のバンドルでお得に入手できます。
気に入ったエフェクトがあればぜひどうぞ。

 

 

以上です。

f:id:Raspberly:20210906221633p:plain

 

 

 

参考資料

www.youtube.com

ikeball.hatenablog.com

www.asset-sale.net

 

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【アセット紹介】Enemy Vision - Patrol and Line of Sight でステルスゲームを作る【Unity】

今回はアセットの紹介をしていきます。
紹介するのはEnemy Vision - Patrol and Line of Sight
ステルスゲームにおける敵の挙動を構築するアセットです。

f:id:Raspberly:20210830015458p:plain

f:id:Raspberly:20210830022515p:plain



 

お得なセール情報(終了しました)

現在アセットストアでは、プロトタイピング向けアセットのバンドルを発売中!
今回紹介する「Enemy Vision - Patrol and Line of Sight」もバンドルに含まれています。

f:id:Raspberly:20210823232118p:plain

金額に応じてアセットが異なりますが、オススメは全てのアセットが含まれた$21.99コースです。
通常の50%OFFセールで購入するよりも安く購入できるので、
気になるアセットがある場合は買っちゃいましょう!

f:id:Raspberly:20210823205628p:plain

 

f:id:Raspberly:20210823205647p:plain

f:id:Raspberly:20210823205732p:plain

 

 

 

 

どんなアセット?

ステルスゲーム向けのアセットです。
敵の視界、巡回機能システムを構築できます。

コンテンツ-
敵のビジョンコーン-ビジョンコーン
は障害物に適応します-
敵の行動:パトロール、アラート、チェイス-パトロール
:設定されたパス
に従って移動します-アラート:好奇心をそそられ、疑わしい場所に
歩きます
-チェイス:プレイヤーに向かって走ります-地面の高さ、敵は高台にいるときにのみあなたを見ることができます。
-オプションの2レベルのビジョンコーン(
近視と遠視-近視範囲は、警告を受ける代わりにプレーヤーを即座に検出します。
-ノイズゾーン(プレイヤーがそれを踏むと、近くの敵に警告します)。
-ノイズを放出するために任意のオブジェクトおよび関数呼び出しに追加できるノイズソース。
-使用と構成が簡単

-2D および3Dのサポート-優れたパフォーマンスと最適化の設定

 

2D、3D両方で使えるアセットですが今回は3Dをメインに扱います。

 

すぐに動作確認ができるデモが用意されています。

2Dデモ

3Dデモ

 

 

 

 

開発環境

Unity2020.3.14f1

Enemy Vision - Patrol and Line of Sight ver2.02

 

 

 

インポートの確認

アセットインポート完了時はこんな感じです。

f:id:Raspberly:20210830015250p:plain

 

URPプロジェクトの場合

このアセットはSRP関係なく動きますがデモシーンはBuilt-inを想定したものになっています。
そのためURPで動かす場合はマテリアルのアップデートを行っておきましょう。

f:id:Raspberly:20210829221039p:plain

 

デモシーンの確認

Assets/IndieMarc/EnemyVision/Scenesにデモシーンが用意されています。
ステージ内を警官がパトロールしていて、視界に入ると追いかけてきます。

f:id:Raspberly:20210830022533g:plain

ノイズを発生させる赤いポイントがあり、そこを踏むと近くの敵が調べにやってくる機能もあります。

 

 

 

 

主要コンポーネント

このアセットを使いこなすうえで重要なコンポーネントを紹介します。

Enemyコンポーネント

Enemyの移動を管理するコンポーネントです。
移動速度、NavMeshAgentの有無、ステージの巡回機能もあります。

f:id:Raspberly:20210830013721p:plain

 

EnemyVisionコンポーネント

視界を管理するコンポーネントです。
視界の範囲、発見状態に移行するまでの時間、見失ってから追跡終了までの時間などを設定できます。

f:id:Raspberly:20210830013928p:plain

UnityEventが用意されているので、発見時や警戒時に何かさせたい時はコールバック関数を登録しましょう。
これに関してはEnemy Demoコンポーネントが参考になります。

 

VisionConeコンポーネント

視界を可視化して表示するコンポーネントです。
Assets/IndieMarc/EnemyVision/Prefabs/VisionConesに最初から用意されているので、直接触ることはないと思います。

f:id:Raspberly:20210830014858p:plain

 

VisionTargetコンポーネント

Playerにアタッチするコンポーネントです。
これがないとEnemyに検知されません。

f:id:Raspberly:20210830013635p:plain



 

 

実際に試してみる

3Dのシーンで実際に試してみます。

ステージとキャラクターの配置

壁用の適当な仕切りとしてCubeを、敵用のキャラクターとしてSDユニティちゃんを配置します。

f:id:Raspberly:20210830001156p:plain

NavMeshを生成するため壁、地面オブジェクトのNavigation Staticを有効にします

f:id:Raspberly:20210830001909p:plain

その後、NavMeshをBake。

f:id:Raspberly:20210830003200p:plain

これでステージ作りは完成です。

f:id:Raspberly:20210830003315p:plain

 

Enemyの設定

空のGameObjectを作成し名前を「Enemy」にします、SDユニティちゃんを子オブジェクトにします。
視点の位置用に空のGameObjectを作成し名前を「Eye」にします。

f:id:Raspberly:20210830003607p:plain

EyeはSDユニティちゃんの目元当たりに置いておきます。

f:id:Raspberly:20210830005607p:plain

 

Enemyオブジェクトには、EnemyコンポーネントEnemyVisionコンポーネントNavMeshAgentコンポーネントEnemyDemoコンポーネントをアタッチします。

f:id:Raspberly:20210830010601p:plain

 

Enemyコンポーネント

デフォルトでは移動速度が速いのでSpeedを調節し、Use_pathfindを有効にします。
これが有効だとNavMeshAgentを使って移動します。

f:id:Raspberly:20210830011257p:plain

 

Enemy Visionコンポーネント

視界の範囲はデフォルトのまま、参照だけ設定します。
Eyeには先ほど作ったEyeオブジェクトをアサイン、
Vision_prefabにはAssets/IndieMarc/EnemyVision/Prefabs/VisionCones/VisionConeアサインします。

f:id:Raspberly:20210830011533p:plain

 

Enemy Demoコンポーネント

Exclama_prefabAssets/IndieMarc/EnemyVision/Prefabs/Others/Exclamationアサイ
これでプレイヤー発見時に「!」マークが出ます

f:id:Raspberly:20210830012317p:plain

 

アニメーションの設定

AnimatorとAnimationはアセットで用意されているものをそのまま使います。
SDユニティちゃんのAnimatorAssets/IndieMarc/EnemyVision/Animations/3D/Characterをアタッチします。

f:id:Raspberly:20210830012508p:plain

 

ただし、このアニメーションはHumanoidではなくGenericなのでAnimationTypeを変更します。
Assets/IndieMarc/EnemyVision/Modelsにある以下のオブジェクトのAnimationTypeをHumanoidにしてApply。

f:id:Raspberly:20210830010442p:plain

 

Playerの設定

PlayerにはVisionTargetコンポーネントをアタッチします。

f:id:Raspberly:20210830013635p:plain

 

これで完成です。
Playerが視界に入るとEnemyが追いかけてきます。

f:id:Raspberly:20210830022906g:plain

 

 

 

巡回機能を使う

せっかくなのでEnemyを巡回させてみます。
ステージ上の巡回させたい位置に空のGameObjectを作成します。

f:id:Raspberly:20210830020634p:plain

f:id:Raspberly:20210830020652p:plain

作成したGameObjectをEnemyコンポーネントPatrol_pathアサイン。

f:id:Raspberly:20210830020737p:plain

 

これで完成です。

f:id:Raspberly:20210830023835g:plain

 

明るいと見えにくいですが、シーンビュー上でも赤い線で巡回箇所が表示されます。

f:id:Raspberly:20210830021057p:plain

 

トロールタイプ

巡回する時の動き方が3種類用意されています。

f:id:Raspberly:20210830021430p:plain

Rewind:最後のPatrol_pathまで移動したら、順番に引き返す

Loop:最後のPatrol_pathまで移動したら、最初の位置に戻り同じルートで巡回を開始する

Facing Only:移動はせず、Patrol_pathに登録した位置を向くだけ

 

 

 

 

まとめ

・Enemy Vision - Patrol and Line of Sightはステルスゲームにおける敵の挙動を構築するアセット
・2D、3D両方で活用できる
・視界と巡回機能が用意されている

 

いろいろさわってみてわかりましたがかなり丁寧に作られています。
ドキュメントは簡素で、コンポーネントやデモ用スクリプトがとてもわかりやすかったです。

 

 

 

 

他の方の解説記事

temoshiblog.com

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【アセット紹介】Enviro Lite - Sky and Weather で天気を操作する【Unity】

今回はアセットの紹介をしていきます。
紹介するのはEnviro Lite - Sky and Weather
空と天気を構築するアセットです。

f:id:Raspberly:20210824010554p:plain

f:id:Raspberly:20210824021825p:plain

 

 

お得なセール情報(終了しました)

現在アセットストアでは、プロトタイピング向けアセットのバンドルを発売中!
今回紹介する「Enviro Lite - Sky and Weather」もバンドルに含まれています。

f:id:Raspberly:20210823232118p:plain

金額に応じてアセットが異なりますが、オススメは全てのアセットが含まれた$21.99コースです。
通常の50%OFFセールで購入するよりも遥かに安く購入できるので、
気になるアセットがある場合は買っちゃいましょう!

f:id:Raspberly:20210823205628p:plain

 

f:id:Raspberly:20210823205647p:plain

f:id:Raspberly:20210823205732p:plain

 

どんなアセット?

動的で軽量な空と天気を構築できるアセットです。

非常に簡単なセットアップ:

新しいマネージャーコンポーネントを使用すると、シーンにEnviroLiteを簡単にセットアップできます。

 

プロファイルシステム

EnviroのLiteプロファイルシステムを使用すると、空をできるだけ簡単に調整できます。実行時に設定を微調整し、プロファイルに保存します。設計および実行時にプロファイルをロードします。シーンごとに異なるプロファイルを作成するか、構成を他のユーザーと共有します。

 

昼夜サイクル:

Enviro Liteは、現実的な昼夜サイクルをサポートします。緯度と経度による完全な位置サポートを備えた正しい太陽と月の位置。システム時刻を使用するか、リアルタイムの分に基づいてenviroに時刻を更新させるかを選択できます。

 

スカイボックス:

Enviro Liteには、見栄えのするダイナミックな空を実現するためのライトスカイボックスシェーダーが含まれています。地平線用と上空用の2つのグラデーションしかないため、簡単に調整できます。いくつかのミー散乱と一緒に、すべてのプラットフォームでサポートされ、非常に軽量なリアルな空を手に入れることができます。

 

点灯:

Enviro Liteは、太陽の高度に基づいてシーンをリアルに照らします。エディターでカーブとグラデーションを変更することで、光の強度と色を完全に制御できます。もちろん、さまざまな環境光モードから選択することもできます。

 

季節:

Enviro Liteは季節を変更し、Unity地形のゲームオブジェクト、マテリアル、テクスチャを交換するためのコンポーネントを取得します。あなたは現実的な設定に制限されていません!各シーズンの開始日と終了日を設定できます。Enviroは、季節、時刻、現在の天気に基づいた温度シミュレーションもサポートしています。

 

雲:

ダイナミックな空のための美しいパーティクルベースのスカイボックスクラウド。これらの雲は速く、見栄えがします。Enviro Liteは、スカイボックスで直接レンダリングされた巻雲もサポートしています。3層の雲を使用すると、プロジェクトに驚くほどダイナミックな空を見ることができます。

 

霧:

見事な霧が必要ですか?Enviro Liteには、距離、高さ、スカイフォグをサポートする高度な光散乱フォグイメージエフェクトが含まれています。透明な素材に霧が必要ですか?問題ありません。数行のコードで、独自の透明シェーダーを変更して正しく曇らせることができます。そして、あなたが始めるために、いくつかのパーティクルシェーダーと透明シェーダーがすでに含まれています!ただし、パフォーマンス上の理由から、特にモバイルでは、Unityフォワードフォグを使用することもできます。霧の色は空の地平線に一致し、リアルでダイナミックな外観になります。

 

天気:

Enviro Liteには、非常に強力な気象システムが含まれています。独自の天気タイプを作成して、光、空、霧、雲を運転することができます。Enviroは、あらゆる種類の統一手裏剣パーティクルエフェクトをサポートしており、考えられるあらゆる天候効果を自由に作成できます。これには、晴天、曇り、雨、嵐、雪、霧の天気など、11種類の既成の天気が含まれます。雷雨を有効にし、スムーズな遷移で天気ごとに異なる周囲音と天気音を選択できます。

 

ネットワーキング:

Enviro Liteは、すぐに使用できるUNet、Mirror、およびPhotonをサポートします。それはあなたのすべてのプレーヤーと時間と天気を同期させます。Enviro Liteには、ヘッドレスサーバーが時間と天気のみを計算し、それ以上は計算しない最小モードもあります。

 

バーチャルリアリティ

Enviro Liteは、マルチパスおよびシングルパス/インスタンス化された立体視レンダリングをサポートします。OculusRiftでテスト済み。

多数のサードパーティアセットとの連携機能があるのも大きな特徴ですね。 

 

 

Enviroには通常版Lite版の2バージョンが存在します。今回紹介するのはLite版です。
通常版はPC・コンソール向け、Lite版はモバイル向けになっています。

通常版にはLite版が含まれているので、持っている方はLite版を購入する必要はありません

 

 

 

 

 

開発環境

Unity2020.3.14f1

Universal RP ver 10.5.1

Enviro Lite - Sky and Weather ver2.3.3

 

今回はURPプロジェクトで使用しますが、Built-inでも同じ手順で動作確認済みです。

 

 

インポートの確認

アセットインポート完了時はこんな感じです。

f:id:Raspberly:20210813010614p:plain

 

サンプルシーンの確認

Assets/Enviro - Sky and Weather/Samples/Sceneにサンプルシーンがあります。
一人称視点で動き回れるTerrainのあるシーンです。

f:id:Raspberly:20210822234558p:plain

右側のUIから、時間・天気・ビジュアルの品質を設定できます

f:id:Raspberly:20210822235509p:plain


デフォルトで用意されている天気のプリセットは10種類。
雨音や風の音など環境音もあります。

f:id:Raspberly:20210823003832g:plain

 

f:id:Raspberly:20210823003941g:plain

 

 

 

実際に試してみる

一から始めて実際に雨を降らせてみます。

初期設定

シーンに「Enviro Sky Manager」を配置します。
UnityメニューバーのAssets/Create/Enviro/Enviro Sky Managerから、
EnviroSkyMgrコンポーネントがアタッチされたゲームオブジェクトが生成されます。

f:id:Raspberly:20210813011439p:plain

f:id:Raspberly:20210813011633p:plain

 

これは、Enviroインスタンス(以下インスタンス)の管理、レンダリングパイプラインの切り替え、サードパーティのサポートを行うマネージャークラスです。

f:id:Raspberly:20210823012500p:plain

 

URPの設定

※URPプロジェクトのみ

Enviro Sky MgrのActivate URP Supportボタンを押します。

f:id:Raspberly:20210823010251p:plain

Scriptのコンパイル後、Enviro Sky MgrのCurrent Render PipelineがURPになっていれば完了です。

f:id:Raspberly:20210823010438p:plain

ドキュメントではURP Assetの設定など書いてありますが必要なさそう(そもそもURP Assetsがない)

 

 

雨を降らせる

インスタンスの作成

Enviro Sky MgrのCreate Lite Instanceからインスタンスを作成します。
インスタンスはビジュアルの構成、時間や天気の制御、各機能のオンオフを設定できます

f:id:Raspberly:20210823012702p:plain

インスタンスはEnviro Sky Mgrの子オブジェクトに作成されます。
f:id:Raspberly:20210823233753p:plain
作成後は非アクティブ状態になっているので、Enviro Sky MgrからActiveボタンを押します。

f:id:Raspberly:20210823234750p:plain

 

この時、PlayerかCameraの設定がされていないと警告がでます、
Auto Assignを押すと自動で設定してくれるます。

f:id:Raspberly:20210823161003p:plain

これで空が表示され太陽も動いているのが確認できます。

f:id:Raspberly:20210823235207p:plain

 

天気の設定

インスタンスのShowから、インスタンスオブジェクトのInspectorを開きます。

f:id:Raspberly:20210823235832p:plain

Enviro Sky LiteのWeather Controls/Weather/Start Weather Presetで最初の天気を設定できます。

f:id:Raspberly:20210823235938p:plain

天気はプリセットとして設定でき最初からいくつか用意されています。(自作も可能)
今回は雨を降らせたいのでHeavy Rainを設定します。

f:id:Raspberly:20210824000024p:plain

これで雨が降るようになりました。

f:id:Raspberly:20210824002912g:plain

 

 

天気プリセットを自作してみる

プリセットの作成

最初から用意されている天気プリセットを使いましたが、これを自作してみます。
今回は「天気雨」を作ってみます。

Projectビューで右クリックからCreate/Enviro/WeatherPresetを選択、新しいプリセットが作成されます。

f:id:Raspberly:20210824000735p:plain

 

名前を「Sun Shower」に変更。
名前はインスタンス側から識別するのに使われます。

f:id:Raspberly:20210824001532p:plain

 

雨のエフェクト

雨が降るようにします。雨のエフェクトはEnviroに含まれているものをそのまま使います。
個別に雨用エフェクトを持っている場合はそれを設定してもいいですね。


General Config/Paricle EffectsAddを押し、「Medium Rain HQ」をアサイン。
上から降るようにしたいので、PositionとRotaionをそれぞれ設定

f:id:Raspberly:20210823204152p:plain

 

雲の設定

天気雨なので雲は出さないようにしますが、デフォルトで快晴状態なのでそのままでOK。
設定自体はプリセットのClouds Configsから行えます。

f:id:Raspberly:20210824003928p:plain

 

雨音の設定

プリセットのAudio Configsから音の設定ができます。
Weather Soundeffectに「sfx_enviro_heavyrain」を設定。

f:id:Raspberly:20210824005536p:plain



プリセットの設定

作成したプリセットをインスタンスに設定します。
インスタンスオブジェクトにあるWeather ZoneコンポーネントWeather Configs/Weather PresetsにSun Showerを追加します。

f:id:Raspberly:20210824004249p:plain

 

最後にEnviro Sky LiteのWeather Controls/Weather/Start Weather PresetにSun Showerを設定します。

f:id:Raspberly:20210824005157p:plain



これで完成。
実行してみると雲がない快晴状態で雨が降っているのが確認できます。
(晴れているとわかりにくいので夕方にしています)

f:id:Raspberly:20210824003020g:plain

 

パラメータに関しては既存の天気プリセットを参考にするとよさそうです。
プリセットはAssets/Enviro - Sky and Weather/Core/Profiles/Weather Presetsにあります。

f:id:Raspberly:20210824005709p:plain

 

 

時間を調整する

インスタンスEnviro Sky Lite/Time and Location Controlsから時間を設定できます。

f:id:Raspberly:20210824005804p:plain

Progress TimeをNoneにすると時間の流れが止まり、System Timeにすると現実の時間が反映されます。

 

 

 

 

 

まとめ

・Enviro Lite - Sky and Weatherは空と天気を構築できるアセット
インスタンスのパラメータとプリセットの設定でノーコーディングで環境を構築できる

 

 

以上です。
 

 

 

参考資料

forum.unity.com

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

同じ天候操作系アセット「Weather Maker」も解説しています(やや古い) 

raspberly.hateblo.jp

raspberly.hateblo.jp

 

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。