今朝、Tango Core の「H」アップデートで、Unity SDK が深度データから返された「null 以外の」color_image を認識していることに気付きました! 進捗!
しかし、900バイトのデータしか入っていませんか? かなり小さい画像になります。:)
Tango チーム : C#/Mono で IntPtr にアクセスする方法が間違っているのでしょうか、それとも Unity で color_images を実際に取得するにはまだ時期尚早なのでしょうか?
コード:
保護されたオーバーライド void _OnDepthAvailable(IntPtr callbackContext, TangoXYZij xyzij) {
try {
if(xyzij.color_image != null){
Debug.Log ("_OnDepthAvailable: Copying image");
//IntPtr timage = xyzij.color_image;
Debug.Log ("_OnDepthAvailable: Copying image 700");
//1280x720x3
int maxsize = 1280*720*4;
// stackoverflow の質問で、C API からの予想される画像が 1280x720x3 (? または 4=RGBA?) であるという言及を見つけました。 // maxsize = 900;
lastimage = new byte[maxsize];
for(int i=0;i<1280;i++){
byte b = Marshal.ReadByte(xyzij.color_image,i);
Debug.Log ("_OnDepthAvailable: i:"+i+" checking color_image: "+ b);
}
// 深度取得ごとに 899 までの Debug.Log 出力を取得します...
Marshal.Copy(xyzij.color_image,lastimage, 0, maxsize);
// 私の Marshal.Copy は、maxsize の値が 900 を超えると失敗しますが、900 で問題なく実行されます
Debug.Log ("_OnDepthAvailable: Copying image 709");
string strRequest = Encoding.UTF8.GetString(lastimage);
// エクスポートされる文字列かどうかを確認しようとしましたが、空白でした...
ここで何が欠けていますか?