我想实现一个功能,其中特定区域的颜色将被3d模型拾取。我正在使用vuforia和unity3d并成功实现了目标检测。在下一步中,我想选择图像的颜色并将该颜色放在3d模型上。
很多人已经实现了这个,但我无法找到完整的教程。
我已经厌倦了使用区域Cature,但没有成功。
答案 0 :(得分:2)
我会选择您所在的屏幕区域,然后将其放在Pixel阵列中并平均该阵列。
public Color GetColorFromScreen(int x, int y, int width, int height){
Texture2D tex = new Texture2D(1, 1);
tex.ReadPixels(new Rect(x, y, width, height), 0, 0);
tex.Apply();
Color [] pix = tex.GetPixels(x, y, width, height);
float r,g,b,a;
foreach (Color col in pix){
r += col.r;
g += col.g;
b += col.b;
a += col.a;
}
r /= pix.Length;
g /= pix.Length;
b /= pix.Length;
a /= pix.Length;
return new Color(r,g,b,a);
}
然后抓取模型的材质并应用该颜色
GetComponent<Renderer>().material.color = GetColorFromScreen(x,y,w,h);