Raspberlyのブログ

Raspberlyのブログ

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

【イベントレポ】: xR Creators Meetup #1 w/XR-Hub Cafe

勉強会のレポート(メモ)です。
参加したのはこちら「xR Creators Meetup #1」
会場はXR-Hub Cafeさんです。

vrtokyo.connpass.com

ハッシュタグ#xRMeetup

 

f:id:Raspberly:20191218003812j:plain

 

 

時刻 説明
17:00 Opening
17:00 ~ 19:00 展示 Part 1 ( ゆるふわタイム )
18:30 Check-in
19:00 ~ 20:00 LT Time
19:00 ~ 19:03 0. Introducing XR-Hub by Cafe 松谷遼
19:05 ~ 19:08 1. じぇしか @jscmla1118
19:10 ~ 19:13 2. HhotateA @HhotateA_xR
19:15 ~ 19:18 3. ConsoleSoup @consolesoup
19:20 ~ 19:23 4. こりん @korinVR
19:25 ~ 19:28 5. simeis512 @simeis512
19:30 ~ 19:33 6. dnh_wizard @dnh_wizard
19:35 ~ 19:38 7. yuma @YYouzhen
19:40 ~ 19:43 8. 飛び込み::かなかな@バーチャル売り子の人 @mZ63wyZgwdmU5TJ
19:45 ~ 21:00 展示 Part 2
21:30 Closing

会場紹介

会場提供はXR-Hub Cafeさんです。近々別のイベントも計画中とのこと。

x-garden.co.jp

ものすごいフカフカのクッションがありましたが、
こちらはUnite Tokyo 2019でも登場したYogiboでした。(だった気がする)

 

 

 

LT Time

順番が一部変動しています

#1 じぇしかさん

ドローンカメラをアルテマ音楽祭などで飛ばしています

 

#3 コンソルさん

WebエンジニアがVR関係で働くまでのお話

twitter.com

 

#2 ほたてねこまじんさん

アバターのままおでかけができるアプリなどを作っています
就活中の中学生

 

#5 しめいずさん

撃てるブロック崩しVRプレゼンのお話

 

#6 ラズさん

マスコットアプリ文化祭の紹介。
こちらはxR含むいろいろな作品を投稿できるアプリコンテストです。

docs.google.com

 

#7 yama.jpさん

水中フォトグラメトリをUnityにもっていった話

 

#8 かなかなさん

AniCast Makerのお話
機械学習ベースのボイスチェンジャーをゆるく作っています

twitter.com

 

#4 こりんさん

VR開発メモとか書いています

framesynthesis.jp

ソロモンカーペットやVR刺身たんぽぽなどを作っていました、
最近は傘を使ったVRアートを作っています。

 

#9 飛び入り参加枠

WebXRとWeb Audio APIの話と3D Audio API(PannerNode・AudioLisner)の紹介

 

 

 

 

展示会

撃てるVRブロック崩し

f:id:Raspberly:20191218011344j:plain

 

CYBER TENNIS

非常に精度の高いテニスゲーム。なんとOculus Goです!
実装するうえでのテクニックも紹介されています。
UIがサイバーチックに統一されているのがとても良い。

f:id:Raspberly:20191218011358j:plain

 

 

フォトグラメトリ

f:id:Raspberly:20191218011411j:plain

 

バーチャルマーケット体験会

f:id:Raspberly:20191218011535j:plain

 

 

 

感想

展示の体験やLTもそうですが、Twitterで見たことあるけど会ったことはない方と交流を交わしたり、
懇親会でいろいろなお話が聞けたのがとてもよかったです。

 

現在xR転職活動中です。ゲームやエンターテイメント系に興味があります。
Unity少しできるので、気になる方はお気軽にDMください。
LT枠で参加しましたが自己紹介もっと長めでよかったかもしれない。

 

他のxR系イベントレポ

raspberly.hateblo.jp

raspberly.hateblo.jp

↓こりんさんのパラレルパラソルはこちらで体験させていただきました。

raspberly.hateblo.jp

raspberly.hateblo.jp

raspberly.hateblo.jp

raspberly.hateblo.jp

 

 

 

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

【勉強会レポ】: Standalone xR Meetup #04

勉強会のレポート(メモ)です。
参加したのはこちら「Standalone xR Meetup #04」
会場はDMM.comさんです。

standalone-vr.connpass.com

ハッシュタグ : #すたみと

 

f:id:Raspberly:20191214024233j:plain

 

 

 

 

#1 NrealでARなUIをつくってみた

普段のユースケース(スマホで毎日確認している項目など)の延長上にあるARを作っています。

操作よりも手軽にみられるUIUXを考え、上を見上げると時間などがでるようにしました。

どう作ればいいか

Emulatorのサンプルから派生させると楽
実機は動作確認程度でよい、開発はEmulator上でやってます。

 

他に、Twitterで話題になった「いいねが飛んでくるやつ」を作りました。

作った感想として

・視野角が気になる
・エフェクトは視点より下方向に作るとよい
・開発にお金がかかる(Best HTTP/2)

・Unityでネットワーク開発つらい
・首を痛める

 

 

 

#2 VRChatにショールーム作った話とその中身

Quest版のワールド作成したときの知見の共有をします。

Quest版では要件と制限があります

移行作業のほとんどはマテリアルの調整

やらかし例

最初からPC版を作るとQuestの移行が大変になる
構想の段階で両方考えるとよい

 

展示者用のwikiがあるのでそちらも合わせてどうぞ

w.atwiki.jp

 

 

 

#3 社畜でもサクッと作れる簡易産業用VRのすゝめ

昨今産業用VRは需要が高い。
社内の方で作業トレーニングのコンテンツが欲しくなった時、一品ものを外部に依頼すると高いので、
社内で作れるか調査&製作しました。

基本方針として、時間をかけずモデルもありものを使い、特に操作はしない観覧型にする。

いろいろな問題点

・アセットストアのモデルエキゾチックすぎ問題、ゲーム用が多く使いづらい
・Build and Runが大変
・非Unityエンジニアでもいじれるような仕組みが欲しい

3D工事イラストワークス

そこで3D工事イラストワークスというものを見つけました

www.megasoft.co.jp

・工事用イラストから3Dモデルが作れる
パワポ感覚で3Dモデルが作れて便利
VRコンテンツで使っても大丈夫とのこと(要確認

まとめ

3D工事イラストワークスとても便利でした
CADなどのモデル変換はPiXYZ STUDIOとTransMagic SuperViewがオススメ

 

 

 

#4 とびいり枠

浅草でリアルアバター制作をしているというお話

 

 

 

#5 VRコンディショニングとUXの話

Pain VRというヘルスケアVRを作ったときのお話

リハビリ向けのVR、慢性痛はマッサージなどでは治らないため運動させるしかない。

なぜVRなのか

・楽しくやってもらうと痛みを感じにくいため
・さらにパーソナル化(人に合わせて運動させること)ができる

作るうえで困った点

・読めない(解像度が低い)
・聞こえない
・機械わからない

どうUIを工夫するか

・レーザーポインタでUIうごかすのはやめた

3Dでタッチできるものにした。マウスを使ったことない人が多いことに注意。
コントローラーは意外と大丈夫だった。
・聞こえない点

目の前にアバターを置いて、この人が話しかけている感を出す。

まとめ

現実に合わせる、普段やっているような動きに合わせることで高齢者にも受け入れられてもらえる

 

 

 

#6 危険VRを作ってしまった

今回のテーマはKASINAHemiSyncVRで使う

KASINAとは

ブレインマシン
チカチカ点滅する眼鏡をつけて瞑想すること

HemiSyncとは

左右の耳で異なる周波数の音を聞かせて
左脳と右脳を同調させて変性意識を意図的に作り出すこと


ここでデモ

所感

・左右の周期をずらすよりも同期してた方がよさそう
・特定の周期の方が大事なのかもしれない
・光の明滅だけでなく音や呼吸法も大事
・軽い頭痛や眩暈を感じるため体には悪そう

 

 

#7 VRアバターとしてのVRMとバーチャルモーションキャプチャー

バーチャルモーションキャプチャのお話

何ができるのか

VRゲームや配信で自分のアバターを使うことができる
動きはSteamVRとFinalIKがベースで、キャリブレーションして動かすアプリです

他にも、ばもきゃARFace2VMCQuest OSC Transform Sender、いろいろあるよ

VRMモデルが1つあればいろんなアプリやゲームで活用できます
なので今後はアバターに対応したゲームを作ってほしいです。

 

 

懇親会

VRホラー【REM】

こちら体験させていただきました。
コンテンツ自体も怖くて面白かったのですが、
ゲームマスター側がPCでVR側にいろいろアクションを仕掛けられる発想がすごい良かったです。
ネットワーク部分はPhotonとのこと。

f:id:Raspberly:20191214024338j:plain

BOW MAN

f:id:Raspberly:20191214024321j:plain

危険VR

LTでもありました危険VR
左右のレンズでバラバラに点滅が繰り返されるだけですが、
次第に模様が見えてきたり奥行きが感じられたりと不思議な体験をキメることができました。

f:id:Raspberly:20191214024305j:plain

VRLookingGlass8k

パイロットクロス

VRフライトゲームです。
少し操作が難しいですが、慣れるとすいすい移動できます。
VRM対応です。

f:id:Raspberly:20191214024406j:plain

有料体験版も用意されています。

booth.pm

 

 

 

 

タイムライン

 

 

 

 

 

 

 

 

 

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

【Unityネタ】鏡に映る3Dモデルを差し替える

この記事はUnity Advent Calendar 2019、13日目の記事です。
昨日は@Kan_Kikuchiさんによる、「誰でも簡単に使える最強のAudio(BGM, SE)Manager【Unity】」でした。

qiita.com

 

 

今回はUnityネタをやっていきます。
テーマは「鏡に映る3Dモデルを差し替える」です。
去年のアドベントカレンダーの派生になります。まだの方はこちらからチェック!

raspberly.hateblo.jp

 

↑去年の記事を公開後、以下のような反応がありました。
(かなり前のツイートですが、この記事自体も去年に書き始めたものです)

面白そうなアイデア
アニメのOPでありそうな表現です。今回はこれを実現してみます。

f:id:Raspberly:20191212024003p:plain

 

 

 

 

 

開発環境

Unity 2019.3.0f
Magic Mirror Lite ver1.2.0

 

Unity2017.4.28f1
VRCSDK-2019.09.18.12.05_Public

 

※他2019.2f12018.4.11f1で動作確認済みです

 

 

アプローチ

今回どういう方法でやるかについて。

RealWorld(現実世界)とMirrorWorld(鏡の世界)の2つのレイヤーを作成。
CameraにはMirrorWorldは映らず鏡にはRealWorldが映らないように、
それぞれのオブジェクトを各レイヤーに割り当てます。

 

やってることはとても簡単で、数回マウスをポチポチするだけでできます。

 

 

 

 

シーンの準備

最初にシーンを作っていきます。

キャラクターの用意

前回に引き続き、SDユニティちゃんホラーちゃんを使用します。どちらも無料アセットです。
現実世界ではユニティちゃんがいて、鏡には怪物が映るといった感じです。

キャラクターは重なるように置いておきましょう。 

f:id:Raspberly:20191212112914p:plain

ホラーちゃんは初期状態だと横を向いているので直したくなりますが
アニメーションをするといつも通りになるのでそのままでOK


ここはそれぞれ好きなキャラクターで大丈夫です。
キャラクターが用意できない方はCubeを使いましょう。

 

 

 

レイヤーを分ける

レイヤーの作成

Project Settings/Tags and Layersからレイヤーを分けていきます。
今回は「RealWorld」と「MirrorWorld」の2つのレイヤーを新たに作成しました。

f:id:Raspberly:20191210105315p:plain

 

オブジェクトのレイヤー設定

各オブジェクトのレイヤーを設定します。

f:id:Raspberly:20191210105500p:plain

ユニティちゃんは「RealWorld」、ホラーちゃんは「MirrorWorld」を設定します。

f:id:Raspberly:20191212021153p:plain

f:id:Raspberly:20191212021219p:plain

 

 

ちなみに、大量のオブジェクトをガッツリわけたい場合は、ルートのオブジェクトを作り、
子オブジェクトにしてあげると、一括変更も楽で管理しやすくなるのでオススメです。

f:id:Raspberly:20191210105820p:plain
親のレイヤーを変更すると、子もまとめて変更してくれます。

f:id:Raspberly:20191210105740p:plain

 

 

 

Cameraに映らないようにする

特定レイヤーのオブジェクトがCameraに映らないようにします。
これは簡単にできます。

 

CameraコンポーネントCulling Maskから、描画するレイヤーを設定できます。
映したくないレイヤーはチェックボックスを外しましょう
Everythingは全てのレイヤーにチェックを入れ、Nothingは全てのレイヤーのチェックを外します。

今回はMirrorWorldレイヤーをCameraに映らないようにしたいので、MirrorWorldのチェックを外します。

f:id:Raspberly:20191210104052p:plain

これでホラーちゃんはCameraに映らなくなりました。

f:id:Raspberly:20191212021447p:plain

 

ちなみにこちらのCulling Maskは各種Lightにも同じパラメータがあり、
レイヤーごとにDirectionalLight等を作成することでライティングを分けることもできます

 

 

 

 

鏡を作る

鏡を作りましょう。Unityにおいて鏡を作る方法は複数あります。
前回のUnity Advent Calendar 2019 #3 11日目の記事にて紹介した無料アセット「Magic Mirror Lite」と
MirrorReflection」「VRCSDKの鏡」の3つで動作確認をしています。

 

鏡に映るレイヤーを制限する

そのままだと鏡には全てのオブジェクトが映ります。
これに制限を加え「RealWorld」レイヤーのオブジェクトだけ映らないようにします。

やり方はCurring Maskのチェックを外すだけです。(鏡によって多少パラメータ名が違うかもしれません)

 

Magic Mirror Liteで鏡を作る場合

アセットをインポート後、Assets/MagicMirror/Prefab/Mirror.prefabを設置。
Mirror ScriptコンポーネントRefrect Layersからチェックを外しておきます。

f:id:Raspberly:20191211150237p:plain

 

MirrorReflectionで鏡を作る場合

こちらを参考にマテリアルとスクリプトを用意します。コピペするだけです。

qiita.com

それらをPlaneにアタッチして、Mirror ReflectionコンポーネントReflection Layersから、
RealWorldのチェックを外します。

f:id:Raspberly:20191212093947p:plain

 

VRCSDKの鏡を使う場合

SDKのunitypackageをインポート後、
Assets/VRCSDK/Prefabs/World/VRCMirror.prefab
をシーンに配置します。
VRC_Mirrior_ReflectionコンポーネントReflect LayersからRealWorldのチェックを外します。

f:id:Raspberly:20191212021819p:plain

 

 

 

 

完成品

これで完成です。
鏡に映る3Dモデルを無事差し替えることができました。

f:id:Raspberly:20191212020616g:plain

「やあユニティちゃん・・・・・いや、誰だお前はユニティちゃんじゃないな!」
???「グググ・・・ヨク気ヅイタナ・・・」 

みたいな演出ができるかもしれませんね!

 

MirrorReflectionとVRCSDKの方でも動作確認済です。
↓はVRCSDKの鏡

f:id:Raspberly:20191212023739g:plain

 

 

 

 

応用技:世界を変える

上の例ではキャラクターのみを差し替えていますが、ステージ・パーティクル・スカイボックスなど、
全てを包括した世界そのものを差し替えることもできます。(スカイボックスは無理だった)

やり方はキャラクターと同じで、レイヤーを切り替えるだけです。
3Dモデル以外のパーティクルも同様です。

 

↓のgifの場合、「制服ユニティちゃんと町」はRealWorldですが、
「バトルユニティちゃんと廃墟とパーティクル(雨と火)」はMirrorWorldレイヤーになっています。

 

現実世界は普通の町だが、鏡の中だと廃墟だったり。
鏡の中だけ雨が降っていたり火の海だったりできるわけですね。

f:id:Raspberly:20191212013529g:plain

あなたの目は本当の世界を映していますか?

 

 

 

 

注意点

キャラクターの注意点

キャラクターの位置はもちろん、アニメーションも同期させるように注意
RealWorldとMirrorWorldのキャラクターは同じAnimatorにしておくといいでしょう。

 

描画処理に注意

鏡全般に言えますが、巨大な鏡の場合は注意が必要です。
キャラクターのみなら大丈夫ですが、巨大な建築物やステージだと処理負荷が高くなることも。

 

 

 

 

おまけ:Sceneビューでもレイヤー分け

Camera(Gameビュー )と鏡に映るレイヤーを制限することができましたが、
Sceneビューに映るレイヤーも制限することができます。

Unity Editorの左上にあるLayersから、目のマークを押すだけです。

f:id:Raspberly:20191212161756p:plain

シーン内がごちゃごちゃしてきたら試してみるといいでしょう。

tsubakit1.hateblo.jp

 

 

 

 

まとめ

・レイヤーを分けることで、カメラと鏡に映るオブジェクトを制限できる
・現実世界のオブジェクトと、鏡面世界のオブジェクトでレイヤーを分ける
・Cameraと鏡、それぞれ表示するレイヤーを変更する。

 

 使い道としては、「本当の姿を映す」「自分にしか見えない存在を映す
キャラクターの感情表現(笑顔だけど本当は悲しんでいるみたいな)」などでしょうか。


ちなみにRealWorldかMirrorWorldどちらかの3Dモデルだけにすれば、
鏡に映らないキャラクター鏡にしか映らないモンスターを作ることができます。

どちらにせよ表現の幅が広がるのはいいことです。

 

 

 

 以上となります。

 明日のUnity Advent Calendar 2019@monryさんによる
ごっこランドを支える技術 〜AssetBundle 編〜」です。

 

 

 わかりにくいところなどがありましたら、コメントにお願いします。

【アセット紹介】Magic Mirror Lite で鏡を作る【Unity】

この記事はUnity #3 Advent Calendar 2019、11日目の記事です。
昨日は@tetsujp84さんによる「UniTaskを使ったポップアップの作成」でした。

qiita.com

 

 

 

今回はアセットの紹介をしていきます。
紹介するのはMagic Mirror Lite。鏡を簡単に実装する無料アセットです。

f:id:Raspberly:20191203112000p:plain

 

f:id:Raspberly:20191210235852p:plain

 

 

 

 

 

 

どんなアセット?

鏡を実装するアセットです。
Unityで鏡を作る方法はいくつかありますが、
このアセットを使えばとても短い時間で簡単に実装することができます。

対応するUnityは5.6.5以上です。かなり昔のプロジェクトでも導入できそうです。
VRChatでも使えそう

 

アセットパブリッシャーはWeather Makerでもお馴染みJeff Johnsonさんです。

 

 

 

開発環境

Unity2019.3.0f

Magic Mirror Lite ver1.2.0

※SRPには対応していません。BuiltInシェーダーを使いましょう。
※一部インスペクターに再帰VRモードの項目がありますがLite版はサポートしていません。

 

 

 

サンプルシーンの確認

Demoフォルダの中にDemoSceneが入っているのでこちらを確認してみましょう。

f:id:Raspberly:20191203112604p:plain

すると、密室に黒い鏡と人型のオブジェクトがあるシーンが展開されます。
黒い鏡には何も映っていません。それではPlayボタンで実行してみましょう。

f:id:Raspberly:20191203112809p:plain

 

f:id:Raspberly:20191210022147g:plain

鏡が動きながら、キャラクターのモデルとパーティクルシステムが鏡に反射しているのが見て取れます。

 

 

 

実際に鏡を置いてみる

鏡の使い方は簡単です、Mirrorプレハブを自分のシーンに配置するだけ。

f:id:Raspberly:20191203114850p:plain 

ちなみに、この鏡の縁部分などは取り外すことができます。
Mirrorの中に入っているMirrorFrameを非アクティブにするか削除すればよい。

f:id:Raspberly:20191210160520p:plain



 

インスペクターパラメーター(MirrorReflectionScript)

Maximum Per Pixel Light : 鏡像に表示されるピクセルごとのライトの最大数。
屋外やライトがたくさんある所にこの鏡を置くと、処理不可が高くなる恐れがある。
そういう時にこの値を小さくすると改善されるようです。

Texture Size : ミラーのテクスチャサイズ。これは大きくする必要があります。
値が小さいほど荒い鏡になります、高いほどよい。

f:id:Raspberly:20191210022539g:plain

Clip Plane Offset : ミラーの近接面から減算

f:id:Raspberly:20191210022601g:plain

FarClipPlane : カメラに映る平面の距離

ReflectLayers : どのレイヤーが反映されるか

AddFlareLayer : FlareLayerを含めるかどうか

NormalIsForward : 法線の向き。四角形の場合はTrue、平面の場合はFalseにします。

AspectRatioアスペクト比。デフォルトを使用するときは0にする。

MirrorRecursion : 複数のミラーで合わせ鏡をするならTrue、そうでないならFalseにする。(Lite版は非サポート)

 

 

インスペクターパラメータ(シェーダー)

リム(輪郭)やスペキュラー(スペキュラー)など、光沢感を強くしたり色を変えたりできます。

f:id:Raspberly:20191210162357p:plain

Detail Texture : 鏡表面のテクスチャ

Detail Tint Color : 表面の色合い

Specular Color : 鏡面反射の色

Specular Area : 鏡面反射の面積

Specular Intensity : 鏡面反射の強さ

Reflection Tint Color :反射の色合い 

少し黒っぽくしたりなど、ただし窓ガラスのような半透明にはできない模様。
いろいろ値を変えてみると面白いかも。

 

 

 

 

 

まとめ

・プレハブを置くだけで鏡を実装することができる

Playモードにしないと鏡は機能しないことに注意

 

 

 

 

Pro版の紹介

こちらのアセットですが、有料のPro版が存在します。

無料版との違いは、
再帰的な反射ができる
再帰的な影のレンダリングも可能
VRのサポート(HTC Viveはシングルパスがサポート)

などです。

 

注意点としては、
再帰反射は鏡2枚まで、3枚以上はバグあり
・SRPは未対応
Android VR、Oculus Questは未対応
MACの場合マルチパスが壊れる

あたりでしょうか。

 

 

 

 

他にある鏡の実装方法

MirrorReflection

Unity4からあるやり方。
Scriptの方が古い書き方になっているのでそのままだとエラーがでます。
GetComponentの部分を少し書き直して使いましょう。

qiita.com

 

Reflection Probeの鏡面反射で鏡を作る

周辺をキャプチャするカメラでキューブマップを生成し、
キューブマップを反射マテリアルに適応することで鏡を実現する方法。

nn-hokuson.hatenablog.com

 

@nkjzmさんの独自実装の鏡

去年のUnity Advent Calendar 2018で紹介された方法。

qiita.com

 

 

 

 

 

以上となります。

明日のアドベントカレンダー@KoukiShimoyaさんによる、
UnityでコマンドRPGをキューを使って実装する その2」です。
乞うご期待!

 

余談ですが、Unity Advent Calendar 2019 #1の13日目の記事にて、
鏡を使ったおもしろ表現方法について紹介しますのでそちらもどうぞ。

raspberly.hateblo.jp


今年のUnity Advent Calendarは3枠あるので、みなさんもいろいろチェックしてみてくださいね!

Unity Advent Calendar 2019 - Qiita

Unity #2 Advent Calendar 2019 - Qiita

Unity #3 Advent Calendar 2019 - Qiita

 

 

 

 

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

raspberly.hateblo.jp

 

 

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

【勉強会レポ】: Unity お・と・なのLT大会 2019

勉強会のレポート(メモ)です。
参加したのはこちら「Unity お・と・なのLT大会 2019」
会場はユニティ・テクノロジーズ・ジャパンさんです。

meetup.unity3d.jp

ハッシュタグ : #Unity_LT

 

f:id:Raspberly:20191207234234j:plain

 

 

 

長丁場のイベントなので簡単な概要とスライドだけ。 
※スライドがまだ公開されていないLTもあります。

LT#1 むろほし@RyotaMurohoshi: Tilemap 2019 Winter

ゲームロジックを作るうえでオススメのC#の機能を紹介。
プロパティやタプルなどいろいろ。

 

 

 

 

 

 

LT#2 とりすーぷ@toRisouP: DoozyUI 

人気アセットDoozyUIの解説です。

前回のHumble Bundleで購入された方も多いのではないでしょうか?
心当たりのある方はマイアセットを覗いてみましょう。

www.asset-sale.net

 

 

 

 

 

LT#3 ichijo@takaaki_ichijo: 同じ音が二度とならないゲーム環境音を作る

ゲーム内の環境音などで、ループ音源で同じ音を繰り返さないようにする方法について。
ADX2を使って実現しています。
本もあるよ!

Unityサウンド エキスパート養成講座

Unityサウンド エキスパート養成講座

  • 作者:一條 貴彰
  • 出版社/メーカー: ボーンデジタル
  • 発売日: 2019/08/27
  • メディア: 単行本
 

 

 

 

 

 

LT#4 のたぐす@notargs: SteamVR2.0対応のためにVRインタラクションを全て作り直した話

notargs.hateblo.jp

VRTKがSteam VR2.0に対応していないため、同等の機能を自前で実装した話。

 

 

 

 

LT#5 かーくん@kakunpc: お気に入り機能の話

Unityのお気に入り機能(Selection)について、
これはUnityEditorが終了すると全て保存した内容が消えてしまうため、保存するEditor拡張を作った話。


↓こちらからダウンロードできます。

Verdaccio

 

 

 

 

LT#6 mekezzo@mogmogvr: unitywasm関連話します

Unity初心者がWebAssembyで苦戦した話。

 

 

 

 

LT#7 mao@TEST_H_: DOTSでゴリラ向けのゲームを作ってみた話

ゴリラ向けゲームをDOTSで作ったときの話。

もなふわすい〜とる〜むはいいぞ

www.showroom-live.com

 

参考資料

qiita.com

 

 

 

 

 

LT#8 Shanon@___shanon: Parallax Occlusion Mapping in Correct Texture Space

パララックスオクルージョンマッピングについて。
板ポリでも板ポリでないような表現ができる機能です。

 

 

 

 

 

LT#9 tomotomospot: yokohama.unityの話 and 今だから話せる社内でUnityを浸透させる際のアレコレ

Yokohama.unityなど、コミュニティについてのお話。

Yokohama.unityに参加した時のレポートはこちら

raspberly.hateblo.jp

 

 

 

 

 

LT#10 なかの.asmdef@naninuneno_y: clean architecture と asmdef

CleanArchitectureとAsemblyDiffintionについて。
今回作ったプロジェクトはgithubにあるので興味の方はぜひどうぞ。

参考資料

tsubakit1.hateblo.jp

 

www.slideshare.net

www.slideshare.net

 

 

 

 

 

LT#11 mewlist: ジッタを攻略する

MassiveCloudというアセットをリリースしています。

ジッタ(fpsは60あるのになんだかカクカクする現象)はFIxedUpdateのズレが原因。
これを解消しヌメヌメ動かすtipsについて。

 

 

 

 

LT#12 さやちゃんぐbot@songofsaya_: HDRPで使えるようになるポスプロカスタマイズを使ってレイマーチングを描いてみよう!

HDRPでポストプロセスを自作する話+レイマーチング。

scrapbox.io

 

 

 

 

LT#13 青木とと@lycoris102: URP + Light2D でエモい影が出せるという話

Shadow Caster 2Dで影を作る話。

告知

 

 

 

 

 

 

LT#14 OROCHI@OROCHI_TUNGUS: キャラクター制御関連で何か

接地判定、モーション繊維、キャラクター制御クラスについて。

・設置判定はOnGroundではなくRaycastでとる。
・アニメーションは複数のステートからなるステートマシンだと複雑になるのでスクリプトで管理。
・キャラクター制御クラスは全てのキャラクターの基底となるクラスを使いました。

 

 

 

 

 

LT#15 だいさんさん@dsgarage: Unity Teacher Tsukada2019なお話(とある世界線の専門学校の話)

専門学校でUnityを教えたときの知見、カリキュラムなど。

 

 

 

 

LT#16 荻野雄季@YuukiOgino: DOTS Visual Scriptingのお試しバージョンを触ってみた+闇の開発話(可能なら)

DOTS Visual Scriptingを使ったときの知見について。

 

 

 

 

LT#17 Cova@8bitdots: SpriteAtlas の落とし穴について

Sprite Atlasを実際に使ってみた時の落とし穴についてのお話。

告知

prodevelopers-gamejam.connpass.com

 

 

 

 

 

LT#18 ヤスハラユウジ@dsedb: 敵キャラ行動の実装テクニック

パッドの入力バッファを使ってキャラクタの行動を作る方法について。
リピート機能でどの位置から初めても破綻しないようにしています。

 

 

 

 

 

 

LT#19 gremito@grem_ito: ゲーム系から離れてもUnityは触っていたい話とか

これまでとこれからのキャリアのお話。

 

 

 

 

 

LT#20 えんちゃん@enpel: SteamVR1.x to 2.x でAssemblyDefiniton使ったら移行作業が良い感じに進んだ話

AssemblyDefinitionでSteamVRの移行作業をした知見について。

 

 

 

 

 

LT#21 鉄@tetsujp84: 新規開発でやっちまった話の予定

やらかした時のお話。消されるかも。

 

 

 

 

 

タイムライン

 

 

 

 

 

f:id:Raspberly:20191208114239j:plain

f:id:Raspberly:20191208114252j:plain

f:id:Raspberly:20191208114311j:plain


 

他の方の感想ブログとかまとめ

mrstar-logs.hatenablog.com

 

 

 

 去年のレポはこちら

raspberly.hateblo.jp

 

 

 

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

【アセット紹介】Weather Maker で雪を積もらせる【Unity】

これはUnityアセット冬のアドベントカレンダー 2019 Winter!7日目の記事です。

f:id:Raspberly:20191203175459p:plain

昨日は和辛子びびびさんの「【Unityアセット】GameCreatorで4足歩行の動物を動かしたい」でした。

 

 

 

今回はアセットの紹介をしていきます。
紹介するのはWeather Maker - Unity Weather System, Sky, Water, Volumetric Clouds and Light*1です。
天気など自然環境を構築できるアセットです。

f:id:Raspberly:20191206113459p:plain

 

 

 

 

 

前回から

前回のUnity アセット真夏のアドベントカレンダー 2019 Summer!の記事では、
基本的な概要とセットアップ、天気のコントロールをメインでやりました。
↓初めてWeather Makerを触る方はこちらからどうぞ。

raspberly.hateblo.jp

 

今回は冬ということで、地面や建築物に雪を積もらせるスノーオーバーレイをやってみます。

f:id:Raspberly:20191206031404g:plain

 

 

 

 

 

 

 

 

0.開発環境 

Unity2019.3.0f

Weather Maker var5.9.4

Weather Makerはアップデート頻度が非常に多いアセットです。
使用するバージョンによって、やり方やUIが異なる場合があります。

 

 

 

 

 

1.初期セットアップ

基本的な初期セットアップは前回の記事を見てください。

シーンの用意

新しくシーンを作ります。
今回はせっかくなので、こちらのアセットを導入します。

非常に高品質な寺院の無料アセットです。その分描画負荷が高いですが。

www.asset-sale.net

f:id:Raspberly:20191203232508p:plain

こちらにあるDemoSceneを使います。
Sun_Temple\Scenes\DemoScene.unityを開きます。

 

 

シーンにWeather Makerプレハブを配置

UnityEditorのWindow/Weather Maker/Add Weather Maker to SceneWeatherMakerPrefabを配置します。

f:id:Raspberly:20191206235550p:plain

 

 

DirectionalLightの削除

シーンに最初から含まれているライトは削除しておきましょう。
太陽にすでにライトがあります。

 

LightingSettings

Window/Rendering/LightSetting/EnvironmentのSkybox MaterialとSun Sourceを変更します。

SkyboxにはWeatherMakerに含まれているSkybox用のマテリアルWeatherMakerSkyBoxMaterialを、
SunSourceにはシーン内に配置したWeatherMakerPrefab内にあるSunを追加する。

 

Environment LightingをGradientColorに変更
Environment ReflectionsをCustomに変更

f:id:Raspberly:20191207000407p:plain

 

 

MainCameraの編集

Cameraパラメータの設定

・Clear FlagをSolidColor
・Backgroundを全て0(真っ黒)
・Far Planesを2000以上
・Rendering PathをDeferred
・Allow MSAAを無効化

f:id:Raspberly:20191207000231p:plain

Rendering PathはDeferredにした方がよりよく見えるようになるそうです。

Tagの設定

シーン内のMainCameraのTagがMainCameraになっていることを確認しましょう。
通常はデフォルトで大丈夫のはず。

f:id:Raspberly:20190802151515p:plain

 

PostProcessingの設定

必須ではありませんが、見栄えがよくなるため設定しておきます。
PackageManagerからインストールしておきましょう。

Window/Weather Maker/Setup Post Processingで、シーン内にあるカメラにPost Processing Stackが自動で設定されます。

f:id:Raspberly:20191206235846p:plain



 

 

 

 

 

2.実際にオーバーレイしてみる

それでは雪を積もらせてみます。

設定するのはこちら、WeatherMakerPrefab/FullScreenEffects/Snowです。

f:id:Raspberly:20191204191505p:plain

Watherの時と同じように、実際に触るのはプロファイルとなります。

f:id:Raspberly:20191204191839p:plain

 

 

プロファイルのインスペクター

f:id:Raspberly:20191204193348p:plain

 

 

 

 

雪をオーバーレイ

雪を地表のテクスチャの上にオーバーレイ(上書き)します。


パラメータはOverlay Intensityです。これはオーバーレイの強度を表します。
値が高ければ高いほど雪が積もるイメージです。

f:id:Raspberly:20191204232709g:plain

最大値の1まで上げると真っ白ですが、0.5くらいだと良い感じになります。

 

 

 

雪がオーバーレイされる範囲を調整する

パラメータはOverlay Normal Reducerです。これは雪の粘着性です。

y法線が1から遠ざかるときのオーバーレイオーバーレイの強度。値が小さいと、y値が小さい法線でオーバーレイがより多く表示されます

つまり負の値になるほど、斜面に関係なく雪がつくようになります。

f:id:Raspberly:20191205021130g:plain

この値を調整することで、屋根や地面など水平な箇所には雪が積もり、
壁など斜面がある箇所は積もらないといったことができます。

f:id:Raspberly:20191204221444p:plain

 

 

 

天気が雪の時に自動でオーバーレイする

手動で調整するのではなく、天気が雪の時に自動でオーバーレイされるようにします。
パラメータはAuto Intensity Multiplierです。
この値が正の値になるほど、早くオーバーレイされます。

f:id:Raspberly:20191204233102g:plain

注意点として、この値が0以外の時、Overlay Intensityを手動で設定できなくなります。

雪の降らし方は前回を見てね。

 

 

 

天気が晴れた時に自動でオーバーレイを解除する

パラメータはAuto Intensity Multiplierです。
これが負の値になるほど、早くオーバーレイが解除されます。
ちなみにこれ、どういうわけなのか雪が降っててもオーバーレイが解除されます。

f:id:Raspberly:20191204233243g:plain

 

 

 

オーバーレイが解除される時、最低値を設定する

手動にしろ自動にしろ、オーバーレイの最低値を設定します。
パラメータはOverlay Minimum Intensityです。
これはオーバーレイの最小強度で、オーバーレイは他の要因に関係なくこの値を下回ることはありません。

f:id:Raspberly:20191204233801p:plain


Overlay Intensityのパラメータは一応Overlay Minimum Intensityより小さくはなりますが、
雪が止んでも積もったままの状態にすることができます。
↓の例の場合、Overlay Intensityが0.4以下にはならない。

f:id:Raspberly:20191204233353g:plain

 

 

雪の色味や反射色を変える

Colorから色を変えることができます。
また太陽からの反射光も調整できます。

f:id:Raspberly:20191205011414g:plain

 

 

 

ノイズマスクを使いまばらにオーバーレイさせる

今までは地表全体に均等にオーバーレイしていましたが、
ノイズマスクを使うことで、まばらに雪が積もるような演出をすることができます。

f:id:Raspberly:20191205010638p:plain

ノイズ用のテクスチャは初めからいくつか用意されています。

f:id:Raspberly:20191205010743p:plain

こちらのノイズマスクはオフセットのUVスクロールやスケール変更も可能です。

 

注目すべきパラメータは複数あります。

Overlay Noise Multiplierはオーバーレイノイズの乗数を表し、
Overlay Noise Power
はノイズパワーを表します。

 

下の例を見ると、

Multiplierはノイズの強さで高ければ全体を覆うほどノイズが大きくなり、
Powerはノイズの濃さで高ければノイズとそれ以外がくっきり描画されます。

f:id:Raspberly:20191205223045g:plain



オフセットや移動させたい場合の速度も設定できます。

f:id:Raspberly:20191205223125g:plain

 

 

 

 

特定の高さ以上のみオーバーレイさせる

オーバーレイの最小の高さを設定することができます。

パラメータは複数あります。
Overlay Min Heightはオーバーレイを表示する最小の高さを設定します。

f:id:Raspberly:20191206234403g:plain

Overlay Min Height Noise Multiplierは、オーバーレイノイズ乗数。
値が高いとオーバーレイの境界がくっきりとなります。
逆に低いと境界が荒くなります。

f:id:Raspberly:20191206234448g:plain


Overlay Min Height Falloff Powerでも同じようなことができます、
どういう使い分けをすればいいのかはよくわかりませんでした。

f:id:Raspberly:20191205021207g:plain

 

 

 

 

 

 

 

まとめ

・Weather Makerのスノーオーバーレイを使えば、簡単に雪を積もらせることができる。
・積もらせ方にノイズをつけたり、一部分だけつけたりと応用ができる。

 

Weather Makerをお持ちで雪の降るステージなどを作りたい方はぜひお試しください。
今回紹介したスノーオーバーレイとは別に、地面の濡れを表すオーバーレイもあります。

 

 

 

参考文献

www.youtube.com

 

その他のチュートリアルビデオ
--------------------------------------------------
最新のWeather Makerビデオ...

-Open Weather Map APIhttps://youtu.be/7_r7oibCM68
-uMMORPG / Mirrorチュートリアルhttps://youtu.be/BIFQqmG2Gws
-体積雲:
	-美しい空のセットアップ:https://youtu.be/1Xk2z858T1U
	-完全な概要(40分以上):https://youtu.be/ZoULn0mYbt8
	-レイマーチの最適化:https://youtu.be/Dwk4vF_6ogs
	-クラウドノイズエディター:https://youtu.be/NxuJ5H2mZwY
	-オーロラ/オーロラ:https://youtu.be/J9QSebVLEO8
-時間的再投影:https://youtu.be/JCzE7JfFPU8
-パフォーマンスプロファイル:https://youtu.be/-Yoj_OjJL4g
-完全なセットアップガイド:https://youtu.be/DHNnS6f85rM
-クイックスタートガイド:https://youtu.be/5IACGZULiDw
-新しいプレハブの概要:https://youtu.be/hWJF5v0s4gc
-天気ゾーン:https://youtu.be/11QoMD_qhHw
-ヌルゾーン:https://youtu.be/ZPBum2YcgB8

 

 

 

明日のアドベントカレンダーVR発掘隊さんによる
とても簡単にUIシステムを作れるアセット Doozy UIの解説 」です。
乞うご期待。

 

 

 

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

*1:名前が長いので記事内では「Weather Maker」と表記します

【アセット紹介】Rainbow Folders 2【Unity】

今回はアセットの紹介をしていきます。
紹介するのはRainbow Folders 2
Unityプロジェクトのフォルダアイコンをカスタムする作業効率向上アセットです。

f:id:Raspberly:20191129225429p:plain

 

 

 

アセットストア ブラックフライデーセール対象

このアセットは現在開催中のブラックフライデーのセール対象です。
通常20ドルの所、半額の10ドルで購入できます。

 

さらにさらに、追加のボーナスクーポンコードBF2019AFF10」を入力すると、
追加で5%Offされ、合計55%Offで購入できます。

 

 

 

 

どんなアセット?

UnityEditorで表示されるプロジェクトフォルダに色をつけて強調したり、
独自のフォルダアイコンに差し替えたりすることでプロジェクトビューの視認性を上げるアセットです。

ユーティリティアセットの例に漏れず、1.2MBと非常に軽量なためあらゆるプロジェクトに使えます。
この記事では使い方をいろいろ書いていますが、インポートするだけで機能するので何もしなくて問題ない。

 

前回のGotanda.unity #14のたぐすキャットさんのLTでも登場しました。

notargs.hateblo.jp

 

このアセットはUnity2018.3.0以上のバージョンを対象としています。
現在進行中のプロジェクトに導入する場合は注意しましょう。 

 

 

 

開発環境

Unity2019.2.9f

Rainbow Folders 2 ver2.1.0

 

 

 

用語の解説

ドキュメントにも頻出する重要単語を解説します。

ルール

フォルダアイコンを変更する対象の情報、及び設定
ちょっとわかりにくいですが、このルールに従ってフォルダアイコンは変更されます。

 

 

 

 

インポートの確認

このアセットはインポートするだけで効果を発揮します。
それではインポートしてみましょう。

f:id:Raspberly:20191129232521p:plain

 

インポート前のプロジェクトビュー

f:id:Raspberly:20191129232255p:plain

 

インポート後のプロジェクトビュー

f:id:Raspberly:20191129232609p:plain

特定のフォルダアイコンが差し変わりました。
またヒエラルキーの表示にも変化がありますね。

 

 

対応するフォルダ

アセットストアからの引用になりますが、
デフォルトのフォルダ名対応は以下の通りになります。

f:id:Raspberly:20191129233653p:plain

 

試しに、新しいフォルダを作成して名前を「Shaders」にすると自動的にフォルダアイコンが変更されました。

f:id:Raspberly:20191129234118g:plain

 

 

 

 

 

※ここから先は自分の好みでカスタマイズしたい方向けです

フォルダアイコンのルールを手動変更

それではフォルダアイコンを手動で変更していきます。
今回は「Test」というフォルダを用意しましたのでこちらを使っていきます。

f:id:Raspberly:20191129234815p:plain

 

Apply Customでルール設定

ルールをダイアログから入力して設定する方法です。

 

フォルダの上にマウスカーソルを乗せた状態でキーボードのAltキーを押します。
するとフォルダアイコンの上に歯車のマークが表示されるので、この状態でTestフォルダをクリックします。

f:id:Raspberly:20191130000737g:plain

f:id:Raspberly:20191130001235g:plain

 

するとこのようなダイアログが現れます。
上から順番に見ていきましょう。

f:id:Raspberly:20191129235749p:plain

 

Path

これはフォルダアイコンを変更するフォルダをディレクトリパスで指します。

f:id:Raspberly:20191130001854p:plain

Name

PathからNameに変更できます。
これはフォルダアイコンを変更するフォルダ名を指します。
この場合ですと、プロジェクト内にある「Test」という名前の全てのフォルダが対象になります。

f:id:Raspberly:20191130001634p:plain

Priority

ルールの優先順位です。
同時に適応されるルールが複数ある場合、このPriorityが最も高いルールが選ばれます。

f:id:Raspberly:20191130002720p:plain

Icon

フォルダに適応するカスタムアイコンです。
用意されているプリセットから選べますし、独自のテクスチャを用いることもできます。

f:id:Raspberly:20191130002745p:plain

Background

フォルダ名の背景(テキストの部分)です。
用意されているプリセットから選べますし、独自のテクスチャを用いることもできます。

f:id:Raspberly:20191130003014p:plain

Recursive

Icon、Backgroundにあるこのチェックボックスにチェックを入れると、
そのフォルダのサブフォルダ全てに同じアイコン、または背景が適応されます。

 

IconとBackgroundの種類

Iconは非常に多くのプリセットが用意されています。
Back goundは基本的に色のみです。

f:id:Raspberly:20191130003442p:plain

色だけでこんなにあります。

f:id:Raspberly:20191130003640p:plain

他にも、半透明にしたり、特定のアイコンを重ねたりできます。

設定例

今回はこのような設定でやりました。
Iconはローズ色、Backgroundはセルリアン色です。
Applyを押して初めて設定されます

f:id:Raspberly:20191130003845p:plain

無事プロジェクトビューのフォルダが変更されました。

f:id:Raspberly:20191130003916p:plain

 


ちなみにTestフォルダをクリックして選択した状態で、
右クリックからRainbow Folders/Apply Customを選択しても同じダイアログが出ます。

f:id:Raspberly:20191129235243p:plain

 

 

 

 

右クリックメニューからルール設定

アイコンを変更したいフォルダを右クリックしてから直接ColorやBackgroundを設定することもできます。
手っ取り早く設定する場合はこちらがオススメです

f:id:Raspberly:20191130004608p:plain



 

 

デフォルトに戻す

もし変更したアイコンを元に戻したい場合、そのフォルダを右クリックして、
Rainbow Folders/Revert to Defaultを押しましょう。これでデフォルト状態に戻ります。

f:id:Raspberly:20191130004907p:plain

 

 

 

複数フォルダを同時編集

フォルダの同時編集にも対応しています。
Ctrキーを押しながら選択するだけです。

f:id:Raspberly:20191130005254p:plain

 

 

 

 

ルールの管理

ルールの一覧

自分で設定したルールや、最初から設定してあるルールは一覧で確認することができます。

適当なフォルダを右クリックし、Rainbow Folders/All Rulesを選ぶか、

f:id:Raspberly:20191130005739p:plain

ダイアログ左下の歯車のマークを押すことで、f:id:Raspberly:20191130005926p:plain

 

全てのルールを確認することができます。

f:id:Raspberly:20191130010139p:plain

ここではルールの書き換えや削除もできます。

 

このルール一覧は、下記のディレクトリにあるScriptable Objectに保存されています。

f:id:Raspberly:20191130010250p:plain

 

 

 

 

 

 

まとめ

・フォルダアイコンを簡単にカスタマイズできる。

・細かく設定できるが、インポートするだけですぐ使えるためそのままでよい

 

 

 

 

 

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

raspberly.hateblo.jp

 

 

 

 

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