イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

shader ワールド変換行列から変換後のローカル座標の軸を抽出したもの

http://marupeke296.com/DXG_No39_WorldMatrixInformation.html 参考

//n_vecはワールド変換後のローカル座標軸の方向を指す
float3 x_vec = float3(OTW._m00,OTW._m01,OTW._m02);
float3 y_vec = float3(OTW._m10,OTW._m11,OTW._m12);
float3 z_vec = float3(OTW._m20,OTW._m21,OTW._m22);
//各成分のスケール値
float x_scale = length(x_vec.xyz);
float y_scale = length(y_vec.xyz);
float z_scale = length(z_vec.xyz);
//回転したローカル座標系のZ軸のワールド座標系での角度
float3 nz = float3(0,0,1);
float zcos = dot(nz,z_vec)/(length(nz)*length(z_vec));
float z_rad = acos(zcos)*((z_vec.x>0)-(z_vec.x<0))*-1;