博客
关于我
MMORPG大型游戏设计与开发(客户端架构 part3 of vegine)
阅读量:433 次
发布时间:2019-03-06

本文共 1301 字,大约阅读时间需要 4 分钟。

扩展OGRE数学库:从坐标到实用结构体

在3D游戏开发中,数学库是构建整个虚拟世界的基石。OGRE引擎作为一款流行的3D游戏引擎,其数学库的扩展为开发者提供了强大的工具来处理各种坐标和向量操作。了解这些结构体的设计和用途,能够帮助我们更好地理解游戏世界背后的数学逻辑。

1. 基础结构体:二维向量

OGRE数学库中最基本的结构体之一是 twofloat_vector_t,用于处理二维坐标。这个结构体封装了两个浮点数,分别表示x轴和y轴的坐标。其主要操作包括加法、减法和标量乘法,这些操作在游戏中用于处理物体的位置和大小。

struct VENGINE_API twofloat_vector_t {
float x;
float y;
};

2. 扩展结构体:三维向量

在三维空间中,处理坐标变得更加复杂,因此 threefloat_vector_t 被引入来处理x、y、z轴的坐标。这个结构体支持向量的加法、减法和标量乘法,同时还能计算向量的长度和归一化,这些操作在游戏中用于处理物体的位置、方向和距离。

struct VENGINE_API threefloat_vector_t {
float x;
float y;
float z;
};

3. 高级结构体:屏幕射线

floatray 是一个更复杂的结构体,用于表示屏幕射线。它由一个起点坐标和一个方向向量组成。这种结构体在渲染和光照计算中尤为重要,它帮助我们确定从玩家眼睛到游戏世界的光线路径。

struct VENGINE_API floatray {
threefloat_vector_t origin;
threefloat_vector_t direction;
};

4. 整型向量的应用

除了浮点型向量,整型向量如 twoint_vector_tthreeint_vector_t 也被引入。它们主要用于处理整数坐标,适用于离散的空间位置,比如网格系统中的坐标。

struct VENGINE_API twoint_vector_t {
int32_t x;
int32_t y;
};

5. 向量运算的实用性

这些向量结构体支持基本的向量运算,使得开发者可以轻松地进行坐标的加减乘除操作。同时,内置的 length()normalise() 方法为向量的长度和归一化提供了便利接口,极大地简化了向量的使用过程。

6. 结构体的实际应用

在3D游戏中,向量和坐标的应用场景无处不在:

  • 物体位置:通过向量来表示角色或物体的坐标位置。
  • 光线计算floatray 结构体用于光线追踪和阴影渲染。
  • 粒子效果:三维向量用于控制粒子的运动方向和位置。
  • 用户界面:二维向量用于处理窗口大小、位置以及UI元件的坐标。

7. 结论

OGRE数学库通过对各种向量和坐标的封装,为3D游戏开发提供了强大的工具。无论是处理二维还是三维坐标,这些结构体都能够满足开发者的需求。在接下来的文章中,我们将深入探讨引擎的性能接口模块,揭示更多关于引擎内部工作机制的秘密。

转载地址:http://hbiyz.baihongyu.com/

你可能感兴趣的文章
Nginx配置——不记录指定文件类型日志
查看>>
nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
nginx配置全解
查看>>
Nginx配置参数中文说明
查看>>
nginx配置域名和ip同时访问、开放多端口
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>