我目前正在Unity中开发一个室内设计增强现实应用程序,我需要检测摄像头指向的墙的颜色,但我似乎找不到解决方案。有什么功能可以帮助我解决问题吗?非常感谢!
发布于 2017-03-08 23:54:13
可以使用从摄影机位置到向前方向的光线投射。参见下面的代码作为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 => Here中查看要在光线广播中使用的完整语法和可能的参数。
希望这能有所帮助。
发布于 2017-03-09 02:46:33
您首先需要创建一个WebCamTexture
对象,以便开始从设备的摄像头中提取信息。These Unity Docs在类的构造函数的Description部分中解释了如何做到这一点。
完成此操作后,您可以使用GetPixel(x,y)
函数来获取特定像素的颜色。
此外,由于图像和正在观察的表面可能存在缺陷,我建议从纹理中提取多个样本,并将它们平均在一起。
https://stackoverflow.com/questions/42675356
复制相似问题