平移矩阵
--------------------------
2D齐次坐标 (x, y, w) 3x3阶
3D齐次坐标 (x, y, z, w) 4x4阶
==================
4x4 阶平移矩阵
1) 一般三维坐标
2) 加入 w 变为齐次坐标
3) 转换矩阵为单位矩阵并加入 Δx, Δy和Δz来实现平移
平移矩阵
--------------------------
2D齐次坐标 (x, y, w) 3x3阶
3D齐次坐标 (x, y, z, w) 4x4阶
==================
4x4 阶平移矩阵
1) 一般三维坐标
2) 加入 w 变为齐次坐标
3) 转换矩阵为单位矩阵并加入 Δx, Δy和Δz来实现平移
三维任意轴N缩放K的缩放矩阵:
(K-1)*Nx*Nx+1 (k-1)*Ny*Nx (K-1)*Nz*Nx
(K-1)*Nx*Ny (K-1)*Ny*Ny+1 (K-1)*Nz*Ny
(K-1)*Nx*Nz (K-1)*Ny*NZ (K-1)*Nz*Nz+1
旋转矩阵与平移矩阵结合
--------------------------
1) 已知旋转矩阵 R 和平移矩阵 T
2) 根据公式,可得矩阵
3) 如果把 [Δx, Δy, Δz] = t, 那么可得
$“”{gameObject.name}.cs“”
变换分类
--------------------------
线性变换
F(a + b) = F(a) + F(b)
F(ka) = kF(a)
============
F(a) = am // m为任意方阵
F(a + b) = (a + b) m
= am + bm
= F(a) + F(b)
F( ka ) = (ka) M
= k (am)
= k F(a)
============
如果 F(0) = a, 且 a ≠ 0, 那么 F不可能是线性变换
F(k0) = a F(k0) ≠ kF(0)
线性变换不会出现平移,因为原点位置上不会变化
============
反射变换
反射变换是指线性变换后接着平移
Vector V
Matrix M
V' = VM + b //反射变换
============
可逆变换
V' = VM V = V'M^(-1)
============
等角变换
变换前后夹角大小方向不变
============
正交变换
============
刚体变换
============
EditorPrefs.SetString (“”字符串名字“”,“”需要储存的字符串“”)设置一个全局都能使用的字符串数据
【didReloadScript】
编辑器重新加载后才会运行该标签方法
Editorprefs。GetString(“”全局字符串名字“”)用来加载储存的字符串
使用完以后EditorPrefs.DeleteKey()
这节课之前出了个BUG 在看课程的时候看漏了一段,结果有一个ToRemove 没有删除.. 而且是在UI的逻辑里的 我查BUG查了一下午 都没去UI里边找.. 最后还是Plane老师帮我找到的...但是经历了这一下午查BUG 我也算是给老师写的服务器和数据库代码吃透了8成 弄明白了逻辑关系..虽然耽误了我将近1天的时间 也算塞翁失马. 还要感谢Plane老师 凌晨12点半还为我 解答了问题.
第一个碰撞盒的isTrigger一定别勾选,第二个碰撞盒的 isTrigger一定要勾选上,要不然后面写完小熊跳的时候的向上跳有落回的代码,运行时候就会发现小熊一直在向地下跑,还一直找不到原因
向任意向量投影的投影矩阵
1-Nx*Nx -Ny*Nx
-Nx*Ny 1-Ny*Ny
向任意平面投影的3D投影矩阵
1-Nx*Nx -Ny*Nx -Nz*Nx
-Nx*Ny 1-Ny*Ny -Nz*Ny
-Nx*Nz -Ny*Nz 1-Nz*Nz
一般仿射变换
--------------------------
当做 绕不通过原点的轴旋转 或 沿不穿过原点的平面缩放 等类似的题目时
1) P向量使用平移矩阵T移到原点
2) P向量使用矩阵R进行线性变换
3) P向量使用矩阵T的逆矩阵T^(-1)移到之前位置
P T R T^(-1)
平移只影响到了4x4阶矩阵的最后一行的元素,而对它的其他的旋转矩阵或者线性矩阵没有任何影响
==============
判断矩阵是否可逆: |M| ≠ 0
奇异矩阵/不可逆矩阵:一个不可逆矩阵 |M| = 0
平面投影
--------------------------
结合初中知识 小孔成像 得出结论
当物体在原点前,投影平面在原点后,距离为d
┌ x ┐ ┌ x ┐ ┌ -dx/z ┐
p = │ y │ = > p' = │ y │ = │ -dy/z │
└ z ┘ └ z ┘ └ -d ┘
当投影平面也在原点前,距离为d时
┌ x ┐ ┌ -dx/z ┐
p' = │ y │ = │ -dy/z │
└ z ┘ └ -d ┘
本节课需要牢记,漫反射公式。
灯光颜色*物体基本颜色*数值在0到1范围大小的{世界空间坐标下并归一化的(法线向量与光源向量的 点乘积)}
var assemblies=AppDomain.CurrentDomain.GetAssemblies();
defaultAssembly = assemblies.First(assembly=>assembly.GetName().Name=="Assembly-Csharp");
defaultAssembly.GetType(ClassName);
gameobjct并没有声明,为什么可以当参数用?
1. 程序集
自定义程序集
脚本编译生成对应的dll文件,在Library文件夹
Unity2018出现了Packages文件夹管理插件等。
2.如何使用功能
建立Assenbly_definition
覆盖本身的程序集;
程序集所属文件夹内文件及子文件夹,都属于该文件夹。
入坑第二个月
this;使用在需要借助对象,和partial隔开
[menuitem(路径,isVaildataFunction:ture)]
static bool validateUIroot()
{
}
[MenuItem(与上文路径一致)】
函数体
只有当bool返回为真的时候
1. 程序集
自定义程序集
脚本编译生成对应的dll文件,在Library文件夹
Unity2018出现了Packages文件夹管理插件等。
2.如何使用功能
建立Assenbly_definition
覆盖本身的程序集;
程序集所属文件夹内文件及子文件夹,都属于该文件夹。
3. 程序集引用
自定义需要建立库的依赖,不能直接用using,需要手动建立依赖关系。
C#自带的程序集会默认引用所有程序集,不需要手动建立依赖。
阴影效果是因为打开了两个StratPanel