C# Unity3D:使用大量球形网格进行多摄影机渲染时的性能
我有一个Unity 3D场景,有几个摄像头在看同一个物体(一个巨大的大脑网格~100k tri),但不需要使用相同的视角 在同一个3D场景中,有大量的球面图网格(从100到30000) 在所有的相机中,我都要用一部分绘图网格来显示大脑网格 根据摄影机视图的不同,每个绘图可以具有不同的大小(网格过滤器和球体碰撞器)、不同的材质(不透明或透明),并且可以可见或不可见。 球体碰撞器必须具有与网格相同的大小 我为每个球形网格共同设置了一个共享网格。 他们的材质可以是我定义的几个共享材质之一 在渲染场景之前,对于OnPreCull函数中的每个摄影机视图,我必须定义哪些绘图是可见的以及它们的外观 这部分可能非常昂贵,我尝试了几种方法:C# Unity3D:使用大量球形网格进行多摄影机渲染时的性能,c#,unity3d,rendering,C#,Unity3d,Rendering,我有一个Unity 3D场景,有几个摄像头在看同一个物体(一个巨大的大脑网格~100k tri),但不需要使用相同的视角 在同一个3D场景中,有大量的球面图网格(从100到30000) 在所有的相机中,我都要用一部分绘图网格来显示大脑网格 根据摄影机视图的不同,每个绘图可以具有不同的大小(网格过滤器和球体碰撞器)、不同的材质(不透明或透明),并且可以可见或不可见。 球体碰撞器必须具有与网格相同的大小 我为每个球形网格共同设置了一个共享网格。 他们的材质可以是我定义的几个共享材质之一 在渲染
- 将游戏对象设置为非活动:成本太高
- 将局部比例设置为vector3(0,0,0):更好,但我可以看到渲染仍在探查器中完成
- 设置总透明材质:结果相同,但在探查器中渲染的材质现在是透明的,而不是不透明的
- 设置不在摄影机层遮罩中的层:巨大的脚本成本
renderer.enabled=false
,即可
但是请注意,正如我在评论中提到的,你永远不会试图在统一中“挑选你自己”(除非我误解了你的描述)
第二期: 关于小球体。我怀疑现场有很多人。你不能这么做。在视频游戏(所有3D工程中最难的)中,您只需使用广告牌即可。这是说“草”是如何在一个场景中完成的。使用Unity中的粒子系统或其他技术可以很好地实现这一点。实现超出了本答案的范围,但您必须全面调查公告牌。简单地说,它是一个小平面图像,在渲染过程中始终面向摄影机
问题2B: 但是请注意,球体碰撞器非常棒,您可以使用任意数量的碰撞器。从基本的数学原因来看,我确信这是显而易见的。小贴士:人们常常试图“写自己的”,认为这样会更快。不可能超过100?在PhysX进行了数人年的空间筛选科学研究,而且他们使用的是金属gpu,所以你无法打败它
问题三: 您是否有可能在项目的某个地方使用网格碰撞器?绝对不要使用网格碰撞器。(在Unity中提到或使用它们是非常令人困惑的;它们只有一个或两个非常特定的有限用途。)
问题四:
我不明白你为什么要打开和关闭东西。我猜 我怀疑你没有使用多个“阶段”! 当你有一个以上的摄像头时,视频游戏有一个惊人的技巧。事实上,你有“屏幕外”的场景!所以你可能有玩家在地牢或类似的地方。关闭“侧边”,你可能会有一个完整的重复或三次设置运行整个事情(你可以看到它,如果相机转错方向)为其他相机。(在本例中,你会在doppleganger、着色、贴图样式或其他任何情况下拥有不同的质量。)有时,你只为了运行物理计算或解决其他问题而制作一整双 简言之,在你的情况下 你可能需要一个完整的“阶段”的相机和大脑的每个相机视图! 同样,这是可能的,但它确实是每天的事情。在你的整个场景中,你会看到八个快乐的大脑排成一行,每个人都有自己的相机。在每一个项目中,您将显示任何相关的项目/角度等。(显然,如果某些项目是“相同的,但视角不同”,你可以使用“同一个大脑有多个摄像头”:但我不会这样做,最好是一个大脑,每个视图一个摄像头。)
我相信这可能是你面临的根本问题 嗨,你能解释一下什么是“球面网格”吗?请附上第二张和/或第三张图片,详细说明这些内容。请在游戏视图中的特写镜头和编辑器视图中的特写镜头中显示一个。我不明白为什么要进行筛选:Unity包含了极好的筛选,并且无论如何都不可能编写更快的筛选。当然,在某些情况下,你必须“打破某些东西”。经典的例子是假设你有一条2公里长的跑道。显然,你必须把它分成100米的20段,否则不管怎样,它都会被画出来!但这是不言而喻的。一旦你打破它,没有什么能做得更好的工作,联合扑杀。剔除引擎太棒了。请注意,你提到了“碰撞器”,我看不出有任何理由你会在这个项目中使用碰撞器,请解释,如果我误解了。它们有什么用途?球形网格只是一个游戏对象,它有一个生成的球体作为网格过滤器,还有一个半径为1的球体碰撞器。我必须能够单击每个球体以显示信息并执行一些ROI操作。我谈到了剔除,因为我发现在场景中没有可见球体的情况下,我可以在探查器中看到大量渲染工作,这令人怀疑。(添加图像)我已经尝试过了,但是为每帧启用和禁用渲染器1到5次(对于每个摄影机)需要花费大量时间。但是谢谢你关于挑选的建议。我不明白你为什么要打开和关闭东西——我有