Unity API详解——Matrix4x4类

MultiplyPoint 同MultiplyVector 的区别 在unity3d中Matrix4X4提供了两个矩阵转换的方法,分别是MultiplyPoint 同MultiplyVector , 为了测试其不同在场景中放置了三个球,一个红球,一个蓝球,蓝球为红球子物体测试代码如下: 结果: 通过结果可以看出MultiplyPoint将向量的位置转换为世界坐标中的位置,而MultiplyVector没有改变位置,但是方向其实是修改了的,为了验证这一点, 阅读详情
AI摘要

本文介绍了Unity3D中Matrix4x4类的实例方法,如MultiplyPoint、MultiplyPoint3x4和MultiplyVector,用于点和向量的矩阵变换。同时讲解了静态方法Ortho和Perspective,分别用于创建正交和透视投影矩阵,详细阐述了参数的意义和矩阵变换的过程。

在脚本中通常用Vector3、QUaternion、Transform等类的属性和方法来对物体进行变换,Matrix4x4类通常在一些比较特殊的地方,如对摄像机的非标准投影变换等。本博客主要介绍Matrix4x4类的一些实例和静态方法。

一、Matrix4x4类实例方法

在Matrix4x4类,涉及的实例方法有MultplyPoint方法、MultiplyPoint3x4方法、MultiplyVector方法和SetTRS方法。

1、MultplyPoint方法:投影矩阵变换

(1)基本语法
public VEctor3 MultiplyPoint(VEctor 3 v);
(2)功能说明

此方法的功能用来对点v进行投影矩阵变换。例如,设m1位Matrix4x4实例、v1位Vector3实例,Vector3 v2=m1.MultiplyPoint(v1),则v2值变换过程如下:v2=v1.m1·M,系统在进行变换时会给v1增加一个w的分量,扩充为四维向量,w默认值为1,而M为投影变换矩阵:

M = [ cot ⁡ Θ A s p e c t 0 0 0 0 cot ⁡ Θ 0 0 0 0 f f − n 1 0 0 n ⋅ f n − f 0 ] M= \begin{bmatrix} \frac{ \cotΘ}{Aspect} & 0 & 0 & 0\\ 0 & \cotΘ & 0 & 0\\ 0 & 0 & \frac{f}{f-n} & 1\\ 0 & 0 & \frac{n·f}{n-f} & 0 \end{bmatrix} M= ​AspectcotΘ​000​0cotΘ00​00f−nf​n−fn⋅f​​0010​ ​
其中f和n为远视口的距离,如图所示,Θ为视口夹角,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();
        }
    }
}

2、MultiplyPoint3x4方法:矩阵变换

(1)基本语法
public VEctor3 MultiplyPoint3x4(VEctor 3 v);
(2)功能说明

此方法的功能是用来对参数值点进行矩阵变换。此方法在对参数v进行矩阵变换时,不涉及投影变换,速度比MultiplyPoint快。例如,设m1为Matrix4x4实例,v1为Vector3实例,则Vector3 v2=m1,MultiplyPoint3线(v1),即为v2=v3*m1,其中v3=(v1,w),w默认值为1

3、MultiplyVector方法:矩阵变换

(1)基本语法
public VEctor3 MultiplyVector(VEctor 3 v);
(2)功能说明

此方法的功能是用来对方向向量v进行矩阵变换。此方法与方法MultiplyPoint功能类似,但它把v当做方向向量而非坐标点进行变换,当用矩阵与v进行变换时,只是对v的方向进行转换,也即系统会对参与变换的Matrix4x4进行特殊处理:设M为参与变换的Matrix4x4实例,其值为:
M = [ m 00 m 01 m 02 m 03 m 10 m 11 m 12 m 13 m 20 m 21 m 22 m 23 m 30 m 31 m 32 m 33 ] M= \begin{bmatrix} m00 & m01 & m02 & m03\\ m10 & m11 & m12 & m13\\ m20 & m21 & m22 & m23\\ m30 & m31 & m32 & m33 \end{bmatrix} M= ​m00m10m20m30​m01m11m21m31​m02m12m22m32​m03m13m23m33​ ​

二、Matrix4x4类静态方法

1、Ortho方法:创建正交投影矩阵

在这里插入图片描述

2、Perspectice方法:创建透视投影矩阵

(1)基本语法
public static Matrix4x4 Perspective(float fov,float aspect,float zNear,float zFar);

其中参数fov为视口夹角,参数aspect为视口纵横比例,参数zNear为近视口距离,参考zFar为远视口距离。

(2)功能说明

此方法的功能视床架一个透视投影矩阵。若要更改摄像机的透视投影矩阵,可以用如Camera.main.projectionMatrix=Matrix4x4.Perspective(float fov,float aspect,float zNear,float zFar);如果要重置其投影矩阵,需要使用语法
Camera.main.ResetProjectionMatrix();
方法中各个参数图解如图4和图5所示(其中aspect=width/height)

Unity矩阵matrix4x4的应用:世界空间与模型空间的坐标系转化 文章目录前言一、矩阵 Matrix4x4?二、应用过程1、案例分析2、函数介绍Matrix4x4.TRSMatrix4x4.MultiplyVectorMatrix4x4.MultiplyPointMatrix4X4.inverseMatrix4X4.rotation3、实际代码总结 前言 近期由于项目需求,研究了一下通过矩阵来转换不同坐标系,接下来就简单记录一下。 一、矩阵 Matrix4x4? UnityEngine.Matrix4x4 是 Unity 提供的方便矩阵计算而封装的一个结构体,提供 阅读详情

相关推荐

【Unity】入门学习笔记180519——API(7)——Matrix4x4类

Matrix4x4类脚本中通常用Vector3、Quaternion、Transform等类地属性和方法来对物体进行变换Matrix4x4类则通常用于 摄像机的非标准投影变换 等特殊地方A、Matrix4x4类实例方法1、MultiplyPointpublic Vector3 MultiplyPoint(Vector3 v);用来对点v进行投影矩阵变换m1为Matrix4x4实例v1为Vector...

Dylan_Day的博客 1509

Unity矩阵入门—Matrix4x4的平移 旋转 缩放

Matrix4x4 平移 旋转 缩放

oKaiGuo的博客 4126

Unity Tilemap动态缩放:基于Matrix4x4实现单个瓦片独立变换

在Unity 2D游戏开发中,Tilemap是管理网格化地图的核心组件,它通过批量渲染瓦片来优化性能。其渲染原理基于图形学中的变换矩阵,每个瓦片的位置和大小由模型-视图-投影矩阵决定。为了实现更灵活的视觉效果,如角色升级图标放大或选中高亮,需要突破Tilemap全局统一尺寸的限制。通过操作Matrix4x4矩阵,可以直接修改GPU渲染指令,在保持Tilemap合批性能的同时,为单个瓦片注入独立的缩放、旋转数据。这项技术特别适用于战棋、策略类游戏中需要动态改变单位视觉表现的场景,本文以动态缩放为例,详细解析了

weixin_30414305的博客 319

UnityAPI的学习——Matrix4x4类

在脚本中通常用Vector3、Quaternion、Transform等类的属性和方法来对物体进行交换,Matrix4x4类通常用在一些比较特殊的地方,如对摄像机的非标准投影变换。

ht_game的博客 1335

Unity矩阵入门:Matrix4x4的平移、旋转与缩放核心原理与应用

在计算机图形学与游戏开发中,3D变换是构建虚拟世界的数学基石,其核心原理是通过矩阵运算实现物体的平移、旋转和缩放。矩阵作为线性变换的通用表示,能够高效组合复杂变换,并通过GPU硬件加速,为实时渲染提供性能保障。这一基础概念在游戏引擎、VR/AR开发、计算机视觉等领域具有广泛的技术价值。在Unity引擎中,Matrix4x4结构体正是这一原理的具体实现,它作为Transform组件底层数据,支撑着从简单的UI动画到复杂的自定义Shader与动态网格变形等多种应用场景。掌握Matrix4x4的操作,尤其是其与四

weixin_33976326的博客 259

Unity2D 自定义Scriptable Tiles的理解与使用(二)——通过了解Tile类来对TileBase类的方法(主要是GetTileData方法)进行详细理解

本文介绍了Unity中的Tile类,包括它地成员变量和方法

scombropidae的博客 2845

Matrix4x4 矩阵api介绍

Namespace: UnityEngine Description 描述 A standard 4×4 transformation matrix. 一个标准的4×4变换矩阵。 A transformation matrix can perform arbitrary linear 3D transformations (i.e. translation, rotation, scale...

qq_34462436的博客 1856

Unity游戏开发:从欧拉角到旋转矩阵的C#手动实现与原理详解

在3D图形学与游戏开发中,物体的旋转是核心基础操作。欧拉角通过三个绕轴旋转的角度直观描述朝向,但其存在万向节死锁和顺序歧义等固有缺陷。旋转矩阵作为一种3x3的数学变换,通过列向量表示旋转后坐标轴的新方向,提供了坐标系无关的、无歧义的旋转描述,能有效避免上述问题。理解其转换原理对于深入图形学底层、进行性能优化及解决复杂旋转问题具有重要技术价值。在Unity游戏开发、Shader编程、物理引擎交互及自定义动画系统等应用场景中,掌握欧拉角与旋转矩阵的手动转换能力,是处理**万向节死锁**、实现**旋转插值**平滑

weixin_33861800的博客 316

《UnityAPI.Matrix4x4矩阵》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Matrix4x4+identity+inverse+立钻哥哥++OK++)

《UnityAPI.Matrix4x4矩阵》 版本 作者 参与者 完成日期 备注 UnityAPI_Matrix4x4_V01_1.0 严立钻 2020.06.02 ...

VRunSoftYanlz的博客 3021

详解unity中tranform.worldToLocalMatrix

本来是想写一个求A物体在B物体坐标系下的坐标。 写完了才发现有worldToLocalMatrix这个函数,后来查了查还有InverseTransformPoint这个函数。。。 没看API就直接写真血亏。 算了,就当是一次详解吧,直接上代码。 Vector3 world2Local(Transform _worldPosition) { Matrix4x4 tr...

MQL优快云的博客 8368

Unity矩阵平移旋转缩放Matrix4x4

矩阵平移旋转缩放

类人_猿的博客 4551

unity解析API——Matrix4x4类06

一,Matrix4x4类的实例方法 1,MultiplyPoint方法:投影矩阵变换 2,MultiplyPoint3x4方法:矩阵变换 3,MultiplyVector方法:矩阵变换 4,SetTRS方法:重设Matrix4x4 二,Matrix4x4类的静态方法 1,Ortho方法:创建正交投影矩阵 2,Perspective方法:创建透视投影矩阵 3,TRS方法:返回Matrix4x4实例 ...

cyl16688 511

深入了解QML中的matrix4x4类型

需要注意的是,QML中matrix4x4的矩阵按照列主序(column-major)排列,与C++中的行主序(row-major)不同。通过本文的介绍,我们了解了QML中matrix4x4类型的基本定义、矩阵运算和各种矩阵变换的方法。在QML中,matrix4x4是一种基础类型,用于表示4行4列的矩阵。matrix4x4类型支持各种基本的矩阵运算,例如加、减、乘以常数、乘法、求逆等等。通过matrix4x4类型,我们可以实现对3D图形的各种变换,如平移、旋转和缩放等。

CodeLancerX的博客 513

Unity Tilemap 单格瓦片动态缩放:Matrix4x4与Shader实战

在2D游戏开发中,网格地图的视觉反馈是提升游戏表现力的关键。Unity的Tilemap系统虽然高效,但其批量渲染的特性使得直接修改单个瓦片的Transform变得困难。通过理解计算机图形学中的变换矩阵(Matrix4x4)原理,我们可以深入渲染管线,实现对特定瓦片的独立控制。这种技术方案的核心价值在于,它能在保持Tilemap合批优势的前提下,提供极高的运行时灵活性,从而为自走棋、战棋等策略游戏带来丰富的动态效果,如棋子选中高亮、状态变化反馈等。本文聚焦于利用MaterialPropertyBlock与自定

weixin_34341229的博客 345

Ansys疲劳仿真:工程结构寿命评估的实战方法论

做了这么多年仿真,有个感受越来越深——静力学算得再漂亮,疲劳寿命预测不对,项目照样过不了评审。不是因为理论有多复杂,而是因为疲劳损伤的物理机制本身就带有统计属性,材料内部的微观缺陷分布、应力集中位置、载荷谱的随机性,每一项都能让结果偏移20%甚至更多。本文从实战出发,梳理Ansys疲劳仿真的核心流程,重点讲清楚载荷类型选择、S-N曲线处理、应力集中修正这几个最容易出问题的环节。疲劳仿真做好了,最大的收获不是跑出一个漂亮的Damage云图,而是对结构的真实薄弱环节建立起量化的认知。

keyanxiaobaigou的博客 524

【Codex安装使用手册】

Codex安装部署使用教程

qq_43392230的博客 4945

Unity Tilemap瓦片缩放终极指南:从编辑器技巧到Matrix4x4动态变换

在2D游戏开发中,瓦片地图(Tilemap)是构建场景的高效工具,其核心原理是通过网格化数据管理大量重复元素,以实现优化的渲染合批(Batching)。然而,当需要对单个或局部瓦片进行动态缩放时,直接操作会遇到挑战:修改源Sprite会影响全局,而调整Transform则会破坏合批,增加Draw Call,损害渲染性能。其技术价值在于,在保持Tilemap批处理优势的前提下,实现精细的视觉控制,这对于创建动态地形、可交互机关或层次化场景至关重要。应用场景广泛,包括平台游戏中的可破坏地形、策略游戏中随角色能力

weixin_33910759的博客 317

Oracle EBS 如何处理MMT表错误-WIP 实体未定义或不具有期间余额项

错误说明:WIP 实体未定义或不具有期间余额项。(The wip entity is either not defined or does not have a period balance entry)由于工单的创建日期为4月份,工单的余额表记录的期间是4月份,而3月份工单余额表中没有记录。公司将上一个新的库存组织,有一部分测试的工单创建日期在4月份,而工单的发放日期、发料事务处理日期和完工事务处理日期均在3月份。1、关闭3月份库存会计期,待定事务处理存在未计成本物料/WMS。成本类型: PAC成本。

陈显平的专栏-Oracle EBS 651

FreeCAD Base.Matrix 完全指南:4x4 仿射变换矩阵的 Python API 与底层实现解析

本文以 FreeCAD 官方 Sphinx 文档 [Matrix.rst](https://link.gitcode.com/i/243d887e52b2019b7b189ba2f07ef55a)(该文档通过 `automodule:: FreeCAD` 与 `autoclass:: Matrix` 指令自动生成 `Base.Matrix` 类的 API 参考)为骨架,结合 [Matrix.pyi

gitblog_00152的博客 760

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6664

基于深度学习的心律失常的自动分类

基于深度学习的心律失常的自动分类 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 心律失常的危害与检测的重要性 心律失常是一种常见的心血管疾病,严重威胁着人们的健康和生命。据统计,全球每年有数百万人因心律失

AI架构师小马 1139

Matrix4x4矩阵 api

Matrix4x4 矩阵api介绍 Namespace: UnityEngine Description 描述 A standard 4×4 transformation matrix. 一个标准的4×4变换矩阵。 A transformation matrix can perform arbitrary linear 3D transformations (i.e. tra...

weixin_30371875的博客 593

提示工程ROI计算模板:架构师私藏Excel表(含自动计算)

花3个人力优化提示词,到底能带来多少实际收益?“这个提示工程项目值得做吗?投入10万成本,多久能回本?“不同LLM应用的提示词优化优先级怎么排?全凭经验拍脑袋?当前90%的企业在提示工程投入上缺乏标准化的量化评估方法,导致资源浪费(盲目投入无回报项目)或错失机会(低估高价值优化点)。ROI = (总收益 - 总成本) / 总成本 × 100%对于提示工程,总成本=显性成本+隐性成本,总收益=直接收益+间接收益(后文会详细拆解)。提示工程的价值不是“玄学”,而是可以用数据量化的投资行为。本文分享的。

AI开发架构师 1073

Unity Matrix4x4底层原理与工程实践指南

Matrix4x4是三维图形学中描述空间变换的核心数学工具,其本质是通过4×4齐次坐标矩阵统一表达平移、旋转、缩放等仿射变换。原理上,它将欧拉角、四元数、向量位移等高层语义映射为可并行计算的浮点矩阵运算,具备数值稳定、GPU友好、层级解耦等技术优势。在Unity引擎中,Transform组件所有属性(position/rotation/scale)均为Matrix4x4的封装视图,真实渲染、GPU Instancing、AR空间对齐、IK求解等高精度场景均依赖其底层控制能力。本文聚焦Matrix4x4在Un

weixin_30542979的博客 74

OpenClaw人人养虾:接入Synology Chat

Synology Chat 是群晖 NAS(Network Attached Storage,网络附属存储)内置的即时通讯应用。

王国平的博客 780

YOLOv12涨点改进 | CVPR 2026 |独家创新首发、特征融合改进篇 | 引入Local Attender 局部注意力算子融合模块,高效捕捉小目标和密集目标的局部上下文特征,助力高效涨点

🚀本文提出LocalAttender模块改进YOLOv12模型,通过局部注意力机制解决传统上采样方法的语义漂移问题。该模块采用固定偏移邻域加权聚合方式,在保持线性计算复杂度的同时有效捕捉小目标和密集目标的局部特征。实验表明,LocalAttender能显著提升检测精度而不增加过多计算负担,且与YOLOv12兼容性强。文章详细介绍了模块原理、实现方法和配置步骤,并提供了两种改进方案的具体yaml配置文件。这一创新为提升目标检测性能提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 118
上一篇: 2023第十届大唐杯省赛心得体会总结
下一篇: INDEMIND双目惯性模组运行实时ORB-SLAM3教程
极客范儿
极客范儿 新星创作者: 游戏开发技术领域 新星创作者: 游戏开发技术领域 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄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、付费专栏及课程。

余额充值