精华内容
下载资源
问答
  • 网格UV展开

    千次阅读 2017-08-08 23:39:13
    网格UV展开 UV展开是什么 参数曲面的参数域变量一般用UV字母来表达,比如参数曲面F(u,v)。所以一般叫的三维曲面本质上是二维的,它所嵌入的空间是三维的。凡是能通过F(u,v)来表达的曲面都是参数曲面,比如...

    网格UV展开

    UV展开是什么

    参数曲面的参数域变量一般用UV字母来表达,比如参数曲面F(u,v)。所以一般叫的三维曲面本质上是二维的,它所嵌入的空间是三维的。凡是能通过F(u,v)来表达的曲面都是参数曲面,比如NURBS曲面。对于三角网格,如果能把它与参数平面建立一一映射,那么它也就被参数化了,这个映射就是UV展开。如下图所示,左图是右边网格在参数平面上的展开,这样每个顶点都有了一个uv参数值,这也被称为纹理坐标。

    uvunfold
    图1

    什么样的网格可以做UV展开

    那是不是所有的网格都可以做UV展开呢?答案是否定的。只有圆盘拓扑结构的网格才能展开到平面上,比如一个球,无论如何都不可能在不撕裂的情况下展开到平面。对于任意拓扑结构的网格,需要给它添加割缝,把它分割成一片一片的圆盘结构,再做展开(参考demo手动割网格UV展开)。如下图所示,这个模型被分割成了很多片,再展开到了平面。在Geometry++里,对于单连通的圆盘拓扑网格的UV展开,可以调用 ConformalMap 来实现。对于任意拓扑的网格结构,可以调用 GenerateUVAtlas 来实现。

    texturemapping
    图2

    UV展开的扭曲程度

    网格展开到平面区域,除了可展曲面,其它曲面在展开后都会产生一些扭曲。一般有两种扭曲。一种是曲面本身的几何所决定的,比如球面展开到平面,一定会产生扭曲。想要减少展开的扭曲程度,可以在扭曲程度大的地方增加曲面割线。另一种是展开算法中的约束产生的扭曲,比如固定边界的UV展开。一种直观的观察展开扭曲程度的方式是,把一张棋盘格图片贴到网格上,棋盘格越均匀,UV展开扭曲越小。


    固定边界与自由边界

    如图所示,左图是自由边界的UV展开,右图是固定边界的UV展开。可以看到自由边界的展开结果扭曲程度要小很多。

    • 自由边界:自由边界的展开结果扭曲程度要小很多。但是边界如果比较复杂的时候,边界处可能会产生自交情况。
    • 固定边界:固定边界的展开一般应用于特定需求。需要注意的是,边界约束条件的合理性能影响UV展开的效果。free_fix_boundary
      图3

      顶点坐标与纹理坐标的关系

      纹理坐标与顶点坐标不是一一对应的,但我们经常听见“顶点的纹理坐标”这个说法,严格来说是不准确的。下面用一个图来解释(这里考虑三角网格的情况,其余情况类似):

      texturecoord

      可以看出顶点坐标与纹理坐标其实没有直接联系,他们是用过三角面片间接联系起来的。它们之间没有一一对应的关系。


      顶点纹理坐标和三角形纹理坐标

      严格来讲,顶点并没有纹理坐标的概念,只有三角形有纹理坐标的概念。网格UV展开到平面的时候,如果没有割缝产生,那么每个顶点在其相邻三角形内的纹理坐标都是一样的,故可简称为顶点的纹理坐标。如果有割缝产生,割缝处的顶点在不同三角形内的纹理坐标是不一样的。这时,顶点和纹理坐标是一对多的关系。下面说说在实际程序中,顶点纹理坐标和三角形纹理坐标的应用场景。

    • 单连通圆盘拓扑的UV展开:如图1情况所示。这种情况下,顶点和纹理坐标是一一对应的,一个顶点可以存一个纹理坐标。一般这类的UV展开,都是使用的顶点纹理坐标的概念。
    • 任意网格的UV展开:如图2情况所示。这种情况下,缝隙处的顶点和纹理坐标是一对多的关系。可以把纹理坐标存在三角形内。在非缝隙处,纹理坐标的存储有冗余信息。如果需要减少存储空间,也可以把纹理坐标存成一个数组(纹理坐标都不相等),然后每个三角形存纹理坐标的索引,类似OBJ的文件格式。

      网格割缝和纹理坐标缝隙的区别

      这是两个不同的概念。把网格顶点映射到纹理坐标域所得到的2D网格,和原始网格的拓扑结构可以是不同的。你可以把这两个网格看成是两个独立的网格。纹理坐标的缝隙是2D网格的边界。网格割缝是把网格的拓扑结构改变了,割缝处会产生新的网格顶点。纹理坐标缝隙,是在展开的UV空间中,顶点纹理坐标的缝隙。缝隙处网格顶点和纹理坐标是一对多的关系。

      如果在纹理坐标缝隙处把网格割开,那么割开后的网格顶点和纹理坐标就是一一对应的关系了。


      网格割缝的创建

      UV展开的应用里,经常需要创建一些网格割缝。好的割缝,一般有这些性质:

    • 长度很短
    • 割线光滑
    • 沿着特征边
    • 分布在视觉不明显的地方
    • 在全自动UV展开应用里,割缝首先要能把网格割成一片一片的圆盘结构

      纹理贴图应用

      网格UV展开经常用于纹理贴图应用。如下图所示,网格UV展开到平面后,把网格对应的贴图填充到UV坐标域,就得到了右边的纹理图。网格在渲染的时候,每个三角片离散化后,每个离散点会根据UV坐标值去纹理图里拾取颜色。拾取的方法,可以是UV坐标值最近点颜色,也可以根据UV坐标值的相邻四个像素做双线性差值。

      texturecoord
    展开全文
  • unwrap 展开网格UV,再给材质添加上纹理,这样网格上再使用 Texture Paint 就可以再网格上绘制纹理内容,并直接映射到纹理坐标上,保存纹理后,重新渲染,就可以看到有纹理的效果了: 先看长:Eevee 渲染器的,效果...

    之前的一篇,我们创建好模型、配上基础材质后,效果还是一般,其实我们可以使用 UV Unwrap(模型UV空间展开投影到一张纹理坐标上的算法)将网格顶点坐标映射到 UV 纹理编辑上对应的 UV 坐标


    unwrap 展开网格UV,再给材质添加上纹理,这样网格上再使用 Texture Paint 就可以再网格上绘制纹理内容,并直接映射到纹理坐标上,保存纹理后,重新渲染,就可以看到有纹理的效果了:

    先看长:Eevee 渲染器的,效果很实时渲染式,间接光就没有
    在这里插入图片描述

    使用 Cycles 光追半渲染,可以看到上面其实还有一个发光物体的光也照射到 GBA MiniGame 上了
    在这里插入图片描述

    但是 Cycles 噪点非常多,我只能打开 Square Sample + 提高 Samples 数量来取噪点了
    在这里插入图片描述

    但是渲染一张这么小的图,也费了 2分钟 45 秒,真的是慢:
    在这里插入图片描述

    展开全文
  • UV展开工具Unfold 3D

    2012-12-09 10:44:45
    UV展开工具Unfold 3D用于贴图的好工具
  • UV UnWrap(UV展开)

    千次阅读 2009-02-28 12:36:00
    如何把3D模型展开为一张2D的贴图?我们可以用Shader来实现。《GPU Gems》第16章有提及,这里复述一下: 在Vertex Shader里,使用纹理坐标UV作为顶点的屏幕位置(把[0,1]范围的纹理坐标重映射为[-1,1]范围的规范化的...

     

    如何把3D模型展开为一张2D的贴图?我们可以用Shader来实现。《GPU Gems》第16章有提及,这里复述一下:

     

    在Vertex Shader里,使用纹理坐标UV作为顶点的屏幕位置(把[0,1]范围的纹理坐标重映射为[-1,1]范围的规范化的位置坐标)。要注意的是模型的UV映射必须要好,即在纹理上的每个点必须映射为模型上的唯一点,不能重叠。然后以3D模型每个像素的颜色来对展开的网格进行着色,就会得到展开后的2D贴图。

     

    我用GLSL实现了一下,运行效果如下图所示:

    1.3D模型:

    (1)正面

     

    (2)侧面

     

    2.展开后的2D贴图:

     

     附GLSL代码:

    // Vertex Shader

     

    void main(void)
    {
          vec2 pos = gl_MultiTexCoord0 * 2.0 - 1.0;
          gl_Position = gl_ModelViewProjectionMatrix * vec4(pos.x,pos.y,0.0,1.0);
     
          gl_TexCoord[0] = gl_MultiTexCoord0;
    }

     

    // Fragment Shader

     

    uniform sampler2D  decalTex;

    void main(void)
    {

         gl_FragColor = texture2D(decalTex, gl_TexCoord[0].st);

    }

    展开全文
  • UV UnWrap(UV展开)

    2009-02-28 12:36:00
    如何把3D模型展开为一张2D的贴图?我们可以用Shader来实现。《GPU Gems》第16章有提及,这里复述一下: 在Vertex Shader里,使用纹理坐标UV作为顶点的屏幕位置...然后以3D模型每个像素的颜色来对展开网格进...

    如何把3D模型展开为一张2D的贴图?我们可以用Shader来实现。《GPU Gems》第16章有提及,这里复述一下:

    在Vertex Shader里,使用纹理坐标UV作为顶点的屏幕位置(把[0,1]范围的纹理坐标重映射为[-1,1]范围的规范化的位置坐标)。要注意的是模型的UV映射必须要好,即在纹理上的每个点必须映射为模型上的唯一点,不能重叠。然后以3D模型每个像素的颜色来对展开的网格进行着色,就会得到展开后的2D贴图。

    我用GLSL实现了一下,运行效果如下图所示:

    1.3D模型:

    (1)正面

    (2)侧面

    2.展开后的2D贴图:

    附GLSL代码:

    // Vertex Shader

    void main(void)
    {
    vec2 pos = gl_MultiTexCoord0 * 2.0 - 1.0;
    gl_Position = gl_ModelViewProjectionMatrix * vec4(pos.x,pos.y,0.0,1.0);

    gl_TexCoord[0] = gl_MultiTexCoord0;
    }

    // Fragment Shader

    uniform sampler2DdecalTex;

    void main(void)
    {

    gl_FragColor = texture2D(decalTex, gl_TexCoord[0].st);

    }

    展开全文
  • 由于现在我们已经从光照预计算中排除了合适的对象物体,我们可以进行减少剩余光照图表数量的工作了。因为生成光照图表(Charts...这就涉及到UV展开的问题,它需要保持几何面上贴图纹素扭曲度与所需足够覆盖贴图Shell数量
  • 我们曾经为大家介绍了预计算实时GI的必要性、如何定义一个适合场景的光照分辨率、光照图的概念以及使用光照探针优化光照的方案。您可以点击下面的标题对之前的教程进行回顾... (一)介绍 (二)实时分辨率 ...UV展开
  • 当配置UV展开参数时,理想的结果是找到一种生成的光照图表最少,同时光照贴图的扭曲度最低的参数组合。请记住,当启用UV Charts绘制模式时,这种扭曲程度可视化为应用到Scene视图中的对象物体的棋盘网格纹理贴图的...
  • 创建UV贴图的过程称为UV展开。 U和V指的是2D空间的水平轴和垂直轴,因为X,Y和Z已在3D空间中使用。一旦创建了多边形网格,下一步就是将其“展开”为UV贴图。现在要赋予网格生命并使它看起来更逼真(或风格化),就得...
  • 创建UV贴图的过程称为UV展开。 U和V指的是2D空间的水平轴和垂直轴,因为X,Y和Z已在3D空间中使用。一旦创建了多边形网格,下一步就是将其“展开”为UV贴图。现在要赋予网格生命并使它看起来更逼真(或风格化),就...
  • UE3 展开光照贴图的 UV

    千次阅读 2015-09-08 14:24:52
    展开光照贴图的 UV 有关创建光照贴图示例光照贴图坐标索引相邻 UV 以及间隔 有关创建光照贴图 光照贴图可能是场景美术制作中最难的环节。我们依靠它们可以得到光照和阴影清晰可见的细节...
  • 网格映射

    2019-10-15 14:49:36
    网格映射是什么 对于两个网格S和T,它们之间的映射F:S -> T,可以根据根据S和T的相似度来进行分类: 第一类情况,S和T通过刚性变换就可以注册对齐,如下左图所示。如果S和T有相同的网格连接关系,那么F可以是一...
  • c4d UV篇学习笔记

    2020-08-05 18:27:54
    UV展开流程 uv多边形 全选面--命令--重置UV 边操作 选择一些边,设置边选集,将这些边剪开 点击松弛UV,设置如图所示,点击应用 可能出现情况,UV展开过大 解决方法 1全选UV,缩放 2投射-------看着选 ...
  • uv坐标备忘

    2021-06-04 17:26:45
    一旦一个网格是通过定义顶点和索引创建的...一个二维UV坐标被分配给顶点列表中的每个顶点,因此定义了纹理的哪个部分映射到3d网格的哪个区域。 解释UV映射的一个常见做法是想象一个有六个面的立方体。 通过展开这个立方
  • 三维网格表示

    2019-10-27 21:38:45
    网格有哪些数据结构 网格的数据结构其实就是一个图结构:点,边,面。可以是有向图,比如半边结构,也可以是无向图。在不同的软件或者开发包里,网格数据结构的实现都是有差异的。这种差异主要体现在网格连接关系的...
  • 网格测量

    2017-08-08 23:32:28
    网格测量 测地距离是什么 测地曲率:曲面上的曲线有一个曲率向量。这个向量往曲面的法线做投影,得到的投影向量就是法曲率向量;往曲面的切平面做投影,得到向量就是测地曲率向量,这个向量的大小就是测地...
  • 理解UV贴图

    千次阅读 2017-05-09 16:44:00
    一、理解UV贴图UVs是驻留在多边形网格顶点上的两维纹理坐标点,它们定义了一个两维纹理坐标系统,称为UV纹理空间,这个空间用U和V两个字母定义坐标轴。用于确定如何将一个纹理图像放置在三维的模型表面。本质上,UVs...
  • (Cube的)UV映射

    2020-12-08 16:30:05
    下图是一张展开的骰子图,上面的数字就是UV坐标。 通常,UV映射是由3D工具完成,手动的完成这项工作是极其困难的,所以,我选择了一个顶点较少的立方体作为示例,下图中有一个展开的立方体,其中0-13的数字是顶点...
  • 本文是《Unreal Engine 4 渲染目标(Render Target)教程 之 动态网格绘制(Dynamic Mesh Painting)》的下半部分...文章目录本教程的方法创建展开材质(Unwrap Material)为角色展UV获取碰撞位置捕获展开使用遮罩 本.
  • 您也可以从uv展开菜单访问它们(在编辑模式下按U)。 紫外线刷 通过用刷子抚摸模型来调整网格上的UV。 紫外线刷 启动“ UV笔刷”工具。 半径 笔触半径。 您也可以按[和]键更改笔刷的半径。 力量 乘以笔触强度。 笔...
  • 写个读书笔记,一来作为字典以后可以查,二来记录自己的理解。...(我推测的,因为贴图的坐标是uv网格参数化的方法:用最低的变形,将一个网格铺开在一个平面上。 任何封闭表面都可以由一条缝展开后,铺在一...
  • MAX SDK网格专题

    千次阅读 2010-04-12 16:37:00
    网格专题一、网格几何结构1.1 顶点(Vertex) MAX中的模型顶点仍然采用常用的顶点数组方式,mesh的顶点数组成员为verts,verts为顶点三维坐标的一维数组, Mesh::numVerts为顶点的数目。int getNumVerts(); //返回...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,075
精华内容 430
关键字:

网格uv展开