前提・実現したいこと
Unityで、ウェブカメラで読み込んだ画像をクリックしてそのクリックしたピクセルの色を取得するというものを作っています。
発生している問題・エラーメッセージ
ウェブカメラで映像を映し出し、クリックしたピクセルのカラーコードを表示するというところまでいったのですが表示しているカラーコードが明らかにクリックしたピクセルの色ではないカラーコードになってしまっています。
この画像は実行してみたところになります。ポインタが指すところをクリックしたところで、右のパネルに取得した色を表示しています。このように、白っぽい部分をクリックしているにも関わらず実際に表示された色はグレーに近い色になってしまっています。
該当のソースコード
以下がこのプロジェクトで使用しているスクリプトのソースコードになります。
WebCameraTest
1using UnityEngine; 2using UnityEngine.UI; 3 4public class WebCameraTest : MonoBehaviour 5{ 6 public RawImage rawImage; 7 8 WebCamTexture webCamTexture; 9 10 11 void Start() 12 { 13 webCamTexture = new WebCamTexture(); 14 rawImage.texture = webCamTexture; 15 webCamTexture.Play(); 16 } 17 18 // Update is called once per frame 19 void update () 20 { 21 22 } 23}
GetColor
1using UnityEngine; 2 3 4public class GetColor : MonoBehaviour 5{ 6 public Color color; 7 private Texture2D tex = null; 8 9 void Start() 10 { 11 tex = new Texture2D(1,1, TextureFormat.RGB24, false); 12 } 13 14 public void Onclick() 15 { 16 Vector2 pos = Input.mousePosition ; 17 tex.ReadPixels(new Rect(pos.x, pos.y, 1, 1), 0, 0); 18 color = tex.GetPixel(0,0); 19 Debug.Log(color); 20 } 21} 22
UpdateColor
1using UnityEngine; 2 3public class UpdateColor : MonoBehaviour 4{ 5 private GetColor getColor; 6 7 void Start() 8 { 9 getColor = GameObject.FindObjectOfType<GetColor>(); 10 } 11 12 // Update is called once per frame 13 void Update() 14 { 15 GetComponent<Renderer>().material.color = getColor.color; 16 Debug.Log(getColor.color); 17 Debug.Log(GetComponent<Renderer>().material.color); 18 string save_1_color = ColorUtility.ToHtmlStringRGB(getColor.color); 19 Debug.Log(save_1_color); 20 } 21}
WebCameraTestおよびGetColorはRawImageに、UpdateColorはPlaneにアタッチしてあります。
補足情報(FW/ツールのバージョンなど)
Unity 2019.2.9f1、VisualStudio2015での開発です。
何卒ご教授のほどよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。