【基础】Unity中Camera组件知识点

news2025/6/6 17:06:52

一、投影模式 (Projection)

1. 透视模式 (Perspective)

  • 原理:模拟人眼,近大远小(锥形体视锥)

  • 核心参数

    • Field of View (FOV):垂直视场角

      • 典型值:第一人称 60°-90°,驾驶舱 30°-45°

      • 特效:FOV↑=视野变广(鱼眼效果),FOV↓=视野变窄(望远镜)

    • Clipping Planes

      • Near:近裁面(0.01-0.3,避免穿模)

      • Far:远裁面(100-1000,过大影响性能)

2. 正交模式 (Orthographic)

  • 原理:无视距离,物体恒定大小(立方体视锥)

  • 核心参数

    • Size:视口高度的一半(单位:世界坐标)

      • 计算:若想显示10单位高度区域 → Size=5

    • Clipping Planes同透视模式(控制Z轴范围)

二、清除与背景 (Clear Flags & Background)

1. Clear Flags(帧缓存清除策略)

模式清除颜色清除深度典型用途
Skybox开放世界(需设置天空盒)
Solid Color纯色背景(太空/抽象场景)
Depth Only×UI摄像机必选
Don't Clear××特殊效果(极少用)

2. Background

  • 仅当 Clear Flags = Solid Color 时生效

  • 建议用深灰色(RGB:30,30,30)替代纯黑避免色偏

三、渲染过滤 (Culling Mask)

  • 本质:32位图层掩码(对应Layer面板的32个层)

  • 操作逻辑

  • // 代码示例:只渲染UI层和Enemy层
    camera.cullingMask = (1 << LayerMask.NameToLayer("UI")) | 
                        (1 << LayerMask.NameToLayer("Enemy"));
  • 经典用例

    • 主摄像机:排除UI层

    • 小地图摄像机:仅显示Terrain层

    • 阴影摄像机:仅渲染Cast Shadows的物体

四、深度与渲染顺序 (Depth)

  • 核心规则:深度值大的摄像机后渲染(覆盖先渲染的画面)

  • 多摄像机协作模板

Camera_Main(场景渲染):  
  Depth = 0  
  Culling Mask = Everything & ~UI  // 排除UI层  
  Clear Flags = Skybox  

Camera_UI(界面渲染):  
  Depth = 1  
  Culling Mask = UI  
  Clear Flags = Depth Only  // 保留场景颜色,只清深度

五、视口控制 (Viewport Rect)

  • 归一化坐标:[0,0]左下角 → [1,1]右上角

  • 参数详解

    • X:视口左下角起始X坐标

    • Y:视口左下角起始Y坐标

    • W:视口宽度(0~1)

    • H:视口高度(0~1)

  • 应用场景

    • 双人分屏:Player1: (0,0,0.5,1) + Player2: (0.5,0,0.5,1)

    • 小地图:(0.7,0.7,0.3,0.3)

六、目标纹理 (Target Texture)

工作流
  1. 创建Render Texture:Assets > Create > Render Texture

  2. 绑定到Camera:拖入Camera组件的Target Texture槽

  3. 应用输出:

    • 3D材质:赋给MeshRenderer的材质

    • UI显示:RawImage组件的Texture参数

高级技巧
// 动态创建渲染纹理
RenderTexture rt = new RenderTexture(512, 512, 16); 
camera.targetTexture = rt;
// 完成后释放资源
rt.Release(); 

七、坐标转换(核心API)

1. 屏幕坐标 → 世界坐标

// 转换到3D世界(z为摄像机前方距离)
Vector3 worldPos = camera.ScreenToWorldPoint(
    new Vector3(Input.mousePosition.x, 
                Input.mousePosition.y,
                10) // z=10表示摄像机前方10单位
);

2. 世界坐标 → 屏幕坐标

// 用于UI跟随3D物体
Vector3 screenPos = camera.WorldToScreenPoint(enemy.transform.position);
uiElement.transform.position = screenPos;

3. 射线检测(物体拾取)

Ray ray = camera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit, 100)) 
{
    Debug.Log("点击了:" + hit.collider.name);
}

八、高级功能

1. 物理摄像机 (URP/HDRP)

  • Focal Length:焦距(毫米)→ 控制FOV

  • Sensor Size:胶片尺寸 → 影响视野比例

  • Aperture:光圈 → 控制景深强度

2. 摄像机堆栈 (URP专属)

Base Camera(基础场景)
  ↓
Overlay Camera 1(特效层)
  ↓
Overlay Camera 2(UI层)

  • 优势:比传统Depth排序更节省性能

3. 回调事件

void OnPreCull() { /* 裁剪前调用 */ } 
void OnPreRender() { /* 渲染前调用 */ }
void OnPostRender() { /* 渲染后调用 */ }

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

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

相关文章

Tomcat优化篇

目录 一、Tomcat自身配置 1.Tomcat管理页面 2. 禁用AJP服务 3.Executor优化 4.三种运行模式 5.web.xml 6.Host标签 7.Context标签 8.启动速度优化 9.其他方面 二、JMeter测试 笔者推荐 一、Tomcat自身配置 1.Tomcat管理页面 我们可以打开Tomcat的管理页面&#xff…

Temporal Fusion Transformer(TFT)扩散模型时间序列预测模型

1. TFT 简介 Temporal Fusion Transformer&#xff08;TFT&#xff09;模型是一种专为时间序列预测设计的高级深度学习模型。它结合了神经网络的多种机制处理时间序列数据中的复杂关系。TFT 由 Lim et al. 于 2019年提出&#xff0c;旨在处理时间序列中的不确定性和多尺度的依…

【LangServe部署流程】5 分钟部署你的 AI 服务

目录 一、LangServe简介 二、环境准备 1. 安装必要依赖 2. 编写一个 LangChain 可运行链&#xff08;Runnable&#xff09; 3. 启动 LangServe 服务 4. 启动服务 5. 使用 API 进行调用 三、可选&#xff1a;访问交互式 Swagger 文档 四、基于 LangServe 的 RAG 应用部…

攻防世界-unseping

进入环境 在获得的场景中发现PHP代码并进行分析 编写PHP编码 得到 Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319 将其传入 想执行ls&#xff0c;但是发现被过滤掉了 使用环境变量进行绕过 $a new…

[yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码

【FasterNet介绍】 为了设计快速神经网络&#xff0c;许多工作都集中在减少浮点运算的数量&#xff08;FLOPs&#xff09;上。 然而&#xff0c;我们观察到FLOPs的减少并不一定会导致延迟的类似程度的减少。 这主要源于低效率的每秒浮点运算(FLOPS)。 为了实现更快的网络&#…

一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 集成了 Matplotlib&#xff0c;提供了简单高效的绘图接口&#xff0c;使数据可视化变得直观便捷。本指南将详…

企业级安全实践:SSL/TLS 加密与权限管理(一)

引言 ** 在数字化转型的浪潮中&#xff0c;企业对网络的依赖程度与日俱增&#xff0c;从日常办公到核心业务的开展&#xff0c;都离不开网络的支持。与此同时&#xff0c;网络安全问题也日益严峻&#xff0c;成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…

2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略

1.VSCode Windows 最新安装指南: 以下是 2025 年 Windows 系统下安装 Visual Studio Code(VSCode)的最新指南,结合官方文档与实际操作经验整理而成: 一、下载官方安装包: 1.访问官网: 打开浏览器,进入 VSCode 官方下载页面https://code.visualstudio.com/Download 2…

【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码

三点法制导是一种导弹制导策略,主要用于确保导弹能够准确追踪并击中移动目标。该方法通过计算导弹、目标和制导站之间的相对位置关系,实现对目标的有效制导。 本文给出MATLAB下的三点法例程,模拟平面上捕获运动目标的情况订阅专栏后可直接查看源代码,粘贴到MATLAB空脚本中即…

如何爬取google应用商店的应用分类呢?

以下是爬取Google Play商店应用包名(package name)和对应分类的完整解决方案&#xff0c;采用ScrapyPlaywright组合应对动态渲染页面&#xff0c;并处理反爬机制&#xff1a; 完整爬虫实现 1. 安装必要库 # 卸载现有安装pip uninstall playwright scrapy-playwright -y# 重新…

SQL Relational Algebra(数据库关系代数)

目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product&#xff08;笛卡尔积&#xff09; Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…

智能工业时代:工业场景下的 AI 大模型体系架构与应用探索

自工业革命以来&#xff0c;工业生产先后经历了机械化、电气化、自动化、信息化的演进&#xff0c;正从数字化向智能化迈进&#xff0c;人工智能技术是新一轮科技革命和产业变革的重要驱动力量&#xff0c;AI 大模型以其强大的学习计算能力掀开了人工智能通用化的序幕&#xff…

易语言使用OCR

易语言使用OCR 用易语言写个脚本&#xff0c;需要用到OCR&#xff0c;因此我自己封装了一个OCR到DLL。 http://lkinfer.1it.top/ 视频演示&#xff1a;https://www.bilibili.com/video/BV1Zg7az2Eq3/ 支持易语言、c、c#使用&#xff0c;平台限制&#xff1a;window 10 介绍…

C++和C#界面开发方式的全面对比

文章目录 C界面开发方式1. **MFC&#xff08;Microsoft Foundation Classes&#xff09;**2. **Qt**3. **WTL&#xff08;Windows Template Library&#xff09;**4. **wxWidgets**5. **DirectUI** C#界面开发方式1. **WPF&#xff08;Windows Presentation Foundation&#xf…

算法-集合的使用

1、set常用操作 set<int> q; //以int型为例 默认按键值升序 set<int,greater<int>> p; //降序排列 int x; q.insert(x); //将x插入q中 q.erase(x); //删除q中的x元素,返回0或1,0表示set中不存在x q.clear(); //清空q q.empty(); //判断q是否为空&a…

性能优化 - 理论篇:CPU、内存、I/O诊断手段

文章目录 Pre引言1. CPU 性能瓶颈1.1 top 命令 —— 多维度 CPU 使用率指标1.2 负载&#xff08;load&#xff09;——任务排队情况1.3 vmstat 命令 —— CPU 繁忙与等待 2. 内存性能瓶颈2.1 操作系统层面的内存分布2.2 top 命令 —— VIRT / RES / SHR 三个关键列2.3 CPU 缓存…

算法:二分查找

1.二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 二分查找算法要确定“二段性”&#xff0c;时间复杂度为O(lonN)。为了防止数据溢出&#xff0c;所以求mid时要用防溢出的方式。 class Solution { public:int search(vector<int>& nums, int tar…

Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)

Ubuntu 22.04 上安装 PostgreSQL&#xff08;使用官方 APT 源&#xff09; 步骤 1&#xff1a;更新系统 sudo apt update sudo apt upgrade -y步骤 2&#xff1a;添加 PostgreSQL 官方仓库 # 安装仓库管理工具 sudo apt install wget ca-certificates gnupg lsb-release -y#…

Linux随记(十八)

一、k8s的node节点磁盘 /data已使用率超过 85% , 出现disk pressure &#xff0c;驱逐pod现象 evicted &#xff0c; the node had condition:[DiskPressure] #修改/var/lib/kubelet/config.yaml ]# cat /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1…

Windows MongoDB C++驱动安装

MongoDB驱动下载 MongoDB 官网MongoDB C驱动程序入门MongoDB C驱动程序入门 安装环境 安装CMAKE安装Visual Studio 编译MongoDB C驱动 C驱动依赖C驱动&#xff0c;需要先编译C驱动 下载MongoDB C驱动源码 打开CMAKE(cmake-gui) 选择源码及输出路径,然后点击configure …