3D软件坐标系速查【左手/右手】

本文介绍不同3D软件的世界坐标系之间的差异及其工作原理。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎

基本上,游戏引擎和3D软件包最重要的问题是根据软件的坐标轴系统创建资产,正确缩放它们并根据要完成的工作设置枢轴系统。

坐标系正确性的定义可能会根据模型导入的游戏引擎或 3D 软件而变化。 每个程序都有不同的坐标轴系统,导出与游戏引擎或其他 3D 软件包兼容的模型至关重要。 在不了解软件坐标系的情况下进行导出可能会导致奇怪的结果。

特别是如果在开发游戏时作为一个团队工作,你应该更加注意这个问题并正确导出。 如果游戏开发人员收到你提供的 3D 模型,该模型的坐标系与当前程序不同,则可能会浪费时间来理解该问题。 这是你必须要注意的情况。

既然我们已经充分讨论了该主题的重要性,那么让我们从了解坐标系开始本文。

1、什么是坐标系?

我们可以将坐标系定义为一种使用一个或多个数字或坐标来确定点或其他几何元素的位置的系统。 游戏引擎中坐标系的任务是定义每个对象的位置及其面向的方向。 这些数据可以帮助你计算物体之间的距离、旋转、速度和各种其他有用信息。

在本文中,我们将基于笛卡尔坐标系。 Unity默认使用笛卡尔坐标系。 但是可以使用脚本更改。

众所周知,Unity 场景内的空间由 X、Y 和 Z 轴决定。 这些代表左/右、上/下和前/后方向。 基本上,通过更改Unity中的坐标值,我们指定对象应放置在坐标系中的位置。

Unity坐标轴系统

由于坐标系可以是右手坐标系或左手坐标系,它们也可以根据代表深度变化的轴而不同。 首先让我们了解右手坐标系和左手坐标系之间的区别。

2、右手坐标系 vs. 左手坐标系

通常,3D 图形软件使用两种类型的笛卡尔坐标系:右手坐标系和左手坐标系。 这可能会改变应用程序的首选项,而 3ds Max 使用右手坐标系,虚幻引擎使用左手坐标系。 然而我们可以说大多数 3D 建模应用程序都使用右手坐标。

简单的右手坐标系使用右手法则来确定不同轴的方向,而左手坐标系则使用左手法则。 不同的轴可能代表“向上”方向,但我们稍后会提到。 这里的基本思想是关于旋转方向和地板轴方向(我在这里指的是x和z,它们在不同情况下可能会改变)。 在右手系统中旋转方向为正。 在使用 Y 轴作为上/下方向的右手系统中,Z 轴的 + 方向朝向屏幕外部,而左手系统则相反。

Y-Up 方案中右手和左手坐标系的差异

3、3D 软件中 Y-Up/Down  vs. Z-Up/Down

Blender和3ds Max都使用90年代初期常见的坐标系。 这种约定在建筑中很典型。 你从使用 X/Y 坐标的平面图开始建模,然后向上拉伸(或向下拉伸,如果系统是右手或左手,可能会发生变化)。 这称为 Z-Up(或 -Z-Up)坐标系。

如果在 Blender 中以顶部正交视图查看场景,可以看到 x 轴和 y 轴位于地面

Cinema 4D、Maya、Houdini、图形 API 等 3D 应用程序和大多数游戏引擎都使用不同类型的方法。 屏幕变成一个 2D 平面,它使用 X/Y 坐标来定位平面图像,而 Z 坐标表示场景中的深度。

如果在 Cinema 4D 中以顶部正交视图查看场景,可以看到 z 轴显示向上方向,这意味着它代表前视图的页面深度

最后,你可以在下面找到一些使用不同系统的 3D 应用程序。 即使你是 3D 艺术家、游戏开发人员或游戏设计师,了解不同轴系统的逻辑也很重要。


原文链接:3D软件坐标系速查 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/235800.html

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

相关文章

XSKY SDS 产品率先获得 OceanBase V4 新版本认证

近日,北京奥星贝斯科技有限公司(简称:OceanBase)与北京星辰天合科技股份有限公司(简称:XSKY 星辰天合)顺利完成产品兼容性认证。 XSKY 的高性能全闪存储以及混闪存储,与 OceanBase V…

文献阅读:Sparse Low-rank Adaptation of Pre-trained Language Models

文献阅读:Sparse Low-rank Adaptation of Pre-trained Language Models 1. 文章简介2. 具体方法介绍 1. SoRA具体结构2. 阈值选取考察 3. 实验 & 结论 1. 基础实验 1. 实验设置2. 结果分析 2. 细节讨论 1. 稀疏度分析2. rank分析3. 参数位置分析4. 效率考察 4.…

【STM32】STM32学习笔记-DMA数据转运+AD多通道(24)

00. 目录 文章目录 00. 目录01. DMA简介02. DMA相关API2.1 DMA_Init2.2 DMA_InitTypeDef2.3 DMA_Cmd2.4 DMA_SetCurrDataCounter2.5 DMA_GetFlagStatus2.6 DMA_ClearFlag 03. DMA数据单通道接线图04. DMA数据单通道示例05. DMA数据多通道接线图06. DMA数据多通道示例一07. DMA数…

jupyter notebook 配置conda 虚拟环境python

conda创建python环境 conda create -n openvoice python3.9 激活环境 source activate openvoice 在虚拟环境中安装ipykernel pip install ipykernel 添加虚拟环境进到 jupyter notebook python -m ipykernel install --user --name openvoice --display-name openvoice …

base64与BytesIO图片进行编码、解码;api调用

base64与BytesIO简单介绍 io.BytesIO 和 Base64 编码都是用于在内存中处理二进制数据的方法,但它们的目的和使用场景有所不同。 1) io.BytesIO io.BytesIO 是 Python io 库中的一个类,它提供了一个在内存中处理二进制数据的接口&#xff0…

Linux-shell简单学习

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 其他…

Qt6入门教程 4:Qt Creator常用技巧

在上一篇Qt6入门教程 3:创建Hello World项目中,通过创建一个Qt项目,对Qt Creator已经有了比较直观的认识,本文将介绍它的一些常用技巧。 Qt Creator启动后默认显示欢迎页面 创建项目已经用过了,打开项目也很简单&#…

C++力扣题目226--翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,3,1]示例 3&#x…

Apache Doris 入门 10 问

基于 Apache Doris 在读写流程、副本一致性机制、 存储机制、高可用机制等方面的常见疑问点进行梳理,并以问答形式进行解答。在开始之前,我们先对本文相关的名词进行解释: FE:Frontend,即 Doris 的前端节点。主要负责接…

《堆排序》与《Top—k》

目录 ​编辑 前言: 关于《堆排序》: 第一步:建堆 第二步:排序 《Top—K问题》 关于Top—k问题: 前言: 我们在前面的blog中,对于《堆》已经有了初步的概念,那么接下来我们可以…

FineBI实战项目一(18):每小时上架商品个数分析开发

点击新建组件,创建每小时上架商品个数组件。 选择线图,拖拽cnt(总数)到纵轴,拖拽hourStr到横轴。 修改横轴和纵轴的文字。 调节连线样式。 添加组件到仪表板。

MYSQL的学习——单行函数详解

目录 1. 数值函数 1) 基本函数 2) 角度与弧度互换函数 3) 三角函数 4) 指数与对数函数 5) 进制间的转换 2. 字符串函数 3. 日期和时间函数 1) 获取日期、时间 2) 日期与时间戳的转换 3) 获取月份、星期、星期数、天数等函数 4) 日期的操作函数 5) 时间和秒钟转换的…

程序员有哪些接单的渠道?

这题我会!程序员接单的渠道那可太多了,想要接到合适的单子,筛选一个合适的平台很重要。如果你也在寻找一个合适的接单渠道,可以参考以下这些方向。 首先,程序员要对接单有一个基本的概念:接单渠道可以先粗略…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(2) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

SpringBoot中使用LocalDateTime踩坑记录

文章目录 前言一、为什么推荐使用java.time包的LocalDateTime而不是java.util的Date?二、使用LocalDateTime和LocalDate时遇到了哪些坑?2.1 Redis序列化报错2.1.1 问题现象2.1.2 问题分析2.1.3 解决方案 2.2 LocalDateTime和LocalDate类型的属性返回给前…

python_数据可视化_pandas_导入excel数据

目录 1.1导入库 1.2读取excel文件 1.3读取excel,指定sheet2工作表 1.4指定行索引 1.5指定列索引 1.6指定导入列 案例速览: 1.1导入库 import pandas as pd 1.2读取excel文件 pd.read_excel(文件路径) data pd.read_excel(D:/desktop/TestExcel…

Docker安装Jenkins,配置Maven和Java

前言 这是一个java的springboot项目,使用maven构建 安装准备 需要将maven和jdk安装在服务器上,Jenkins需要用到,还有创建一个jenkins的目录,安装命令如下: docker run -d -uroot -p 9095:8080 -p 50000:50000 --n…

Vue-8、Vue事件处理

1、点击事件 <!DOCTYPE html> <html lang"en" xmlns:v-model"http://www.w3.org/1999/xhtml" xmlns:v-bind"http://www.w3.org/1999/xhtml"xmlns:v-on"http://www.w3.org/1999/xhtml"> <head><meta charset&quo…

微信小程序:发送小程序订阅消息

文档&#xff1a;小程序订阅消息&#xff08;用户通过弹窗订阅&#xff09;开发指南 目录 步骤一&#xff1a;获取模板 ID步骤二&#xff1a;小程序端获取参数2.1、获取消息下发权限2.2、获取登录凭证&#xff08;code&#xff09; 步骤三&#xff1a;后端调用接口下发订阅消息…

vue知识-03

购物车案例 要实现的功能&#xff1a; 1、计算商品总价格 2、全选框和取消全选框 3、商品数量的增加和减少 <body> <div id"app"><div class"row"><div class"col-md-6 col-md-offset-3"><h1 class"text-center…