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 }

最新文章

  1. Asp.Net MVC4入门指南(5):从控制器访问数据模型
  2. gdb调式
  3. 编译@Override报错
  4. DataTables语言国际化
  5. Object-c学习之路九(字典(NSDictionary&NSMutableDictionary))
  6. Oracle学习之Oracle 树操作(select…start with…connect by…prior)
  7. Highlighting an element as it is hovered over (like inspect element in FireBug) - jQuery Forum
  8. Oracle之分组函数嵌套以及表连接
  9. springmvc4.0配置ajax请求json格式数据
  10. Bash中的测试——test, [], [[]], (())
  11. 1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏
  12. 9.7、Libgdx之振动器
  13. 阮一峰:Flex 布局教程
  14. java基础 (二)之HashMap,HashTable,ConcurrentHashMap区别
  15. Arduino语法详解_含示例详解
  16. mui longtap 事件无效
  17. oracle 存储过程模板
  18. Java基础知识你知道多少?
  19. Java(C#)基础差异-数组
  20. 数据库查询语句报错-ORA-00911: invalid character

热门文章

  1. Apache Derby数据库 安装、知识点
  2. protobuf生成
  3. IE浏览器从页面向后台Controller传中文值出现乱码问题
  4. mssql存储过程 事务
  5. datacolumn 表达式 除数为0
  6. 禁止Grid、TreeGrid列排序和列菜单
  7. 【ActiveMQ入门-5】ActiveMQ学习-消息持久性
  8. 建造者模式及C++实现
  9. apply、call和bind
  10. 用三个线程按顺序循环打印ABC三个字母