Unity基础篇-UV坐标和法线

这篇具有很好参考价值的文章主要介绍了Unity基础篇-UV坐标和法线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们已经利用Mesh创建过简单的一个Cubel了,如果要让这个cube更精细化还需要更详细的处理,这样就就有几个绕不开的话题,涉及图形学UV坐标和法线。

UV坐标:

UV坐标是用于映射2D纹理到3D模型的坐标。在3D模型上的每个顶点都有一个对应的UV坐标,它告诉引擎在纹理上的哪个位置找到该顶点的颜色。

  • UV坐标的范围通常是从(0,0)到(1,1)。左上角是(0,0),右下角是(1,1)。

  • 在三角形上,UV坐标会在三个顶点之间插值,以确保纹理正确地贴在整个三角形表面上。

UV坐标对于渲染纹理、贴图和实现复杂的视觉效果非常重要。通过在模型上设置UV坐标,你可以指定如何在纹理上放置贴图,从而在模型上创建更加丰富和细致的视觉效果。

在Unity中,UV坐标是描述3D模型表面上的纹理映射信息的一组二维坐标。这些坐标决定了纹理如何被贴在模型上,从而影响模型的外观。以下是在Unity中对UV坐标的解释和应用:

解释:

  1. 二维坐标: UV坐标是二维坐标,通常表示为(u, v)。在纹理坐标系统中,u表示横向(水平)坐标,而v表示纵向(垂直)坐标。UV坐标的范围通常是从(0, 0)到(1, 1)。

  2. 纹理映射: UV坐标告诉Unity引擎在纹理图像上的哪个位置找到模型上的每个点的颜色。UV坐标与模型的每个顶点关联,因此它们以一种映射关系将模型上的点与纹理上的像素对应起来。

  3. 材质: 在Unity中,模型的材质通常包含一个或多个纹理。通过修改模型的UV坐标,你可以控制纹理在模型表面上的分布,从而影响模型的外观。

应用:

  1. 纹理映射: 最基本的应用是纹理映射。通过在模型的UV坐标上使用合适的纹理,你可以为模型赋予真实感或艺术效果。

  2. 重复和平铺: 通过调整UV坐标,可以控制纹理在模型表面的重复和平铺。这对于创建连续纹理或以平铺方式贴在模型上的纹理非常有用。

  3. 法线贴图: UV坐标还被用于法线贴图(Normal Map)的应用。法线贴图是一种技术,通过修改法线向量,使模型看起来比实际更加复杂和有细节。

  4. 光照贴图: 在光照计算中,有时会使用特殊的光照贴图,这些贴图也需要UV坐标来正确应用于模型表面。

在Unity中设置UV坐标:

在Unity中,大部分情况下,你无需手动设置UV坐标,因为它们会由建模软件生成。但是,如果需要手动调整UV坐标,可以使用以下方法:

  1. 编辑器中调整: 在Unity编辑器中,选择模型并切换到UV编辑模式。这允许你手动调整模型的UV坐标。

  2. 脚本中调整: 通过脚本访问Mesh对象,你可以在运行时调整UV坐标。这对于一些特殊效果或动态生成的模型非常有用。

法线(Normals):

法线是与顶点相关联的矢量,垂直于表面。它们通常用于光照计算,因为它们告诉渲染引擎光线与表面的相对方向。

  • 表面法线: 一个平面上的所有点共享相同的法线。它垂直于平面,指向表面的外部。

  • 顶点法线: 每个顶点都有一个法线,它是由与该顶点相邻的三角形的法线的平均值得出的。在渲染中,这些法线通常会插值以获得整个三角形上的法线。

法线在光照计算中很重要,尤其是在实现光滑的表面效果时,如Phong着色模型。法线还用于计算阴影、高光和其他光照效果。

在Unity中,法线坐标(Normal Coordinates)通常是指表面法线,它是垂直于表面的矢量,用于指示表面在空间中的方向。法线在图形学中是一个重要的概念,对于渲染、照明和物理模拟等方面都有广泛的应用。

解释:

  1. 定义: 法线是一个单位矢量,垂直于模型表面。对于平面几何图形,法线通常是唯一的,而对于曲面或3D模型,每个点可能有一个法线。

  2. 表达: 在Unity中,法线通常表示为Vector3类型的矢量。Unity会自动计算表面法线,但你也可以手动指定法线,以便实现特定的效果。

应用:

  1. 光照计算: 法线在光照计算中起着重要的作用。在Phong光照模型等光照模型中,法线用于计算光的反射方向,影响表面的明暗程度。

  2. 法线贴图: 法线贴图是一种技术,通过使用纹理来改变表面法线,从而使平坦的表面看起来具有更多的细节和凹凸感。

  3. 阴影计算: 法线信息对于阴影计算也是重要的。通过检查表面法线和光源方向之间的夹角,可以确定光照强度,从而影响阴影的生成。

  4. 物理模拟: 在一些物理模拟中,法线用于计算表面之间的相互作用,例如碰撞反应、粒子运动等。

Unity中的法线应用:

法线的获取: Unity通过Mesh对象的normals属性来存储法线信息。你可以通过访问和修改Mesh对象的normals数组来手动调整法线。

          Unity基础篇-UV坐标和法线,unity,uv,游戏引擎

法线贴图: 你可以通过使用Shader来实现法线贴图效果。通常,Unity的Standard Shader和其他支持法线贴图的Shader都允许你指定法线贴图,以增强表面细节。

动态调整法线: 在一些特殊情况下,你可能需要在运行时动态调整法线,例如在实现特殊效果时。这可以通过修改Mesh对象的normals数组来完成。

           Unity基础篇-UV坐标和法线,unity,uv,游戏引擎

光照Shader中的法线: 在自定义Shader中,你可以使用表面法线与光照方向进行计算,以达到更精细的光照效果。在Shader中,表面法线通常通过IN.worldReflIN.worldRefl;来访问。   
           Unity基础篇-UV坐标和法线,unity,uv,游戏引擎

上述示例中的_LightDirection是光照方向,IN.worldPos是世界空间中的顶点位置,IN.worldRefl是表面法线。这只是一个简单的Shader示例,实际应用可能涉及更复杂的光照模型和效果。文章来源地址https://www.toymoban.com/news/detail-821302.html

到了这里,关于Unity基础篇-UV坐标和法线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity 场景烘焙问题之模型UV有重叠

    问题现象:模型烘焙出来后,呈现黑色或布满脏斑,有可能是没有展UV,也有可能是UV重叠了 并且也会出现警告提示,如下图: 如果我们勾选了如下图,还在提示我们勾选,那可能就是 UV重叠了 UV 重叠没有唯一的解决方案,因为有很多问题可能导致这种情况。以下是最常见的

    2024年02月10日
    浏览(44)
  • CC 3.4 角色Unity多项限UV

      参考之前搜集到的资料 Unity Shader Graph使用多象限[UDIM]纹理贴图_嫣兰飞雪的博客-CSDN博客_unity多象限uv    具体的代码优化没有,看哪位大佬能帮忙进行一下优化。

    2024年02月12日
    浏览(36)
  • Unity 顶点vertices,uv,与图片贴图,与mesh

    mesh就是组成3d物体的三角形们。 mesh由顶点组成的三角形组成,三角形的大小 并不 需要一样,由顶点之间的位置决定。 mesh可以是一个或者多个面。 贴图的原点在左下角,uv是贴图的坐标,数量和顶点数一样(不是100%确定,比如前后左右4个面,贴图最终如何封闭,我还不知

    2024年02月10日
    浏览(43)
  • Unity地面交互效果——1、局部UV采样和混合轨迹

    回到目录   大家好,我是阿赵。   这期开始,打算介绍一下地面交互的一些做法。 比如: Unity引擎制作沙地实时凹陷网格的脚印效果 或者: Unity引擎制作雪地效果   这些效果的实现,需要基于一些基础的知识。所以这一篇先介绍一下简单的局部UV采样,然后映射纹理

    2024年02月06日
    浏览(44)
  • Unity中Shader的扭曲(同样使用了UV的扭曲)

    Unity中Shader的扭曲 注意:扭曲效果比较消耗手机性能 类似于透过 火焰 看火焰后的物体,火焰后的物体扭曲 类似于透过 水 看水中的物体,水中物体的扭曲

    2024年02月06日
    浏览(54)
  • Unity中Shader序列图动画(UV流动的通用起始点)

    我们在Shader中实现序列帧动画。可以实现一些简单特效或动画节省性能用。 我们在这篇文章中,实现一下UV流动的通用起始点。 先左到右,再从上到下 Unity中 URP Shader 的纹理与采样器的分离定义 属性面板 _MainTex(“MainTex”,2D) = “white”{} 定义纹理 TEXTURE2D(_MainTex); 定义采样器

    2024年01月17日
    浏览(59)
  • Unity - 导出的FBX模型,无法将 vector4 保存在 uv 中(使用 Unity Mesh 保存即可)

    备忘,便于日后自己索引 为了学习了解大厂项目的效果: 上周为了将 王者荣耀的 杨玉环 的某个皮肤的头发效果还原 所以我想直接抓模型,再还原 shader 我使用的还是以前的老方法: GPA + 夜神模拟器,具体可以查看以前的另一篇教程,具体参考:教你如何使用GPA导出模型,

    2024年02月05日
    浏览(45)
  • Unity - 记录解决 部分手机设备上 浮点精度 不足 导致 UV 采样断层严重的 BUG

    Unity : 2020.3.37f1 Pipeline : BRP 备忘,便于日后索引 正常 手机显卡芯片的浮点解析进度上的效果(其实不用手机上,PC 上将 uv * scale 一个巨大的值也会出现的) 异常 手机显卡芯片的浮点解析进度上的效果(其实不用手机上,PC 上将 uv * scale 一个巨大的值也会出现的) 诊断发现是

    2024年02月11日
    浏览(81)
  • Three.js之顶点UV坐标、纹理贴图

    创建纹理贴图 … UV动画 注:基于Three.js v0.155.0 纹理贴图加载器:TextureLoader 纹理对象:Texture 颜色贴图属性.map 顶点UV坐标 圆形平面设置纹理贴图:CircleGeometry 设置阵列模式:THREE.RepeatWrapping 网格地面辅助观察:GridHelper 纹理对象.offset属性

    2024年02月08日
    浏览(40)
  • Blender 建模键盘(PS修图、UV贴图、Cycles渲染引擎)

    原图 通过平面创建 按S缩放;按E,Z沿着Z轴挤出; Alt+鼠标左键选择循环边;Ctrl+B对边进行倒角,滑动滚轮增加线数量 添加表面细分修改器;Ctrl+R环切卡线 按Ctrl+R添加环切线留出上下空间 选择面按i内插面,再删除面;按Alt+鼠标左键选择循环边,按E,Z向下挤出面;按E,S缩放;

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包