Scene Management --- Culling

Unity - 搬砖日志 - Occlusion Culling 关闭动态遮挡剔除 Renderer.allowOcclusionWhenDynamic = false 上面的测试数据是基于 小米5 真机上测试的 可以看到 Profiler : PlayerLoop/PostLateUpdate.FinishFrameRendering/Camera.Render/Culling/SceneCulling/CullSendEvents/WaitForJobGroupID/CullSceneDynamicObjects/CullDynamicObjectsWithUmbra 的消耗是有一部分的,消耗了 3.12 ms 然后上图是通过脚本遍历大部分 Renderer ,并设. 阅读详情

Scene Management --- Culling

仅供个人学习使用,请勿转载,勿用于任何商业用途。 

 

   上次说到场景很大,物体很多时,每帧都把所有物体传递给渲染系统是不可能的。考虑到所见区域只是场景中的一小部分,因此,剔除视野之外的物体,就显得尤为重要,也就是常说的裁剪。本质上,裁剪算是碰撞检测的一部分,通过碰撞检测判断物体是否在视锥之内,但他和游戏里一般的碰撞检测还是有很大区别的,所以不能混为一谈。当然,上次一的引擎流程图也稍稍进化了一点:


    具体如何实现裁剪的过程呢?假设1w×1w米的区域内有1w个物体,最初级的算法就是遍历1w个物体,计算他们是否与视锥相交。非常不幸的是这个过程同样非常缓慢,也许只能让我们的程序从n spf(seconds per frame)提升到1或者2fps。于是有聪明人发现把整个区域细分为n个子区域,只要子区域在视锥之内,那么子区域内的物体也必然可见,这种分割方法通常称为均匀网格(uniform grid)。对均匀网格来说,决定网格的大小是个难题,如果把场景细分为1×1的区域,那么相比最初的方法,几乎没有改进。而如果子网格太大,当整个视锥都在某个网格内,或者与网格相交时,仍然必须计算子网格内的每个物体是否在视锥内,最不幸的情况下,也许恰好1w个物体都在这个子区域中,那么性能依然很糟。所幸这样的情况很少发生,所以总的来说,均匀网格在效率上有了很大提升。

    按照细分网格的思想,完全可以对子网格进一步进行细分,所以类似四叉树,八叉树等等的空间划分算法被引入了裁剪。为了简单,下面仅以四叉树为例。显然,四叉树解决了均匀网格划分粒度大小的问题,它的多级层次划分,既能保证让大量物体迅速被剔除,又能保证裁剪精度。

    四叉树非常适合户外场景(比如wow大部分主城以外的区域),但对于室内场景,地下城,或者物体相互遮挡非常严重的室外场景(比如城市),却有些力不从心。四叉树对空间所有方向进行划分,而室内场景/地下城通常只沿几个方向延伸(区域a---区域b---区域c),户外城市虽然方向均匀,但遮挡严重,处在视锥内的物体并不一定是可见的。
 
    Portal也许是室内场景最好的划分方法:把空间分为大量相连的区域,并且预计算出在某个区域内可以看到的其他区域,比如在A方间内只能看到走廊B,那么显然其他区域内的物体就不用渲染了。这种裁剪过程更像是数据库查询而不是碰撞检测,效率非常高。但预计算可见性的过程却非常麻烦,而且对关卡设计的要求也很较高,我们希望在某个区域内可看到的额外区域尽可能少(比如1个),同时又要保证关卡的合理性,艺术性。
 
    对城市来说,视锥内物体的可见性计算也非常重要,比如NFS这样的游戏,视锥内的物体也许非常之多,真正可见的却只有临街的那些。于是有了遮挡剔除(Occlusion cull)的概念,计算某个物体是否被其他物体挡住。概念虽然很简单,但相对前面几种裁剪方法,实现起来要复杂的多,超出了本文讨论范围。
 
    现在到了最有趣的部分,我们可以把上面几种算法组合起来!比如在最高层次,把世界划分为较大的匀网格(比如500×500),这样的分割除了能快速裁剪大部分区域外,还让我们获得了动态加载场景的功能,1w×1w的区域内,只加载潜在可视范围内的n*n个子网格,随着视点的移动,不停加载/卸载子区域。接下来,为了保证裁剪的高效,对每个子网格再进行四叉树细分。更进一步,如果是室内场景,四叉树节点内可以包含portal节点,最后,如果protal节点所占的空间区域很大,还能继续用四叉树或者Occlusion cull细分对protal节点细分!实现细节上,只要保证所有方法都继承于Culler,我们可以派生出任意多种可互相嵌套的裁剪算法。

     最后还要说一点,如果某个物体既在视锥之内,又没有被遮挡,那是否就一定要渲染它呢?考虑视锥内一把离观察者很远的杀猪刀:),也许投影光栅化之后,它只占屏幕中的几个像素,观察者完全无法分辨究竟是杀猪刀还是指甲剪。这种情况下,完全可以忽略这个物体。最简单的方法:用物体的包围盒面积与观察者之间距离的关系来作为参考。

 
      下一次,将是关于碰撞检测的内容,to be continue………………

 

 

Unity VR开发入门:从零构建沉浸式交互场景 虚拟现实(VR)技术通过计算机模拟三维环境,为用户提供沉浸式体验,其核心在于实时渲染与自然交互。Unity引擎作为行业领先的实时3D开发平台,通过其组件化架构和C#脚本,为构建VR应用提供了强大的基础。XR Interaction Toolkit等框架进一步抽象了硬件差异,让开发者能聚焦于交互逻辑与用户体验设计。掌握从场景搭建、物理交互到性能优化的全流程,对于开发教育、模拟训练、娱乐等领域的VR应用至关重要。本文以Unity和XR框架为基础,详细解析了VR开发中物体抓取、传送移动、UI交互等核心机制的实现原 阅读详情

相关推荐

Unity XR与SteamVR兼容性实战:从异常诊断到性能优化

在虚拟现实(VR)应用开发中,Unity引擎的XR插件框架为开发者提供了对接各类硬件设备的统一接口,其核心原理是通过抽象层管理输入、追踪与渲染管线。这一设计极大提升了跨平台开发效率,其技术价值在于降低了VR内容的创作门槛并确保了基础体验的一致性。然而,当这一标准化接口与SteamVR这类功能强大但生态独立的运行时平台结合时,版本迭代、配置冲突与输入系统迁移等问题便成为高频痛点,具体表现为XR初始化失败、手柄追踪异常及UI交互失灵等典型开发障碍。本文聚焦于Unity XR与SteamVR集成过程中的这些常见异

weixin_30920597的博客 673

场景削减python代码

场景削减与Python代码 在软件开发中,尤其是在游戏开发和复杂应用中,场景管理是一个非常重要的部分。场景削减(Scene Culling)是一种优化技术,用于提高渲染效率和处理能力,确保只有可见的场景元素被处理和渲染。本文将深入探讨场景削减的概念及其在Python中的应用,同时提供代码示例和流程图。 什么是场景削减 场景...

weixin_40224920的博客 193

Unity3D场景构建核心:从坐标系到性能优化的完整工作流

在3D游戏开发与交互内容创作中,场景构建是连接创意与实现的核心环节。其原理基于对三维空间坐标系、变换矩阵与层级管理的深刻理解,这决定了虚拟世界的空间逻辑与物件组织方式。掌握这套底层逻辑的技术价值在于,它能确保资源导入、光照烘焙、摄像机控制等关键流程的准确性,从而直接影响最终作品的视觉表现与运行性能。无论是开发Unity3D游戏项目,还是处理SolidWorks模型导入、实现UGUI动态交互等具体应用场景,稳固的空间概念都是避免物体穿模、坐标错乱、性能瓶颈等问题的基础。本文聚焦Unity3D视频流、动态照片墙

weixin_34288121的博客 386

Unity找不到SceneManager

需要在头文件中添加一行: using UnityEngine.SceneManagement; 然后自动补全里就有了

谢谢爱放鸽子的博客 4161

Unity3D从入门到精通:中文开发者全攻略与实战避坑指南

在游戏开发与实时3D内容创作领域,Unity引擎因其跨平台特性和强大的组件化架构,已成为行业标准工具之一。其核心原理基于实体组件系统(ECS)设计思想,通过GameObject与Component的组合,实现了高度的灵活性与复用性。掌握Unity不仅意味着能实现功能,更在于构建高性能、可维护的工程解决方案,这对于开发高质量游戏及AR/VR、工业仿真等应用具有关键价值。在实际开发中,资源管理与性能优化是区分业余与专业的分水岭,例如使用Addressable资源系统进行精细化资源加载与热更新,能有效解决包体膨胀

weixin_33709609的博客 421

PICO Unity XR Integration SDK v207接入实战:从导入到真机调试的完整指南

在Unity VR开发中,XR Management已成为连接主流头显与引擎的标准架构,它通过Provider插件模式让设备接入从“霸占项目”转向“即插即用”。PICO Unity XR Integration SDK v207正是基于这一架构演进的关键版本,它兼容Unity 2020.3与2021.3 LTS,并在Gradle构建、手柄输入、触觉反馈等环节提供了更统一的接口。理解这套SDK的核心原理,不仅能高效完成PICO 4与Neo 3的真机调试与性能优化,还能为跨平台移植预留设计空间。实际项目中,开发

weixin_31881651的博客 224

Unity2D The name ‘SceneManager‘ does not exist in the current context 解决问题(学习自用)

但出现问题The name 'SceneManager' does not exist in the current context。使用的是unity2022.3.8,创建脚本后输入加载场景等代码如下。经过检查问题后发现是因为在头文件没有定义。

shisan_6713的博客 1130

SceneManager插件

Scene Manager提供了2个场景的概念:Screen和Level Screen:即相互之间没有关联的场景模块(例如登陆场景,主菜单场景,游戏场景之间的关系),其之间并没有严格的先后关系,更接近于Unity3d中Scene的概念 Level:即游戏场景中的关卡模块,有一定的先后关系,并且逻辑相同,Scene Manager为Level提供了一些关卡关系的方法,包括当前关卡,上一个关卡,关卡状态,参考 SMLevelProgress 类

More on Scene Management

More on Scene Management 仅供个人学习使用,请勿转载,勿用于任何商业用途。 相信很多人都看过Tom Forsyth那篇著名的文章<<Scene Graph – just say no>>。我第一次看时,只觉得是Tom开的一个小玩笑。不过最近,随着对scene management研究的深入,感觉对于大多数游戏来说,scene grap...

weixin_30950237的博客 86

基于STM32F4的NRF24L01驱动程序

基于STM32F4xx的NRF24L01驱动程序 提示:硬件平台基于STM32F427VIT6、NRF24L01模块 文章目录基于STM32F4xx的NRF24L01驱动程序前言一、NRF24L01简单介绍1,什么是NRF24L012,NRF24L01通信方法3,NRF24L01通信原理4,地址分配&通道分配问题二、STM32CubeMX配置三、添加底层文件1,添加.c/.h文件到工程中2,使用说明四,下载 前言 提示:本例程采用STM32CubeMX配置底层,采用硬件SPI方式驱动NRF24

qq_43603289的博客 2813

西门子博图编程:使用S7-1500冗余PLC 建立ModbusTCP通信

文章目录1.1 网络结构1.2 系统 IP 介绍1.3 Modbus TCP 通讯编程1.3.1 CPU 做服务器 1.1 网络结构 以 CPU151 7H 为例, 网络结构示意如下图所示: CPU 1517H 冗余 PLC 有 PROFINET X1 接口和 X2 接口, Modbus TCP 通讯可以将设备(例如 Standard PLC)通过交换机接入到任何网络接口中。如果接入 X1 接口,需要通过交换机接入到 MRP 环网中,但是并不需要支持 H-sync 转发。如果接入 X2 接口,只需要使

2万+

Unity Meta Quest MR开发:Scene API实现虚拟与现实碰撞交互

在混合现实(MR)和增强现实(AR)开发中,实现虚拟物体与现实环境的物理交互是提升沉浸感的核心技术。其原理在于通过设备传感器对环境进行三维重建,生成数字化的空间模型,并转化为物理引擎可识别的碰撞数据。这项技术的价值在于为游戏、虚拟培训、室内设计等应用场景构建了虚实融合的物理基础,极大地增强了用户体验的真实感与交互性。本文聚焦于利用Meta Quest的Scene API进行环境理解与配置,通过动态生成碰撞体,解决了虚拟物体与真实桌面、墙壁等平面进行稳定碰撞检测的关键问题,为开发者提供了从环境扫描到物理交互的

weixin_34006965的博客 392

MIUI升级后录音神秘消失?别慌!手把手教你从Android/data目录找回宝贵录音文件

本文详细解析了MIUI升级后录音文件消失的原因,并提供了从Android/data目录找回录音文件的实用指南。通过技术分析和步骤演示,帮助小米手机用户解决录音文件丢失问题,同时分享预防措施和高级恢复方案,确保重要录音数据安全。

weixin_30696427的博客 281

Unity编辑器新手入门:核心功能与操作指南

Unity作为主流的游戏开发引擎,其编辑器界面是开发者构建3D/2D场景的核心工具。编辑器采用模块化窗口设计,通过Scene视图进行场景编辑,Game视图预览最终效果,配合Hierarchy、Project和Inspector视图实现对象与资源管理。理解编辑器基础原理后,开发者可以高效完成资源导入、场景搭建和脚本交互等核心工作流。对于游戏开发新手,掌握Unity编辑器的视图布局、快捷键操作和资源管理系统,是迈向实战开发的重要第一步。本文基于实际工程经验,详解如何通过视图协同、自定义布局和脚本控制,快速构建可

weixin_34326558的博客 455

Redhawk-SC输入件配置中的5个常见错误及解决方法

本文针对Redhawk-SC功耗与可靠性签核工具,深入剖析了输入件配置中工艺文件错配、DEF文件路径、时序文件格式、电源网络模型及宏模型处理这5个最常见且棘手的错误。文章提供了资深工程师验证过的实战解决方案与检查清单,旨在帮助用户规避风险,提升配置效率与分析准确性,确保芯片签核流程的顺利进行。

earth的博客 233

MLNX_OFED 5.4-3.7.5.0 驱动安装:银河麒麟V10SP2 ARM 内核升级后编译避坑 3 步

本文详细介绍了在银河麒麟V10SP2 ARM环境下安装MLNX_OFED 5.4-3.7.5.0驱动的完整流程,包括内核升级后的驱动兼容性挑战、编译环境准备、分步编译与安装流程以及性能优化与故障排查。特别针对国产化ARM服务器(如华为Atlas系列)提供了实用的解决方案和常见问题处理建议,帮助用户顺利完成mlnx网卡驱动的安装与配置。

weixin_29184075的博客 403

PicoXR与PicoOpenXR深度对比:Unity VR开发技术选型与避坑指南

在Unity虚拟现实(VR)与增强现实(AR)应用开发中,软件开发工具包(SDK)的选择是构建稳定、高性能体验的技术基石。其核心原理在于通过不同的接口抽象层,为开发者提供设备交互、渲染与空间追踪等关键能力。采用标准化SDK的技术价值在于提升代码的可维护性、跨设备兼容性,并为项目长期演进奠定基础,尤其适用于追求技术前瞻性与生态开放性的开发场景。具体到Pico设备生态,开发者主要面临PicoXR集成式SDK与基于OpenXR标准的PicoOpenXR插件两种路径选择。本文聚焦PicoXR与PicoOpenXR的

weixin_33924770的博客 369

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 942

Unity C# VR开发实战:从零构建交互式虚拟现实游戏原型

虚拟现实(VR)技术通过计算机模拟三维环境,为用户提供沉浸式体验,其核心原理在于实时渲染、头部追踪与自然交互。在游戏开发与模拟训练等领域,VR能够创造传统媒介难以比拟的临场感与互动性。Unity引擎凭借其强大的跨平台能力与完善的XR开发框架,已成为实现VR内容创作的主流工具。本文聚焦于Unity C# VR开发实战,详细解析了如何利用XR Interaction Toolkit框架,高效实现物体抓取、物理投掷与UI交互等核心功能。通过一个完整的VR投掷训练室项目案例,阐述了从环境搭建、交互逻辑编码到性能优化

weixin_34248023的博客 394

Claude Code vs Codex实战对比:哪个更适合你的Next.js项目?(含真实案例)

本文通过两个真实的Next.js项目案例,深度对比了Claude Code与Codex在UI实现和业务逻辑构建中的表现。Claude Code在代码质量、设计还原度和架构完整性方面优势明显,适合对可维护性要求高的生产级项目;而Codex则以快速响应和低成本见长,更适合原型开发或内部工具。文章提供了基于项目类型、团队能力和成本效益的详细选择策略。

weixin_29201859的博客 806

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Unity VR看房开发实战:从全景图到交互式3D场景全流程解析

虚拟现实(VR)技术通过计算机模拟三维环境,为用户提供沉浸式体验,其核心原理在于实时渲染与空间定位。在工程实践中,Unity引擎凭借其成熟的XR支持与跨平台能力,成为构建VR应用的主流工具,尤其适用于房地产、教育等需要深度空间感知的领域。本文聚焦于VR看房这一典型应用,深入探讨了基于360度全景图的静态方案与基于3D建模的动态交互方案。通过解析**XR Interaction Toolkit**框架与**URP渲染管线**,文章系统阐述了从场景搭建、交互逻辑到性能优化的全链路实现,为开发者提供了从概念验证到

weixin_34274029的博客 435

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Unity3D数字孪生渲染优化:核心组件调优与性能实战

在实时3D应用开发中,渲染优化是保障流畅体验的核心技术。其原理在于通过减少CPU与GPU的负载,平衡视觉质量与运行效率。对于数字孪生这类高精度、大规模场景的应用,优化的技术价值尤为突出,直接决定了复杂工业模型能否在PC、VR或Web端流畅运行。应用场景广泛覆盖智慧工厂、设备运维和虚拟仿真等领域。本文聚焦Unity3D引擎,深入剖析在数字孪生特定工况下,如何对材质系统、摄像机、光照等核心组件进行重构与调优,并系统阐述经过工业项目验证的渲染优化管线,包括利用光照贴图预计算和GPU Instancing等关键技术

weixin_34413802的博客 501

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

基于Unity Render Streaming与AR Foundation实现低延迟多视角AR直播

实时渲染技术是构建沉浸式数字体验的核心,它通过图形管线将3D模型、光照和纹理逐帧计算并输出为动态图像。其原理在于利用GPU的并行计算能力,在极短时间内完成复杂的图形运算,确保画面流畅。这项技术的价值在于能够驱动游戏、虚拟仿真和数字孪生等应用,提供逼真的视觉反馈。在增强现实(AR)场景中,实时渲染与设备摄像头画面融合,创造出虚实结合的环境。WebRTC作为关键的实时通信协议,为低延迟的音视频传输提供了技术基础,使得远程渲染和交互成为可能。本文聚焦于如何将Unity的实时渲染能力与AR Foundation框架

tyygming的专栏 441
上一篇: Shaders for Game
下一篇: Scene Management --- Collision Detection
soilwork
博客等级 码龄23年 290粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值