3DMax烘焙二通道LightMap到Unity3D中使用

一、在3DMax中将模型Unwrap UVW 通道、材质球通道改为 二通道。如图:

烘焙面板设置:

烘焙完成后,重新将模型转换成poly,将材质球重新指认回去,也就是重新赋材质球。然后导出FBX。

Unity3d中材质球指认:

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity,可以通过在Shader使用Unity提供的内置属性来访问Lightmap。通过使用"_LightMap"和"_ShadowCoord"属性,我们可以将Lightmap数据传递到Shader,并将其应用于模型表面。 以下是一个简单的例子,演示了如何在Shader使用Lightmap: ``` Shader "Custom/LightmapShader" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float3 worldNormal : TEXCOORD1; float3 worldPos : TEXCOORD2; float4 screenPos : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; float4x4 unity_ObjectToWorld; float4x4 unity_WorldToObject; float4x4 unity_LightmapST; v2f vert (appdata v) { v2f o; o.screenPos = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.worldNormal = mul(unity_WorldToObject, float4(v.normal, 0)).xyz; o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; return o; } fixed4 frag (v2f i) : SV_Target { float3 lightmapCoord = mul(unity_LightmapST, float4(i.worldPos, 1)).xyw; fixed4 lightmapColor = tex2D(_LightMap, lightmapCoord); fixed4 texColor = tex2D(_MainTex, i.uv); fixed4 finalColor = texColor * lightmapColor; return finalColor; } ENDCG } } } ``` 在上面的Shader,我们使用了"_LightMap"和"_ShadowCoord"属性来访问Lightmap数据,并将其与主纹理(_MainTex)相乘以获得最终的表面颜色。请注意,我们还使用了"unity_LightmapST"矩阵来转换世界坐标系下的顶点位置到Lightmap纹理坐标系下。 要将此Shader应用于模型,只需将其分配给材质即可。在材质上,您可以选择使用"Lightmap"纹理类型,并将Lightmap纹理分配给"_LightMap"属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值