質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3573閲覧

Hololens2にてPhotoCaptureで撮影した写真をTexture2Dに変換してQurdなどに表示させたい

12-ko

総合スコア2

Microsoft HoloLens

Microsoft HoloLensは、マイクロソフト社が開発しているヘッドマウントディスプレイ方式のコンピュータです。拡張現実体験のため透明なレンズを備えています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/06/30 07:07

前提・実現したいこと

MicroSoftの公式ドキュメントにあるPhotoCaptureを利用して、撮影した写真をTexture2Dに変換してから、Qurdなどに表示したい。

発生している問題・エラーメッセージ

下記のコードを用いてアプリを作成し、Unity上で再生したときは実際にPCのカメラで撮影された写真が視界前方にQurdを生成しつつ、表示されました。HolographicEmulationを利用してHololens2で実行した場合も同様にPCのカメラで撮影された写真が表示されました。しかし、これをHololens2にBuildしてHololens2で起動すると、Qurdは視界前方ではなくHeadの位置に生成され、Textureも灰色一色で撮影された写真が表示されることはありませんでした。同ドキュメント内にある撮影した写真をファイルに保存するなどは上手くいったのですが、Texture2Dに変換して表示するのは上手くいきません。説明が拙くわかりづらいかもしれないですが、原因や解決方法を教えていただけると助かります。

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using System.Linq; 4using UnityEngine; 5using UnityEngine.Windows.WebCam; 6 7public class CompressedPhotoCapture : MonoBehaviour 8{ 9 private PhotoCapture photoCaptureObject = null; 10 public Texture2D targetTexture; 11 12 void Start() 13 { 14 15 } 16 17 public void CaptureStart() 18 { 19 PhotoCapture.CreateAsync(true, OnPhotoCaptureCreated); 20 } 21 22 private void OnPhotoCaptureCreated(PhotoCapture captureObject) 23 { 24 Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); 25 targetTexture = new Texture2D(cameraResolution.width, cameraResolution.height); 26 27 photoCaptureObject = captureObject; 28 29 CameraParameters c = new CameraParameters(); 30 c.hologramOpacity = 0.0f; 31 c.cameraResolutionWidth = cameraResolution.width; 32 c.cameraResolutionHeight = cameraResolution.height; 33 c.pixelFormat = CapturePixelFormat.BGRA32; 34 35 captureObject.StartPhotoModeAsync(c, OnPhotoModeStarted); 36 37 } 38 39 private void OnPhotoModeStarted(PhotoCapture.PhotoCaptureResult result) 40 { 41 if (result.success) 42 { 43 photoCaptureObject.TakePhotoAsync(OnCapturedPhotoToMemory); 44 } 45 else 46 { 47 Debug.LogError("Unable to start photo mode!"); 48 } 49 } 50 51 private void OnCapturedPhotoToMemory(PhotoCapture.PhotoCaptureResult result, PhotoCaptureFrame photoCaptureFrame) 52 { 53 if (result.success) 54 { 55 //capture a photo to Texture2D 56 photoCaptureFrame.UploadImageDataToTexture(targetTexture); 57 58 GameObject quad = GameObject.CreatePrimitive(PrimitiveType.Quad); 59 Renderer quadRenderer = quad.GetComponent<Renderer>() as Renderer; 60 quadRenderer.material = new Material(Shader.Find("Unlit/Texture")); 61 62 quad.transform.parent = this.transform; 63 quad.transform.localPosition = new Vector3(0.0f, 0.0f, 3.0f); 64 quadRenderer.material.SetTexture("_MainTex", targetTexture); 65 } 66 else 67 { 68 Debug.Log("Failed to save Photo to memory"); 69 } 70 71 photoCaptureObject.StopPhotoModeAsync(OnStoppedPhotoMode); 72 } 73 74 private void OnStoppedPhotoMode(PhotoCapture.PhotoCaptureResult result) 75 { 76 photoCaptureObject.Dispose(); 77 photoCaptureObject = null; 78 } 79} 80

補足情報(FW/ツールのバージョンなど)

Unity:2019.4.15f1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

どうやら表示する際の適切な写真のサイズなどがPCを使った時とHololens2では違うらしく、これを合わせることにより解決できます。

投稿2021/08/30 07:55

12-ko

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshio005

2023/02/12 07:00

突然すみません。私も同じような状況に陥っており、困っているのですが、よろしければ具体的な解決方法やソースコードを教えていただけないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問