UV Map的算法是怎样的?

XCOOL 2007-07-09 10:57:54
将一个三维曲面展开到平面上,以实现UV贴图映射的算法到底是怎样实现的?
比如UV Maper和Dx的UVAtlas工具的实现算法是如何的?
...全文
2146 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
铜戈 2007-11-05
  • 打赏
  • 举报
回复
popy007 说的是纹理坐标插值 不是纹理过滤。 只不过双线性插值写成了双线性过滤插值
chena224503 2007-10-29
  • 打赏
  • 举报
回复
楼上你说的是纹理插值是指纹理filter吧。
顶点坐标用透视投影矩阵变换就可以产生透视效果。
计算三角形内像素的位置时使用线性插值,透视校正是说,计算纹理坐标不能用线性插值,要用双曲型插值(Hyperbolic Interpolation)。
双线性过滤是纹理filter的一种,和透视校正没关系。
popy007 2007-10-18
  • 打赏
  • 举报
回复
实际上曲面会被变为面片并分解成多个三角形,三角形的每个点都包含一个
纹理坐标,对应2D纹理矩阵中的一个点。再对三角形进行光栅化
的时候,利用三角形的3个顶点的纹理坐标对内部扫描线进行纹理坐标
插值。

插值是图形学中的基本算法,最基本的纹理插值有两种:


1)普通的仿射插值(线性插值),没有透视效果。
2)带透视校正的双线性过滤插值。

目前图形硬件已经普遍支持上面两个方法,所以通过APIs比如D3D或者OpenGL(带硬件驱动程序)
进行编程的话就可以使用硬件进行加速。

但如果需要写软件渲染器的话还是需要掌握上面的两种算法,而且应该掌握图形流水线,
因为纹理坐标在光栅化之前也要经过很多部操作。

这两个算法在大多数的图形学书籍中都可以找到。
XCOOL 2007-10-09
  • 打赏
  • 举报
回复
但是那种影射方法可以使渲染后纹理的改变最小呢?
cywater2000 2007-09-23
  • 打赏
  • 举报
回复
最常用的一种解决方法是求平面的坐标基(Axis Base)
其实说简单点,就是将3维顶点数据投影到(纹理坐标)平面上

代码的话,可以参考quake3中的ComputeAxisBase
wangzheji 2007-09-11
  • 打赏
  • 举报
回复
理解成 坐标对应坐标就可以了!比方说 正方体的一个面 的四个顶点可以对应 纹理的四个顶点!
寻开心 2007-09-06
  • 打赏
  • 举报
回复
从数学的角度上说,三维曲面上的点 z = f(x, y)
是关于x和y两个变量的函数
你也可以写成 z = f(u, v )
uv map不是一种固定的方式,有多种方式
z=f(u,v)的任何一种表达式都可以理解成为一种uv map的方式

从拓扑的角度上, 三维的曲面只要和平面具有同质的关系, 也就是他们之间存在一一映射的关系的话,每个映射关系都可以理解成为一种uv map

huang7839 2007-07-09
  • 打赏
  • 举报
回复
太难了,,不知道啊。

8,324

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧