unity中多套uv set理解和应用
2016-05-19 10:52
2171 查看
unity中多套uv有很大用处,比如自带的物体box,sphere就自带两套uv
第一套是正常的,比如方块可以每个面是同一个uv,
但是第二套需要烘焙光照信息,所以默认是全展开,纹理看出来要小些
当然自己的模型也可以加多套uv,max和maya等软件都能加
注意模型在fbx里可以保留多套uv,但是obj里只能保留默认的第一套
另外unity里现在貌似支持最多四套
在maya里如上面设置
现在使用下面两张不同的进行测试
然后使用下面的shader
记得放上测试贴图
可以看出来个不同的效果
当然这个是会影响烘焙光照的
下面是烘焙的结果,可以看到有第二套uv并且没有正常展开的就出错了
可以看出没有第二套的应该是unity在烘焙的时候自己生成了,有点就不会自己生成了
当然也有一些材质会用到四套不同的,比如前面说的speedtree
http://blog.csdn.net/shenmifangke/article/details/51220029
第一套就是纹理
第二套貌似也是光照
后面两个看不懂了,希望有知道的可以分享下
可见多套uv还是有很大作用的
第一套是正常的,比如方块可以每个面是同一个uv,
但是第二套需要烘焙光照信息,所以默认是全展开,纹理看出来要小些
当然自己的模型也可以加多套uv,max和maya等软件都能加
注意模型在fbx里可以保留多套uv,但是obj里只能保留默认的第一套
另外unity里现在貌似支持最多四套
在maya里如上面设置
现在使用下面两张不同的进行测试
然后使用下面的shader
记得放上测试贴图
Shader "VertexInputSimple" { Properties{ _MainTex("Texture", 2D) = "white" { } _Tex_002("Tex_002", 2D) = "" {} _Tex_003("Tex_003", 2D) = "" {} _Tex_004("Tex_004", 2D) = "" {} } SubShader{ Pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #pragma target 3.0 sampler2D _MainTex; sampler2D _Tex_002; sampler2D _Tex_003; sampler2D _Tex_004; //顶点输入结构 可省略 直接写vert里面 /*struct appdata { };*/ //顶点输出结构体 貌似支持N个TEXCOORD struct v2f { float4 pos : SV_POSITION;//由顶点着色器输出mesh信息中的纹理坐标,这个坐标是以对象为坐标系的 The position of the vertex after being transformed into projection space float2 uv : TEXCOORD0; float2 uv2 : TEXCOORD1; float2 uv3 : TEXCOORD2; float2 uv4 : TEXCOORD3; float2 uv5 : TEXCOORD4;//只是说明可以多个 }; //顶点函数 v2f vert( float4 vertex : POSITION,//The position of the vertex in local space (model space) float4 texcoord : TEXCOORD0,//只能有四个 float4 texcoord2 : TEXCOORD1, float4 texcoord3 : TEXCOORD2, float4 texcoord4 : TEXCOORD3 ) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, vertex); o.uv = texcoord.xy; o.uv2 = texcoord2.xy; o.uv3 = texcoord3.xy; o.uv4 = texcoord4.xy; return o; } //<span style="color:#FF0000;">在这里替换测试</span> 如果没有多套uv 后面的值貌似还是会返回最前面有的那套 fixed4 frag(v2f i) : SV_Target { <span style="color:#FF0000;"> return tex2D(_MainTex, i.uv); //return tex2D(_MainTex, i.uv2); //return tex2D(_MainTex, i.uv3); //return tex2D(_MainTex, i.uv4);</span> } ENDCG } } }
可以看出来个不同的效果
当然这个是会影响烘焙光照的
下面是烘焙的结果,可以看到有第二套uv并且没有正常展开的就出错了
可以看出没有第二套的应该是unity在烘焙的时候自己生成了,有点就不会自己生成了
当然也有一些材质会用到四套不同的,比如前面说的speedtree
http://blog.csdn.net/shenmifangke/article/details/51220029
第一套就是纹理
第二套貌似也是光照
后面两个看不懂了,希望有知道的可以分享下
可见多套uv还是有很大作用的
相关文章推荐
- Unity3D 之2D动画机
- Unity3d热更新全书-资源加载(一):从AssetBundle说起
- unity shader 初步模型解析
- Unity学习日常问题记录二-关于刚体的碰撞和物理材质(设定了材质不反弹的一种错误)
- 【Unity】13.3 Realtime GI示例
- 【Unity】13.2 通过Lighting Window设置相关参数
- 【Unity】13.1 场景视图中的GI可视化
- 【Unity】第13章 光照贴图和光影效果
- 规范unity脚本书写
- 异步加载和同步加载Unity加载过度画面
- 在VS2015中让UnityShader脚本关键词高亮
- 我的Unity3D学习日记-01
- 关于unity 双重ScrollRect的水平移动与垂直移动叠加处理
- Unity3D 学习 - 通过C#脚本创建简单的按钮、响应事件
- 有关unity3d与eclipse调试生成debug日志的问题
- unity游戏优化之ETC压缩和 Alpha通道处理
- unity开发总结
- Unity 显示帧率的方法
- unity-点乘和叉乘的应用
- 全面理解Unity加载和内存管理