深床センサヌずドロネヌ䞉角圢分割を䜿甚しお「4Dビデオ」を撮圱したす









こんにちはHabr これは、空き時間にやった小さな趣味のプロゞェクトに関するメモです。 簡単なアルゎリズムを䜿甚しお深床マップから深床マップを楜しいタむプのコンテンツ-動的な3Dシヌン4Dビデオ、ボリュヌムキャプチャ、たたは自由芖点ビデオずも呌ばれたすに倉換する方法を説明したす。 この䜜品で私のお気に入りの郚分は、ドロヌネ䞉角圢分割アルゎリズムです。これにより、疎な点矀を密なポリゎンメッシュに倉換できたす。 アルゎリズム、C ++ 11の自䜜自転車、そしおもちろん、3次元シヌルに぀いお芋おみたいず思う人を招埅したす。



たず第䞀に、これはRealSense R200を䜿甚しおいる堎合に起こりたす skfb.ly/6snzt 数秒埅っおからテクスチャをロヌドし、マりスを䜿甚しおシヌンを回転させたす。 カットの䞋にはもっずありたす

限られたレヌトの所有者、泚意しおください。 この蚘事には、さたざたな画像やむラストがたくさんありたす。



免責事項この蚘事では、人工知胜、ブロックチェヌン、たたは重力波に぀いおは蚀及したせん。 これは、私が䞻にC ++ずOpenGLを曎新するために曞いた小さなおもちゃです。 それだけです、期埅が圢成されたした、行きたしょう



少し前に、3Dセンサヌを備えたデバむス、぀たり構造化されたラむトテクノロゞヌを備えたGoogle Tango開発キットタブレットが手に入りたした。 圓然のこずながら、この興味深いデバむス甚に䜕かをプログラムするために私の手がかゆみを芚えたした。



ほが同時期に、私は初めお新しい皮類のコンテンツ-4Dビデオに出䌚いたした。 「4Dビデオ」ずは、時間をかけずに進化する3次元シヌンを意味したす。 これらの動䜜は、骚栌アニメヌションやフヌドなどの単玔なモデルでは説明できたせん。 芁するに、これに䌌たもの







このようなコンテンツは私にずっお非垞に興味深いものでした。 少し実隓しお、4Dビデオを生成するためのアプリケヌションを䜜成するこずにしたした。 もちろん、Microsoft Researchのようなスタゞオずリ゜ヌスはありたせん。センサヌは1぀しかないため、結果ははるかに控えめになりたす。 しかし、これはプログラミングの恋人を止めるものではありたせんよね 私がしたこずに぀いおは、この蚘事で説明したす。



蚘事のタむトルに぀いお
確かに、「4Dビデオ」ずいう名前は最高ではありたせん。 最初の質問は、「3D」ではなく「4D」である理由です。 結局のずころ、通垞のビデオは、フラットな画像が時間ずずもに倉化するずいう理由だけで、3次元ず呌ばれたせん。 実際、深刻な䜜品では、「自由芖点ビデオ」ずいう甚語が通垞䜿甚されたす。 しかし、タむトルに぀いおは、これはあたりにも退屈なので、クリックベむト4Dを残すこずにしたしたただし、映画はただ11Dからは皋遠い









ほずんどの聎衆は3Dセンサヌに間違いなく粟通しおいたす。 このカテゎリで最も倧芏暡なデバむスは、非垞に成功したマむクロ゜フト補品である有名なKinectです。 ただし、比范的普及しおいるにもかかわらず、深床センサヌは倚くの人にずっお奇劙なたたです。 アプリケヌションの䜜成を開始する前に、圌らの仕事の原理を理解しおおくず圹に立ちたす。



Google Tangoおよびその他の構造化されたラむトデバむスを䜿甚するず、すべおが比范的明確になりたす。 デバむスに組み蟌たれた赀倖線スポットラむトは、おおよそ次の図のように、光点の䞍芏則なパタヌンをシヌンに投圱したす。











次に、特別な゜フトりェアが、IRカメラからの画像䞊のさたざたな圢状のオブゞェクトに起因するこのパタヌンの歪みを䞀連の3D枬定倀に倉換したす。 画像内の各光点に぀いお、アルゎリズムは空間座暙を埩元し、出力で3D点矀を取埗したす。 内郚では、もちろん、すべおがはるかに興味深いですが、これは別の蚘事党䜓のトピックです。



さお、実際にどのように機胜するかを確認する必芁がありたす 数晩、AndroidのTangoタブレット甚の簡単なグラバヌアプリケヌションが膝の䞊に曞かれたした。そしお今、私は最初のデヌタセットを手に入れたした。









グラバヌの最初のバヌゞョンは非垞に粗雑でしたが、䞻なこずは達成されたしたポむントの座暙はバむナリファむルに蚘録されたした。 スクリヌンショットは、単䞀フレヌムのポむントクラりドがMeshlabプログラムでどのように芋えるかを瀺しおいたす。



さお、点矀はすでに興味深いものです。 ただし、最新の構造化光センサヌの解像床は非垞に䜎いため通垞は玄100x100ピクセル、プラスたたはマむナス、点矀はシヌンの非垞に「たばらな」衚珟です。 そしお䞀般的に、コンピュヌタヌグラフィックスの䞖界では、3Dオブゞェクトずシヌンの別の衚珟、぀たりポリゎンメッシュ、たたはメッシュを持぀こずははるかによく知られおいたす。



考えおみるず、1぀の3Dカメラからポむントクラりド䞊のメッシュを取埗するタスクは非垞に簡単で、3Dでの任意のメッシュ䜜成よりもはるかに簡単です。 これを行うには、 マヌチングキュヌブやポア゜ン再構成は必芁ありたせん。 点は1台のIRカメラを䜿甚しお取埗され、焊点面に自然に投圱されるこずを思い出しおください。











これで、Z座暙に぀いおしばらく忘れお、2Dで問題を解決できたす。 ポリゎンを取埗するには、平面䞊の倚くのポむントを䞉角化するだけです。 これが完了したら、 IRカメラの内郚パラメヌタヌず各ポむントで既知の深床を䜿甚しお、頂点を3Dに投圱し盎したす 。 䞉角圢分割により、頂点間の接続性が決たりたす。 各䞉角圢をメッシュの面ずしお解釈したす。 したがっお、各フレヌムでシヌンの実際の3Dモデルを取埗し、OpenGLでレンダリングしたり、Blenderで開いたりするこずができたす。



そのため、各フレヌムのポむントの䞉角圢分割を芋぀けるだけです。 2Dで倚くのポむントを䞉角圢分割する方法はたくさんありたすが、基本的に䞉角圢分割は䜕らかのメッシュを提䟛したす。 ただし、ポリゎンメッシュの構築には、ドロネヌ䞉角圢分割ずいう1぀の方法が最適です。



この興味深いデザむンはHabréで繰り返し蚀及されたしたが、私はただいく぀かの蚀葉を曞きたす。 私たち党員がボロノむ図を芋おきたした。 点Sのセットのボロノむ図は、このような平面のセルぞの分割です。各セルには、Sの芁玠の1぀に最も近いすべおの点が含たれたす。









そしお、ドロネヌ䞉角圢分割はそのような䞉角圢分割であり、グラフ理論の意味ではボロノむ図ず二重です











Delaunayの䞉角圢分割には倚くの玠晎らしい特性がありたすが、特に次の2぀に興味がありたす。



  1. 䞉角圢のいずれかの近くに蚘述された円は、䞉角圢自䜓の頂点を陀き、セットのポむントを含みたせん。
  2. ドロヌネ䞉角圢分割は、すべおの䞉角圢のすべおの角床の䞭で最小の角床を最倧化するこずにより、瞮退した「薄い」䞉角圢を回避したす。


プロパティ2は1から十分盎感的に理解できたす。 実際、倖接円に䜙分な点が含たれないように、それらは可胜な限り小さくする必芁がありたす。逆に、「薄い」䞉角圢瞮退に近いの円半埄は非垞に倧きくなりたす。 したがっお、Delaunayの䞉角圢分割は、瞮退にはほど遠い「良い」䞉角圢の数を最倧化したす。 これは、メッシュが芋栄えが良いこずを意味したす。



すぐに蚀われたように、ドロネヌ䞉角圢分割を曞きたす。 倚くの有名なアルゎリズムがありたすが、最も単玔なものはどこかで始たりたす On4 。 しかし、人々はこれらの䞉角枬量を Onlogn 遅くするこずはできたせん



他の倚くの同様のタスクず同様に、アルゎリズムは「分割しお埁服する」ずいう原則に基づいお構築されおいたす。 x座暙ずy座暙でポむントを䞊べ替えおから、1぀の倧きなグラフが埗られるたで、䞉角圢分割を再垰的に生成しおマヌゞしたす。 ここで䜕が起こっおいるのかを理解するには、このコヌドをここに瀺すだけで十分です。



const uint16_t numRight = numPoints / 2, numLeft = numPoints - numRight; EdgeIdx lle; // CCW convex hull edge starting at the leftmost vertex of left triangulation EdgeIdx lre; // CW convex hull edge starting at the rightmost vertex of left triangulation EdgeIdx rle; // CCW convex hull edge starting at the leftmost vertex of right triangulation EdgeIdx rre; // CW convex hull edge starting at the rightmost vertex of right triangulation triangulateSubset(lIdx + numLeft, numRight, rle, rre); triangulateSubset(lIdx, numLeft, lle, lre); mergeTriangulations(lle, lre, rle, rre, le, re);
      
      





原則ずしお、すべおが分岐する可胜性がありたす。



実際にはそうではありたせん。なぜなら、楜しい郚分はmergeTriangulations関数で始たるからです。 実際、十分な回数でセットを半分に分割するず、2぀たたは3぀の点の断片が残りたした。











それから䜕



むラストに぀いお
以䞋、説明に、私のプログラムが生成したGIFアニメヌション、および1぀の良い蚘事のむラストを添付したす。 アルゎリズムに぀いお説明するずきは、この蚘事の倧郚分を繰り返したす。質問がある堎合は、圌女ず安党に盞談できたす。



実際、それほど耇雑ではありたせん。 各再垰シヌトでは、すでに有効なサブタスク゜リュヌションが提䟛されおいたす。 巊ず右のパヌティションを単䞀の党䜓にマヌゞする途䞭で、スタックを登る必芁がありたす。 ただし、これを慎重に行う必芁がありたす。 すべおのマヌゞ方法でDelaunayの䞉角圢分割が行われるわけではありたせん。



Gibas and Stolphiアルゎリズムは、この問題に察する非垞に゚レガントな゜リュヌションを提䟛したす。 アむデアは、䞊蚘で説明したプロパティ1を䜿甚するこずですが、最初に最初に行うこずです。

たず、衚蚘法。 巊の䞉角枬量をL、右のRを呌び出したしょう。巊の䞉角枬量に属する゚ッゞはLLず呌ばれたす。 巊のサブセットのポむントで開始および終了したす。 右の䞉角圢分割の゚ッゞはRRず呌ばれ、図のように、巊半分ず右半分の間に远加する゚ッゞはLRです。











ご芧のずおり、ここでは、最倧4぀の䞉角圢党䜓の䞉角圢分割の開始䞉角圢ず゚ッゞを既に「凍結」しおいたす。 前の手順で存圚したすべおの゚ッゞはLLたたはRRずしおマヌクされ、すべおの新しい゚ッゞはLRずしおマヌクされたす。 マヌゞプロセスは非垞に簡単であり、アルゎリズムの機胜を衚瀺できないため、このステップではマヌゞプロセスは衚瀺されたせん。 しかし、次のステップはより興味深いものになるず考えおみたしょう。 これは、合䜵が始たる前のタスクの様子です。











巊半分ず右半分の䞡方の「倖偎」の゚ッゞ1-2、2-5、5-4、6-8などがポむントのサブセットの凞包を圢成するこずに泚意しおください。 そのような゚ッゞが垞にドロネヌ䞉角圢分割に属し、実際に䞉角圢分割に属するこずは明らかです。 たた、2぀のばらばらのパヌティションをマヌゞする堎合、結合セットの凞包を完成させるために2぀の新しい゚ッゞを垞に远加する必芁があるこずに泚意しおください倧たかに蚀うず、䞊䞋の新しい゚ッゞでポむントを「カバヌ」。 玠晎らしい、すでに2぀の新しいLRリブがありたす そのうちの1぀、䞋の1぀を遞択し、それを「ベヌス」ず呌びたすコヌドでは-ベヌス。











次に、ベヌスに隣接する次の゚ッゞを远加する必芁がありたす。その䞀方の端はベヌスの端ず䞀臎し、もう䞀方の端はLたたはRのいずれかの点です。実際、2぀のオプションのどちらが正しいかを決定する必芁がありたす。 右偎から始めたしょう。 最初の候補は、ベヌスに察しお右回りの角床が最小のRR゚ッゞを持぀ベヌスの右端に関連付けられたポむントになりたす。 次の候補は、図に瀺されおいるように、ベヌスの右頂点に接続されたポむントRであり、ベヌスに察しお盞察的に角床が倧きくなるRR゚ッゞを持ちたす。











次に、候補者ごずに2぀の条件を確認する必芁がありたす。



  1. ベヌスず候補ずの間の角床は180床を超えおはなりたせんベヌスの「䞊」にあるポむントにのみ関心がありたす。
  2. ベヌスず候補点を囲む倖接円には、次の候補点が含たれおいおはなりたせん。












頂点の構成に応じお、いく぀かのオプションがありたす。













圓然、巊半分のプロセスは完党に察称的です。











したがっお、新しいLR゚ッゞが远加されるたびに、巊半分ず右半分から候補点を遞択したす。 そこに適切なポむントがなかった堎合、合䜵を完了したので、スタックをさらに䞊に移動する必芁がありたす。 1぀のポむントがある堎合巊偎のみ、たたは右偎のみ、LR゚ッゞを远加し、その䞭に端を远加したす。 点が䞡偎で芋぀かった堎合、円を䜿甚しおテストを繰り返したす。ベヌスずLずRから候補点を囲む倖接円を䜜成したす。円の反察偎から候補が含たれおいない点を遞択したす。 事実4぀の頂点のみが長方圢を圢成しない堎合、そのような点は垞に䞀意になりたす。 この堎合、任意のオプションを遞択できたす。











この䟋では、察応する円にRからの候補点が含たれおいないため、Lから候補を遞択したす。



新しいLR゚ッゞが远加されるず、新しい「ベヌス」になりたす。 凞包の䞊端に到達するたでベヌスの曎新を繰り返したす。









アルゎリズムが説明されたルヌルに泚意深く埓っおいる堎合、巊右の半分のマヌゞの埌、L∪Rの有効なDelaunay䞉角圢分割が埗られるこずがわかりたす。



「これに぀いお本圓に玠晎らしい蚌拠を芋぀けたしたが、この本の䜙癜は圌にずっお狭すぎたす。」 実際、たずえば゚ッゞを削陀する必芁性など、すべおのステヌトメントがどこから来たかに興味がある堎合は、数字9.2、9.3、9.4、8.3の䞻芁な補題であるGibasずStolphiの䜜業を調査するこずをお勧めしたす。



それでは、すべおをたずめお、䜕が起こるか芋おみたしょう。











これは私が埗たアルゎリズムの芖芚化です。 ここでは、ベヌス゚ッゞはオレンゞ色でマヌクされ、LL候補は緑、RR候補は青です。 基準2を満たさず、削陀されるリブは赀でマヌクされたす。



アルゎリズムの説明はただメモリに保存されおいたすが、実際に䜕をするのかを理解するのは非垞に簡単です Onlogn 。 確かに、順序がありたす logn 合䜵事業; それらのそれぞれで、䞀般的にすべおの゚ッゞを削陀しお再構築するこずを匷制された堎合でも、アクションの数はただ順序のたたです n これは任意のグラフではなく、䞉角圢分割であるため、゚ッゞの数はポむントの数に察しお線圢です。 実際、ほずんどの実際のタスクでは、速床は Onlogn そしお線圢に近い; マヌゞの各段階でアルゎリズムがれロから䞉角圢分割を再構築するために、特に問題のあるデヌタセットが必芁です。



もう1぀の泚意点-埗られた䞉角圢分割から、察応するポむントセットの凞包ずボロノむ図の䞡方を簡単に取埗できたす。 玠敵なボヌナス。



グラフを操䜜するために䜿甚したデヌタ構造に぀いおいく぀かの蚀葉を蚀うのは興味深いです。 通垞、グラフはリストたたは隣接行列ずしお衚されたすが、この問題では、接続性だけでなく、グラフのいく぀かの幟䜕孊的特性にも関心がありたす。 ここに私が埗たものがありたす



 struct TriEdge { uint16_t origPnt; // index of edge's origin point EdgeIdx symEdge; // index of pair edge, with same endpoints and opposite direction EdgeIdx nextCcwEdge; // next counterclockwise (CCW) edge around the origin EdgeIdx prevCcwEdge; // previous CCW edge around the origin (or next CW edge) };
      
      





これは、GibasずStolphiが提䟛する構造のやや切り捚おられたバヌゞョンです。 圌らが蚀うように、すべおの独創的なこずは簡単です。 各゚ッゞに察しお、「原点」ずなるポむント、反察方向に向けられたペアの゚ッゞのむンデックス、および原点の「呚囲」の前埌の゚ッゞのむンデックスを保存したす。 実際、二重にリンクされたリストを取埗したすが、端の呚りの゚ッゞの盞察的な配眮を維持するため、アルゎリズムの倚くのステップは単玔に゚ンコヌドされたす。



他のいく぀かの䜜品は、゚ッゞではなく䞉角圢を保存するこずを提案しおいたす。 このオプションを詊しおみたしたが、コヌドの量が倧幅に増加したず蚀えたす。 特別な堎合退化した䞉角圢、無限遠のポむントなどには、倚くの束葉杖を導入する必芁がありたす。 このオプションにはメモリ䜿甚量の点で朜圚的な利点がありたすが、二重にリンクされた゚ッゞリストを䜿甚するこずを匷くお勧めしたす。 圌らず䞀緒に働くこずは、はるかに楜しいです。



これからは、誰かがアルゎリズムの実装の詳现に興味を持っおいるふりをするのをやめるこずができるず思いたす。 リラックスしお、これらの玠晎らしいアニメヌションに固執するこずができたす。











通垞のグリッドはどうですか











ここでは、ポむントはサブセットに正垞に分割され、゚ッゞをたったく削陀する必芁がありたせんでした。 しかし、これは垞に起こるずは限りたせん。











もうおもしろい。 栌子の偎面の点の数は奇数になり、このため、アルゎリズムはかなりの数の修正を匷制されたす。 ドットの円はどうですか











おもしろい しかし、私は䞭心に点があるよりそれが奜きです











この時点で、蚘事には十分なGIFが含たれおいるず思いたす。 この蚘事をダりンロヌドした埌、 トラフィック制限のある読者が少なくずも少しむンタヌネットを利甚できるようにするために、残りのアニメヌションをビデオホスティングにアップロヌドしたした。



1080pず60fpsに固執するこずをお勧めしたす。これはビデオの元の解像床です。 そしお、党画面衚瀺に拡倧するこずをお勧めしたす。そうしないず、グラフの端が゚むリアスされたす。







これらのビデオに誰もが興味を持っおいるわけではないこずを理解しおいたすが、叀いバヌゞョンのWindowsの「パむプラむン」スクリヌンセヌバヌず同じ効果を私にもたらしたす。 壊すのは難しいです







これらのアニメヌションは、この蚘事が長い間曞かれおきた䞻な理由ずなっおいたす。 自己ぞの泚意次回、デバッガヌずトレヌスを行い、デバッグの芖芚化を行うのは危険です:)他のポむント構成でアルゎリズムが動䜜するこずを確認したい堎合は、コメントを曞いおください。喜んでアニメヌションを生成したす。







芖芚化を楜しんでいるのは楜しかったですが、アルゎリズムが最初に䜜成された理由を思い出しおください。 深床センサヌからのデヌタからポリゎンメッシュを生成したす。 さお、センサヌから点矀を取埗し、カメラの平面に投圱しお、䞉角枬量アルゎリズムを実行したしょう。



このビデオがどれだけレンダリングされたかを聞かないでください。貧匱なffmpeg。



すごい この段階ではポむントず゚ッゞのグラフしかありたせんが、基本的な方法で䞉角圢の配列を生成できたす。 オブゞェクトの境界で発生するZ座暙に匕き䌞ばされたfilterいポリゎンをフィルタリングし、OpenGLで単玔なプレヌダヌを䜜成するためにのみ残りたす。







ここでは、グラバヌの最初のバヌゞョンが非垞に未加工であったこずがはっきりずわかりたす。これは、画像がフリヌズするため、フレヌムの半分に蚘録する時間がありたせんでした。 芁するに、ほずんど監督の傑䜜ではありたせん。 しかし、それは問題ではありたせん-アルゎリズムが぀いに実珟したした 私にずっおそれは本圓の「列車到着」でした



その埌、私はさらに2、3のビデオを撮圱し、タむムフレヌムアニメヌション圢匏でSketchfabリ゜ヌスにアップロヌドしたした。これはもっず面癜いず思いたす。



WebGLのデヌタセット2

WebGLのデヌタセット3



さお、パむプラむンは機胜し、鉄の可胜性によっおさらなる開発が制限されおいるこずが明らかになりたした。 実際、Tangoタブレットでは、非垞に䜎いフレヌムレヌト5 fpsでのみ撮圱できたすが、䞻なアむデアはシヌンの動的な性質をキャプチャするこずでした。 もう1぀の重芁な制限がありたす。TangoはRGBカメラずIRカメラを同期したせん。぀たり、フレヌムは異なる時点で受信されたす。 これは、静的オブゞェクトのスキャンなどでは重芁ではありたせん。なぜなら、 Tango SDKを䜿甚するず、高呚波加速床蚈ず魚県カメラに基づいた組み蟌みの远跡機胜を䜿甚しお、隣接フレヌムのRGBポヌズずIRポヌズ間の倉換を芋぀けるこずができたす。 しかし、動いおいるオブゞェクトでは、これはたったく圹に立ちたせん。私にずっおは、同期が取れおいないため、テクスチャをメッシュに匕っ匵るこずができたせんでした。



幞いなこずに、別のデバむス-Intel RealSense R200がありたした 。 奇跡的に、R200には䞡方の欠点がありたせん。 最倧60fpsを開発し、すべおのカメラの優れた同期を実珟したす。 そこで、R200のグラバヌアプリケヌション今回はJavaではなくC ++でを䜜成し、実隓を続けるこずにしたした。



パむプラむンに小さな問題があるこずがすぐに明らかになりたした。 R200で蚱容される解像床ず高い撮圱頻床の増加により、リアルタむムですべおのフレヌムにメッシュを生成するにはパフォヌマンスが十分ではありたせんでした。 プロファむリングは、ボトルネックがもちろん䞉角枬量であるこずを瀺したした。 初期バヌゞョンは、STLを䜿甚するなど、メモリを動的に割り圓おお、かなり「リラックス」しお曞かれおいたした。 さらに、最初のバヌゞョンはfloat型の座暙で動䜜したしたが、私のタスクでは、ポむントは垞に敎数座暙画像内のピクセル単䜍の䜍眮を持ちたす。 だから、挞近性の点で優れたアルゎリズムが私のラップトップでTango玄12,000ポむントを䜿甚したテストフレヌムで最倧30ミリ秒動䜜したのは驚くこずではありたせん。 加速の可胜性は明らかであり、私は熱心に最適化のために座った。 このようなものが開発されたした





これらの3぀のむベントは、フレヌムあたり30,000マむクロ秒から6,100マむクロ秒の非垞に倧きな加速を提䟛したした。 しかし、さらに加速するこずができたした。





合蚈で、コヌドをほが10倍高速化するこずが刀明したしたが、これは制限ではないず思いたす。 ちなみに、Android甚のコヌドを収集するのは面倒ではありたせんでした。同様のタスクARMでは、Tangoプロセッサはフレヌムあたり玄10ミリ秒で動䜜したした。 100 fps 芁するに、それは少しやり過ぎであるこずが刀明したしたが、誰かが非垞に高速な「敎数」ドロヌネ䞉角圢分割を必芁ずするなら、リポゞトリぞようこそ。



これで私のアルゎリズムはR200に察応したした。最初に撮圱したデヌタセットは次のずおりです。







圓然、他の人もそれに続きたした。 OpenGLビュヌアのビデオは添付したせんが、Sketchfabをすぐに芋たほうが面癜いず思いたす skfb.ly/6s6Ar



次のように、䞀床に1぀のクリップのみを開くこずをお勧めしたす。 Sketchfabは、デヌタセットのすべおのフレヌムを䞀床にメモリにロヌドしたす。䞀般に、ビュヌアは非垞に高速ではありたせん。 ずころで、玄束の4D猫Vasyaは次のずおりです。





犬トトシュカは、レヌザヌで茝いおいるこずにあたり満足しおいたせんでした。 しかし、圌には遞択肢がありたせんでした。





Sketchfabアカりントにはさらにいく぀かのクリップがありたす。 もちろん、センサヌからのノむズを慎重にフィルタリングすれば、モデルの品質を向䞊させるこずができ、サむトのプレむダヌがそれほど遅くならないようにポむント数を枛らすこずができたす。 しかし、圌らが蚀うように、完璧に制限はありたせん。 私はすでにこのペットプロゞェクトに倚くの時間を費やしたした。



ずにかく、ARずVRの攻撃的な攻撃を考えるず、開発者がこれらのタスクから泚意を奪うこずはないず確信しおいたす。 CGのようなWebには、より倚くのボリュヌムコンテンツがありたす。













実生掻での撮圱





同意しお、ずおも印象的です 䞀般に、自由芖点ビデオの将来に぀いお心配する必芁はありたせん。



最埌に、このプロゞェクトのために曞かれたすべおのコヌドは、無料ラむセンスの䞋でGithubで利甚可胜であるず蚀わなければなりたせん。 生成された4Dビデオはほずんど印象的ではありたせんでしたが、アルゎリズムはさらに䜿甚および開発される可胜性がありたす。

この蚘事で説明されおいるアプロヌチの䞻な利点は、プレヌダヌ自䜓でリアルタむムに3Dシヌンが生成されるこずです。 このため、圧瞮された圢匏では、ビデオが占めるスペヌスはごくわずかであり、実際には、同様の埓来のビデオずほずんど同じです。



実際、テクスチャには通垞のRGBビデオのみが必芁であり、ポむントの3D座暙はスパヌスデプスマップずしお保存し、既にグレヌスケヌルのビデオファむルに゚ンコヌドするこずもできたす。 したがっお、1぀のフレヌムを3Dでレンダリングするには、2぀のビデオからのフレヌムずいく぀かのメタデヌタカメラパラメヌタヌなどのみが必芁です。 これに基づいお、拡匵珟実のSkypeなどのクヌルなアプリケヌションを䜜成できたす。 察談者は深床カメラを䜿甚し、iPhoneはリアルタむムで、ARKitを䜿甚しお話しおいる3Dヘッドをレンダリングしたす。 スタヌりォヌズのホログラムのようです。



Tangoナヌザヌにずっお䟿利な別のオプションがありたす。 実際、Tango SDKはデヌタを3Dのポむントクラりドの圢匏で提䟛したす䞊蚘で説明したようにが、倚くのアルゎリズムでは高密床の深床マップが必芁です。 これを取埗する最も䞀般的な方法は、焊点面にポむントを投圱し、既知の隣接ポむント間の深床倀を補間するこずです。 したがっお、ドロネヌ䞉角圢分割ずOpenGLの組み合わせにより、この補間を正確か぀効率的に行うこずができたす。 GPUでラスタラむズが行われるため、スマヌトフォンでも高解像床で深床マップを生成できたす。



しかし、これはすべおの歌詞です。 これたでのずころ、この蚘事を远加できたこずを非垞に嬉しく思いたす。 意芋やフィヌドバックがある堎合は、コメントで議論するこずをお勧めしたす。



画像クレゞット






All Articles