行矩阵列矩阵D3D&GL&U3D
void Start () {
//矩阵函数原型:Matrix4x4(Vector4 colum0, Vector4 colum1, Vector4 colum2, Vector4 colum3),这说明U3D使用列矩阵,同opengl
//因此矩阵是左乘的,DX是行矩阵,矩阵是右乘的。
//在DX中WVP矩阵组合为 W*V*P, 而GL中MVP矩阵组合为 P*V*M
Matrix4x4 tm = new Matrix4x4(new Vector4(, , , ), new Vector4(,,,),new Vector4(,,,),new Vector4(,,,));
Vector4 pt4 = new Vector4(, , , );
Vector3 pt3 = new Vector3(, , );
//var pt4t = pt4*tm; //编译出错,没有定义这种乘法,不支持右乘!
var pt4t = tm*pt4;
var pt4tt = tm.transpose*pt4; //矩阵转置-变为行矩阵
var pt3t = tm*pt3;
var pt3tt = tm.transpose*pt3; //实际是 tm.transpose * (0,0,0,0),U3D将vector3扩展为w为0,而不是像DX那样将w扩展为1
//总结:在U3D中,
//1,矩阵是列矩阵,必须左乘,U3D未定义矩阵右乘向量这种操作
//2,vector3(x,y,z)与矩阵相乘时,vector3被扩展为vector4(x,y,z,0)
Debug.Log(pt4t.x + "," + pt4t.y+","+ pt4t.z); //0,0,0
Debug.Log(pt4tt.x + "," + pt4tt.y+","+ pt4tt.z); //3,0,0
Debug.Log(pt3t.x + "," + pt3t.y+","+ pt3t.z); //0,0,0
Debug.Log(pt3tt.x + "," + pt3tt.y + "," + pt3tt.z);//0,0,0
//3,鉴于2的情况,U3D中操作顶点变换最好使用函数,如下
var tx = tm.transpose.MultiplyPoint(pt3t);
Debug.Log(tx.x + "," + tx.y + "," + tx.z); //3,0,0
}
行矩阵列矩阵D3D&GL&U3D的更多相关文章
- glm初试,关于行矩阵列矩阵问题
/*** * glm中矩阵是行优先存储的,这不同于opengl默认的以列优先存储的方式??,以下面矩阵mat为例 * 它是用四个行向量来模拟存储四个行:vec4 value[4],其中 * value ...
- 机器学习笔记 1 LMS和梯度下降(批梯度下降) 20170617
https://www.cnblogs.com/alexYuin/p/7039234.html # 概念 LMS(least mean square):(最小均方法)通过最小化均方误差来求最佳参数的方 ...
- OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...
- 各大引擎矩阵的矩阵存储方式 ----行矩阵 or 列矩阵
OpenGL 里面的矩阵 float m[16]; OpenGL中的矩阵是这样的 m[0] m[4] m[8] m[12] m[1] m[5] m[9] m[13] m[2] m[6] m[10] ...
- U3D中可以直接使用GL!!!
https://blog.csdn.net/u013172864/article/details/78860624
- 统一D3D与OpenGL坐标系统
作者:游蓝海(http://blog.csdn.net/you_lan_hai) DirectX 3D与OpenGL坐标系统的差异性,给我们带来非常大的麻烦.让跨平台编程的新手非常困惑.近期在做一个跨 ...
- WhyDX9:翻写D3D红龙书中的程序
之前写过一套学习OpenGL的框架:WhyGL,即然有了GL那也应该再写个学习D3D的框架:WhyDX9.两个程序的架构相同,然后这个程序是将D3D红龙那本书的DEMO翻写了一遍.先将可执行程序发一下 ...
- U3D DrawCall优化手记
在最近,使用U3D开发的游戏核心部分功能即将完成,中间由于各种历史原因,导致项目存在比较大的问题,这些问题在最后,恐怕只能通过一次彻底的重构来解决 现在的游戏跑起来会有接近130-170个左右的Dra ...
- FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用 ...
随机推荐
- Oracle 11gR2 RAC 新特性说明
最近接触了一下Oracle 11g R2 的RAC,发现变化很大. 所以在自己动手做实验之前还是先研究下它的新特性比较好. 一. 官网介绍 先看一下Oracle 的官网文档里对RAC 新特性的一 ...
- js搞定网页的简繁转换
对网页进行简繁字体转换的方法一般有两种:一是使用<简繁通>这样的专业软件,另外一种是制作两套版本的网页.显然,这两种方法都较为麻烦,而且专业软件一般不能用于免费的空间.笔者在这里给大家提供 ...
- Bluez相关的各种tools的使用
7.1 Bccmd Bccmd是用来和CSR的芯片进行BCCMD(Bluecore command protocol)通讯的一个工具.BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属 ...
- JAVA面向对象编程课程设计——网络版单机斗地主
一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...
- 胖子哥的大数据之路(6)- NoSQL生态圈全景介绍
引言: NoSQL高级培训课程的基础理论篇的部分课件,是从一本英文原著中做的摘选,中文部分参考自互联网.给大家分享. 正文: The NoSQL Ecosystem 目录 The NoSQL Eco ...
- 【Spring学习笔记-MVC-1.0】Spring MVC架构介绍
作者:ssslinppp 1. 核心架构图 2. 核心架构的具体流程步骤 3. 具体的核心开发步骤 4. 常用注解 5. <mvc:annotation-driven>配置 6 ...
- 【Hibernate学习笔记-4】在hibernate.cfg.xml中配置C3P0数据源
jar包 hibernate.cfg.xml <?xml version="1.0" encoding="GBK"?> <!DOCTYPE h ...
- 【ActiveMQ入门-10】ActiveMQ学习-通配符+异步接收
通配符介绍: 一般情况下,我们使用层次结构的方式来组织队列,比如A.B.C.D,这样便于归类和管理. 我们也可以使用通配符来配置或是操作多个队列. 通配符有三个: . 用来分隔路径: * 用来匹 ...
- [转]Excel 工作表保护密码移除
http://blog.sina.com.cn/s/blog_4cf096b80100rhfb.html Public Sub 工作表保护密码() Const DBLSPACE As String = ...
- 3-4 1449 web view
1.app类型 不同类型的应用 区别 native app 纯原声app,Android用Java些,iOS用object c写 hybrid app 套用原声应用的外壳,既有原生的UI页面,又通过内 ...