着色3d模型Vuforia Unity

时间:2016-02-09 04:28:04

标签: image unity3d 3d textures vuforia

我想实现一个功能,其中特定区域的颜色将被3d模型拾取。我正在使用vuforia和unity3d并成功实现了目标检测。在下一步中,我想选择图像的颜色并将该颜色放在3d模型上。

很多人已经实现了这个,但我无法找到完整的教程。

我已经厌倦了使用区域Cature,但没有成功。

1 个答案:

答案 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);