Unity3d使用RenderTexture制作动态头像

项目中需要实现一个3D动态头像,就是一个静态的头像实时与3D模型的表情动作同步,这个功能可以使用Unity3D的RenderTexture实现。
首先拖入3D模型,再添加与模型关联的摄像机,新建一个Model,层物体摄像机都处于Model层
摄像机属性设置如图:
Unity3d使用RenderTexture制作动态头像_第1张图片
摄像机的位置调整对准模型的正面。
新建一个renderTexture
Unity3d使用RenderTexture制作动态头像_第2张图片
新建一个材质球
Unity3d使用RenderTexture制作动态头像_第3张图片
这个地方遇到一些问题,就是黑底一直无法去掉,最后使用着色器去掉黑底,着色器代码如下:`

Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
 }
 SubShader 
 {
    Tags { "RenderType"="Opaque" }
    //LOD 200
    Cull Off
    ZWrite Off
    Blend SrcAlpha OneMinusSrcAlpha
    Pass
    {
      CGPROGRAM
      #pragma vertex vert
      #pragma fragment frag
      #include "UnityCG.cginc"
      uniform sampler2D _MainTex;
      struct VertexOutput
      {
      float4 pos:SV_POSITION;
      float4 uv:TEXCOORD0;
      };
      VertexOutput vert(float4 vertex:POSITION,float4 uv:TEXCOORD0)
      {
      VertexOutput o;
      o.pos = mul(UNITY_MATRIX_MVP,vertex);
      o.uv = uv;
      return o;
      }
      float4 frag(VertexOutput i):COLOR
      {
      float4 col;
      col.rgba = tex2D(_MainTex,i.uv.xy);
      col.a = 1;
      if(col.r + col.g + col.b == 0)
      {
       col.a = 0;
      }
      return col;
 }
 ENDCG
 }

 } 
 FallBack "Diffuse"`

在NGUI下面新建一个Texture,然后将材质球赋给这个新建的Texture,即可看到效果。
棋盘游戏中玩家轮流操作,不同角色的关联摄像机最好在自己角色设置的layer。

你可能感兴趣的:(unity3d)