unity quaternion vector
做脚印呢
做了曲面细分和decal两种
先用正交camera生成 高度图
采样uv由pos 从world到camera space生成
unity对tessellation的支持限制还是比较大的 只能用surfaceshader
并且开tesse的 surfaceshader就不支持自己vs 到ps 传自定义数据了
不配合光照的话 (normal)新增的顶点 看不清楚
unity的 surfaceshader如果不能支持 tessellation 生成的顶点normal传到ps 这功能就没多少意义
要生成朝向角色运动方向的脚印 需要生成一组顶点数据
这个朝向我用四元数算的
 temp = rot * new Vector3(-1f * scale, 0, 1f * scale);//在原点用quaternionXvector3 得到朝向 
            va[x++] = pos + temp;              //之后应用到 点所在的位置 ,就相当于 挪到loacalspace rotation之后到world space
//不这么做直接rotationXpos得到的是 ((0,0,0)-point)这个vector沿着quarternion旋转之后的vector
                          //Debug.DrawLine(start, dir, Color.green);可以用来debug
            temp = rot * new Vector3(-1f * scale, 0, -1f * scale);
            va[x++] = pos + temp;
            temp = rot * new Vector3(1f * scale, 0, -1f * scale);
            va[x++] = pos + temp;
            temp = rot * new Vector3(1f * scale, 0, 1f * scale);
            va[x++] = pos + temp;
 {
            mesh = new Mesh();
            mesh.hideFlags = HideFlags.DontSave;
            mesh.vertices = va;
            mesh.uv = ta;
            mesh.SetIndices(ia, MeshTopology.Triangles, 0);
        }
Graphics.DrawMesh(mesh, Matrix4x4.identity, markMat, 16, camHeight);//16 layer decal
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号