当前位置:首页 » 《休闲阅读》 » 正文

BillBoard-广告牌技术只旋转Y轴_ThomasQxx的博客

13 人参与  2022年02月05日 08:02  分类 : 《休闲阅读》  评论

点击全文阅读


通过计算旋转后的三个正交基 来构建旋转矩阵。1.首先要计算视角向量。模型的中点Center可以设置为(0,0,0)。ViewDir = 摄像机的位置 - Center可以得到视角向量。2.向上向量Up (0,1,0)这个最简单。3.构建向右向量可以通过叉积计算出垂直与Up和View的向右向量Right。4.再通过Up和Right向量叉积计算出新的视野View’向量。5.最后通过Up Right View’三个正交基构建出旋转矩阵。

Shader "QShader/Billboard_ByY"{
    Properties{
        _MainTex("Main Texture",2D) = "white"{}
    }
        SubShader{
            Tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" "DisableBatching" = "True"}
            //我们在这里关闭Shader的批处理操作。
            pass {
                Tags{"LightMode" = "Always"}
                Cull Off    //关闭剔除,让模型的两面都可以显示


                CGPROGRAM
                #pragma vertex Vertex
                #pragma fragment Fragment
                #include "Lighting.cginc"
                #include "UnityCG.cginc"

                sampler2D _MainTex;

                struct v2f {

                    float4 pos : SV_POSITION;
                    float2 uv : TEXCOORD0;
                };

                v2f Vertex(appdata_base v) {

                    v2f o;
                    float3 center = float3(0,0,0);

                    //把摄像机的位置转换到模型空间
                    float3 viewer = mul(unity_WorldToObject,float4(_WorldSpaceCameraPos,1)).xyz;
                    //获取当前的视角向量
                    float3 viewDir = viewer - center;
                    //归一化视角向量
                    viewDir = normalize(viewDir);       
                    //向上向量
                    float3 upDir = float3(0,1,0);                           
                    //向右向量
                    float3 rightDir = normalize(cross(upDir,viewDir));      
                    //归一化向右向量
                    viewDir = normalize(cross(upDir,rightDir));             
                    //每个顶点的偏移进行空间转换,然后再将这个偏移还原到新的空间(加上center)
                    float3 centerOffset = v.vertex.xyz - center;
                    float3x3 _RotateMatrix = transpose(float3x3(rightDir,upDir,viewDir));
                    float3 pos = mul(_RotateMatrix,centerOffset) + center;

                    o.pos = UnityObjectToClipPos(float4(pos,1));
                    o.uv = v.texcoord;

                    return o;
                }

                fixed4 Fragment(v2f i) :SV_TARGET{

                    return tex2D(_MainTex,i.uv);
                }

                ENDCG

            }
    }
}

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/34288.html

向量  向右  视角  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • [糙汉嘴软心硬,娇妻日日晚起]小说精彩节选免费试读_「黎夏顾卫城」主线最终章倒计时
  • 我的亲妹妹我当做畜生,只有儿子来救我反转剧情试读片段_[***小宝李小翠]精彩章节免费试读
  • 往梦难复温,沈淮霆宋思予在线_往梦难复温,沈淮霆宋思予在线
  • 爱意清浅随风离(简凝夕陆靳燃),爱意清浅随风离
  • 「冲喜而已,侯爷别太爱」小说免费在线阅读_侯府侯爷乐瑶主线最终章倒计时
  • 好看的往梦难复温沈淮霆宋思予_往梦难复温沈淮霆宋思予
  • 天才京剧花旦被废嗓后成为芭蕾舞王+后续+结局(秦意宋笙)全书秦意宋笙结局_秦意宋笙+结局列表_笔趣阁(天才京剧花旦被废嗓后成为芭蕾舞王+后续+结局)
  • (番外)+(全书)往梦难复温(沈淮霆宋思予+番外+全书)_(往梦难复温+番外+全书)免费_笔趣阁(沈淮霆宋思予)
  • 江晚烟陆聿我终于失去了你结局+番外(江晚烟陆聿)列表_江晚烟陆聿我终于失去了你结局+番外(江晚烟陆聿)结局篇+番外在线
  • 池雾陆砚寒结局+番外(陆砚寒池雾)列表_池雾陆砚寒结局+番外(陆砚寒池雾)池雾陆砚寒结局+番外在线
  • 沈静怡傅励行+后续+结局(傅励行沈静怡)列表_沈静怡傅励行+后续+结局(傅励行沈静怡)沈静怡傅励行+后续+结局在线
  • 非典时,我被妻子的白月光误诊遗弃在病房节选角色羁绊特辑‌_田越苏雅白月光角色专属支线试读入口

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1