Material 的 Tiling 和 Offset
- 一Tiling 和 Offset 概述
- 二示例
- 三SetTextureScale 和 SetTextureOffset
- 参考
一、Tiling 和 Offset 概述
在 Unity 中,新建一个材质,会要求选择使用哪个着色器,默认的是 Diffuse 着色器。确定了着色器后,在材质属性面板中,就会出现该着色器需要用到的一些属性,一般是贴图及对应的属性。
Offset
表示贴图 UV 坐标的起始位置,取值范围是 0~1。超过 1 的部分取余,so Offset 值为 1.0 和 0 时的效果是一样。Offset > 0 时,向右
Offset % 1
为起始位置;Offset < 0 时,向左|Offset| % 1
为起始位置。Tiling
表示从 Offset 指定的起始位置开始,分别在 X/Y 轴,截取 指定比列大小 的原始贴图,作为输出贴图。超过 1 的部分会自动拼接。如果 Texture 的 Wrap Mode 是 Repeat,则超出 1 的部分由原始贴图拼接;如果 Wrap Mode 是 Clamp,则超出 1 的部分由空白拼接。
二、示例
以一张图片为例,下面分别为原图和直接贴到一个Plane上的效果。
平面贴图后出现了X和Y方向倒置问题。
下面是使用各种不同 Tiling 和 Offset 下的效果,Texture 的 Wrap Mode 为 Repeat。
可以通过更新材质的 Offset 和 Tiling 属性来制作动画。
下图是16个表情格图标,可以每次只显示图标中的某一小块区域来形成动画。
将该贴图应用到一个平面上面,再在该平面上附加如下代码:
using UnityEngine;
using System.Collections; public class Test : MonoBehaviour { // Use this for initialization public int colCount = 4; public int rowCount = 4; //vars for animation public int rowNumber = 0; //Zero Indexed public int colNumber = 0; //Zero Indexed public int totalCells = 16; public int fps = 10; //Maybe this should be a private var private Vector2 offset; //Update void Update () { SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,fps); } //SetSpriteAnimation void SetSpriteAnimation(int colCount ,int rowCount ,int rowNumber ,int colNumber,int totalCells,int fps ){ // Calculate index int index = (int)(Time.time * fps); // Repeat when exhausting all cells index = index % totalCells; // Size of every cell float sizeX = 1.0f / colCount; float sizeY = 1.0f / rowCount; Vector2 size = new Vector2(sizeX,sizeY); // split into horizontal and vertical index var uIndex = index % colCount; var vIndex = index / colCount; // build offset // v coordinate is the bottom of the image in opengl so we need to invert. float offsetX = (uIndex+colNumber) * size.x; float offsetY = (1.0f - size.y) - (vIndex + rowNumber) * size.y; Vector2 offset = new Vector2(offsetX,offsetY); renderer.material.SetTextureScale ("_MainTex", size); renderer.material.SetTextureOffset ("_MainTex", offset); } }
播放后即可得到动态显示每个子图标的动画。
三、SetTextureScale 和 SetTextureOffset
SetTextureScale 和 SetTextureOffset 分别用于设置材质’s各种贴图纹理的 缩放量 和 偏移量。
Shader 相当于配色方案,将材质的各种贴图整合 Mix。不同的 Shader,需要的贴图数量和种类也不一样。为此,在修改材质纹理属性的时候,为区别各种贴图,这两个方法的第一个参数常用于区别各种贴图。
“_MainTex”
主要的漫反射纹理,也能通过 mainTextureScale/mainTextureOffset 属性访问。
“_BumpMap”
法线贴图。
“_Cube”
反射cubemap。(盒子贴图)
参考
[1].http://blog.csdn.net/kfqcome/article/details/19343323
Material 的 Tiling 和 Offset相关推荐
- 图文详解Unity3D中Material的Tiling和Offset是怎么回事
图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔 ...
- unity material之tiling和offset属性
在Unity中,使用材质或者着色器是通过创建一个材质来实现的,新建一个材质,会要求选择使用哪个着色器,默认的是Diffuse着色器.确定了着色器后,在材质属性面板中就会出现该着色器需要用到的一些属性, ...
- Unity Tiling和offset的使用
offset是显示框的偏移量 1)拿flappy bird素材来说,起始状态是这种↓. 注意显示框(黄色).它包含的范围是这种↓ 2)当offset_x设置为0.5的时候,显示框(黄色)包含的范围应该 ...
- 塞尔达风之杖技术分析-角色渲染和面部表情
塞尔达风之杖技术分析-角色渲染和面部表情. https://zhuanlan.zhihu.com/p/26140321 首发于游戏开发启示录 塞尔达风之杖技术分析-角色渲染和面部表情 拳四郎 游戏 ...
- BIT祝威博客汇总(Blog Index)
+BIT祝威+悄悄在此留下版了个权的信息说: 关于硬件(Hardware) <穿越计算机的迷雾>笔记 继电器是如何成为CPU的(1) 继电器是如何成为CPU的(2) 关于操作系统(Oper ...
- [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起
[Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起 在上一篇里我给出了重制的坦克舰队效果图和试玩程序.本篇介绍一下玩家坦克和敌方坦克碰撞问题. +BIT祝威+悄悄在此留下版了个 ...
- Unity3d Material(材质) 无缝拼接
Unity3d Material(材质) Edit by @灰太龙 在做一个项目的过程中,遇到动态切换壁纸的功能,问题点在无缝拼接! 那我们先查查Unity3d 中的材质球,里面有个参数 Tiling ...
- sp 导出unity哪个_GitHub上发现的一个导出Unity3D场景数据的工具
1.源地址 2.导出脚本 脚本名:Unity3DExporter.cs ```C# using UnityEditor; using UnityEngine; using System; using ...
- Node Introduce
TexWithXForm – A texture sample with tiling and offset editable in the material. Texture – A texture ...
最新文章
- Swift语言中class、struct、enum的联系与区别
- android xml pid vid,增加属性标识摄像头的vid与pid,以便知道摄像头与设备文件的对应关系...
- 计算机网络运输层之多路复用与多路分解
- Android热修复升级探索——SO库修复方案 1
- asp.net core新特性(1):TagHelper
- 3个表的连接需要 个关联条件。_购物篮分析(关联商品销售分析)
- 工具丨超好用的免费AWR分析工具
- 实现 iOS UICollectionView的事件透传
- verilog语法实例学习(3)
- 你必须知道的10项大数据思维原理
- 云原生技术开放日PPT大放送 | 五星级的云原生开发体验
- OSDev——GCC交叉编译器
- U-Boot中Distro_bootcmd的实现分析
- Ringbuffer同步问题分析
- 鲸飞酒店云PMS v3.0.22
- RIGHT-BICEP测试第二次
- 北大邮箱收件服务器,北京大学网络服务
- DNS协议分析(域名解析)
- 求助打开网站显示welcome to nginx!
- 长虹32N1Linux是什么系统,2018最新最全长虹电视型号机芯软件对照表