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

一、投影模式 (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.pswp.cn/web/82421.shtml

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

相关文章

PCA(K-L变换)人脸识别(python实现)

数据集分析 ORL数据集&#xff0c; 总共40个人&#xff0c;每个人拍摄10张人脸照片 照片格式为灰度图像&#xff0c;尺寸112 * 92 特点&#xff1a; 图像质量高&#xff0c;无需灰度运算、去噪等预处理 人脸已经位于图像正中央&#xff0c;但部分图像角度倾斜&#xff08;可…

【Git】View Submitted Updates——diff、show、log

在 Git 中查看更新的内容&#xff08;即工作区、暂存区或提交之间的差异&#xff09;是日常开发中的常见操作。以下是常用的命令和场景说明&#xff1a; 文章目录 1、查看工作区与暂存区的差异2、查看提交历史中的差异3、查看工作区与最新提交的差异4、查看两个提交之间的差异5…

deepseek原理和项目实战笔记2 -- deepseek核心架构

混合专家&#xff08;MoE&#xff09; ​​混合专家&#xff08;Mixture of Experts, MoE&#xff09;​​ 是一种机器学习模型架构&#xff0c;其核心思想是通过组合多个“专家”子模型&#xff08;通常为小型神经网络&#xff09;来处理不同输入&#xff0c;从而提高模型的容…

GPU层次结构(Nvidia和Apple M芯片,从硬件到pytorch)

这里写目录标题 0、驱动pytorch环境安装验证1.window环境2.Mac Apple M芯片环境 1、Nvidia显卡驱动、CUDA、cuDNN关系汇总1**1. Nvidia显卡驱动&#xff08;Graphics Driver&#xff09;****2. CUDA&#xff08;Compute Unified Device Architecture&#xff09;****3. cuDNN&a…

OpenWrt 搭建 samba 服务器的方法并解决 Windows 不允许访问匿名服务器(0x80004005的错误)的方法

文章目录 一、安装所需要的软件二、配置自动挂载三、配置 Samba 服务器四、配置 Samba 访问用户和密码&#xff08;可选&#xff09;新建 Samba 专门的用户添加无密码的 Samba 账户使用root账户 五、解决 Windows 无法匿名访问Samba方案一 配置无密码的Samba账户并启用匿名访问…

CentOS 7镜像源替换

更换为阿里云镜像源&#xff08;适用于 CentOS 7&#xff09; 1、备份原来的 repo 文件&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2、下载阿里云的 CentOS 7 repo 文件&#xff1a; curl -o /etc/yum.repos.d/CentOS-Base…

功能结构整理

C# Sxer Sxer.Base&#xff1a;基础子功能 Sxer.Base.Debug&#xff1a;打印 Sxer.Utility&#xff1a;工具类 Sxer.CustomFunction&#xff1a;独立功能点开发 Unity

云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作)

云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09; 目录 云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09;1、虚拟机VMware安装Rocky2、Linux命令行3、Linux Rocky修改字体大小和背景颜…

【论文阅读】《PEACE: Empowering Geologic Map Holistic Understanding with MLLMs》

目录 前言一、研究背景与问题1-1、地质图的重要性1-2、现有MLLMs的不足 二、 主要贡献2-1、GeoMap-Bench&#xff1a;首个地质图理解评估基准2-2、GeoMap-Agent&#xff1a;首个地质图专用AI代理2-3、实验验证与性能优势 三、关键技术3-1、 数据构建与预处理3-2、分层信息提取&…

计算机网络通信技术与协议(八)----关于IS-IS的基础概念

关于IS&#xff0d;IS最早是ISO为CLNP&#xff08;Connectionless Network Protocol&#xff0c;无连接网络协议&#xff09;而设计的一种动态路由协议。 目录 这里提到了CLNP这个概念&#xff0c;在这里解释一下&#xff1a; CLNS由以下三个协议构成&#xff1a; 那么为什…

网络原理1

协议 在网络通信中&#xff0c;协议是非常重要的概念。协议是在网络通信过程中的约定。发送方和接收方需要提前商量好数据的格式&#xff0c;才能确保正确进行沟通。 应用层协议 应用层&#xff0c;对应着应用程序&#xff0c;是跟我们程序员打交道最多的一层。调用操作系统…

【运维】统信UOS操作系统aarch64自制OpenSSH 9.6p1 rpm包(含ssh-copy-id命令)修复漏洞

为修复如下OpenSSH漏洞&#xff0c;openssh从8.2升级至9.6&#xff0c;然而并未找到统信9.6的rpm源&#xff0c;所以自己动手制作&#xff0c;折腾了一天&#xff0c;在此记录一下 准备工作 检查版本 cat /etc/os-releaseuname -a如图当前环境为aarch64架构&#xff0c;在其…

CI/CD 持续集成、持续交付、持续部署

CI/CD 是 持续集成&#xff08;Continuous Integration&#xff09; 和 持续交付/持续部署&#xff08;Continuous Delivery/Deployment&#xff09; 的缩写&#xff0c;代表现代软件开发中通过自动化流程快速、可靠地构建、测试和发布代码的实践。其核心目标是 减少人工干预、…

Spring Boot 应用中实现配置文件敏感信息加密解密方案

Spring Boot 应用中实现配置文件敏感信息加密解密方案 背景与挑战 &#x1f6a9;一、设计目标 &#x1f3af;二、整体启动流程 &#x1f504;三、方案实现详解 ⚙️3.1 配置解密入口&#xff1a;EnvironmentPostProcessor3.2 通用解密工具类&#xff1a;EncryptionTool 四、快速…

OpenCV CUDA模块特征检测------角点检测的接口createMinEigenValCorner()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数创建一个 基于最小特征值&#xff08;Minimum Eigenvalue&#xff09;的角点响应计算对象&#xff0c;这是另一种经典的角点检测方法&…

性能优化 - 理论篇: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 缓存…

GPIO的内部结构与功能解析

一、GPIO总体结构 总体构成 1.APB2(外设总线) APB2总线是微控制器内部连接CPU与外设&#xff08;如GPIO&#xff09;的总线&#xff0c;负责CPU对GPIO寄存器的读写访问&#xff0c;支持低速外设通信 2.寄存器 控制GPIO的配置&#xff08;输入/输出模式、上拉/下拉等&#x…

汽车总线分析总结(CAN、LIN、FlexRay、MOST、车载以太网)

目录 一、汽车总线技术概述 二、主流汽车总线技术对比分析 1. CAN总线&#xff08;Controller Area Network&#xff09; 2. LIN总线&#xff08;Local Interconnect Network&#xff09; 3. FlexRay总线 4. MOST总线&#xff08;Media Oriented Systems Transport&#x…

WordPress 6.5版本带来的新功能

WordPress 6.5正式上线了&#xff01;WordPress团队再一次为我们带来了许多新的改进。在全球开发者的共同努力下&#xff0c;WordPress推出了许多新的功能&#xff0c;本文将对其进行详细总结。 Hostease的虚拟主机现已支持一键安装最新版本的WordPress。对于想要体验WordPres…

【vue+ts】找不到模块“./App.vue”或其相应的类型声明

报错&#xff1a;找不到模块“./App.vue”或其相应的类型声明。 原因&#xff1a;typescript只能理解.ts文件&#xff0c;无法理解.vue文件。 解决&#xff1a;在src/env.d.ts下添加&#xff1a; /// <reference types"vite/client" /> // 三斜线引用告诉编译…