トマシープが学ぶ

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

Theta Sのライブ映像をunityのスカイボックスに適用する方法

最初に書いておきますが、Theta Sのライブ映像をskyboxに適用されることはできましたが、IBLできませんでした。(物体に環境光として反映されない)

 

まずこちらのサイト(Stereoarts Homepage)のThe shader packをダウンロードしてUnityに入れます。

この中のThetaRealtimeSkybox.shaderを使います。

その後このようなwebcamからの映像をマテリアルのテクスチャに設定できるコードを書いて、適当なGameObjectにつけます。空のやつでもいいし、カメラでもいいです。

 

webcamから取得した映像を任意のマテリアルのテクスチャにするコード。ThetaSにも使える

 

 

その後さっきUnityに入れたパックの、ThetaRealtimeSkyboxフォルダの中にある同名のマテリアル(もしくは自分で作った適当なマテリアルのshaderをTheta>RealtimeSkyboxにしたやつ)をさっきのコードのMaterialに入れます。

あとLightingのSkyboxに入れるのもお忘れなく。

f:id:bibinbaleo:20161216191646p:plain

f:id:bibinbaleo:20161216192852p:plain

この状態でThetaSをライブ状態にして繋げたら、skyboxに適用されます。もちろん普通のwebcamとか内蔵カメラとかでも大丈夫です。

 

以下私の悩み

たださっきも言ったように環境光として適用されません><f:id:bibinbaleo:20161216193057p:plain

普通の画像とかだったらちゃんとなるのに・・・

f:id:bibinbaleo:20161216193106p:plain

ちなみに動画でも適用されなかったので変化するSkyboxは重くて動かないのか?

でも超ARではwebcamからの映像を元にIBLできてたしな・・・?

ちなみのちなみに動画をskyboxに適用するのは画像と同じように、インポートしたmp4をさっきのShaderのテクスチャのところに入れたらなります。

f:id:bibinbaleo:20161216193327p:plain

このThetaRealtimeSkybox.shaderはプルーブ画像をcubemapに変換せずにskboxにできるところがすごいんですね!

 

ちなみに画像だけならこのshaderを使わなくてもUnity5の既存のshaderで、できます

1、画像のテクスチャタイプをcubemapにして、

f:id:bibinbaleo:20161216194517p:plain

追記

Unity5.5からTexture Shapeという項目が追加されていました。

Texture Typeはいじらず、Texture ShapeをCubeに変えたらできます。

f:id:bibinbaleo:20161227154312j:plain

2、別に新しくマテリアルを作りそのマテリアルのshaderをSkybox>cubemapにして

3、そこのtextureにさっきの画像を入れて、f:id:bibinbaleo:20161216194516p:plain

4、マテリアルをlightingのskyboxに入れたら完成!

f:id:bibinbaleo:20161216194607p:plain

 

静止画像なら既存のshaderを使ったほうがいいかも??ThetaShaderPackを使ったら調整できない方向に90度くらい回転してて天地がおかしくなってました。

 

以下蛇足

にしてもwebcamの映像をマテリアルのテクスチャに流すコードの書き方がわからなくてめっちゃ探した・・・答えみたらめっちゃ簡単だったし・・・当たり前だからどこにも載っていなかったのか・・・

publicでマテリアルを定義してこの一行

material.mainTexture = webcamTexture;

 

unity頑張ろう!

ただこの答えにたどり着くまでに右往左往したおかげでUnityのRenderTextureとかcameraにskyboxコンポーネントをつけられるとかいう新たな機能を知れたのでそれはまた記事にします。

ちなみに良くあるwebcamtextureスクリプトをsphereとかに貼り付けて、映像を表示。

それをRenderTextureをつけたもう一台のカメラで撮って、RendertextureをThetaRealtimeSkyboxのテクスチャに入れたら同じようなことはできました。これやったすぐ後に正解を見つけたのん