前提・実現したいこと
UnityでReal Senseで録画した.bagファイルからデプスデータを一括で取得する方法を教えていただきたいです.
Unity でRealsenseで録画したものを再生POintCloud表示することはできたのですが,
全フレームのデプスを一括で取得したいと思っています.
試したこと
試したこととしては,自分で1からスクリプトを作るのは無理なのでRsDeviceやRspointcloudRendererなどを少し変更し
以下のような方法でList<List<Vector3>>に追加していく方法を取っていました.
RsPointCloudRenderer
1protected void LateUpdate() 2 { 3 4 if (q != null) 5 { 6 Points points; 7 if (q.PollForFrame<Points>(out points)){ 8 using (points) 9 { 10 if (points.Count != mesh.vertexCount) 11 { 12 using (var p = points.GetProfile<VideoStreamProfile>()) 13 ResetMesh(p.Width, p.Height); 14 } 15 16 if (points.TextureData != IntPtr.Zero) 17 { 18 uvmap.LoadRawTextureData(points.TextureData, points.Count * sizeof(float) * 2); 19 uvmap.Apply(); 20 } 21 22 if (points.VertexData != IntPtr.Zero) 23 { 24 points.CopyVertices(vertices); 25 frameVertices.Add(new List<Vector3>(vertices)); 26 27 mesh.vertices = vertices; 28 mesh.UploadMeshData(false); 29 } 30 } 31 } 32 } 33 }
また,最後まで再生されると最初に戻って再生が続くため,以下のコードのような方法で取得を停止させていました.
var playback = PlaybackDevice.FromDevice(this.Source.ActiveProfile.Device); playback.SetSpeed(0.5f); if ( playback.Duration <= playback.Position ) Stop();
ですが,どうもうまく動いておらず毎回実行するたびにListに格納される数がどうも違います.
一括で全フレームのデプスを取得できる方法を知っておられる方がどうかお助けください.
補足情報(FW/ツールのバージョンなど)
Unity 2019.3.5f1
Intel Realsense D435i
Intel® RealSense™ SDK 2.0 (build 2.33.1)
あなたの回答
tips
プレビュー