c# - Unity3D : Performance with multi-camera rendering with a lot of spheric meshes

标签 c# unity3d rendering

我有一个 Unity 3D 场景,其中有多个摄像头看着同一个对象(一个巨大的脑网约 100k tri),但没有必要使用相同的视角。

在同一个 3D 场景中有大量的球形图网格(从 100 到 30000)。

enter image description here

enter image description here

enter image description here

在所有的相机中,我必须用部分绘图网格显示大脑网格。

根据相机 View ,每个绘图可以有不同的大小(网格过滤器和球形对撞机)、不同的 Material (不透明或透明)并且可以可见或不可见。 球形碰撞器必须与网格具有相同的尺寸。

我为每个球形网格设置了一个共同的共享网格。 他们的素材可以是我定义的几种共享素材之一。

在渲染场景之前,对于 OnPreCull 函数中的每个相机 View ,我必须定义哪些图是可见的以及它们的外观。

这部分可能非常昂贵,我尝试了几种方法:

  • 将游戏对象设置为非事件状态:成本太高
  • 将局部比例设置为 vector3(0,0,0) :更好,但我可以看到渲染仍在分析器中完成
  • 设置完全透明的 Material :相同的结果,但在分析器中渲染现在是透明的而不是不透明的
  • 设置一个不在相机图层蒙版中的图层:巨大的脚本成本

我不知道我是否可以制作一个高效的剔除系统,让所有这些相机都看着同一个点......

我欢迎任何新想法。

最佳答案

第一期:

关于您的带有四个点的具体问题。

只需设置 renderer.enabled = false,仅此而已。

但是请注意,正如我在评论中提到的,您永远不会尝试在 Unity 中“剔除自己”(除非我误解了您的描述)。


第二期:

关于小球体。我怀疑你在现场有很多。你根本不能那样做。在视频游戏(所有 3D 工程中最困难的)中,您只需使用广告牌 即可。这就是在场景中说“草”的方式。您可以使用 Unity 中的粒子系统或其他技术很好地实现这一点。实现超出了此答案的范围,但您必须全面调查广告牌。简单地说,它是一个小的平面图像,在渲染 channel 中始终面向相机。


问题 2B:

但是请注意,球体碰撞器 非常棒,您可以使用任意多个。我敢肯定,从基本的数学原因来看,这是显而易见的。旁白:人们通常会尝试“自己编写”,认为这样会更快。不可能超过100? PhysX 空间剔除科学研究的人年,而且他们使用金属,gpu,所以你无法击败它。


问题三:

您是否有可能在项目的某处使用网格 碰撞器?永远不要使用网格碰撞器。 (在 Unity 中提及或使用它们非常令人困惑;它们只有一两个非常具体的有限用途。)


问题四:

我对你为什么打开和关闭东西感到困惑。我有一个猜测。

我怀疑您没有使用多个“阶段”!

当您拥有多个摄像头时,视频游戏有一个惊人的技巧。事实上,你有“屏幕外”的场景!所以你可能有玩家在地牢之类的地方。在“侧面”之外,您可能对其他摄像机的整个运行设置完全重复或三次(如果摄像机转向错误,您可以“看到它”)。 (在这个例子中,你会在分身、着色、 map 风格或任何情况下有不同的品质。)有时你做一个完整的替身只是为了运行物理计算或解决其他问题。

Fascinating extreme example of that sort of thing .

简而言之,在你的情况下,

对于每个相机 View ,您可能需要一个完整的相机“舞台”和大脑!

同样这可以是 http://answers.unity3d.com/answers/299823/view.html但这确实是日常用品。在你的整体场景中,你会看到八个快乐的大脑坐在一排,每个都有自己的相机。在每一个中,您都会显示任何相关的项目/角度等。 (显然,如果某些项目“相同,除了视角不同”,你可以使用“同一个大脑和多个摄像头”:但我不会那样做,最好为每个 View 配备一个大脑一个摄像头.)

我相信这可能是您遇到的根本问题!

关于c# - Unity3D : Performance with multi-camera rendering with a lot of spheric meshes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743360/

相关文章:

c# - BigIntegers 的 ArrayList 到字节数组

c# - 将字符串解析为 Unity3D 中的代码 (C#)

ios - 使用脏矩形优化 OpenGL ES 2.0 2D 绘图

html - Internet Explorer ol 数字出现在 li 的底部而不是预期的顶部

c# - Xamarin - 单击按钮时不断收到 NSInvalidArgumentException

c# - 相对于菜单调整表单内容的问题

c# - 从位图中获取 ImageSource?

c# - 统一: Detect if the Return or Done key was pressed in the native iOS keyboard

c# - OnTriggerEnter() 未调用

javascript - SVG:Windows 和 Linux 上的字体间距非常不同