【URP】Unity[相机]自定义相机

news/2025/11/25 8:51:31/文章来源:https://www.cnblogs.com/SmalBox/p/19266631

【从UnityURP开始探索游戏渲染】专栏-直达

Universal Additional Camera Data 组件概述

在 Unity Universal Render Pipeline (URP) 中,UniversalAdditionalCameraData 组件是扩展标准相机功能的核心组件,它提供了 URP 特有的相机配置选项。每个 URP 相机都会自动附加这个组件。

自定义相机的主要配置项

渲染类型 (Render Type)

  • Base‌: 主相机类型,可以独立渲染或作为其他叠加相机的基础
  • Overlay‌: 叠加相机,必须附加到 Base 相机上才能工作
  • ScreenSpaceOverlay‌: 屏幕空间叠加,用于UI等元素

堆栈相机系统 (Camera Stack)

  • 允许将多个 Overlay 相机叠加到 Base 相机上
  • 渲染顺序由相机的 Depth 值决定
  • 每个叠加相机可以有自己的清除标志和剔除遮罩

后期处理控制

  • 可以单独启用/禁用后期处理效果
  • 控制抗锯齿方式
  • 设置渲染比例(Render Scale)

高级渲染设置

  • 控制是否渲染阴影
  • 设置Opaque Texture和Depth Texture的生成
  • 配置运动矢量(Motion Vectors)

自定义相机原理

URP 的自定义相机系统基于以下核心原理:

  • 分层渲染架构‌:Base 相机负责基础场景渲染,Overlay 相机提供额外的渲染层
  • 渲染纹理复用‌:URP 会智能地复用中间渲染纹理,减少内存占用
  • 后期处理组合‌:每个相机可以有自己的后期处理效果,URP 会按顺序组合它们
  • 剔除优化‌:URP 会根据相机的视锥体和剔除遮罩优化渲染调用

具体使用示例

创建基础相机并添加叠加相机

// 获取或创建主相机Camera mainCamera = Camera.main;var mainCameraData = mainCamera.GetUniversalAdditionalCameraData();// 设置相机属性mainCameraData.renderType = CameraRenderType.Base;mainCameraData.requiresColorTexture = true;mainCameraData.requiresDepthTexture = true;// 创建叠加相机GameObject overlayCamObj = new GameObject("EffectCamera");Camera overlayCam = overlayCamObj.AddComponent<Camera>();var overlayCamData = overlayCam.GetUniversalAdditionalCameraData();// 配置叠加相机overlayCamData.renderType = CameraRenderType.Overlay;overlayCam.clearFlags = CameraClearFlags.Depth;overlayCam.cullingMask = LayerMask.GetMask("Effects");// 添加到主相机堆栈mainCameraData.cameraStack.Add(overlayCam);

高级自定义相机配置

// 创建特殊用途相机Camera specialCamera = new GameObject("SpecialCamera").AddComponent<Camera>();var specialCameraData = specialCamera.GetUniversalAdditionalCameraData();// 详细配置specialCameraData.renderType = CameraRenderType.Base;specialCameraData.renderPostProcessing = true;specialCameraData.antialiasing = AntialiasingMode.FastApproximateAntialiasing;specialCameraData.antialiasingQuality = AntialiasingQuality.Low;specialCameraData.requiresColorOption = CameraOverrideOption.On;specialCameraData.requiresDepthOption = CameraOverrideOption.On;specialCameraData.stopNaN = true;specialCameraData.dithering = true;// 设置目标纹理specialCamera.targetTexture = RenderTexture.GetTemporary(1024, 1024, 24);

动态修改相机堆栈

// 获取主相机数据var mainCamData = Camera.main.GetUniversalAdditionalCameraData();// 动态添加叠加相机Camera dynamicOverlay = new GameObject("DynamicOverlay").AddComponent<Camera>();dynamicOverlay.GetUniversalAdditionalCameraData().renderType = CameraRenderType.Overlay;mainCamData.cameraStack.Add(dynamicOverlay);// 动态移除叠加相机mainCamData.cameraStack.Remove(dynamicOverlay);

渲染纹理监控系统

  • 创建渲染纹理资源‌在Project窗口右键选择Assets > Create > Render Texture,命名为"SecurityFeed",分辨率设为1024x1024。

  • 配置渲染相机‌创建名为"SecurityCamera"的相机,将SecurityFeed拖入Output Texture属性,调整视角对准监控区域。

  • 显示监控画面‌创建Quad对象并附加材质,将SecurityFeed赋给材质的Base Map,通过主相机观察Quad。

    • 支持多路监控画面切换
    • 通过数组管理不同区域的渲染纹理
    • 可扩展为自动巡逻系统
  • SecurityCameraController.cs

    using UnityEngine;
    using UnityEngine.Rendering.Universal;public class SecurityCameraController : MonoBehaviour {public RenderTexture[] securityFeeds;private Camera securityCam;private int currentFeedIndex;void Start() {securityCam = GetComponent<Camera>();securityCam.targetTexture = securityFeeds[0];}public void SwitchFeed(int index) {securityCam.targetTexture = securityFeeds[index];}
    }
    
  • UICameraStack.cs

    void Start() {var uiCamera = GameObject.Find("UICamera").GetComponent<Camera>();var mainCameraData = Camera.main.GetUniversalAdditionalCameraData();mainCameraData.cameraStack.Add(uiCamera);
    }
    
  • ZoomBlurFeature.cs

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) {if (zoomMaterial == null) return;blurPass.Setup(renderer.cameraColorTarget, zoomMaterial);renderer.EnqueuePass(blurPass);
    }
    

实际应用场景

  • 分屏游戏‌:为每个玩家创建独立的Base相机
  • 画中画效果‌:使用额外的Base相机渲染到纹理
  • UI特效‌:通过Overlay相机添加屏幕空间特效
  • 后处理组合‌:不同相机应用不同的后期处理效果
  • 优化渲染‌:通过禁用不需要的功能提高性能

注意事项

  • 叠加相机的Depth值必须大于其Base相机的Depth值
  • 过多的叠加相机会影响性能,应合理使用
  • 自定义相机的清除标志需要仔细配置以避免意外清除
  • 在VR中,每个相机都会为每只眼睛渲染一次,需特别注意性能
  • 相机堆栈中的顺序会影响最终渲染结果

【从UnityURP开始探索游戏渲染】专栏-直达
(欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/975545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年热门的钢板预处理线厂家最新TOP实力排行

2025年热门的钢板预处理线厂家最新TOP实力排行行业背景与市场趋势随着全球制造业的持续升级和"中国制造2025"战略的深入推进,钢板预处理设备作为金属加工行业的关键装备,市场需求呈现稳定增长态势。据中国…

广西一对一辅导机构口碑之选:2025南宁、柳州、桂林备受好评的补习机构

在广西,从首府南宁的学区房家长到工业重镇柳州的工薪家庭,从山水名城桂林的陪读父母到边境口岸防城港的务工家庭,“孩子偏科严重却找不到对症的老师”、“线下机构收费高效果却参差不齐”、“想了解学习进度还要反复…

2025年优质实木定制橱柜本地优选榜

2025年优质实木定制橱柜本地优选榜行业背景与市场趋势近年来,随着消费升级和居住品质要求的提高,中国定制家居市场持续保持稳健增长。根据中国家具协会最新发布的《2024年中国定制家居行业发展报告》显示,2023年中国…

常见配电方式

2025/11/25常见配电方式配电方式 线色标识 核心特性 选用理由三相五线制(TN-S) 相线(黄 / 绿 / 红)、N 线(淡蓝)、PE 线(黄绿双色) N 线与 PE 线分离,接地可靠、抗干扰强 安全优先级最高,适配工业生产、民用…

小明的Spring Security入门到深入实战

小 明 的 摄 影 网 站 已 经 用 Spring Boot 搭 建 完 成 , 访 客 越 来 越 多 。 他 决 定 给 网 站 加 上 完 整 的 登 录 认 证 鉴 权 功 能 , 让 不 同 角 色…

2025年国内全屋定制推荐优选榜

2025年国内全屋定制推荐优选榜行业背景与市场趋势近年来,随着消费升级和居住理念的转变,全屋定制行业在中国市场呈现出蓬勃发展的态势。据中国家居建材装饰协会最新数据显示,2024年中国全屋定制市场规模已突破5000亿…

广西一对一辅导机构权威榜单:2025年梧州、北海、防城港辅导机构综合实力榜

“耗的不是学费,是孩子转瞬即逝的升学关键期。”梧州万秀区的陈妈妈在家长群的这句吐槽,戳中了无数广西家长的痛点。她的孩子初三英语从110分跌至85分,半年内换了3家辅导机构,结果“专属教案”是网上随处可下的模板…

2025年靠谱的电缆厂家推荐及选购指南

2025年靠谱的电缆厂家推荐及选购指南行业背景与市场趋势随着我国基础设施建设的持续推进和新能源产业的快速发展,电线电缆行业迎来了新一轮增长机遇。据中国电器工业协会电线电缆分会最新数据显示,2024年我国电线电缆…

UDP敲门与零信任机制之间的关系 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

OpenHarmony后台服务开发指南:ServiceAbility与ServiceExtensionAbility全解析 - 指南

OpenHarmony后台服务开发指南:ServiceAbility与ServiceExtensionAbility全解析 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

2025年比较好的光伏线缆厂家实力及用户口碑排行榜

2025年光伏线缆厂家实力及用户口碑排行榜光伏线缆行业背景与市场趋势随着全球能源结构转型加速推进,光伏产业已成为可再生能源领域的重要支柱。据国际能源署(IEA)最新数据显示,2025年全球光伏新增装机容量预计将达到…

完整教程:计算机3D视觉:Pytorch3d的环境配置与初步使用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

.NET+AI | MEAI | ChatOptions 详解(5)

ChatOptions 详解:精准控制 AI 对话的配置利器 一句话简介 ChatOptions 是 Microsoft.Extensions.AI 中传递给 IChatClient 的统一配置容器,用于在单次请求中精准控制生成策略、工具调用和扩展特性。🎯 核心价值✅…

2025年评价高的高弹硬质棉厂家推荐及选择指南

2025年评价高的高弹硬质棉厂家推荐及选择指南行业背景与市场趋势随着全球纺织材料行业的快速发展,高弹硬质棉作为一种新型环保填充材料,近年来市场需求呈现稳定增长态势。据中国纺织工业联合会最新数据显示,2024年我…

2025年质量好的硬质棉厂家最新推荐排行榜

2025年质量好的硬质棉厂家最新推荐排行榜行业背景与市场趋势硬质棉作为一种新型环保填充材料,近年来在家居、工业及特殊应用领域展现出强劲的增长势头。根据中国纺织工业联合会最新发布的《2024-2025年中国纺织新材料…

25.11.22

QOJ8147 首先可以手算出这个序列满足:\(a_1=1\); \(a_{i+1}=-a_i\vee a_{i+1}=a_i+2\).但是还是不好数啊。接下来这一步纯数学,构造:\(b_i=\frac{|a_i|+1}{2}\),显然还是整数序列。 发现限制变成了:\(b_1=1\); \(…

CVE-2025-12870认证滥用漏洞分析:aEnrich eHRD系统高危安全风险

本文详细分析了CVE-2025-12870认证滥用漏洞,该漏洞影响aEnrich开发的a+HRD系统,允许未经认证的远程攻击者通过特制数据包获取管理员访问令牌,从而以提升的权限访问系统。概述 CVE-2025-12870是一个影响aEnrich开发的…

安装Docker(win11)

1 环境准备 1.1 开启Hyper-V Hyper-V功能仅在Windows专业版、企业版和教育版中可用,家庭版不支持Hyper-V功能。 为了解决这一问题,我们需要通过自行创建cmd指令执行。 操作步骤:创建cmd文件首先需要创建一个cmd文件…

2025年热门的不锈钢自攻螺钉厂家最新推荐权威榜

2025年热门的不锈钢自攻螺钉厂家最新推荐权威榜行业背景与市场趋势不锈钢自攻螺钉作为现代工业制造中不可或缺的基础紧固件,近年来随着全球制造业的复苏和建筑行业的持续发展,市场需求呈现稳定增长态势。根据中国五金…

2025年靠谱的盘头十字自攻螺钉厂家推荐及选择指南

2025年靠谱的盘头十字自攻螺钉厂家推荐及选择指南行业背景与市场趋势随着建筑装饰、工业制造和家电行业的持续发展,盘头十字自攻螺钉作为基础紧固件,市场需求呈现稳定增长态势。据中国五金制品协会2024年统计数据显示…