当前位置: 首页 > news >正文

Unity Camera -- (3)控制相机能看到的东西

使用剪裁平面(Clipping Planes)定义相机可视范围

        Clipping Planes定义了相机所能看到的场景范围。在有些时候,限制相机所能看到的范围是出于风格上的考量,但编辑Clipping Planes的主要目的是为了优化性能。相机所需要渲染的东西越少,程序的负载就越低。

        相机的剪裁平面有两个参数值:near(近平面)和far(远平面)。near定义了离相机最近且还能被相机所渲染的平面所处位置;far则是相反的一个平面。

        对于正交投影相机来说,远近平面呈金字塔形状,可以在场景视图中选中了相机后看到:

         对于正交投影相机来说,这个平面是一个矩形:

        接下来我们调整一下clipping planes的参数(正交投影类型相机):

        1. Hierarchy中选中Main Camera,缩放一下场景视图以便能观察到相机整体远近平面的情况。

        2. 在Main Camera的Inspector中,修改一下Clipping Planes里的Far参数,从1000改为100,从100改为10,然后从10改为1。观察一下场景视图中相机的远近平面线框的情况以及相机预览窗口的变化。

        我们可以看到,随着Far的减小,相机所能看到的东西也跟着减少。原来能够被看到的东西,看不见之后,会用背景做填充(一般是天空盒背景)。

        3. 在场景视图中,我们使用移动工具,让相机沿着z轴向前平移。

             随着相机的向前平移,我们可以看到之前不可见的物体,到达了Far平面范围内后,会突然跳出来。虽然这种效果可以被刻意用来做一些风格化的需求,但一般来说,在游戏或实时应用要尽量避免。一般我们会设置一个较大的Far值,让用户感受不到这种物体突然消失或突然出现的现象。这里我们将Far设置回默认的1000。

        4. 近平面参数Near的意思和Far是类似的,我们也可以调整一下这个参数。但有一个常见的问题是,当角色或某个游戏物体的模型有部分处于近平面外的时候,我们可能会看到物体内部的mesh。

        我们在一些3D游戏中可能会看到这种场景,要解决这种问题,最好是能保证相机和物体保持一段安全距离, 如果相机是固定的,也可以调整一下Near的值。

使用culling masks来隐藏或显示物体

        如果有一个物体处于相机的Near和Far平面之内,但我们又要隐藏或显示它时该怎么做呢?解决这个问题有多种方法,对于相机来说,有一个culling masks可以用来实现这个功能。

        1. 场景视图中,选中红色的胶囊体,按F聚焦。

        2. 在胶囊体的Inspector中,选择Layer -> Add Layer, 然后将User Layer6设置为Culled。

        3. 重新在场景视图中选择胶囊体,然后在Inspector中将Culled这个layer设置给胶囊体。

         4.  选择Main Camera,定位到Inspector中,Camera组件中Rendering部分里的Culling Mask选项, 将Culled禁用掉。

         在场景视图中,胶囊体还在,但是从相机预览窗口中可以看到,胶囊体消失了。

修改背景类型

        默认情况下,场景会使用一个默认的天空盒作为背景。这个天空盒和Directional Light(也是创建场景时默认的平行光源)是绑定的。这两个物体一起为场景的环境光(ambient light)起到了贡献。虽然天空盒及相关光照是由天空盒的shader和光照属性所决定的,但camera可以管理在场景中天空盒是否可见。

        1.调整相机视角,确保相机能够看到天空盒。

        2. 在Inspector中,找到Camera组件的Enviroment部分

        3. 将Background Type从Skybox修改为Solid Color

        4. 此时我们对比看场景视图和相机预览视图,会发现场景中,天空盒仍然存在,相机视图中显示的天空是一片蓝色。如果场景中有多个相机,每个相机都可以有不同的背景类型设置,这一点可以用来实现一些特殊的效果。

        5. 点击Background的颜色条,将颜色修改为其他颜色试试,比如绿色。

        需要注意的一点是,背景类型选择为Solid Color,其颜色并不会对场景的光照产生影响,这和Skybox是不同的。Solid Color只是简单的让相机停止渲染天空盒并且用一个我们选择的颜色替换掉。即便天空盒在相机中并不可见,任何对天空盒的修改,仍然会在环境中可见。

相关文章:

Unity Camera -- (3)控制相机能看到的东西

使用剪裁平面(Clipping Planes)定义相机可视范围 Clipping Planes定义了相机所能看到的场景范围。在有些时候,限制相机所能看到的范围是出于风格上的考量,但编辑Clipping Planes的主要目的是为了优化性能。相机所需要渲染的东西越…...

《基于深度迁移学习的可穿戴睡眠阶段分类》阅读笔记

一、摘要 佩戴可穿戴设备进行睡眠监测是一种无创、便捷的方法,可以提高睡眠障碍筛查和健康监测的效率。然而,由于缺乏大规模、标准化的PPG数据集,使用PPG进行睡眠阶段分类仍然具有挑战性。本文提出了一种基于深度迁移学习的方法来解决这个问…...

java版工程管理系统源码企业工程项目管理系统简介

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...

机器学习算法 决策树

文章目录 一、决策树的原理二、决策树的构建2.1 ID3算法构建决策树2.2 C4.5 算法树的构建2.3 CART 树的创建 三、决策树的优缺点 一、决策树的原理 决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总…...

论文笔记:An Interactive-Voting Based Map Matching Algorithm

2010 MDM 1 ST-matching的问题 论文笔记:Map-Matching for low-sampling-rate GPS trajectories(ST-matching)_UQI-LIUWJ的博客-CSDN博客 当轨迹很长,且车辆通过多线平行的道路时,ST-Matching的效果较差&#xff0c…...

_awt_container容器_演示

Component作为基类,提供了如下常用的方法来设置组件的大小、位置、可见性等。 方法签名方法功能setLocation(int x,int y)设置组件的位置setSize(int width,int heigth)设置组件的大小setBounds(int x,int y,int width,int heigth)设置组件的位置,大小。…...

TryHackMe-Misguided Ghosts(boot2root)

Misguided Ghosts 端口扫描 循例nmap FTP枚举 直接登anonymous,有几个文件,下下来 info.txt 我已经包含了您要求的所有网络信息,以及一些我最喜欢的笑话。- 帕拉摩尔该信息可能指的是pcapng文件 jokes.txt Taylor: Knock, knock. Josh: …...

【Leetcode】10. 正则表达式匹配

10. 正则表达式匹配(困难) 题解 如果从左向右进行匹配的话,需要考虑字符后是否有 * 。 因此选择从右向左扫描更为简单。 *前面肯定有一个字符,它像是一个拷贝器,能够复制前面的单个字符,甚至也可以把这个…...

不得不说的结构型模式-装饰器模式

目录 装饰器模式是什么 下面是装饰器模式的一个通用的类图: 以下是使用C实现装饰器模式的示例代码: 下面是面试中关于桥接器模式的常见的问题: 下面是问题的答案: 装饰器模式是什么 装饰器模式是一种结构型设计模式&#xff…...

Flutter+YesAPI 快速构建零运维的APP

前言 移动互联网经过多年的发展,已经进入一个成熟的阶段,几乎每个公司都有自己的移动应用程序或移动网站。随着5G技术的不断发展,也带来了更高效的数据传输速度和更稳定的网络连接,这使得更多的应用程序和服务能够在互联网上运行&…...

使用Socks5代理保障HTTP传输的网络安全

一、引言 在互联网时代,网络安全越来越受到人们的关注,特别是在数据传输过程中,很容易出现信息泄露、窃听等安全问题。为了保障网络传输的安全性,我们可以使用代理服务器来进行传输,而Socks5代理是其中一种常用的代理…...

C语言入门篇——操作符篇

目录 1、操作符分类 2、操作符的属性 3、算术操作符 4、移位操作符 5、位操作符 6、赋值操作符 7、单目操作符 8、关系操作符 9、逻辑操作符 10、条件操作符 11、逗号操作符 12、下标引用、函数调用和结构成员 1、操作符分类 算术操作符(,-&…...

YOLOv7训练自己的数据集(txt文件,笔记)

目录 1.代码下载 2.数据集准备(.xml转.txt) (1)修改图像文件名 (2)图片和标签文件数量不对应,解决办法 (3).xml转.txt (4).txt文件随机划分出对应的训练…...

防止机械/移动硬盘休眠 - NoSleepHD

防止机械/移动硬盘休眠 - NoSleepHD 前言解决方案计算机硬盘移动硬盘 前言 机械硬盘休眠后唤醒需要一定时间,且频繁的启动和停止并不有利于硬盘的寿命,因此可根据自身需求防止机械硬盘休眠,下文以Win10系统为例介绍解决方案。 值得一提的是…...

(二)app自动化脚本录制回放

上一篇:(一)app自动化测试环境搭建(maciosairtest )_airtest环境搭建_要开朗的spookypop的博客-CSDN博客 注:后续都是用IOS设备来介绍自动化测试,安卓就不赘述了。 接上一篇,搭建好自动化测试环境后&#…...

STM32HAL库USART外设配置流程及库函数讲解

HAL库中USART外设配置流程及库函数讲解 一说到串口通信,及必须说一下aRS-232/485协议。232协议标准物理接口就是我们常用的DB9串口线 RS-232电平: 逻辑1:-15~-3 逻辑0: 3~15 COMS电平: 逻辑1:3.3 逻辑0&a…...

Qt 实现TCP通信和UDP通信

Qt 实现TCP通信和UDP通信 1、TCP通信 QT中实现TCP通信主要用到了以下类:QTcpServer、QTcpSocket、QHostAddress等; 使用QTcpServer来创建一个TCP服务器,在新的连接建立时,将新建立连接的socket添加到列表中,以便发送…...

完成近4亿元C轮融资+自研底盘域控,本土线控制动玩家“拼”了

显然,线控制动赛道已经进入白热化竞争阶段。 高工智能汽车研究院监测数据显示,2022年中国市场(不含进出口)乘用车前装搭载线控制动系统(One-Box,Two-Box)上险交付合计497.39万辆,同…...

【UE】一个简易的游戏计时器

效果 步骤 1. 打开“ThirdPersonGameMode” 创建两个整型变量,分别命名为“Seconds”、“Minutes” 在事件图表中添加如下节点,实现“Seconds”每秒加1 继续添加如下节点: 当秒数大于60时,就让分钟数1,然后将秒数重新…...

Leetcode力扣秋招刷题路-0455

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i]&#x…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...

python打卡day49@浙大疏锦行

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

HTML中各种标签的作用

一、HTML文件主要标签结构及说明 1. <&#xff01;DOCTYPE html> 作用&#xff1a;声明文档类型&#xff0c;告知浏览器这是 HTML5 文档。 必须&#xff1a;是。 2. <html lang“zh”>. </html> 作用&#xff1a;包裹整个网页内容&#xff0c;lang"z…...

AI 时代下语音与视频伪造的网络安全危机

引言 在人工智能技术的推动下&#xff0c;语音合成、视频生成等技术取得了突破性进展&#xff0c;Deepfake、AI 语音克隆等工具让语音和视频伪造变得愈发简单且逼真。这些技术在娱乐、影视等领域带来便利的同时&#xff0c;也被不法分子利用&#xff0c;引发了一系列网络安全问…...