相机中的颜色检测(Unity3D)

时间:2017-03-08 15:28:20

标签: unity3d colors augmented-reality detection

我目前正在Unity中开发一个室内设计增强现实应用程序,我需要检测相机被引导到的墙壁的颜色,但我似乎无法找到解决方案。有什么功能可以帮助我解决问题吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用从摄像机位置到正向的光线投射。请参阅以下代码作为Unity的示例。

void FixedUpdate()
{
    RaycastHit hit;

    if (Physics.Raycast(transform.position, transform.forward, out hit, 100.0f))
   {
        Color color = hit.transform.gameobject.GetComponent<Renderer>().material.color;
        print("Object colour: " + color);
   }

}

RaycastHit变量保存有关光线击中的任何物体的信息(两点之间的不可见线)。您可以通过从渲染器组件获取材质然后从中查找其颜色属性来引用对象颜色。类似的东西:

Color color = hit.transform.gameobject.GetComponent<Renderer>().material.color;

*现在添加到上面的示例中。 请参阅Unity docs =&gt;中的光线投射中使用的完整语法和可能的参数。 Here

希望有所帮助。

答案 1 :(得分:1)

您首先需要创建一个WebCamTexture对象,以开始从设备的相机中提取信息。 These Unity Docs在类的构造函数的 Description 部分解释了如何执行此操作。

完成后,您可以使用GetPixel(x,y)功能获取特定像素的颜色。

此外,由于图像和表面可能存在不完美之处,我建议从纹理中取出多个样本并将它们平均在一起。