Skybox/Cubemap
ここでやったCubemapシェーダーをSphereに適用したやつを2つ使うときの話。
このSphereを二つ置くと、描画順の関係で奥にあるものも前面に表示される。
中に入ると、外にある球が見えてしまう。
どうしたものか。まあ本当はSkyboxに使うものを無理やり球に使ってるからな。
VRChatとかでよく複数360度画像の球があるときあるけど、あれってどうやってるんだろう?
ちなみにSkybox/Cubemapのシェーダーはこちらに載っていた。
内側にしか法線のない球を使う
そもそも外側から画像が表示されなければいい。
ということで内側にしか法線のない球を使うとどうだろう?
こちらをお借りした。
Sphere100.fbx 360動画用全天球用FBXモデル(法線内側向き)https://t.co/kJSLDQuMWh
— 伊藤周@オーナカ (@warapuri) 2017年9月8日
Dropboxの仕様が変わってリンク先が変わってしまったので、再アップします。
特に変わらない。 外から内側が見える><
と思ったら、普通のシェーダー使ったらいい感じになった。
つまり内側に法線がある球ならCubemapのシェーダーを使わなくても内側に360度できれいに表示される!!
知らなかった><
Sphere+UniGLTF
UniGLTFというVRMのSDKを入れたらついてくるシェーダーを使うと、普通のUnityのSphereでも内側が表示される!
CullModeをオフにすると内側も表示される。内側も表示されているというか、外側の表示が内側からも見えるというか
ちゃんと外にある球も表示されない
左右逆問題
でも問題があって、UniGLTFも内側法線球も、写真が左右逆になってる
Skybox/Cubemapシェーダーで表示したやつが正しい↓
解決
こちらのシェーダーを使えば、内側描画で左右反転してくれる。同じ悩みだった
これでシェーダー作れば、UniGLTFも内側法線球も使わなくて良さそう。
球の種類
球にもメッシュの形がいろいろあるんだ
ICO球というメッシュの形がゆがまずにいいらしい。
外側から完全に見えないシェーダー
内側に入らないと見えないシェーダーってないのかな?
外側からは見えないやつ。
Skybox/Cubemapはそのシェーダー同士だと手前に見えるけど、基本的にそれ以外の全てのオブジェクトの一番後ろに表示される。
最後に
Shaderでも球のメッシュでも、内側を描画さえできれば360度画像はきれいに表示されるんだ~
この記事書きなおそう