我学院:unity3d修改Cube每个面的贴图UV方法

合集下载

使用Blender进行UV贴图 UV展开与贴图调节

使用Blender进行UV贴图 UV展开与贴图调节

使用Blender进行UV贴图:UV展开与贴图调节Blender是一款强大的开源三维建模软件,除了建模和渲染,它还具有其他许多功能,其中之一就是进行UV贴图。

在三维建模中,UV贴图是一项重要的技术,它可以将纹理映射到物体表面,使其具有视觉上的细节和真实感。

本文将介绍使用Blender进行UV贴图的基本步骤,包括UV展开和贴图调节。

首先,让我们来了解一下什么是UV展开。

在三维建模中,每个物体都有一个虚拟的UV空间,它类似于物体表面的网格模型。

这个UV空间可以通过展开物体来显示,展开过程中会将物体的表面剪开并铺平成二维平面。

这样,我们就可以在二维平面上进行纹理绘制,并将其映射回物体表面,从而呈现出详细的纹理效果。

为了展开物体,我们需要先选择要贴图的物体。

在Blender的物体模式下,选择你想要进行贴图的物体,然后切换到编辑模式。

在编辑模式下,选择整个物体的所有面,然后按下U键,选择"展开UV"。

这将展开所有面到UV空间,并在编辑器窗口中显示出来。

展开UV后,你可以在UV编辑器窗口中进行一些调整。

可以移动、缩放和旋转UV面,以适应贴图的需要。

你也可以选择单个面或多个面,对它们进行独立的调整。

使用选择工具和变换工具可以实现这些操作。

此外,还可以通过平滑和展平功能来优化UV的布局,使得其更加简洁和规则。

当完成UV展开后,接下来就是进行贴图调节。

首先,选择一个合适的贴图,这可以是你自己绘制的纹理图像或者是从外部获取的纹理图像。

在Node Editor(节点编辑器)中创建一个新的材质节点,并将贴图连接到Diffuse(漫反射)或其他你想要贴图的属性上。

你可以使用UV节点来将UV坐标与纹理映射进行连接,以便将纹理正确地应用到物体的表面上。

在连接贴图节点后,你可以通过调整贴图的属性来对其进行进一步的调节。

这包括修改亮度、对比度、颜色饱和度等,以满足你对纹理的需求。

如果你想要添加其他效果,比如噪点、反射或者阴影,也可以在节点编辑器中添加相应的节点,将其与贴图节点进行连接。

Blender中的UV贴图技巧

Blender中的UV贴图技巧

Blender中的UV贴图技巧对于使用Blender软件进行建模和渲染的用户来说,熟练掌握UV贴图技巧是非常重要的。

UV贴图可以让我们在建模后给模型上色或贴上纹理,使其更加逼真和具有表现力。

在本文中,我们将探讨一些Blender中的UV贴图技巧,帮助您更好地运用这个功能。

首先,创建正确的UV布局是一个重要的步骤。

在Blender中,可以通过选择模型的边缘、面或顶点,并使用"Ctrl+E"、"U"或"Ctrl+P"来进行Unwrap或Project UVs的操作。

具体的选择取决于您的建模需求和模型的复杂性。

在进行UV布局时,尽量将模型的不同部分分开,以便更好地控制纹理的贴图效果。

其次,了解Blender中的UV编辑器工具是很关键的。

在UV编辑器中,可以使用各种工具进行UV调整和操作,包括选择、缩放、旋转和平移。

通过在UV编辑器中选择面或顶点,并使用相应的工具进行调整,可以更好地控制模型上纹理的位置和大小。

同时,Blender还提供了一些方便的功能来帮助优化UV布局。

例如,可以使用"Pinning"功能将选定的面或顶点固定在特定位置,以防止其在调整过程中被移动。

此外,也可以使用"UV Sync Selection"功能来保持在模型和UV布局之间的同步选中状态,从而更方便地进行调整和编辑。

除了基本的UV布局和调整技巧,Blender还提供了其他功能来帮助更高级的纹理贴图。

例如,可以通过使用Blender自带的纹理绘制工具或导入外部纹理图像来对模型进行绘制或贴图。

在使用纹理绘制工具时,可以通过调整笔刷的大小、透明度和硬度来实现更精细和真实的绘制效果。

另外,借助Blender的节点编辑器,我们可以更灵活地控制纹理的映射和效果。

通过使用节点,可以在UV贴图上添加、混合和调整各种纹理和效果,以实现更多样化的渲染效果。

我学院:unity3d修改Cube每个面的贴图UV方法

我学院:unity3d修改Cube每个面的贴图UV方法

unity3d修改Cube每个面的贴图UV方法修改一个Cube中每个面的贴图UV,也就是贴图中有多个矩形贴图,需要程序从贴图中读取一部分赋值给Cube每个面。

看下最终效果图:废话不多说,贴上代码using Unity Engine;using System.Collections;[ExecuteInEditMode]public class CustomUVS : MonoBehaviour {public Vector2 topPoint;public Vector2 bottomPoint;public Vector2 leftPoint;public Vector2 rightPoint;public Vector2 frontPoint;public Vector2 backPoint;private Mesh m_mesh;public enum CubeFaceType{Top,Bottom,Left,Right,Front,Back};// Use this for initializationvoid Start () {MeshFilter meshFilter = GetComponent();if (meshFilter == null) {Debug.LogError("Script needs MeshFilter component");return;}#if UNITY_EDITORMesh meshCopy = Mesh.Instantiate(meshFilter.sharedMesh) as Mesh; // Make a deep copy = "Cube";m_mesh = meshFilter.mesh = meshCopy; // Assign the copy to the meshes#elsem_mesh = meshFilter.mesh;#endifif (m_mesh == null || m_mesh.uv.Length != 24) {Debug.LogError("Script needs to be attached to built-in cube");return;}UpdateMeshUVS();}// Update is called once per framevoid Update (){#if UNITY_EDITORUpdateMeshUVS();#endif}void UpdateMeshUVS(){Vector2[] uvs = m_mesh.uv;// FrontSetFaceTexture(CubeFaceType.Front, uvs);// TopSetFaceTexture(CubeFaceType.Top, uvs);// BackSetFaceTexture(CubeFaceType.Back, uvs);// BottomSetFaceTexture(CubeFaceType.Bottom, uvs);// LeftSetFaceTexture(CubeFaceType.Left, uvs);// RightSetFaceTexture(CubeFaceType.Right, uvs);m_mesh.uv = uvs;}Vector2[] GetUVS(float originX, float originY){Vector2[] uvs = new Vector2[4];uvs[0] = new Vector2(originX / 3.0f, originY / 3.0f);uvs[1] = new Vector2((originX + 1) / 3.0f, originY / 3.0f);uvs[2] = new Vector2(originX / 3.0f, (originY + 1) / 3.0f);uvs[3] = new Vector2((originX + 1) / 3.0f, (originY + 1) / 3.0f); return uvs;}void SetFaceTexture(CubeFaceType faceType, Vector2[] uvs) {if (faceType == CubeFaceType.Front) {Vector2[] newUVS = GetUVS(frontPoint.x, frontPoint.y);uvs[0] = newUVS[0];uvs[1] = newUVS[1];uvs[2] = newUVS[2];uvs[3] = newUVS[3];}else if (faceType == CubeFaceType.Back) {Vector2[] newUVS = GetUVS(backPoint.x, backPoint.y);uvs[10] = newUVS[0];uvs[11] = newUVS[1];uvs[6] = newUVS[2];uvs[7] = newUVS[3];}else if (faceType == CubeFaceType.Top) {Vector2[] newUVS = GetUVS(topPoint.x, topPoint.y);uvs[8] = newUVS[0];uvs[9] = newUVS[1];uvs[4] = newUVS[2];uvs[5] = newUVS[3];}else if (faceType == CubeFaceType.Bottom) {Vector2[] newUVS = GetUVS(bottomPoint.x, bottomPoint.y); uvs[12] = newUVS[0];uvs[14] = newUVS[1];uvs[15] = newUVS[2];uvs[13] = newUVS[3];}else if (faceType == CubeFaceType.Left) {Vector2[] newUVS = GetUVS(leftPoint.x, leftPoint.y);uvs[16] = newUVS[0];uvs[18] = newUVS[1];uvs[19] = newUVS[2];uvs[17] = newUVS[3];}else if (faceType == CubeFaceType.Right) {Vector2[] newUVS = GetUVS(rightPoint.x, rightPoint.y);uvs[20] = newUVS[0];uvs[22] = newUVS[1];uvs[23] = newUVS[2];uvs[21] = newUVS[3];}}}使用的贴图给一个Cube添加改图片材质。

3dmax中的UVW?贴图修改器详解(史上最全)

3dmax中的UVW?贴图修改器详解(史上最全)

3dmax中的UVW 贴图修改器详解(史上最全)3dmax中的UVW 贴图修改器选择对象。

>“修改”面板>“修改器列表”>“UVW 贴图”选择对象。

>“修改器”菜单>“UV 坐标”>“UVW 贴图”贴图球体和长方体。

通过将贴图坐标应用于对象,“UVW 贴图”修改器控制在对象曲面上如何显示贴图材质和程序材质。

贴图坐标指定如何将位图投影到对象上。

UVW 坐标系与 XYZ 坐标系相似。

位图的 U 和 V 轴对应于X 和 Y 轴。

对应于 Z 轴的 W 轴一般仅用于程序贴图。

可在“材质编辑器”中将位图坐标系切换到VW 或WU,在这些情况下,位图被旋转和投影,以使其与该曲面垂直。

球体和长方体等基本体对象可生成它们自己的贴图坐标,这与放样对象和NURBS 曲面相同。

扫描、导入或手动构造的多边形或面片模型不具有贴图坐标系,直到应用了“UVW 贴图”修改器。

如果对具有内置贴图坐标的对象应用“UVW 贴图”修改器,那么如果使用“UVW 贴图”修改器中的贴图通道1,所应用的坐标优先。

在默认情况下,在创建基本体过程中可用的“生成贴图坐标”选项使用贴图通道 1。

使用“UVW 贴图”修改器可执行以下操作:·对指定贴图通道上的对象应用七种贴图坐标之一。

贴图通道 1 上的漫反射贴图和贴图通道2 上的凹凸贴图可具有不同的贴图坐标,并可以使用修改器堆栈中的两个“UVW 贴图”修改器单独控制。

·变换贴图 Gizmo 以调整贴图位移。

具有内置贴图坐标的对象缺少 Gizmo。

·对不具有贴图坐标的对象(例如,导入的网格)应用贴图坐标。

·在子对象层级应用贴图。

贴图通道通过将显式贴图通道指定给位图,可为使用多个位图的材质中的每个位图控制贴图坐标的类型和贴图Gizmo 的位移。

在“材质编辑器”中,为每个贴图指定不同的通道编辑,然后将多个“UVW 贴图”修改器添加到对象的修改器堆栈,每个“UVW 贴图”修改器设置为不同贴图通道。

3Dmax中贴图调整和材质优化的方法

3Dmax中贴图调整和材质优化的方法

3Dmax中贴图调整和材质优化的方法引言:在3D建模和渲染过程中,贴图调整和材质优化是非常重要的部分。

通过正确地调整贴图和优化材质,可以使模型更加逼真、生动。

本文将详细介绍在3Dmax 中贴图调整和材质优化的方法,包括颜色调整、纹理修改等。

一、贴图调整方法1. 色调/饱和度调整- 在3Dmax中选择要调整的贴图素材,在编辑贴图素材的属性中找到“色调/饱和度”选项。

- 调整“色调”滑块来改变贴图的整体色调。

- 通过调整“饱和度”滑块来增强或减弱贴图的颜色饱和度。

2. 对比度调整- 在贴图的属性中找到“对比度”选项。

- 通过调整“对比度”滑块,可以增加贴图的对比度,使其更加清晰和明亮。

3. 亮度/曝光调整- 在贴图的属性中找到“亮度/曝光”选项。

- 通过调整“亮度”滑块,可以增加或减少贴图的明暗度。

- 如果需要调整整个场景的亮度和曝光,可以在环境设置中进行调整。

二、材质优化方法1. 纹理修改- 在3Dmax中选中要修改的物体,进入材质编辑器。

- 找到“贴图”的选项,并点击“浏览”按钮选择新的纹理贴图。

- 通过调整纹理贴图的参数,如旋转、平铺、偏移等,来优化材质的效果。

2. 撤销和还原- 在材质编辑器中,通过点击“撤销”按钮可以撤销最近的材质编辑操作。

- 点击“还原”按钮可以还原上一次已经撤销的材质编辑操作。

3. 渐变和过渡效果- 在材质编辑器中选择一个物体,进入材质编辑器。

- 在材质编辑器面板中,找到“渐变”或“过渡”选项。

- 通过选择合适的颜色和设置渐变或过渡的参数,可以为物体添加多样化的效果。

4. 材质层叠和混合- 在材质编辑器中,选中一个物体,在材质编辑器面板中找到“图层”选项。

- 点击“添加图层”按钮,可以添加一个新的材质图层。

- 通过调整不同图层的参数和透明度,可以实现多层材质的混合和层叠效果。

总结:在3Dmax中,通过贴图调整和材质优化可以使模型更加逼真、生动。

通过调整贴图的色调、饱和度、对比度、亮度/曝光等参数,可以改变贴图的外观效果。

unity 修改材质的方法

unity 修改材质的方法

unity 修改材质的方法在Unity中,修改材质可以通过以下几种方法:1. 直接修改材质的属性:在Unity编辑器中,选中一个材质,然后在Inspector窗口中修改其属性。

例如,你可以修改颜色、纹理、光照模式等。

2. 使用脚本修改材质:你可以编写一个Unity脚本来修改材质的属性。

例如,你可以使用``来改变材质的颜色。

以下是一个简单的示例脚本:```csharpusing UnityEngine;public class MaterialModifier : MonoBehaviour{void Start(){// 获取材质Material material = GetComponent<Renderer>().material;// 改变材质颜色= ;}}```这个脚本会获取附加到同一GameObject的材质,并将其颜色改为红色。

3. 使用Shader修改材质:如果你想要更复杂的材质效果,可以使用Shader。

你可以编写自己的Shader,或者使用Unity内置的Shader。

一旦你创建了一个Shader,你可以将它应用到材质上,然后在Shader中定义材质的属性。

4. 使用材质预设:Unity也提供了一些预设材质,例如Unlit/Color和Unlit/Texture。

这些预设材质可以让你快速创建一个简单的材质,然后通过脚本或Inspector窗口修改其属性。

5. 使用MaterialPropertyBlock:如果你正在使用Unity的着色器语言(如HLSL或Cg),你可以使用MaterialPropertyBlock来修改材质的属性。

MaterialPropertyBlock可以让你在运行时动态地改变材质的属性。

以上就是在Unity中修改材质的一些常见方法。

龙图教育:如何实现Unity3d手动UV动画

如何实现Unity3d手动UV动画首先我们来认识下什么是UV,在三维中UV这里是指u,v纹理贴图坐标的简称(它和空间模型的X, Y, Z轴是类似的). 它定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面纹理贴图的位置. UV就是将图像上每一个点精确对应到模型物体的表面. 在点与点之间的间隙位置由软件进行图像光滑插值处理. 这就是所谓的UV贴图。

那么UV坐标又是什么呢,由于所有的图象文件都是二维的一个平面。

水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系。

我们可以定位图象上的任意一个象素。

但是一个问题是如何把这个二维的平面贴到三维的NURBS表面和多边形表面呢? 对于NURBUS表面。

由于他本身具有UV参数,尽管这个UV值是用来定位表面上的点的参数,但由于它也是二维的,所以很容易通过换算把表面上的点和平面图象上的象素对应起来。

所以把图象贴带NURBUS表面上是很直接的一件事。

但是对于多边形模型来讲,贴图就变成一件麻烦的事了。

所以多边形为了贴图就额外引进了一个UV坐标,以便把多边形的顶点和图象文件上的象素对应起来,这样才能在多边形表面上定位纹理贴图。

所以说多边形的顶点除了具有三维的空间坐标外。

还具有二维的UV坐标。

对于纹理贴图而言,一张贴图的U和V坐标的数值范围都是0到1,而不管他的实际分辨率是多少了解了上面的基本概念,下面我们来开始我们的正文在用U3D做特效的时候我们有时候需要用到手K UV动画,当然有些脚本可以实现,但是没有手K的可控性强。

今天抽空给大家讲一下怎么实现。

1、我自己制作了一张序列图,有文字1-8的排序,便于观看。

贴在模型上是这样的效果。

2、可以看的出来这并不是我们需要的排列,我们需要单个的数字占满整个Plane,而不是现实整张图。

所以,我们需要修改贴图的Tiling,让数字1占满Plane。

3、这个时候就可以打开动画编辑器来K序列图的动画了。

Blender模型的UV贴图制作与优化的高级指南

Blender模型的UV贴图制作与优化的高级指南在Blender中,UV贴图是为了在三维模型表面附加纹理、材质和颜色的必要步骤。

通过使用UV贴图,我们可以实现更加真实和详细的模型渲染。

本文将介绍Blender中模型的UV贴图制作与优化的高级指南,帮助您在设计和渲染过程中获得更好的效果。

1. 创建UV贴图首先,选中您要进行贴图的模型,并切换到编辑模式。

接下来,按下U键,选择一个UV映射的选项。

常见的选项包括展开、平均展开、球形等。

展开是最常用的选项,它会将模型展开成一张平面图。

根据您的模型形状和需求,选择最合适的UV映射选项。

2. 调整UV布局在展开UV贴图后,可能会发现一些重叠、变形或者不规则的部分。

为了达到更好的贴图效果,需要调整UV布局。

您可以通过选中一部分UV并移动、旋转、缩放等方式进行调整,确保没有重叠和变形。

同时,还可以使用UVs菜单栏下的各种工具来辅助调整。

3. 使用纹理图片接下来,我们需要导入纹理图片。

在Blender中,可以通过在材质选项卡中导入纹理图片,并将其分配给模型的表面。

一般来说,纹理图片需要事先在其他软件中制作好,并保存为常见的图像格式。

在Blender中导入纹理图片后,可以在UV/Image Editor视图中查看和调整贴图。

4. 调整纹理贴图一旦导入了纹理图片,我们可以调整其在模型表面的位置,大小和旋转等。

在材质选项卡中,您可以找到贴图节点,并设置其属性。

通过调整属性值,可以实现贴图在模型上的合适展示效果。

此外,还可以使用Blender的纹理绘画工具对贴图进行进一步修改。

5. 优化UV贴图在进行UV贴图制作的过程中,我们需要考虑模型的优化问题。

优化UV贴图可以提高渲染效率和贴图的清晰度。

具体的优化方法包括:减少模型中的不必要面数,避免重叠和不规则的UV布局,使用最小的纹理图片尺寸等。

通过这些优化措施,可以减少渲染时间,并确保贴图在不同平台和设备上的兼容性。

总结:本文介绍了Blender中模型的UV贴图制作与优化的高级指南。

unity3d贴图说明

Unity3D美术方面贴图我们都知道,一个三维场景的画面的好坏,百分之四十取决于模型,百分之六十取决于贴图,可见贴图在画面中所占的重要性。

在这里我将列举一些贴图,并且初步阐述其概念,理解原理的基础上制作贴图,也就顺手多了。

我在这里主要列举几种UNITY3D中常用的贴图,与大家分享,希望对大家有帮助。

01首先不得不说的是漫反射贴图:漫反射贴图diffuse map漫反射贴图在游戏中表现出物体表面的反射和表面颜色。

换句话说,它可以表现出物体被光照射到而显出的颜色和强度。

我们通过颜色和明暗来绘制一幅漫反射贴图,在这张贴图中,墙的砖缝中因为吸收了比较多的光线,所以比较暗,而墙砖的表面因为反射比较强,所以吸收的光线比较少。

上面的这张图可以看出砖块本身是灰色的,而砖块之间的裂缝几乎是黑色的。

刨去那些杂糅的东西,我们只谈明显的,漫反射贴图表现了什么?列举一下,物体的固有色以及纹理,贴图上的光影。

前面的固有色和纹理我们很容易理解,至于后面的光影,我们再绘制漫反射贴图的时候需要区别对待,比如我们做一堵墙,每一块砖都是用模型做出来的,那么我们就没有必要绘制砖缝,因为这个可以通过打灯光来实现。

可是我们如果用模型只做了一面墙,上面的砖块是用贴图来实现,那么就得绘制出砖缝了。

从美术的角度,砖缝出了事一条单独的材质带外,还有就是砖缝也是承接投影的,所以在漫反射图上,绘制出投影也是很有必要的,如下图:没有什么物体能够反射出跟照到它身上相同强度的光。

因此,让你的漫反射贴图暗一些是一个不错的想法。

通常,光滑的面只有很少的光会散射,所以你的漫反射贴图可以亮一些。

漫反射贴图应用到材质中去是直接通过DiffuseMap的。

再命名规范上它通常是再文件的末尾加上“_d”来标记它是漫反射贴图。

凹凸贴图Bump maps凸凹贴图可以给贴图增加立体感。

它其实并不能改变模型的形状,而是通过影响模型表面的影子来达到凸凹效果的。

再游戏中有两种不同类型的凸凹贴图,法线贴图(normalmap)和高度贴图(highmap)。

3D Max中两套UV整合的技巧

3DMax中两套UV整合的技巧1.在工作中当我们需要“整合”一些模型时,例如:
将右边角色身上的衣裤穿在左边人物身上
2.之后我们把衣裤模型放在合适的位置后如下图所示
3.假如项目要求只能使用一张UV的话,一般情况下会重新把UV排列,之后将贴图一一对好。

UV现在是这种效果,红色选中区域因为是重叠的,所以需要重新排列UV然后整合贴图非常麻烦
4.于是我们可以采用以下这个方法
先把两个贴图分别贴好
自发光调到数值100,非常重要
选择第一个模型,打开UV,全选所有UV,然后按copy复制
然后选channel,变成“2”,Paste粘贴
第二个模型重复以上步骤!
5.之后再转为可编辑多边形
然后我们attach/合并两个模型,
再打开UV,选择channel 2
把UV排列好,这个环节不能少
可以通过这里分UV。

这是简单排了一下(示意一下,不要学我啊排的不太专业),转poly。

然后按数字键“0”,选择channel 2,烘焙difffuse map,随后检查下自发光有没有
调到100!
确认无误后点击Render进行渲染。

6.这样就能把2种UV整合到一个UV框里了。

如果出现这样分开的情况是不对滴!
如果要分开那就选择channel 1 就能实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

unity3d修改Cube每个面的贴图UV方法
修改一个Cube中每个面的贴图UV,也就是贴图中有多个矩形贴图,需要程序从贴图中读取一部分赋值给Cube每个面。

看下最终效果图:
废话不多说,贴上代码using Unity Engine;
using System.Collections;
[ExecuteInEditMode]
public class CustomUVS : MonoBehaviour {
public Vector2 topPoint;
public Vector2 bottomPoint;
public Vector2 leftPoint;
public Vector2 rightPoint;
public Vector2 frontPoint;
public Vector2 backPoint;
private Mesh m_mesh;
public enum CubeFaceType
{
Top,
Bottom,
Left,
Right,
Front,
Back
};
// Use this for initialization
void Start () {
MeshFilter meshFilter = GetComponent();
if (meshFilter == null) {
Debug.LogError("Script needs MeshFilter component");
return;
}
#if UNITY_EDITOR
Mesh meshCopy = Mesh.Instantiate(meshFilter.sharedMesh) as Mesh; // Make a deep copy = "Cube";
m_mesh = meshFilter.mesh = meshCopy; // Assign the copy to the meshes
#else
m_mesh = meshFilter.mesh;
#endif
if (m_mesh == null || m_mesh.uv.Length != 24) {
Debug.LogError("Script needs to be attached to built-in cube");
return;
}
UpdateMeshUVS();
}
// Update is called once per frame
void Update ()
{
#if UNITY_EDITOR
UpdateMeshUVS();
#endif
}
void UpdateMeshUVS()
{
Vector2[] uvs = m_mesh.uv;
// Front
SetFaceTexture(CubeFaceType.Front, uvs);
// Top
SetFaceTexture(CubeFaceType.Top, uvs);
// Back
SetFaceTexture(CubeFaceType.Back, uvs);
// Bottom
SetFaceTexture(CubeFaceType.Bottom, uvs);
// Left
SetFaceTexture(CubeFaceType.Left, uvs);
// Right
SetFaceTexture(CubeFaceType.Right, uvs);
m_mesh.uv = uvs;
}
Vector2[] GetUVS(float originX, float originY)
{
Vector2[] uvs = new Vector2[4];
uvs[0] = new Vector2(originX / 3.0f, originY / 3.0f);
uvs[1] = new Vector2((originX + 1) / 3.0f, originY / 3.0f);
uvs[2] = new Vector2(originX / 3.0f, (originY + 1) / 3.0f);
uvs[3] = new Vector2((originX + 1) / 3.0f, (originY + 1) / 3.0f); return uvs;
}
void SetFaceTexture(CubeFaceType faceType, Vector2[] uvs) {
if (faceType == CubeFaceType.Front) {
Vector2[] newUVS = GetUVS(frontPoint.x, frontPoint.y);
uvs[0] = newUVS[0];
uvs[1] = newUVS[1];
uvs[2] = newUVS[2];
uvs[3] = newUVS[3];
}else if (faceType == CubeFaceType.Back) {
Vector2[] newUVS = GetUVS(backPoint.x, backPoint.y);
uvs[10] = newUVS[0];
uvs[11] = newUVS[1];
uvs[6] = newUVS[2];
uvs[7] = newUVS[3];
}else if (faceType == CubeFaceType.Top) {
Vector2[] newUVS = GetUVS(topPoint.x, topPoint.y);
uvs[8] = newUVS[0];
uvs[9] = newUVS[1];
uvs[4] = newUVS[2];
uvs[5] = newUVS[3];
}else if (faceType == CubeFaceType.Bottom) {
Vector2[] newUVS = GetUVS(bottomPoint.x, bottomPoint.y); uvs[12] = newUVS[0];
uvs[14] = newUVS[1];
uvs[15] = newUVS[2];
uvs[13] = newUVS[3];
}else if (faceType == CubeFaceType.Left) {
Vector2[] newUVS = GetUVS(leftPoint.x, leftPoint.y);
uvs[16] = newUVS[0];
uvs[18] = newUVS[1];
uvs[19] = newUVS[2];
uvs[17] = newUVS[3];
}else if (faceType == CubeFaceType.Right) {
Vector2[] newUVS = GetUVS(rightPoint.x, rightPoint.y);
uvs[20] = newUVS[0];
uvs[22] = newUVS[1];
uvs[23] = newUVS[2];
uvs[21] = newUVS[3];
}
}
}
使用的贴图
给一个Cube添加改图片材质。

并添加CustomUVS.cs脚本。

修改需要截取的区域原点
注意:由于图片是3×3的,所以截取区域中按3等分截取。

学游戏,就上我学院!/。

相关文档
最新文档