2016-02-09 2 views
0

Я хочу реализовать функцию, в которой цвет определенной области будет выбран 3D-моделью. Я использую vuforia и unity3d и успешно реализовал обнаружение цели. На следующем шаге я хочу выбрать цвет изображения и поместить этот цвет на 3d-модель.Окраска 3d-модели Vuforia Unity

Многие люди уже реализовали это, но я не могу найти полное руководство по этому вопросу.

Я устал использовать регион Cature, но не удался.

ответ

2

Я бы взял область экрана, после которой вы поместили ее в массив пикселей и усреднили этот массив.

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); 
+0

довольно ловкий ... – Fattie

+0

Этот человек гений! @Everts –

Смежные вопросы