牛骨文教育服务平台(让学习变的简单)
博文笔记

为什么要乘以unity_Scale.w?

创建时间:2015-11-23 投稿人: 浏览次数:1150
// Computes object space view direction
inline float3 ObjSpaceViewDir( in float4 v )
{
float3 objSpaceCameraPos = mul(_World2Object, float4(_WorldSpaceCameraPos.xyz, 1)).xyz * unity_Scale.w;
return objSpaceCameraPos - v.xyz;

}


为什么要乘以unity_Scale.w?

首先我们要知道unity4.x对模型有统一缩放,如果模型的ScaleX,ScaleY,ScaleZ不一致,untiy会生成一个同等大小的新模型,该模型的ScaleX,ScaleY,ScaleZ保持一致。unity_Scale.w=1/uniform scale;

因为世界空间转模型空间得到的坐标是计算了uniform scale之后的值,所以需要乘以unity_Scale.w,再具体的原因要再确认了。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。