如何通过让3D对象在不同的​​相机中进行不同的渲染来模拟多个传感器

时间:2019-04-06 01:48:47

标签: unity3d camera rendering

我正在尝试找出如何使对象在不同的​​相机中呈现不同的图像。

我遇到这样的情况,我们在主摄像机中具有可见光渲染,但是玩家控制的对象可能具有多个传感器,每个传感器由一个摄像机表示。

例如,我们可能有:

  • 红外摄像机可以在红外层上看到目标发出的光,其颜色取决于物体的温度
  • 一种雷达,它具有自己的定向光,并且只能在RF层上看到与自己的光颜色相同的颜色,并且基本上是旋转的垂直狭缝相机。
  • 一种声音传感器,可以“看见”目标物体直接发出的“光”,以及从声音层上的其他硬表面反射回来的光。
  • 无线电测向仪,可以看到RF层上所有颜色的光
  • 一个IFF /识别传感器,它可以看到运动物体上的条形码(二维条形码的读取能力比神经网络以更少的处理资源来模拟形状识别,同时保持了对新物体身份的不确定性,直到被分析之前都可以看到物体)

我们还可能有各种传感器技巧,例如雷达ECM,可以通过将假物体放置在“雷达摄像机”的视场中来模拟。

这些传感器的输出 可能会被玩家查看,但预期将由玩家实现的AI例程使用。

我的场景是3D,但也可以应用于2D。

所以...

处理所有这些不同的相机和渲染的最佳方法是什么?我想使游戏对象尽可能简单,并最大程度地减少编码和CPU开销。

一些渲染必须根据目标物体所做的改变而改变-移动或发射武器可能会产生热量和声音,IFF会因掩盖而变得复杂,雷达可能会因吸收雷达的材料,干扰和形状而变得复杂减小雷达的横截面等等。

修改

这些不同的渲染将需要同时可用,就好像通过所有传感器查看同一场景一样,每个传感器摄像机都需要适当地渲染。

1 个答案:

答案 0 :(得分:0)

编辑

鉴于您在下面的评论,在我看来,您要提出的问题不清楚。

要回答评论:

根据需要设置任意数量的相机,并将每个相机设置为“渲染到纹理”。

您将需要为每个摄像机创建一个RenderTexture。

现在,每个摄像机都会将其数据实时地馈送到纹理,您可以随心所欲地处理这些纹理。

编辑

要找到几种不同的传感器结果的简单解决方案是找到一些可以产生所需效果的着色器。

您可以尝试以下着色器:

https://github.com/paganini24/ShaderExperiment

我想象中的声音传感器将很难制造,但是我认为探索Unity的AudioSource和AudioPlayer组件是一个很好的起点。如果您可以获取声音的音量/音调带来的输出,并将其与发出声音的位置耦合起来,则可以将其映射到全屏UI纹理。

对于声音传感器不是硬性解决方案,但希望可以为您指明正确的方向。