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

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

12 人参与  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://zhangshiyu.com/post/34288.html

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

  • 评论(0)
  • 赞助本站

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

最新文章

  • 我给第三十八任老公过喜,宋青青必读文_我给第三十八任老公过喜,宋青青必读文
  • 秦见鹿秦临渊结局+番外必读文全书免费秦见鹿秦临渊结局+番外必读文全书免费
  • (番外)+(全书)错位时空的恋人+后续+结局(苏璃沈星澜)全书在线_错位时空的恋人+后续+结局免费列表_笔趣阁(苏璃沈星澜)
  • 「被卖十亿后,她的马甲亮啦」章节彩蛋限时释出‌_花落牧轻舟小说章节分享
  • 周语徐西洲(爱已戛然而止全书+后续+结局)全书周语徐西洲读结局_(周语徐西洲爱已戛然而止全书+后续+结局读全书结局)结局列表_笔趣阁(周语徐西洲)
  • 重生妹妹与自闭症哥哥(沈寒舟沈清然)全书沈寒舟沈清然结局_沈寒舟沈清然+结局列表_笔趣阁(重生妹妹与自闭症哥哥全书+后续)
  • 给五十任夫君过喜的任务娘交给我了,许莺莺列表_给五十任夫君过喜的任务娘交给我了,许莺莺
  • [恋爱脑养女被全网网暴]章节世界观揭秘篇‌_[陆琦温言魏敛]章节试读
  • 「外婆葬身火海那夜,失忆男友终于悔悟」后续全文免费阅读_[沈也苏漾温言]角色专属支线试读入口
  • 全书浏览她已走远后续+(苏然霍霆舟)_她已走远后续+(苏然霍霆舟)全书结局
  • 我再一次见到霍霆舟,是在酒吧。医院部门聚会。我们的包房,正好在霍霆舟他们旁边。年轻的罗医生却喝了酒,在走廊看见路过的叶南,要她的微信。
  • 龚亦遥(老公让我为白月光挡灾,我死后他一夜疯魔)_龚亦遥列表_笔趣阁(老公让我为白月光挡灾,我死后他一夜疯魔)

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

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