C#を使用したUnityフリップテクスチャ

HangulSR

FlipTextureVerticallyMakePhotoでメソッドを呼び出すにはどうすればよいですか?

現在撮っている写真は逆さまになっていて、このテクスチャ反転コードに出くわしましたが、どうやって適用すればいいのかわかりません。

誰かがここで私を助けてくれたら本当にありがたいです!

public static Texture2D FlipTextureVertically(Texture2D original)
{
    Texture2D flipped = new Texture2D(original.width, original.height, TextureFormat.ARGB32, false);

    int xN = original.width;
    int yN = original.height;

    for (int i = 0; i < xN; i++)
    {
        for (int j = 0; j < yN; j++)
        {
            flipped.SetPixel(i, yN - j - 1, original.GetPixel(i, j));
        }
    }

    flipped.Apply();

    return flipped;
}

public string MakePhoto(bool openIt)
{          
    int resWidth = Screen.width;
    int resHeight = Screen.height;

    Texture2D screenShot = new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false); //Create new texture
    RenderTexture rt = new RenderTexture(resWidth, resHeight, 24);        

    // hide the info-text, if any
    if (infoText) 
    {
        infoText.text = string.Empty;
    }
    // render background and foreground cameras
    if (backroundCamera && backroundCamera.enabled) 
    {
        backroundCamera.targetTexture = rt;
        backroundCamera.Render();
        backroundCamera.targetTexture = null;
    }

    if (backroundCamera2 && backroundCamera2.enabled) 
    {
        backroundCamera2.targetTexture = rt;
        backroundCamera2.Render();
        backroundCamera2.targetTexture = null;
    }

    if (foreroundCamera && foreroundCamera.enabled) 
    {
        foreroundCamera.targetTexture = rt;
        foreroundCamera.Render();
        foreroundCamera.targetTexture = null;
    }

    // get the screenshot
    RenderTexture prevActiveTex = RenderTexture.active;
    RenderTexture.active = rt;

    screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);

    // clean-up
    RenderTexture.active = prevActiveTex;
    Destroy(rt);

    byte[] btScreenShot = screenShot.EncodeToJPG();
    Destroy(screenShot);


    // save the screenshot as jpeg file
    string sDirName = Application.persistentDataPath + "/Screenshots";
    if (!Directory.Exists(sDirName))
        Directory.CreateDirectory (sDirName);

    string sFileName = sDirName + "/" + string.Format ("{0:F0}", Time.realtimeSinceStartup * 10f) + ".jpg";
    File.WriteAllBytes(sFileName, btScreenShot);

    Debug.Log("Photo saved to: " + sFileName);
    if (infoText) 
    {
        infoText.text = "Saved to: " + sFileName;
    }

    // open file
    if(openIt)
    {
        System.Diagnostics.Process.Start(sFileName);
    }

    return sFileName;
}
derHugo

スクリーンショットを逆さまにする必要がある理由はよくわかりませんが、たとえば後で呼び出す必要があると思います

screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);

screenShot = FlipTextureVertically(screenShot);

しかし、それを行うためのより効率的な方法があるかもしれません。


たとえば、新しいものを作成するのではTexture2Dなく、すでに気に入っているピクセルのピクセルのみを変更します

public static void FlipTextureVertically(Texture2D original)
{
    var originalPixels = original.GetPixels();

    Color[] newPixels = new Color[originalPixels.Length];

    int width = original.width;
    int rows = original.height;

    for (int x = 0; x < width; x++)
    {
        for (int y = 0; y < rows; y++)
        {
            newPixels[x + y * width] = originalPixels[x + (rows - y -1) * width];
        }
    }

    original.SetPixels(newPixels);
    original.Apply();
}

のように使用します

screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);

FlipTextureVertically(screenShot);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

テキストフィールドをチェックして、C#またはSQLServerストアドプロシージャを使用してアラビア数字をブロックします

分類Dev

サービスファブリックを使用したサービスアーキテクチャ

分類Dev

三角形ストリップを使用した球体のテクスチャリングの問題

分類Dev

フレームバッファを使用したキューブマップテクスチャへのレンダリング

分類Dev

Windows 8.1アプリでC#を使用したジェスチャー

分類Dev

CreateJSを使用したテクスチャパッカートリムスプライト

分類Dev

Unity3D C#で曲線を使用してテクスチャを分割する

分類Dev

C#を使用してマウスクリックとキーボードキーストロークをキャプチャします

分類Dev

Cocos3Dのアルファチャネルを使用したマテリアルテクスチャ

分類Dev

ソケットアーキテクチャを使用したチャットアプリケーション。

分類Dev

ジェネリックインターフェイスを使用したC#キャスト

分類Dev

DirectX.Captureクラス[VB / C#]を使用してWebカメラからスクリーンショットをキャプチャします。

分類Dev

チャンク化を使用したReactSSRアプリのA / Bテスト

分類Dev

Cでのプリフェッチとキャッシュを使用した配列への線形アクセスの最適化

分類Dev

OpenGL C ++を使用したテクスチャへのレンダリング

分類Dev

c#nullチェックを使用したswitchステートメントのリファクタリング

分類Dev

ボタンをクリックして Web カメラから画像シーケンスをキャプチャするための c# コード

分類Dev

型チェックC#を使用したBetterIfステートメント

分類Dev

C#でジェネリックを使用したキャスト

分類Dev

ジェネリックスを使用したクラスのエスプレッソマッチャーの作成

分類Dev

RawCap、Wireshark、および一部のパイプユーティリティを使用したWindowsでのリアルタイムループバックインターフェイスパケットキャプチャ

分類Dev

通知リスナーを使用してスタックされた通知をキャプチャする

分類Dev

OpenGL ES 2.0 /3.0のビットマップを使用したキューブマップテクスチャ

分類Dev

ジェネリックスを使用したC#タイプセーフクローニング

分類Dev

cassandaraを使用したチャット受信ボックスシステムのクエリと削除

分類Dev

BrowserMobProxyを使用してテストトラフィックをキャプチャする

分類Dev

LiipFunctionalTestBundleとフィクスチャを使用した独立した機能テスト?

分類Dev

Json本体を使用したレトロフィットコールのリスト応答のキャプチャ

分類Dev

C#のファイルパスでプリンタージョブをキャッチしますか?

Related 関連記事

  1. 1

    テキストフィールドをチェックして、C#またはSQLServerストアドプロシージャを使用してアラビア数字をブロックします

  2. 2

    サービスファブリックを使用したサービスアーキテクチャ

  3. 3

    三角形ストリップを使用した球体のテクスチャリングの問題

  4. 4

    フレームバッファを使用したキューブマップテクスチャへのレンダリング

  5. 5

    Windows 8.1アプリでC#を使用したジェスチャー

  6. 6

    CreateJSを使用したテクスチャパッカートリムスプライト

  7. 7

    Unity3D C#で曲線を使用してテクスチャを分割する

  8. 8

    C#を使用してマウスクリックとキーボードキーストロークをキャプチャします

  9. 9

    Cocos3Dのアルファチャネルを使用したマテリアルテクスチャ

  10. 10

    ソケットアーキテクチャを使用したチャットアプリケーション。

  11. 11

    ジェネリックインターフェイスを使用したC#キャスト

  12. 12

    DirectX.Captureクラス[VB / C#]を使用してWebカメラからスクリーンショットをキャプチャします。

  13. 13

    チャンク化を使用したReactSSRアプリのA / Bテスト

  14. 14

    Cでのプリフェッチとキャッシュを使用した配列への線形アクセスの最適化

  15. 15

    OpenGL C ++を使用したテクスチャへのレンダリング

  16. 16

    c#nullチェックを使用したswitchステートメントのリファクタリング

  17. 17

    ボタンをクリックして Web カメラから画像シーケンスをキャプチャするための c# コード

  18. 18

    型チェックC#を使用したBetterIfステートメント

  19. 19

    C#でジェネリックを使用したキャスト

  20. 20

    ジェネリックスを使用したクラスのエスプレッソマッチャーの作成

  21. 21

    RawCap、Wireshark、および一部のパイプユーティリティを使用したWindowsでのリアルタイムループバックインターフェイスパケットキャプチャ

  22. 22

    通知リスナーを使用してスタックされた通知をキャプチャする

  23. 23

    OpenGL ES 2.0 /3.0のビットマップを使用したキューブマップテクスチャ

  24. 24

    ジェネリックスを使用したC#タイプセーフクローニング

  25. 25

    cassandaraを使用したチャット受信ボックスシステムのクエリと削除

  26. 26

    BrowserMobProxyを使用してテストトラフィックをキャプチャする

  27. 27

    LiipFunctionalTestBundleとフィクスチャを使用した独立した機能テスト?

  28. 28

    Json本体を使用したレトロフィットコールのリスト応答のキャプチャ

  29. 29

    C#のファイルパスでプリンタージョブをキャッチしますか?

ホットタグ

アーカイブ