トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

初心に戻ってQuest開発準備 手が好き

自分のQuest買ったので何か作る。

とりあえず豆腐を出すとこまではできた。

事前設定

こちらを参考に設定。OculusIntegrationを入れる前にいろいろ設定したほうがいい

framesynthesis.jp

f:id:bibinbaleo:20190907224737p:plain

 

f:id:bibinbaleo:20190907224749p:plain

f:id:bibinbaleo:20190907224743p:plain

これでOculusIntegrationを入れてビルドして豆腐を出すとこまではできた。

手がでない

吉良吉影みたいなこと言うけど、私Oculusの手が好きなんですよね。きれいじゃん。

だから出したいんですが、LocalAvatarおいても出ない。

昔は出たのに・・・

bibinbaleo.hatenablog.com

こちらを参考に手が出るサンプルシーンを確認して、

qiita.com

AvatarGrabサンプルをビルドしても出ないので私が悪いわけではないということが分かった。

 

Hand.cs

こちらの記事が参考になりました。 ALVRでやっているわけではないけど

raspberly.hateblo.jp

なんとhand.csスクリプトをいじれば出る可能性がある。

というかhand.csがついているシーンではちゃんと出るらしい。CustomHandsシーンとDistanceGrabシーン

CustomHandsをビルドしたら出た!

f:id:bibinbaleo:20190908152757p:plain

f:id:bibinbaleo:20190908152802p:plain

ただHand.csを記事通りにいじってもAvatarGrabシーンではでなかった。

自分で追加しないとダメ化も

 

 まあいいやCustomHandsシーンをもとにいじっていけばいいんでしょ

バージョン問題

ちなみに昔片手しか出なかったのとは関係なさそう

bibinbaleo.hatenablog.com

いやあるのか?そういえばAvatarGrabシーンQuestで実行したらクラッシュしたな。

下の記事に書いてるのと同じ現象だ。

qiita.com

でも何回目かではちゃんと動いたし。。。あれ?もう何やってたのか分からなくなった。

自分のOculusIntegrationのバージョンが分からない。昨日入れたばかりだから最新だと思いたいけど

アセットストア見たら1.4になってそう

 

 

f:id:bibinbaleo:20190908152813p:plain

Unityでグローバルイルミネーション

グローバルイルミネーション

GI。壁の色とか゚を間接光として取り込む

昔もUnityでやったことあるけど、検索しても出てこない

cinema4DでGIした記事はでてきた。

bibinbaleo.hatenablog.com

Unityでする

Lightingの設定にRealtimeLightingとMixedLightingがある。

f:id:bibinbaleo:20190831164053p:plain

このままだとトマシープちゃんみたいになる。(SphereはGI受けてる)

f:id:bibinbaleo:20190831163442p:plain

GameObjectのLightmapStaticにチェックを入れてライティングすると。。。

f:id:bibinbaleo:20190831163446p:plain

わー!

f:id:bibinbaleo:20190831163450p:plain

プロっぽい!!

Emmisionなマテリアルで周りを照らす

Emmisionなマテリアルで周りを照らす際もGIがいる。

f:id:bibinbaleo:20190831165144p:plain

おおー

f:id:bibinbaleo:20190831163839p:plain

f:id:bibinbaleo:20190831163847p:plain

その他

RealtimeLighingを外したら暗くなった。

f:id:bibinbaleo:20190831164049p:plain

逆にRealtimeだけにするとEmissionが反映されなかった。

f:id:bibinbaleo:20190831170021p:plain

昔はインスペクタの上のstaticにチェックを入れてやってた。

矢印押したら選べるんだ。全部でもいいけどGIする際はLightmapStaticだけが必要

f:id:bibinbaleo:20190831201242p:plain

STYLY

styly.cc

STYLYにアップするときはライトのRenderModeをImportantにする

f:id:bibinbaleo:20190831170715p:plain

GIはシーンごとアップしないと反映されない

ブラウザでは反映されないからVRのアプリで見る。

 

【VRTK】Riftのスティックの傾きの値を取りたい。

RiftのスティックのVRTKでの名前はタッチパッドかな?

vrtoolkit.readme.io

 

vrtoolkit.readme.io

こちらの記事がヒントになりそう。

takoyakiroom.hatenablog.com

最初にこんな感じでnewしてから

GetComponent<VRTK_ControllerEvents>().

TriggerReleased += new ControllerInteractionEventHandler(DoTriggerReleased);

メソッド

void DoTriggerReleased(object sender, ControllerInteractionEventArgs e)
{

Axisがタッチした角度なのか倒した角度なのか、触った位置なのか。。。。

最後に

サンプルのスクリプトをみたらなんとなく雰囲気はわかったけど、結局できなかった。

もう必要なくなったのでいいけど。

Unity×マテリアルデザイン

 最近Googleが提唱するマテリアルデザインにはまってる。

Androidアプリとかをデザインするときに使うといい。

bibinbaleo.hatenablog.com

Unity

Unityで自分もやってみたい!!

とりあえず何もサイトを見ずにuGUIだけでやってみたもの。

f:id:bibinbaleo:20190824205145p:plain

フォントをrobotフォントとnotosans入れて、適当にPanelとボタンにshadowつけた。

f:id:bibinbaleo:20190824214440p:plain

あとバツ印をダウンロードしてPaint3Dで色を白にした。

でもやっぱりちゃんとやるにはボタンの形を丸っこくしたりアニメーション入れたりしないといけない。

そんなときはアセット!!!

アセット

Google Material Design

無料のあった。

f:id:bibinbaleo:20190824212237p:plain

でも入れたらスクリプト全部外れてた・・・と思ったらUITweenを入れないといけないらしい。こんなアセットあるんだ。

動いた!

f:id:bibinbaleo:20190824212711p:plain

いい感じ!!

MaterialUI

Githubにあるアセット

github.com

UnityPackageを入れると上のメニューにMaterialUIが加わってそこからパーツを追加できる。

f:id:bibinbaleo:20190824213730p:plain

アニメーションの速度が遅い気がするけどすごい良い!!!

f:id:bibinbaleo:20190824214051g:plain

新しいバージョンが有料でAssetStoreにあるけど、最新のUnityでは動かないらしくレビューが☆1だらけ。

VR UI Design System - Material Design

これは有料だけどなんとVR用!!!

そもそもマテリアルデザインのアセットそんなにないのにVR用とか゚めっちゃいいやん!しかもめっちゃおしゃれ。なんか作るとき買いたい。

なんかツール系のVRアプリ作りたいんだよな。なんかいい題材ないかな。

3Dオブジェクトのマテリアルアセット

マテリアルデザインとは違うけど、3DのCubeとか゚のオブジェクトの各面の色を別の色にできるアセット。

使っている方がいてすごいUnityが垢抜けて見えた。

こんな感じ!

f:id:bibinbaleo:20190824215310p:plain

かわいい。

f:id:bibinbaleo:20190824215623p:plain

最後に

f:id:bibinbaleo:20190824214950p:plain

私はGoogleの犬

 

スクリプトが全部消えていた【Unity】

Gitで管理していたUnityプロジェクト。

前日途中までやってPC切って、翌日プロジェクト開いたら、全てのゲームオブジェクトのスクリプトがmissingみたいになってた。

あるスクリプトにエラーがあったせいみたい。

その一つのエラーを直したら、なんかでてきて、なんか押したら治った。

 

下の症状と一緒

qa.atmarkit.co.jp


わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

マテリアルを変更できない時がある【未解決】

UnityのオブジェクトのMaterialを別のマテリアルにしたい時、別のマテリアルをGameobjectにドラッグしても変えられない時がある。

 

別に元のマテリアル自体がグレーアウトしているとかじゃない。

外から読み込んだモデルの時とかはそうなっている場合もあるけど、それじゃない。

sirohood.exp.jp

 

すでについているマテリアルのパラメーターを変更することはできる。

最近の記事だとここでなった。

bibinbaleo.hatenablog.com

最初からついているマテリアルを別のskyboxシェーダーのマテリアルに差し替えようとするとなった。

この時はskyboxという特殊なシェーダーだったからそうなったのかと思った。

 

でも別のプロジェクトで、別のシェーダーでもなった。

変更元のシェーダーはUnlit/Transparent

新しいマテリアルのシェーダーはcustomシェーダーだからやっぱり特殊なシェーダーがついているマテリアルに変更しようとするとダメなのかな;;

一時的な解決法

オブジェクトを複製したら、複製した方のオブジェクトは変更できた。

最後に

たくさんのオブジェクトにマテリアルがついていて、そのうち一つのオブジェクトだけマテリアルを変えたいときは差し替えるしかないじゃん。

マテリアルを消すこともできないし、困っちゃうなー

現場ですぐに覚える! Unity2019逆引き大全 319の極意

コーディング規約(Unity、C#)を決めよう

今後の人生のためにも命名規則を決めてそれを守る癖をつけたい。

正解はない

C#命名規則

クラス名とメソッド名はPascal式。

フィールド名はm_ Pascal形式で、パラメーターとローカル変数はcamel方式にする。

 

・クラス名 TomatoLearn

public class TomatoLearn: MonoBehaviour

・メソッド名 TomatoLearn()

public void TomatoLearn() {

}

・フィールド(=メンバー変数=クラス変数) m_TomatoLearn

private GameObject m_TomatoLearn;

・パラメーター tomatoLearn

int tomatoLearn

Unityの命名規則

ゲームオブジェクトやUIパーツの名前。

基本はPascal形式。

UIは最初にText_みたいにUI名をつける。

Text_TomatoLearn

ディレクトリ階層

フォルダの階層とフォルダ名のつけ方

qiita.com

r-ngtm.hatenablog.com

参考

主にこれ。でもこれは.NETであってc#ではない?

docs.microsoft.com

docs.microsoft.com

C#のコーディング規約には大文字の話とかはない。何を言っているかわからない

docs.microsoft.com

とても詳しい

qiita.com

water2litter.net

フィールドだのメンバー変数だの。

qiita.com

Unityのガイドもあった。どれぐらいの権威なのか

wiki.unity3d.com

UnityのCsharp Coding Guidelinesにはm_つけるなって書いてある。
http://wiki.unity3d.com/index.php/Csharp_Coding_Guidelines
Do not use a prefix for member variables (_, m_, s_, etc.). If you want to distinguish between local and member variables you should use “this.” in C# and “Me.” in VB.NET.

 

下の本ではフィールド、引数、ローカル変数などの変数系にはCamel形式で、それ以外はPascal形式ってしてた。

bibinbaleo.hatenablog.com

そもそも決めるべきこと

www.webcreatorbox.com

 

現場ですぐに使える!  Visual C# 2017逆引き大全 555の極意

AssetGraph存在メモ【Unity】

AssetGraph

AssetGraphという名前を初めて聞いた!

https://bitbucket.org/Unity-Technologies/assetbundlegraphtool/src/af2d1078f4915e23ec0217110aa8f8aaa5b0979d/

AssetGraph はアセットの処理・変更からとアセットバンドルやプレイヤーのビルドにまつわる各種設定・スクリプティング作業を大幅に軽減することを目的として作られたツールです。

[JP]AssetBundle Graph Tool Document (v1.5) - Google ドキュメント

記事とか使い方

www.slideshare.net

 

qiita.com

tsubakit1.hateblo.jp

このフィルタをかけて取り出す機能は良さそう!

cubemapだけ取り出したいとか、fbxモデルだけ!とか

 

最後に

存在メモとかいう謎のジャンルを生んでしまった

Unity Asset PRESS

MRTKv2RC2.1をRiftで動かせなかったけどエディタで動いた

追記:この記事を書いた後に正式リリースしたみたいです。

unitypackageも4つに増えてすごーい 

f:id:bibinbaleo:20190822131649p:plain

ということで下の内容は古いかもしれない

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

METKのバージョンRC2.1をOculusRiftで動かしたい。

結局動かなかったけど、エディタでの操作の仕方が分かった。

MRTKv2

MRTKの現時点での最新バージョンMicrosoft Mixed Reality Toolkit v2.0.0 RC2.1

github.com

サンプルと SDKの二つのunitypackageをダウンロードした。

 

これを動かすには以下の環境が必要らしい

Unity 2018.4
Microsoft Visual Studio 2017 以降
Windows SDK 18362 +
Windows 10 1803 以降

docs.microsoft.com

始め方が載っている

microsoft.github.io

とりあえずUnity2018.4にはしてunitypackageは入れた。

見える。

f:id:bibinbaleo:20190820094021p:plain

WindowsSDK

WindowsSDKってなんだ。

下のサイトか、VisualStudioから入れられる。

Windows 10 SDK – Windows アプリ開発

VisualStudioから入れるとこを見たけど、18362 +は無かった。

Visual Studio 2017にコンポーネント(機能)を追加する方法 - Qiita

MRTKの始め方の記事に「To run apps for immersive headsets, you need the Windows 10 Fall Creators Update.」って書いてあったけどこれのせいなのか?

動かなかった

環境が揃ってないのか動かなかった。

Unityの実行を押したらそのまま固まって、なんの操作もできなくなった。実行側にも行ったわけでもない、ボタン押下の状態で固まったみたいな感じ。

UWPとかが必要なのか?

OpenVRはサポートされてるって書いてるし、Riftも含まれている

f:id:bibinbaleo:20190820212417p:plain

PlaterSettingのところもOpenVR入れてるしOculusもある。

Editorでの操作の仕方

HMDの接続を外したり、VRモードのチェック外したりすると、デスクトップモードになって実行はされるけど、操作の仕方がわからない。

この記事にEditorでの操作の仕方書いてあった。

qiita.com

microsoft.github.io

 

 この操作方法で無事動かせた。

UIの動く仕組みを知りたいだけなので別にVRで動かなくていいのだ。

この記事が状況近い!やっぱりOSのバージョンの問題か?

 

qiita.com

あと、もしかして一回VisualStudioでビルドしないと動かない感じなのか??

Hololensと同じ???

何かしら動かしている人

VRじゃないけど動かしている記事

Android

MRTK V2がAndroidで動く話

 

Hololensで動かしている

qiita.com

 

LeapMotion + Hololens

github.com

 

 

Playmaker触った

コードを書かずにプログラミングできるアセット

STYLYではコードで動かせない代わりにPlaymakerでインタラクションを作れる

styly.cc

初めて触る。主にSTYLYで使うことを念頭に置いた記事。

書きかけだけど、時間空きそうなので一旦投稿

触る

この連載に沿って最初のほうは触っています

styly.cc

上のメニューのPlayMakerからEditorを出す

f:id:bibinbaleo:20190817150704p:plain

f:id:bibinbaleo:20190817150503p:plain

preferencesから日本語化できた

f:id:bibinbaleo:20190817150508p:plain

基本的にオブジェクトに対して動作?を付けていく感じみたい。

それはUnityC#も同じか。

ActionBrowserに機能がある

f:id:bibinbaleo:20190817151237p:plain

右下のアクションブラウザから出る

f:id:bibinbaleo:20190817170455p:plain

ステータスにアクティビティを付ける

f:id:bibinbaleo:20190817151055p:plain

矢印を消すにはClesr TransitonTarget

f:id:bibinbaleo:20190817170503p:plain

TriggerEvent

「isTriggerの入ったコライダーが当たったら」というイベント。衝突判定!

f:id:bibinbaleo:20190817170805p:plain

STYLYではUntaggedにしないといけない。

自分にrigidbodyがいる。コライダーisTriggerにもチェック

懐中電灯する

懐中電灯もできるんだ!

styly.cc

f:id:bibinbaleo:20190817161719p:plain

途中までやった。これはなんとかできそう。

やはり蛍VRの移植が待たれる。。。まずはプロジェクトを探すところから始めよう

bibinbaleo.hatenablog.com

カメラの移動

カメラの滑らかな移動(プレイヤー)する方法があった。

styly.cc

途中までやったけどめんどくさくてやめた。

最後に

 触って説明聞いて分かったけど、「すでに用意されているたくさんのスクリプトをオブジェクトにセットして、UnityEventに対象のスクリプトとかをアタッチする」みたいなイメージ。

C#も書ける人間からしたら、こういうのを使って学ぶことにすごい抵抗あったけど、上のように考えたらまあ便利かなーとは思える。でもめんどくさい。

 

Unityで神になる本。

Unityで神になる本。

 

 

 

WebCamの映像からIBLする

 超AR

 超ARという、私のARの原点であり超えられない壁。

kosakasakas.github.io

このブログの起源。

bibinbaleo.hatenablog.com

技術的にARはおまけみたいなもので、メインはWebCamの映像からIBLすること。

でも終わってから気づいちゃったけど、これって既にARkitとかで実装されている環境光推定なのでは~~~~

IBLとは

IBLとはイメージベースドライティングのこと。

画像(イメージ)をもとにライティングする。周りの風景が赤かったら物体もほのかに赤くなるみたいな。主に環境光。ふつうに写真に写る太陽や光源の画像から影をつけるのもIBLと思う。

bibinbaleo.hatenablog.com

再現するぞ!

 当時はUnity始めたばっかりでスクリプト見ても何も分からないマンだった。継承とかも全く分からなかったので多分そこで躓いて再現できなかったんだと思う。

今ならできるかな!がんばるぞ!!

当時の自分に教えるように当社比少し丁寧に書いていく。(かも)

環境はUnity2018.3.8のWindowsです

Luxシェーダーを適用する

 このLuxというアセットを入れる。

githubにもあるので、私はそっちからとってきた。

github.com

普通の使い方はこちらの記事が詳しい。

無料アセットで簡単にIBLが出来るオープンソースシェーダLux - Qiita

 

そして、ARしたい(もしくはIBLを反映させたい)オブジェクトのマテリアルにLux系のシェーダーを付ける。

f:id:bibinbaleo:20190815214116p:plain

とりあえずIBLさせるだけなら何でもいいのかな?

Unityちゃんでやるときは

自分は肌系はLux/Bumped Diffuse、洋服系はLux/Bumped Speculaer、髪はLux/Human/Hairを設定しています。

 だそうです。

 下準備終わり!

3年前の私も、今日の私もこの下準備をやっていなかったからできなかったんだ。。。

まじでアホや

IBLを動画に対応させる

 こちらのCustomSetupLuxを入れる。

ユニティちゃんを超ARしてみたときのコード群 · GitHub

gistのCustomSetupLux.csのスクリプトはクラス名がtestになってるから、適宜変えてファイル名と合わせようね。

f:id:bibinbaleo:20190815065519p:plain

CustomSetupLuxはSetUpLuxを継承している。

最初に入れたLuxアセットの中にあるSetUpLux.csのvoid Start()とvoid Update()の前にpublic virtualを付ける。

f:id:bibinbaleo:20190815065147p:plain

docs.microsoft.com

これでエラーは消えた!!当時はこの時点でエラーまみれで終わってた気がする。

 

またこれはオブジェクトの大きさによると思うけど、生成されるカメラのx位置が10になっていて半球の映像が映らなかったので私は0にしました。

f:id:bibinbaleo:20190815210906p:plain

なんで10なのかよくわからない。

 

 

その後CustomSetUpLux.csを適当なオブジェクトにつける

f:id:bibinbaleo:20190815203111p:plain

セットするのはTargetObjだけでいいと思う。

f:id:bibinbaleo:20190815203845p:plain

TargetObjは光を当てたいメインのオブジェクトのこと。

この位置をもとにカメラやcubemapを生成している

f:id:bibinbaleo:20190815203848p:plain

WebCamの映像でIBLする

こちらからsemiSphere.objを使わせてもらう。

ユニティちゃんを超ARしてみたときのコード群 · GitHub

メモ帳に中身コピーして.objで保存した

f:id:bibinbaleo:20190815070522p:plain

内側だけ描画される半球

マテリアルは何でもいい。Unlit/Textureとかのほうがきれいに映るかな

f:id:bibinbaleo:20190816065952p:plain

そして同じgistのWebCamBehaviourScriptを作って半球に貼る。

最初renderer.matrialのところに「これは非推奨です」って赤線出たけど、

f:id:bibinbaleo:20190815070839p:plain

いったん保存してUnity戻ってスクリプトに戻ったら勝手にいい感じに変わってた。そんな機能?あるんだ。

f:id:bibinbaleo:20190815070837p:plain

エラー:Renderがない

実行したらRenderがないって言われた。

f:id:bibinbaleo:20190815073047p:plain

半球の空の親にスクリプトを付けてた。

MeshRendereがついているほうにスクリプトを付けたら治った。

f:id:bibinbaleo:20190815195414p:plain

エラー:Could not find specified video device

もう一つエラー。

f:id:bibinbaleo:20190815195327p:plain

ERROR - Could not find specified video device
UnityEngine.WebCamTexture:Play()
WebCamBehaviourScript:Start() (at Assets/WebCamBehaviourScript.cs:27)

カメラがないみたいに出てるけど、ないときは

Debug.LogError("Webカメラが検出できませんでした。");って出るはずなので他の何か。

あとでVuforiaを設定したときに分かったけど、カメラの1番目がVRHMDのDellになっていたみたい。

f:id:bibinbaleo:20190815204934p:plain

こちらの記事を参考に3番目のカメラからwebCamTextureを作るようにした。

nn-hokuson.hatenablog.com

f:id:bibinbaleo:20190815205123p:plain

new WebCamTexture()の中の最初にdevices[2].nameを加えた。

半球に映像が映り、IBLされる

うまくいくとちゃんと半球にWebCamの映像が映り、Luxシェーダーを付けたオブジェクトにIBLされます。

f:id:bibinbaleo:20190815215415p:plain

ガンマの値を上げすぎたりしていると真っ白になるので調整したほうがいい

f:id:bibinbaleo:20190815215657p:plain

 

VuforiaでAR

はっきり言ってARはもはや何でもいい。もはやARしなくてもいいまである。

とりあえずなれているVuforiaで

世界一役に立つ私の過去記事を参考にARする。Unity2018

bibinbaleo.hatenablog.com

f:id:bibinbaleo:20190816070259p:plain


IBLする前にARした時はできたのに、今できなくなっちゃった!

f:id:bibinbaleo:20190815215949p:plain

はあ

WebCamTextureを貼ったら画面が真っ黒になるし、CustomSetUpLuxをアクティブにしたら上みたいになる。AR用のWebCamが生きてない感じ。

いろいろなモデル

youtu.be

この二人を置いてみます。

f:id:bibinbaleo:20190816070403p:plain

Luxのシェーダー付けたらトマシープちゃんが変になっちゃった。でも実行すると普通になる。

f:id:bibinbaleo:20190816070359p:plain

 

f:id:bibinbaleo:20190816070406p:plain

f:id:bibinbaleo:20190816070410p:plain

f:id:bibinbaleo:20190816070416p:plain

あんまりトマシープちゃんは環境光の影響受けてない。

最後に

なんかARできなかったけど、成長は感じられたので良かった。

当時は何が分からないかもわからなくて、誰にも聞けなくて結局あきらめた。

VuforiaARが載ってるらしいよ!

f:id:bibinbaleo:20190816071031p:plain

(おまけ)IBLされない問題

以下はマテリアルにLuxのシェーダーを付けてなくて、IBLされなかった時の嘆きです。

----------------------------------------------------------------------------------------------------------------

なぜーーー IBLされない!

f:id:bibinbaleo:20190815210138p:plain

まずスクリプトで生成されるカメラとcubemap2種類がちゃんと生成されているかを見る。

cameraとCubemapをpublicにします

f:id:bibinbaleo:20190815210313p:plain

実行中見てみるとちゃんと生成されています。

f:id:bibinbaleo:20190815210715p:plain

ダブルクリックするとインスペクタを見ることができました。

f:id:bibinbaleo:20190815210309p:plain

 

f:id:bibinbaleo:20190815210322p:plain

f:id:bibinbaleo:20190815210335p:plain

ちゃんと生きてそう。

ただカメラのx位置が10になっていて半球の映像が映っていないような気がするので0にします。

f:id:bibinbaleo:20190815210906p:plain

なんで10なのかよくわからない。

Sphereのマテリアルをcubemapにしたらskyboxみたいになる。

skyboxはシーンに一つ。でも一つのシーンの中に複数の空を持ちたいときがある。

もしくはSTYLYみたいにskyboxをうまくアップできない?ときとか。

SphereのマテリアルをSkybox>CubemapにしたらSphereの中に入った時にskyboxのような見た目になった。

f:id:bibinbaleo:20190815131425p:plain

2020/9/18追記

もっと他にもいろいろ方法があった。

Cubemapを使わなくても、内側を描画するシェーダーを使ったり、内側に法線があるSphereを使えばいい。

詳しくはこちら

bibinbaleo.hatenablog.com

 

qiita.com

作り方

- 全天周画像のTexture ShapeをCubeににしてApply

f:id:bibinbaleo:20200701105359p:plain
- 大きなサイズのSphereを置く。Collidarは外しておくといいかも。
- Newマテリアルを作成してSphereにセット
- そのシェーダーをSkybox>Cubemapにする

f:id:bibinbaleo:20200701105429p:plain

- Cubemapに最初に作成した全天周画像をセット
- 必要に応じてExposureで回転させる

 

注意

Skeybox>Cubemapのシェーダーのマテリアルを作ってから、Sphereとかに張り付けようとしても張り付かない。

最初にSphereに適当なデフォルトのマテリアルをくっつけて、そのあとシェーダを変えたらちゃんと反映される。謎

完成

 

外から見たとき

f:id:bibinbaleo:20190815131428p:plain

中に入った時

f:id:bibinbaleo:20190815131831p:plain

 

普通にskyboxにcubemapを設定するとこんな感じになる。

f:id:bibinbaleo:20190815131430p:plain

デフォルトだとskyboxの色が環境効として反映されて、StandardShaderのマテリアルはその色になる。

 

最後に

あと普通のStandardシェーダーだとSphereの中に入っても外側のマテリアルの色とか゚テクスチャは反映されない。何も見えないというか外側の世界が広がっている。内側には描画されないシェーダーなんだと思う。

 

Cubemapの実験

bibinbaleo.hatenablog.com

【OVROverlay】Unityが重いときに出るロード画面を作る

 

Unityで重い処理をして止まっているときにのみ出てくるロード画面もOVROverlayで使えるそうなのでやってみます。

参考

www.heistak.com

以前サンプルを見ました。

bibinbaleo.hatenablog.com

OVROverlayサンプルから抜き出す

CompositorLayerLoadingScreenを抜き出してプレハブ化する

f:id:bibinbaleo:20190815111906p:plain

Loadの文字と

f:id:bibinbaleo:20190815110904p:plain

自分の周りを覆うCubemap

f:id:bibinbaleo:20190815110907p:plain

コードもOVROverlaySampleから抜き出す。

f:id:bibinbaleo:20190815111908p:plain

コード

こんな感じ

gist.github.com

 

f:id:bibinbaleo:20190815110910p:plain

StartCoroutine(WaitforOVROverlay());で処理を呼ぶ

 

それぞれのOverlay素材をアクティブにする

cubemapOverlay.enabled = true;
loadingTextQuadOverlay.enabled = true;

 

自分の視点のカメラを取得して、そこから設定した距離(distanceFromCamToLoadText)にロードの文字を出してくれる。

文字を出す場所がワールドで固定でいいならカメラと距離らへんの記述はいらない。

 

System.Threading.Thread.Sleep(2500);というのがテスト用の重い処理

 

今回は仮にボタンを押したら重い処理を走らせてロード画面を表示するというようにしてみる。

public void LoadButton()
{
StartCoroutine(WaitforOVROverlay());
}

 

実行

実行したら

System.Threading.Thread.Sleep(2500);が動いている間だけロード画面が出た!!!

ちゃんと重くなっても表示されてる!

OvrOverlayのキューブマップやテキストはUnityのゲーム画面には見えない。

OculusHMD内でのみ見える。だからスクショ取れない><

最後に

多分Oculusでしか見れない

developer.oculus.com

UnityのSkyboxのテクスチャを自作する

グラデーションのスカイボックスを作りたい

qiita.com

Paint3Dのスプレーで頑張って海っぽくグラデーション

f:id:bibinbaleo:20190812214109p:plain

Unity

Unityに読み込んだらCubeにする。Apply

f:id:bibinbaleo:20190812214103p:plain

きれい

f:id:bibinbaleo:20190812214059p:plain

これをセットするマテリアルを作る。シェーダーをSkybox>Cubemap

f:id:bibinbaleo:20190812214421p:plain

出来たらさっきのテクスチャをセットする

f:id:bibinbaleo:20190812214053p:plain

グラデーション、上が明るくなってほしかったけど、逆になった。

 

f:id:bibinbaleo:20190812214048p:plain

逆というか6面のcubeにランダムな方向で?貼られている?

f:id:bibinbaleo:20190812214044p:plain

テクスチャのMappingを変える

テクスチャのMappingの方式は最初はAutoになっていて恐らく6Frameになっている。

f:id:bibinbaleo:20190812214749p:plain

MirroedBallに変えるとこんな感じ。

f:id:bibinbaleo:20190812214958p:plain

いい感じではあるが、一点集まってる

f:id:bibinbaleo:20190812215003p:plain

Latitudeにすると

f:id:bibinbaleo:20190812214042p:plain

一辺で集まっている。

f:id:bibinbaleo:20190812214036p:plain

左右の端を同じにしたら境目なくいい感じになりそう

f:id:bibinbaleo:20190812215554p:plain

最後に

Paint3D、グラデーション機能もないのか

 追記

XDでグラデーション作りました。

f:id:bibinbaleo:20190818080145p:plain

境目のないきれいなskyboxができた!!!

f:id:bibinbaleo:20190818080026p:plain

bibinbaleo.hatenablog.com