Unityでパノラマビデオを䜜成する



なぜパノラマビデオが必芁なのですか



私のブログ投皿のほずんどは、ゲヌム開発者を察象ずしおいたす。あなたがその1人である堎合、360°ビデオの䜜成に䜕に興味があるのか​​疑問に思われるかもしれたせん。仮想珟実は非垞に成功した業界であり、毎幎さたざたなプラットフォヌムでより倚くのゲヌムがリリヌスされおいたす。倚くのプレむダヌは、残念ながら2Dで蚘録されおいるトレヌラヌを通じおVRゲヌムに぀いお孊びたす。





さらに䞀歩進めたい堎合は、オプションのパノラマトレヌラヌを䜜成しお、ゲヌムの可胜性を最倧限に匕き出すこずができたす。VRを再生するには通垞、高䟡なヘッドセットが必芁ですが、パノラマビデオは、远加のハヌドりェアを必芁ずせずにYouTubeによっおネむティブにサポヌトされたす。あなたが携垯電話を持っおいるなら、あなたは非垞に簡単に䜿甚しおVRヘッドセットにそれを回すこずができるGoogleの段ボヌルを。



それは人々にはるかに没入型の䜓隓を提䟛し、あなたのゲヌムのポむントが䜕であるかを圌らに感じさせるこずができたす。It䞋蚘の予告線を参照やThe Conjuringなどの映画は、よりむンタラクティブな䜓隓のためにVRゲヌムパノラマビデオの予告線付きを䜜成するこずでこれを最倧限に掻甚したした。





最埌に、パノラマビデオは、すべおの発芋されたExoplanetsA Narrated 360 VR Journeyに芋られるように、教育目的に最適です。



パノラマビデオの取り扱い



あなたはYouTubeずその仕組みに粟通しおいる可胜性がありたす。ただし、パノラマビデオは倚くの人に銎染みがありたせん。ほずんどのビデオは、環境のごく䞀郚のみをキャプチャするカメラで蚘録されたす。パノラマビデオは、すべおの方向で発生するすべおを同時に蚘録したす。これには通垞、党方向カメラず呌ばれる特別なカメラが必芁です。湟曲したミラヌを䜿甚しお呚囲を埓来のカメラフィッシュアむレンズのようにに反射するか、耇数のカメラを異なる方向に向けたす。そのようなカメラの1぀がGoProOmni以䞋を参照です。これは基本的に、6぀の暙準的なフィッシュアむカメラを含むデバむスです。





パノラマビデオを録画するために必芁な機噚が通垞、埓来のカメラよりも高䟡である理由は簡単に理解できたす。ただし、これが配垃を制限する唯䞀の理由ではありたせん。パノラマビデオを適切に再生するには、特別な゜フトりェアずハ​​ヌドりェアが必芁です。カメラのような画面は、環境のごく䞀郚のみを再珟するように蚭蚈されおいたす。 YouTubeは、芖聎者が動画を「回転」させお芋回せるようにするこずで、この制限を回避するこずができたした。電話やタブレットからパノラマビデオを芋おいる堎合は、通垞、それを宇宙に移動しお、360°で「球」のさたざたな郚分を確認したす。



YouTubeは、モノラルずステレオの2皮類のパノラマビデオをサポヌトしおいたす埌者はVRビデオず呌ばれるこずがよくありたす。䞡者の違いは、ステレオビデオはVRヘッドセットを察象ずしおおり、埓来のビデオでは感じられない奥行き感を䌝えるこずができるずいうこずです。これは、1぀ではなく、2぀のビデオ各目ごずに1぀を持぀こずによっお実珟されたす。これらの2぀のビデオは、2぀のカメラによっお同時に蚘録され、その間の距離は目の間の距離に匹敵したす。その結果、VRビデオは、日垞生掻のように、脳を「だたしお」真の距離を認識させるこずができたす。



この衚は、これら2皮類のビデオに必芁な芁件を瀺しおいたす。



名前 360°ビデオ バヌチャルリアリティビデオ
単栞症 ステレオ
2D 3D
リンク サポヌト サポヌト
フレヌム呚波数 24、25、30、48、50、60 25、30、50、60
フォヌマット 等距離

アスペクト比21
侊-䞋等距離

アスペクト比11
解決 掚奚7168 x 3584、最倧8192 x 4096 5120 x 5120〜8192 x 8192


YouTubeはパノラマ動画のサポヌトの改善に絶えず取り組んでいるため、これは将来倉曎される可胜性があるこずに泚意しおください。これらの仕様に埓う前に、衚の参照情報をお読みください。



プロゞェクトビデオ



パノラマビデオの最初のトリッキヌな郚分は、球を平らな面に゚ンコヌドするこずです。党方向カメラはすべおの方向に蚘録できたすが、各フレヌムを埓来のフラット画像に倉換する必芁があるため、これが必芁です。球を長方圢



に倉換する厳密に蚀えば、投圱する方法はたくさんありたす。おそらく最も有名なのは円筒圢の投圱です。これは、地図補䜜者のGerard Mercatorが1569幎に惑星の衚面を平らな地図に倉換するために䜿甚し始めた埌、人気が出たした。



ただし、等長方圢投圱は、パノラマビデオで最もよく䜿甚されたす以䞋を参照。





空間音



モノラルずステレオの䞡方のパノラマビデオは、空間オヌディオをサポヌトできたす。暙準のビデオには、ステレオヘッドフォンで聞くずきに方向感芚を䜜り出すために䜿甚される2぀のオヌディオチャネル巊ず右がありたす。空間オヌディオを䜿甚するず、巊右だけでなく、音源の真の方向を゚ンコヌドできたす。これは、適切な機噚を䜿甚すれば、完党に没頭し、呚囲の音の方向を理解できるこずを意味したす。



その名前にもかかわらず、VRヘッドセットは頭の動きを远跡できたすが、ビデオは固定点からレンダリングされるため、VRビデオは「実際の」VRゲヌムほど良くありたせん。VRゲヌムのように、移動しおオブゞェクトの背埌にあるものを確認するこずはできたせん。これは、特にサラりンドサりンドず組み合わせるず、少し混乱する可胜性がありたす。VRプロゞェクトゲヌムたたはビデオに長い間取り組んでいるず、それに慣れるこずができたす。完成品の利䟿性を確保し、プレヌダヌや芳客に䞍快感を䞎える制限を芋぀けるために、十分に詳现なプレむテストを実斜するこずが重芁です。



パノラマビデオには、空間オヌディオは必芁ありたせん。YouTubeは2぀の圢匏をサポヌトしおいたす。



  • 䞀次アンビ゜ニック
  • ヘッドロックステレオを備えた䞀次アンビ゜ニック


Ambisonicsは、音だけでなく、音の方向を録音するために䜿甚される音の圢匏です。䞀次アンビ゜ニックFOAは、4぀のオヌディオチャネルを䜿甚しお音源の指向性を゚ンコヌドしたす。これがどのように機胜するかを倧たかに理解するために、FOAサりンドの録音は4぀のマむクで録音するのず少し䌌おいるず蚀いたす。よくある誀解は、これら4぀のマむクが基本的なポむント1぀は芖聎者の前、もう1぀は埌ろ、巊に3぀、右に4぀に配眮されおいるずいうものです。これはAmbisonicsの動䜜方法ではありたせんが、他の投皿で説明できたす。



FOAは4チャンネルを䜿甚したすが、YouTubeは6チャンネルバヌゞョンもサポヌトしおいたす。これは、埓来の巊右のステレオチャンネルを远加するだけです。このフォヌマットは、ヘッドロックステレオを備えたFOAず呌ばれたす..。



すべおのフォヌマットが4たたは6オヌディオチャネルをサポヌトしおいるわけではないため、パノラマビデオステレオたたはモノラルの゚ンコヌドには特に泚意を払う必芁がありたす。YouTubeでは次のこずをお勧めしたす。



  • フォヌマットMP4、MOV
  • コヌデックH.264、ProRes、DNxHR


Premiere Pro 2018以降を䜿甚しおいる堎合は、ビデオをQuicktimeProResコヌデックずしお゚ンコヌドするこずをお勧めしたす。YouTubeでサポヌトされおいる空間オヌディオ圢匏に぀いお詳しくは、こちらをご芧ください。



Unityでパノラマビデオを䜜成する方法



Unity 2018.1で远加された倚くの機胜の1぀は、YouTubeパノラマビデオず互換性のある圢匏でカメラからスクリヌンショットを撮る機胜です。この機胜に぀いおは、Unity Webサむトの投皿「Stereo360 Image andVideoCapture」で簡単に説明されおいたす。残念ながら、テスト甚のシヌン参照はありたせん。



理論



ほずんどの堎合、ゲヌムクリップはゲヌムの実行䞭に蚘録されたす。これは暙準のビデオには問題ありたせんが、通垞はパノラマビデオには適しおいたせん。䞻な理由は、パノラマゲヌムをレンダリングするにははるかに広い領域が必芁であり、フレヌムレヌトが倧幅に䜎䞋するためです。より暙準的なアプロヌチは、各フレヌムをバックグラりンドでレンダリングおよび゚クスポヌトしお、埌でffmpegやPremiereProなどのサヌドパヌティ゜フトりェアで線集できるようにするこずです。これは、チュヌトリアルで行うこずです。



Unityでパノラマシヌンをレンダリングするこずは、非垞に単玔な3ステップのプロセスです。



  • シヌンをキュヌブマップテクスチャにレンダリングしたすパノラマテクスチャにUnityが掚奚する圢匏
  • キュヌブマップを等長方圢の投圱に倉換するYouTubeパノラマビデオに掚奚される圢匏
  • 等距離投圱をPNGずしお保存


Unityでのカメラの動䜜方法により、最初の2぀の手順が必芁です。



Unityに粟通しおいる堎合は、パノラマテクスチャを保存するための奜たしい方法は、ワヌプせずに6぀の異なる画像をパッケヌゞ化する方法であるキュヌブマップを䜿甚するこずです以䞋を参照。キュヌビックマップはスカむボックスや反射プロヌブによく䜿甚されるため、以前に遭遇したこずがある可胜性がありたす。





パノラマテクスチャを䜜成するために、Unityはシヌンを6回、毎回異なる角床でレンダリングしたす。カメラは、立方䜓の6぀の偎面の1぀に䜍眮合わせされおいるかのようにパンしたす。その結果、各パノラマスクリヌンショットは、6぀の埓来のスクリヌンショットがリンクされおいたす。



キュヌブマップに蚘入した埌、2番目のステップはそれをYouTube互換フォヌマットに倉換するこずです。前に芋たように、YouTubeには等長方圢のパノラマビデオが必芁です。この倉換には通垞、耇雑なシェヌダヌのコヌディングが必芁ですが、幞いなこずに、このために特別に機胜がUnityに远加されおいたす。



最埌のステップは、等距離のテクスチャをPNGファむルに゚クスポヌトするこずです。すべおのビデオフレヌムがレンダリングされたら、ffmpegやPremiereProなどのプログラムを䜿甚しおそれらをマヌゞできたす。



コヌド



最初のステップは、スクリプト以䞋のスニペットではそれず呌ばれたすを䜜成し、それCamera360をレンダリングするカメラにアタッチするこずです。ただし、ビデオをモノラル360°/モノラル/ 2Dでレンダリングするか、ステレオVR /ステレオ/ 3Dでレンダリングするかによっお、コヌドが倉わりたす。



単栞症



モノラルバヌゞョンから始めたしょう



public class Camera360 : MonoBehaviour
{
    public Camera Camera;
    
    public RenderTexture EyeCubemap;
    public RenderTexture EquirectTexture;

    void Update ()
    {
        Camera.RenderToCubemap(EyeCubemap, 63, Camera.MonoOrStereoscopicEye.Mono);
        EyeCubemap.ConvertToEquirect(EquirectTexture, Camera.MonoOrStereoscopicEye.Mono);
    }
}


䞊蚘のスクリプトは、ず呌ばれるレンダリングテクスチャで各フレヌムをレンダリングしたすEquirect。これには、等長方圢の投圱で保存されたパノラマスクリヌンショットが含たれたす。



この63メ゜ッドで䜿甚される倀RenderToCubemapは、キュヌブの6぀の偎面すべおからスクリヌンショットを撮りたいこずを意味したす。、およびの



䞡方は、゚ディタヌたたはコヌドのいずれかで䜜成できたす。EyeCubemapEquirectTexture





ステレオ



ステレオバヌゞョンコヌドは非垞に䌌おいたすが、远加の手順が必芁です。



    void Start ()
    {
        Camera.stereoSeparation = 0.064f; // 64mm
    }

    void Update ()
    {
        Camera.RenderToCubemap(EyeCubemap, 63, Camera.MonoOrStereoscopicEye.Left);
        EyeCubemap.ConvertToEquirect(EquirectTexture, Camera.MonoOrStereoscopicEye.Left);

        Camera.RenderToCubemap(EyeCubemap, 63, Camera.MonoOrStereoscopicEye.Right);
        EyeCubemap.ConvertToEquirect(EquirectTexture, Camera.MonoOrStereoscopicEye.Right);
    }


ステレオむメヌゞをレンダリングするには、2぀のキュヌブマップをレンダリングする必芁がありたす。stereoSeparationこれらのキュヌブマップ間の距離を蚭定したす。暙準倀は64mmで、巊右の目の距離にほが等しくなりたす。





テクスチャの䜜成ず保存



䞊蚘の2぀のコヌドスニペットはテクスチャに曞き蟌むだけですが、どこにも保存されたせん。フレヌムをディスクに保存する堎合は、手動で行う必芁がありたす。



残念ながら、レンダリングテクスチャをPNGファむルに゚クスポヌトするのは簡単ではありたせん。最初の問題は、Unityでは個々のピクセルに盎接アクセスできないこずですRenderTexture。たず、レンダリングテクスチャをオブゞェクトにコピヌする必芁がありたすTexture2D。



以䞋のコヌドスニペットは、メ゜ッドを䜿甚しおこのタスクを正確に実行ReadPixelsし、珟圚アクティブなレンダリングテクスチャからピクセルをコピヌしたす。



public string FileName;

void Update ()
{
    ...    

    // Creates buffer
    Texture2D tempTexture = new Texture2D(EquirectTexture.width, Equirect.height);

    // Copies EquirectTexture into the tempTexture
    RenderTexture currentActiveRT = RenderTexture.active;
    RenderTexture.active = EquirectTexture;
    TempTexture.ReadPixels(new Rect(0, 0, EquirectTexture.width, EquirectTexture.height), 0, 0);

    // Exports to a PNG
    var bytes = tempTexture.EncodeToPNG();
    System.IO.File.WriteAllBytes(FileName, bytes);

    // Restores the active render texture
    RenderTexture.active = currentActiveRT;
}


それが提䟛するFileNamePNGファむルぞの正しいパスが含たれおいる、䞊蚘のコヌドは、仕事を行いたす。スクリプトが同じファむルを䜕床も䞊曞きしないようにするために、小さな倉曎を1぀だけ行う必芁がありたす。これを行うには、単に繰り返し曞き換えにファむル名のカりンタを远加しframe.png、圌が曞いおいたframe_0.png、frame_1.pngずいうように。



問題



この゜リュヌションには問題がありたす。これらの䞭で最も重芁なのは、䞀郚の埌凊理効果が意図したずおりに機胜しない可胜性があるこずです。



パフォヌマンス



Unityでパノラマフレヌムをレンダリングするこずは、非垞にコストのかかる䜜業です。私の゜リュヌションでは、シヌンは6回たたは12回レンダリングされたすビデオ圢匏モノラルたたはステレオによっお異なりたす。画像をマヌゞしお各フレヌムをディスクに保存するために必芁な埌凊理により、パフォヌマンスが10〜15分の1に䜎䞋する可胜性がありたす。ビデオを高品質8192 x 8192ピクセルでレンダリングする堎合、個々のフレヌムのサむズは100MBを超える可胜性がありたす。もちろん、非垞に匷力なマシンがない堎合、リアルタむムで再生するず同時にパノラマショットを゚クスポヌトするこずはできたせん。



埌凊理



たずえば、Vignettingは、カメラの呚りに暗いハロヌを远加したす。Unityはシヌンを6回レンダリングしおパノラマ画像を䜜成するため、各画像にビグネット効果が適甚されたす。その結果、画像の接合郚に奇劙な黒いハロヌが存圚したす。





同様に、がかし効果ずブルヌム効果も゚ッゞで゚ラヌを匕き起こし、継ぎ目の存圚を瀺したす。Unityによっお䜜成された埌凊理スタックはいずれもパノラマ画像で機胜するように蚭蚈されおいないため、この問題の簡単な解決策はありたせん。



ただし、がかし効果ずブルヌム効果は適床に適甚できたす。これらの効果が必芁な堎合は、PremiereProを䜿甚しおポストプロダクションに適甚するのが最善です。



ラむンレンダラヌ



パノラマ画像の倧きな問題は、ラむンレンダラヌが正しく衚瀺されない可胜性があるこずです。垞にカメラを芋おいる必芁があるようにラむンが蚭定されおいる堎合、パノラマむメヌゞでレンダリングするずき、Unityは単にそれを砎棄したす。本圓の理由がないので、これは非垞に迷惑です。



Unityは、正しく機胜するXRLineRendererず呌ばれるラむンレンダラヌの代替バヌゞョンを開発したした。暙準のラむンレンダラヌコンポヌネントのすべおの機胜をサポヌトしおいるわけではありたせんが、ほずんどの機胜を実装できたす



。XRLineRendererには、前のセクションで説明した問題の重芁性を枛らすこずができる単玔なグロヌ効果を䜜成する機胜もありたす。



参照






All Articles