Unity API详解——Camera类

Unity的Camera类——视觉掌控与深度解析(上) 摄像机在任何3D场景中都是至关重要的元素,尤其是在游戏和实时应用中。它定义了玩家和用户如何“看到”虚拟世界。Unity中的Camera类提供了一系列强大的工具,让开发者可以精细地控制渲染和视图。在本文中,我们将深入探索这个核心类的使用方式。 阅读详情

Camera类用来控制游戏中虚拟场景的展示,以左下角为屏幕的(0,0)点坐标,以右上角为屏幕的(camera.pixelWidth,camera.pixelHeight)点坐标。如果用单位化方式表示,则左下角为(0,0)点,右上角为(1,1)点。本博客主要介绍了Camera类的一些实例属性和实例方法,最后对摄像机的视口与aspect、pixelRect及rect之间的关系进行了注解。

一、Camera类实例属性

在Camera类中,涉及的实力属性有aspect、cameraToWorldMatrix、cullingMask、eventMask、layerCullDistances、layerCullSpherical、orthographic、pixelRect、projectionMatrix、rect、renderingPath、targetTexture和worldToCameraMatrix。

1、aspect属性:设置摄像机视口比例

(1)基本语法

public float aspect { get; set; }

(2)功能说明

此属性用于获取或设置Camrea视口的宽高比例值。例如,设camera.aspect=2.0f,则camera视口的宽度/高度=2.0f,但是当硬件显示器屏幕的宽度与高度比例不为2.0f时,视图的显示讲会发生变形。aspect只处理摄像机Camera可以看到的视图的宽高比例,而硬件显示屏的作用只是把摄像机Camera看到的内容显示出来,当硬件显示屏的宽高比例与aspect的比例值不同时,视图讲发生变形

(3)代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Aspect_demo : MonoBehaviour
{

    void Start()
    {
        //camera.aspect的默认值即为当前硬件的aspect值
        Debug.Log("camera.aspect的默认值" + GetComponent<Camera>().aspect);
    }


    void OnGUI()
    {
        if (GUI.Button(new Rect(10.0f, 10.0f, 200.0f, 45.0f), "aspect=1.0f"))
        {
            //重置当前摄像机的aspect值
            GetComponent<Camera>().ResetAspect();
            GetComponent<Camera>().aspect = 1.0f;
        }
        if (GUI.Button(new Rect(10.0f, 60.0f, 200.0f, 45.0f), "aspect=2.0f"))
        {
            //重置当前摄像机的aspect值
            GetComponent<Camera>().ResetAspect();
            GetComponent<Camera>().aspect = 2.0f;
        }
        if (GUI.Button(new Rect(10.0f, 110.0f, 200.0f, 45.0f), "aspect还原默认值"))
        {
            //重置当前摄像机的aspect值
            GetComponent<Camera>().ResetAspect();
        }
    }
}

Aspect_demo

这段代码中,首先在Start方法中打印出了Camera的默认aspect值,camera.aspect的默认值即为当前硬件的aspect值,若在Unity编辑模式中运行即为Game视图中aspect的值。然后再OnGUI方法中定义了3个Button来切换不同的aspect值,在每次设置新的aspect值之前,都需要先调用ResetAspect方法来重置视口的aspect值。

2、cameraToWorldMatrix属性:变换矩阵

(1)基本语法

public Matrix4x4 cameraToWorldMatrix { get; }

(2)功能说明

此属性的功能室返回从摄像机的局部坐标系到世界坐标系的变换矩阵(只读)

(3)代码实现

Notes:Camera中的forward方向为其自身坐标系的-z轴方向,一般其他GameObject对象的forward方向为自身坐标系的z轴方向

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraToWorldMatrix_demo : MonoBehaviour
{
    void Start()
    {
        Debug.Log("Camera旋转前位置:" + transform.position);
        Matrix4x4 m = GetComponent<Camera>().cameraToWorldMatrix;
        //v3的值为沿着Camera局部坐标系的-z轴方向前移5个单位的位置在世界坐标系中的位置
        Vector3 v3 = m.MultiplyPoint(Vector3.forward * 5.0f);
    }
}

UnityVR--组件1--Camera--第三人称相机控制 API:Vector3.Distance、Vector3.Angle、Mathf.Clamp、Input.GetAxis、Vector3.Lerp、Quaternion.Lerp 阅读详情

相关推荐

Unity Camera深度指南——全面解析实例对象的属性及其应用

Camera实例对象的属性涵盖了从基本视图和投影设置到高级性能和渲染选项。每个属性都有其特定的用途和配置场景,允许开发者在Unity中精细地控制摄像机的行为。

Mr.Y仙森的博客 1万+

【学习笔记】Unity基础(八)【镜头camera组件属性(clear flag、target texture、occlusion culling、镜面效果、小地图等)】

本节主要学习camera组件的相关属性,介绍了投影方式、depth、clear flag等基础概念,详细学习了target texture、occlusion culling等知识。有关camera的其他高阶内容,诸如渲染管线、优化等内容暂不研究。下节计划学习Cinemachine插件、镜头脚本相关,涉及第一第三人称视角切换、镜头跟随、镜头抖动等案例。

1万+

Unity中常用的API及其详解

Unity是一个广泛使用的游戏开发引擎,它提供了大量的API(Application Programming Interface,应用程序编程接口)来帮助开发者创建游戏和交互式内容。Transform是Unity中每个游戏对象的核心组件,它包含了对象的位置(Position)、旋转(Rotation)和缩放(Scale)信息。这些只是Unity中常用API的一部分,实际上Unity提供了大量的API和功能来支持游戏开发的各种需求。

Umbella的博客 1861

Unity中Camera常用属性详解

Camera前言Camera属性一览Clear FlagsCulling MaskProjectionClipping PlanesViewport Rect三级目录 前言 工作中遇到了和Camera有关的问题,虽然最终通过百度解决,但是对于Camera还是一知半解,并且Camera在Unity中经常用到,非常重要,于是查询相关API并且亲自操作,有了以下这篇文章。 Camera属性一览 Clear Flags Determines which parts of the screen will be cl

qq_40629631的博客 5033

Unity HDRP UI渲染难题:Camera Stacking解决方案详解

在Unity引擎的渲染管线中,高清渲染管线(HDRP)因其物理真实感和复杂的光照效果而备受青睐,但这也带来了UI渲染的兼容性挑战。传统UI渲染模式在HDRP中常出现闪烁、透明或遮挡关系错乱等问题,其根本原因在于HDRP采用了不同的渲染架构和相机管理逻辑。为解决这一难题,Unity引入了Camera Stacking(相机堆叠)机制,该技术允许开发者将多个相机按顺序叠加合成,实现精确的分层渲染控制。通过将UI相机配置为Overlay Camera并叠加在主场景相机之上,可以确保UI元素在各种光照和后期处理效果

chubaisheng8627的博客 370

【Unity】入门学习笔记180516——API(2)Camera类实例属性

二、Camera类Camera类用来控制游戏虚拟场景的展示,以左下角为屏幕的(0,0)坐标,以右上角为屏幕的(camera.pixelWidth,camera.pixelHeight)点坐标。主要包含常用的类实例属性和实例方法:A、实例属性:1、aspectpublic float aspect {get;set;}设置Camera视口的宽高比,即宽度/高度camera.ResetAspect( ...

Dylan_Day的博客 1398

Unity API Camera摄像机的使用

Camera.main 返回主摄像机的Camera组件 第一个启用的标签为“MainCamera”的摄像机(只读)。 场景中的主要摄像机。如果场景中没有这样的摄像机,则返回null。此属性在内部使用FindGameObjectsWithTag,并且不缓存结果,建议缓存相机的返回值。 Camera.main等同于GameObject.Find("MainCamera").GetCompone...

cuijiahao的专栏 2799

Unity【入门】重要组件和API

Unity重要组件和API。

AMrss的博客 1464

unity解析API——Camera类02

一,Camera类实例属性 1,aspect属性:设置摄像机视口比例 2,cameraToWordMatrix属性:变换矩阵 3,cullingMask属性:摄像机按层渲染 4,eventMask属性:按层响应事件 5,layerCull Distances属性:层消隐的距离 6,layerCullSpherical属性:基于球面距离剔除 7,orthographic属性:摄像机投影模式 8,pixelRect属性:摄像机渲染区间 9,projectionMatrix属性:自定义投影矩阵 10,rect属性

cyl16688 372

Unity Camera

1. 了解摄像机(camera)不同视角的设计与实现;2. 感受在不同摄像机视角下观察虚拟场景。喜欢玩游戏或者看3D动漫的朋友可以回忆在虚拟场景中摄像头的运动变化带来的视觉感受,例如:摄像头给场景中的主角来个特写镜头,或者摄像头距离主角的距离越来越远,视觉或者故事叙述会给观者带来怎样的感觉呢?属性:HorizontalVerticalXYLens ShiftXYGate FitVerticalHorizontalFillOverscanNoneNearFarXY。

m0_66358314的博客 2273

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 249

Unity常用API详解--初学必备

Unity常用API详解–初学必备 初学Unity3D编程,为了更加熟悉Unity常用API,根据搜集资料整理如下: 1.事件函数执行机制 2.Time类 Time.deltaTime:每一帧的时间。 Time.fixedDeltaTime:固定帧率执行的时间。 Time.frameCount:运行帧的次数。 Time.time:框架运行的时间(秒)。 Time.realtimeSinceStartup:游戏开始后的实时时间。 3.创建游戏对象方法 1.GameObject go = new Game

weixin_45488182的博客 9829

Converting Phase Noise to Random Jitter(Period)

推导了Phase Noise to Random Jitter(Period)的转换过程,解释了分频对Phase Noise & Spur(每2分频改善6dB)的影响,每N分频,TIE RJ(1𝜎)不变(之前已推导),而Period RJ(1𝜎)增加√N倍。

u010486560的博客 2037

Unity中的Camera组件

该文章介绍Unity中摄像机的功能及属性设置。主要内容包括: 摄像机基础概念:Unity允许一个场景使用多个摄像机,可自定义渲染顺序和区域。 默认管线下的摄像机属性面板:详细列出16个关键属性及其功能,如Clear Flags、Projection模式、Depth排序等。 API说明:包括7个静态变量(如main、current)和8个实例变量(如aspect、backgroundColor),用于编程控制摄像机行为。 特殊功能:支持HDR、MSAA、动态分辨率等高级渲染技术。 文章以表格形式系统整理了Un

m0_69774611的博客 1345

【NCBI】SRA toolkit安装及使用-Windows&Linux版本

由于市面上的文章介绍SRA toolkit基本上都是基于Linux,而在windows下运行SRA toolkit基本上可以达到相同的效果且更为方便,故本文将分别阐明在Windows和Linux环境下SRA toolkit的安装及使用。

weixin_48076899的博客 2万+

【FOC无刷电机控制】六步换向、FOC,STM32cubemx从零开始搭建BLDC六步换相代码、FOC代码(基于霍尔传感器)

FOC、六步换相,无刷电机控制

xifan的博客 3万+

Unity API学习——Rigidbody、Camera、Application&SceneManager

Rigidbody (继承自Component,所以Component有的方法,Rigidbody都有) centerOfMass:取得重心 Position:通过刚体组件设置物体的位置,控制物体的运动,瞬间的移动 MovePosition:让整个运动看起来更加平滑,持续的移动 Rotation:通过刚体组件设置物体的旋转,节约性能,一次改变 MoveRotation:持续不断的旋转 AddFo...

Xiaozhan_SC的博客 436

使用PlotNeuralNet绘制深度学习网络图的基本操作

使用PlotNeuralNet绘制深度学习网络图的基本操作

weixin_46877907的博客 2110

【Unity】Camera.WorldToViewportPoint 计算原理及实现

(133条消息) 【Unity】Camera.WorldToViewportPoint 计算原理及实现_cyf649669121的博客-优快云博客 具体原理我是参考的这篇文章: 详解MVP矩阵之ProjectionMatrix-腾讯游戏学堂 本地具体实现实现方法(不调用Camera的API)如下: 1、获取相机的VP矩阵: 模型顶点坐标转换成屏幕坐标是用MVP矩阵,但是因为我们这边本来就使用的世界坐标进行转换,所以只需要VP矩阵即可。获取VP矩阵的方法如下: ...

linuxheik的专栏 2163

Pytorch图像去噪实战(七):Noise2Noise自监督图像去噪实战,没有干净图也能训练模型

PyTorch图像去噪实战:Noise2Noise自监督去噪方法 本文介绍了在没有干净图像的情况下使用Noise2Noise方法进行图像去噪的实战方案。主要内容包括: 问题场景:真实项目中经常只有带噪图像而没有对应的干净图像,如夜间监控、医学影像等场景。 Noise2Noise核心思想:使用同一场景的两张不同噪声版本的图像进行训练(noisy_image_a → noisy_image_b),让模型学习恢复共同的干净结构而非随机噪声。 技术原理:模型通过最小化两个独立噪声图像之间的差异,最终会收敛到真实干净

ai技术增长的博客 500

Arduino 系列:Arduino Due 系列 (基于 ATSAM3X8E)_(5).电源管理与电压调节

电源管理与电压调节是确保嵌入式系统稳定性和可靠性的关键环节。通过合理选择电源输入方式、使用高效的电压调节器、设计适当的滤波电路和实施动态电源管理,可以有效提高系统的性能和寿命。同时,使用电源调试工具和编写调试代码,可以帮助开发者及时发现和解决问题。希望本文档能为使用 Arduino Due 的开发者提供有用的信息和指导。

2401_87715305的博客 1308

Unity学习笔记 - API

Unity学习笔记-API

hanshuangzirui的博客 2128

YOLOv11改进 | 上采样篇 | YOLOv11引入CARAFE上采样

在本文中,我们提出了一个通用、轻量级、高效的特征重组算子CARAFE来实现这一目标.CARAFE有几个吸引人的特性:(1)大视场。(2)内容感知处理。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~大视场:不同于以往的方法(如双线性插值),CARAFE能够在更大的感受野内聚合上下文信息,从而捕获更丰富的语义信息。

tsg6698的博客 920

Unity Camera的ScreenToWorldpoint API的实现

首先能看懂下一张图的,必须懂得矩阵,矩阵相乘的意义,矩阵乘法规则,还有透视除法,屏幕换算。 附上几个链接: 透视除法 投影矩阵 投影矩阵的推导,介绍,可以不懂推导,但一定要知道里面的数据怎么得来,因为如果要屏幕坐标转世界坐标的话,我们可以直接拆分矩阵进行换算。投影矩阵是整个p换算的核心是mvp变换的核心。投影矩阵跟相机参数密切相关,弄懂它,对以后的相机一些底层操作,绝对得心应收 标题 ...

时间的大海会湮灭一切 2835

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

UnityAPI—Camera类

public class API16Camera : MonoBehaviour {     private Camera mainCamera;     // Use this for initialization     void Start () {         //mainCamera= GameObject.Find("MainCamera").GetComponent&lt;C...

qq_42459006的博客 355

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Unity API详解——Application类
下一篇: Unity API详解——GameObject类
极客范儿
极客范儿 新星创作者: 游戏开发技术领域 新星创作者: 游戏开发技术领域 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄12年 1万+粉丝 341原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值