re0159vx
@re0159vx

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Unityを使った音声認識での画面キャプチャ

Hololenz2での画面キャプチャの方法ををしえてください

UnityでC#を利用していてます。

現在、研究室でMRを使った建物や山の測長システムを作っています。

測定は音声認識で行うのですが、測定が終わった際にその音声認識によってMRオブジェクトも含めた画面キャプチャをしたいと考えています。
しかし、画面キャプチャを行うC#の関数を見つけられませんでした。
助けてください。

自分で試したこと

    ScreenCapture.CaptureScreenshot(fileName);

を使いましたが特に動作は変わりませんでした。

0

1Answer

通常、ゲームのフレームが終了するのを待つことが望ましいです(すべてのグラフィックが描画されるのを待ってからスクリーンショットを撮るためです)。

次のようにコルーチン関数を作成し、フレームの終了を待つようにできます:

IEnumerator TakeScreenShot()
{
    yield return new WaitForEndOfFrame();
    ScreenCapture.CaptureScreenshot(fileName);
}

その後、次のように関数を呼び出すことができます:

StartCoroutine(TakeScreenShot());

ただし、Unity CaptureScreenshot 関数には多くの問題があることがあります...
したがって、別の代替手段として以下を試すこともできます:

IEnumerator TakeScreenShot()
{
    yield return new WaitForEndOfFrame();
    // 画像をスクリーンから読み取って設定します。
    Texture2D screenImage = new Texture2D(Screen.width, Screen.height);
    screenImage.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    screenImage.Apply();

    // 画像を '.PNG' に変換します。
    byte[] imageBytes = screenImage.EncodeToPNG();

    // 変換された画像をファイルに保存します!
    System.IO.File.WriteAllBytes(fileName, imageBytes);
}

これが役立つことを願っています!

PS. 私は日本語があまり得意ではないので、この投稿はDeepLとChatGPTで部分的に翻訳されました ww

1Like

Your answer might help someone💌