行矩阵列矩阵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综合应用 ...
随机推荐
- 调试 FastAdmin 出现 Failed to parse SourceMap
看到群里有人说在调试 FastAdmin出现 SourceMap 出错. 报错信息为: Failed to parse SourceMap 来自 Karson 说明: 这个文件是用于匹配原有less中 ...
- yii2 数据库查询
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- 基于ionic框架封装一个图片轮播指令的几点
在这里我想在项目中封装一个图片轮播的指令 (本项目使用的是ionic框架) 1)定义指令 define(['app'],function(myapp){ myapp.directive('myslid ...
- opencv中的滤波
以前的时候,为了过滤图像中的一些噪点,学过一些简单的滤波,比如中值滤波,均值滤波,也是自己实现的. 在opencv中有现成的函数可以调用,实现滤波的操作. 函数的原型如下: CVAPI(void) c ...
- MySQL集群Percona XtraDB Cluster安装搭建步骤详解
http://www.linuxidc.com/Linux/2017-05/143501.htm http://blog.csdn.net/thundermeng/article/details/52 ...
- 一个多maven项目聚合的实例
本文转载自:http://my.oschina.net/xuqiang/blog/99854 本文介绍一个多maven项目的实例demo,展示了聚合.继承.工程依赖.单元测试.多war聚合.cargo ...
- spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)
第一节:Spring Data Jpa 简介 Spring-Data-Jpa JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate ...
- gc之六--Minor GC、Major GC、Full GC以及Mixed GC之间的区别
目录: GC之一--GC 的算法分析.垃圾收集器.内存分配策略介绍 GC之二--GC日志分析(jdk1.8)整理中 GC之三--GC 触发Full GC执行的情况及应对策略 gc之四--Minor G ...
- 拼图游戏js
实现算法: 1. JavaScript动态生成拼图:通过生成16个div,且除最后一个div不使用背景图片以外,其他div都设置拼图图片为背景.然后通过调整background-position来实现 ...
- ajax异步、同步问题,KindEditor ajax提交内容,ajax提交form表单 解决按两次的问题
版权声明:本文为博主原创文章,未经博主允许不得转载. 如果ajax不采用异步,整个js代码在服务器返回结果前都将阻塞,alert方法除外 lookUp('lookUp','',100,300,3); ...