2017-03-08 22 views
0

我目前正在Unity中开发室内设计增强现实应用程序,并且需要检测摄像头指向的墙的颜色,但我似乎无法找到解。有什么功能可以帮助我解决我的问题吗?十分感谢!Camera(Unity3D)中的颜色检测

+0

通过相机,你的意思是你的手机的物理?如果你的相机“拍摄”一个物体,你想知道它的颜色,是什么意思? – Hellium

回答

0

您可以使用从摄像机位置到前进方向的光线投射。作为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文档中的raycast中使用的完整语法和可能的参数=>Here

希望有所帮助。

+0

嗨,我收到一个错误“unityengine.raycasthit不包含游戏对象的定义” – Sarah

+0

hit.transform.gameobject是格式我会更新答案 –

+0

在哪里喊我把这段代码? – Sarah

0

您首先需要创建一个WebCamTexture对象以开始从设备的相机中提取信息。 These Unity Docs说明如何在中说明该类的构造函数的部分。

完成之后,您可以使用GetPixel(x,y)函数获取特定像素的颜色。另外,由于可能存在图像和被观察表面的不完整性,我建议从纹理中取多个样本并将它们平均。

+0

嗨,我使用kudan开发我的AR应用程序,我不知道如何添加webcamtexture。你有什么想法如何做到这一点? – Sarah

+0

@Sarah哦!如果您使用Kudan,我会建议他们的[Wiki入门](https://wiki.kudan.eu/Main_Page)。进入该链接,进入“Unity插件”下的链接,当你完成[截图截图](https://wiki.kudan.eu/Taking_a_Screenshot)部分时,你会知道你的一切需要知道从相机获取“纹理”,您可以使用它。然后你可以使用'Texture'来代替'WebCamTexture' – Foggzie

+1

非常感谢! @GuntherFox – Sarah