三维绕任意轴旋转推演
--------------------------
Vector3D v, v';
v·R(n,θ) = v' // v'为v绕n轴旋转θ角度
v' = (v - ( v · n ) n )Cosθ + ( n x v )Sinθ + ( v · n )n
note: ·为点乘, x为叉乘
三维绕任意轴旋转推演
--------------------------
Vector3D v, v';
v·R(n,θ) = v' // v'为v绕n轴旋转θ角度
v' = (v - ( v · n ) n )Cosθ + ( n x v )Sinθ + ( v · n )n
note: ·为点乘, x为叉乘
矩阵乘法特点
--------------------------
矩阵M
单位矩阵 M1
M x M1 = M
=============
矩阵 A, B, C;
(AB)C = A(BC);
=============
矩阵 A, B;
标量 K;
(KA)B = K(AB) = A(KB)
=============
矩阵A, B;
三维向量叉乘
--------------------------
Vector3D a,b;
数值:|a x b| = |a| |b| Sinθ
方向:坐标系不同,判断不同
意义:判断三角面片
|a x b| = (a.y b.z - a.z b.y, a.z b.x - a.x b.z, a.x b.y - a.y b.x);
矩阵与向量
--------------------------
列向量:n x 1 矩阵
行向量:1 x n 矩阵
注意⚠️:向量与矩阵进行运算时,需要注意是行向量还是列向量
三维向量点乘
--------------------------
Vector3D a(x_1,y_1,z_1),b(x_1,y_1,z_1);
a · b = x_1 x_2 + y_1 y_2 + z_1 z_2;
a · b = |a| |b| Cosθ = √(x_1^2 y_1^2 z_1^2) √(x_2^2 y_2^2 z_2^2) Cosθ;
θ = arcCos(ab);
a·b > 0 向量夹角为锐角;
a·b = 0 向量夹角为直角;
a·b < 0 向量夹角为钝角;
三维向量基本运算
--------------------------
Vector3D a(x,y,z);
|a| = √(x^2 + y^2 + z^2);
λa = (λx_1, λy_1, λz_1);
二维坐标系旋转和平移
--------------------------
原坐标系o,点p(x,y),与x轴夹角θ
目标坐标系 o',点(x',y'), o - o' = (a,b)
p' = (xCosθ + ySinθ + a, yCosθ - xSinθ + b)
向量计算必须在同一坐标系
二维坐标系平移
--------------------------
已知坐标系o和一在其上的点p(x,y),和另一坐标系o',用p'(x',y')来表示点p在o'上点坐标。
o' - o = (a,b);
x' = x + a;
y' = y + b;
二维单位向量
--------------------------
单位向量是指模等于1的向量
零向量是任意方向的向量
二维向量叉乘
--------------------------
叉乘 = 向量积 = 外积 = 叉积 => 向量
Vector2D a, b, c;
模长:|c| = |a · b| = |a| |b| Sinθ //θ为 a 与 b的夹角
方向:c 方向垂直于a, b所在的平面 (右手定则来确定方向)
二维向量点乘
--------------------------
Vector2D a,b;
a · b = x_1 x_2 + y_1 y_2 = 标量(数值)
==================
Vector2D a,b;
c^2 = a^2 + b^2 - 2 |a| |b| Cosθ
===================
Vector2D a, b;
a·b > 0 向量夹角为锐角
a·b = 0 向量夹角为直角
a·b < 0 向量夹角为钝角
二维坐标系旋转
--------------------------
已知 x,y 旋转坐标系得到 x',y'
x' = xCosθ + ySinθ;
y' = yCosθ - xSinθ;
θ 为正:逆时针旋转
θ 为负:顺时针旋转
向任意向量投影的投影矩阵
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
三维任意轴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
矩阵相乘条件:r-n * n-p = r-p
坐标系平移(a,b)
x1 = x+a
y1 = y+b
Pass 通道
Name = “Pass通道名称”
Unity Pass 中的Tags特有设置:
"LightMode” = "ForwardBase"//定义该Pass通道在Unity渲染流水的角色
“RequireOptions”="SoftVegetation"//满足某些条件时才进行渲染
Fallback 定义在SubShader只外
Fallback “路径”/ Off
Render设置
Cull off/back/front //选择渲染面
ZTest Always/Less/Grater/LEqual/GEqual/Equal/NotEqual //深度测试
Zwrite off/on //深度写入
Blend SrcFactor DstFactor //混合
LOD 100
“Queue”="Transparent" //渲染顺序
“RenderType”="Opaque"//着色器替换
“DisableBatching” = "True" //是否进行合批
“ForceNoShadowCasting”="True" //是否投射阴影
“IgnoreProjector”= "True” //是否受Projector影响,通常用于透明物体
“CanUseSpriteAltas”=“False"//是否用于图片的shader,通常用于UI
"PreviewType" = "Plane" //Shader 面板预览类型