UE基础 —— 坐标系统与空间

目录

坐标系统

Axes

Transform and Control Axes

坐标空间

World Space

Local Space

Screen Space

UV Space


坐标系统

        UE使用笛卡尔坐标系统去表示三维欧几里得空间位置,在UE内坐标系统是左手定律且Z轴向上;点是由三个坐标轴的位置确定(x、y、z),这些坐标值设置了actor的位置和方向;这些轴可以通过多种不同的方式相互定向,轴的方向和值取决于所在的坐标空间的类型;

注,如从其他软件(Maya, Houdini, ZBrush, Blender, or 3ds Max)导入资产,需考虑坐标轴方向;

 

Axes

在UE中,X轴—红色、Y轴—绿色、Z轴—蓝色(向上);

  • X轴,决定actor向前(forward)或向后(backward),正值向前;
  • Y轴,决定actor向左(left)或向右(right),正值向右;
  • Z轴,决定actor向上(up)或向下(down),正值向上;

在坐标系中有一个特别的点,称为原点(origin),由(0,0,0)表示;

可使用正交视图查看轴的方向并设置轴的值;

Transform and Control Axes

        场景中心的变换小控件与视口左下角的小控件图标的方向相同,匹配方向是因为正在世界空间中查看所选演员;此外,编辑器中的变换控件的轴颜色协调匹配的;

坐标空间

        每个坐标空间都有自己的坐标系和原点,轴的交点等于该特定坐标空间的原点,由该坐标空间坐标系内的坐标(0,0,0)表示,轴的值根据变换的原点和方向而增加或减少;

World Space

        世界空间是相对整个关卡的坐标系统,原点是场景的中心;此坐标系统是固定的,以绝对单位位移或旋转对象;

Local Space

        局部空间是相对场景组件(被赋予到actor)的坐标系统,也称之为对象空间(object space);

        每个actor在场景中都有一个相对于actor枢轴点的局部空间坐标系,actor的枢轴点是actor的三个局部坐标轴相交的点,代表局部空间的原点;使用局部空间是相对于其父对象的平移或旋转;

临时改变actor的枢轴点:

  • 中键坐标轴控件,并拖拽移动;
  • ALT + MMB,然后在新的位置处中键;

永久改变actor的枢轴点:

  • 在执行临时改变枢轴点后,右击actor,选择Pivot > Set as Pivot Offset

 

Screen Space

        屏幕空间是将三维世界空间投影到构成玩家视觉的二维屏幕上,可从场景中的特定摄影机中提取屏幕空间坐标;

UV Space

        UVs是将三维曲面网格参数化(U,V)到归一化(0-1)二维空间中;换句话说,它们表示二维空间中的坐标,这些坐标转换为三维模型上的顶点;空间水平表示为U,垂直表示为V,因此称为UV坐标,也称为2D或纹理坐标;

### 计算 UE 中 Actor 的局部空间向量到世界空间的位置 在 Unreal Engine (UE) 中,可以通过应用 `FTransform` 来将局部空间的向量转换为世界空间中的位置。具体来说,`FTransform` 提供了一个方法来处理这种变换操作。 以下是实现此功能的核心逻辑: #### 使用 FTransform 进行坐标系转换 `FTransform` 是 UE 中用于表示对象变换的一个类,它包含了旋转 (`Rotation`)、平移 (`Translation`) 和缩放 (`Scale3D`) 三个主要属性。通过调用其成员函数 `TransformPosition` 或者手动组合矩阵运算,可以完成从局部空间到世界空间的转换[^1]。 下面是一个具体的代码示例展示如何执行这一过程: ```cpp // 假设我们有一个局部空间的向量 LocalSpaceVector 和一个有效的 Transform 对象 MyActorTransform FVector ConvertLocalToGlobal(const FVector& LocalSpaceVector, const FTransform& MyActorTransform) { // 利用 FTransform::TransformPosition 方法将局部空间向量映射至世界空间 return MyActorTransform.TransformPosition(LocalSpaceVector); } ``` 上述代码片段展示了如何利用 `FTransform::TransformPosition()` 函数轻松地把给定的局部空间矢量转化为相应的全球坐标的点位[^2]。 如果需要更深入理解背后的原理,则涉及到线性代数的知识——主要是关于齐次坐标以及仿射变换的概念。简单地说,在三维图形学里,任何物体的姿态都可以由一个4×4阶矩阵描述;这个矩阵综合表达了该物体质心相对于全局原点的位置偏移(translation),绕各轴发生的角度变化(rotation), 及可能存在的尺寸伸缩(scale)[^1]。 对于那些希望进一步优化资源管理流程的人而言,值得注意的是虚幻引擎正在逐步迁移到一种新的高层次中间格式上,这一步骤旨在支持任意种类网格资产的表现形式,并最终提升工作效率并引入更多创新特性。 尽管如此,当前版本下直接借助于已有的 API 如 `FTransform`, 已经能够满足大多数日常开发需求当中涉及的空间转换任务了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值