使用纹理(Textures)

这篇具有很好参考价值的文章主要介绍了使用纹理(Textures)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        当物体表面并非是纯色的时候,比如带波点,斑纹或者表面有刮痕或被裂纹等,这些效果该如何实现呢?

        这里我们需要提到一个概念是贴图(Maps)。Maps是覆盖在游戏物体上的2D图片,用来设置表面的颜色、specularity或metalness、物理纹理或其他相关属性。包含maps的图片文件称为纹理(Textures)。

纹理是什么

        纹理(Textures)可以看做是普通的图像文件,比如BMP,TIF,PNG和JPG。图像文件中的数据通过通道(channels)进行组织。黑白图像(也称为灰度度,grayscale image)只有一个通道来表示每个像素的灰度值。彩色图像一般需要RGB三个通道,每个像素使用RGB值来表示具体的某种颜色。还有一些图像文件格式会使用四通道:RGBA,A表示alpha,用来调节透明度。

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping


        图像文件中的通道数据可以看做是数字矩阵。在材质中,这些数字可以表示颜色或透明度之外的其他属性,比如smoothness,specularity或metalness,甚至是顶点的法线信息等。

        艺术家们通常通过Blender、3DMAX等3D建模软件来创造他们的3D模型,这些软件也能够生成模型所需的纹理文件。我们也可以使用普通的2D图像文件当做纹理来使用,如下图所示:

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping

查看纹理文件属性

    我们可以点击一个纹理文件,然后在其Inspector面板中查看其属性。

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping


        其中Texture Type可以选择纹理的类型,比如法线贴图、2D精灵、UI元素、光照贴图等。Texture Shape是贴图形状,可以是2D平面、2D平面数组,也可以是Cube或3D的。另外,在底部预览窗口中,可以选择纹理的单个通道比如R/G/B来看单个通道的值。

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping


        另外,可以双击纹理文件,其效果就和我们在资源管理器中双击打开图片文件一样,会使用图片预览器或PS等软件来打开图片(取决于图片的默认打开方式)。

        当我们在材质窗口中,将我们的纹理拖动到了Inspector的Base Map左边的方框中后,还可以设置Base Map的颜色,这样可以得到纹理原始颜色和所选颜色的叠加的效果,如下图:

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping

Tiled Textures

        在材质的Inspector面板中,可以看到Surface Inputs下有Tiling和Offset两个选项。

        Tiling决定了mesh表面上会重复多少次纹理,这个值越高,我们的纹理就重复地越多,单个纹理看起来也就更小。

        Offset决定了我们从纹理的哪个位置开始应用到物体表面上。比如X设置为0.5表示从纹理的一半宽度的地方开始tiling。

        这两个值在Editor中可以根据需要自行设置,如下图,我将Tiling设置为5,Offset设置为X=0.5,Y=0.5,效果如下:

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping

UV贴图

        对于一些简单的形状如球体或长方体,纹理映射到物体mesh的哪个位置似乎不会影响很大。但对于其他复杂的物体就不是这样了。比如对于一个人形角色的身体来说,其表面上可能会有皮肤,衣服,这些所有的东西都在一个材质中。此时如果纹理映射的位置不正确,则角色就会看起来非常奇怪了,比如该是耳朵的地方,显示的却是眼睛(刻意而为除外^_^)。

        当在建模软件中创建3D模型时,软件会生成上面所提到的纹理,生成的过程称为UV映射(UV mapping)。3D建模软件如Blender,Maya,3DMax等,会生成UV坐标的2D坐标集。UV坐标和普通的2D空间的XY坐标是类似的。UV坐标和mesh有关系,而和场景中的3D空间无关。

        UV映射表示的过程是将3D模型的表面展开到一个平面,并将2D纹理贴图到这个平面上。在这个过程中,建模软件生成要被重新包裹到模型上的纹理的UV坐标。

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping

texture文件,Unity笔记,unity,Texture,纹理,贴图,UV Mapping文章来源地址https://www.toymoban.com/news/detail-679264.html

到了这里,关于使用纹理(Textures)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity Texture优化和格式统一设置

    主要逻辑,按照项目所需,统一Texture格式和压缩方式,可以举一反三。 Unity - Manual: Texture Import Settings 《Unity性能优化》系列课程笔记——第叁节 - 哔哩哔哩 上门两篇文章可以多看看,了解下原理,了解下怎么降内存和适配移动平台。

    2024年02月15日
    浏览(45)
  • # Unity 如何获取Texture 的内存大小

    在Unity中,要获取Texture的内存文件大小,可以使用UnityEditor.TextureUtil类中的一些函数。这些函数提供了获取存储内存大小和运行时内存大小的方法。由于UnityEditor.TextureUtil是一个内部类,我们需要使用反射来访问它。 导入UnityEditor命名空间和System.Reflection命名空间: 创建一个函

    2024年02月12日
    浏览(28)
  • Unity - 搬砖日志 - Texture.mipmapBias 无效的解决方法

    Unity : 2020.3.37f1 Pipeline : BRP 因为美术发现有些贴图太糊,但是经过研究发现,mipmap0就是完全够精度的 但是不可能还要提升贴图的尺寸,因为经过多方咨询(咨询TA大佬) 发现是 unity 纹理一个 mipmapBias 的 import 属性,但结果设置了一样木有效果 最后TA大佬说,试试 shader 修改

    2023年04月22日
    浏览(31)
  • Unity WebCamTexture转Texture2D转byte[]

    一: WebCamTexture=Texture2D : GetNativeTexturePtr CreateExternalTexture 只是要显示在屏幕上,这段代码没有问题 如果想要转成 byte[]  使用 EncodeToJPG 则会有一个报错(暂时不知道什么原因) Unable to retrieve image reference 使用  GetRawTextureData    则会得到一个长度为0的数组 也可以直接把

    2024年02月07日
    浏览(38)
  • 【Unity】内存优化之— —Texture的MaxTextureSize以及Format压缩格式

    本人才疏学浅,只是近期略看了一下Texture的内存,如有不对的地方,还望大佬指正。 你所需要了解的几种纹理压缩格式原理 关于图片的内存,是怎么算的呢,就是图片的长乘以宽,乘以每个像素点占的byte大小。 MaxTextureSize,影响的就是基础的长和宽。 图片的压缩格式,影

    2024年03月11日
    浏览(35)
  • 【unity shader】水体渲染基础-基于texture distortion的流体流动材质

    当液体静止时,它在视觉上与固体没有太大区别。 但大多数时候,我们的性能不一定支持去实现特别复杂的水物理模拟, 需要的只是在常规的静态材料的表面上让其运动起来。我们可以对网格的 UV 坐标实现动态变化,从而让表面的纹理效果实现变形的动态变化。 1.1. uv实时

    2024年02月03日
    浏览(45)
  • Unity Texture2D的裁剪、镜像、翻转、缩放、合并、分辨率

    本人最近做了一个拍照并打印的程序,使用到了多种图片编辑功能,现在罗列一下,希望对大家有所帮助。 裁剪,将贴图上的某个区域裁剪   缩放,缩放和放大原有贴图  水平镜像  垂直镜像  逆时针旋转90度 顺时针旋转90度  两张贴图合并,可以实现水印等功能,该代码

    2024年02月16日
    浏览(32)
  • 快速解决Spine动画导入Unity后需要设置Straight Alpha Texture的问题

    在导入Spine资源后,Unity会根据不同的后缀,自动化构建出不同格式的资源。导入后,会发现播放的动画和导入前的动画的图片不一样。这时上网查基本都是需要手动吧材质资源的Straight Alpha Texture 勾上。 查看材质的Shader可以看出这个选项是用来选择颜色是否加了透明度的计算

    2024年02月16日
    浏览(28)
  • Unity3D C#获取Texture2D像素数据IntPtr指针

    Unity3D调用C++库执行图像处理时,需要快速传递Texture2D纹理像素数据块,获取数据块C++指针(C#中用IntPtr表示) 代码如下 案例

    2024年02月15日
    浏览(45)
  • Unity发布后运行报错:Releasing render texture that is set as Camera.targetTexture!

    在IL 2CPP的编译模式下发布Window程序(支持热更新) A预制体被打到AB包里,A预制体依赖B预制体,而B预制体并未打到AB包里,而B预制体内有个Camera的GameObject对象,Camera的TargetTexture也是从本地拖拽上去的。 主要执行的流程是,运行程序,加载AB包,从AB包中加载资源A,然后通过

    2024年02月16日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包