游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5240|回复: 11

请教一个纹理映射计算公式...

[复制链接]

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-11-8 12:34:00 | 显示全部楼层 |阅读模式
如图所示, 我想问问纹理映射的原理是什么? 以及映射的计算公式? 谢谢!

20

主题

84

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2009-11-8 16:24:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

Directly Mapping Texels to Pixels 中有说明

不过细节部分,我没有读得懂。。。希望高手讲解下!

3

主题

67

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2009-11-9 16:39:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

大体来讲,根据三角形三个端点纹理坐标,插值出绘制在屏幕上的三角形每一个像素的纹理坐标,然后就是纹理采样,取得对应颜色,绘制在屏幕上。
找一下这本书,《3d游戏编程大师技巧》,里面写得很详细。

0

主题

398

帖子

577

积分

高级会员

Rank: 4

积分
577
发表于 2009-11-9 17:45:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

如果不考虑透视校正的话:想象成纹理是印在气球皮上的,把图上的三点扯成目标上的那样....

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2009-11-9 20:31:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

基本思想就是线性插值(扫描线算法)。把三角形想象成一条一条线段组成的图形。然后每一条线段是由一个个的点组成的,你所要做的就是根据三个点的uv坐标,计算出每一条线段的起点和终点,然后再按照划线算法计算出这条线段每一个点的纹理坐标,最后就是根据这个坐标,在纹理上取相应点的像素(取单个点,或者邻近点插值)。

进一步深入的话,有走样,插值效率,透视校正(3D)等等问题。

资料:
这个基础一点,但是原理讲的比较细致易懂:
http://www-users.mat.uni.torun.pl/~wrona/3d_tutor/tri_fillers.html

这个是《3d游戏编程大师技巧》的作者写的:
http://www.gamedev.net/reference/articles/article852.asp

13

主题

312

帖子

312

积分

中级会员

Rank: 3Rank: 3

积分
312
发表于 2009-11-9 21:10:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

:〉


-------------------------------------------------------------------------------------------

欢迎访问开源图形处理器体系结构论坛(OpenGPU论坛) http://www.opengpu.org/bbs/

OpenGPU Graphics Open Source community(图形开源社区),聚焦领域(focus domain)包括:
  * GPU Architecture(图形处理器体系结构)
  * Graphics Algorithm(图形算法)
  * GPGPU Programming (面向通用的图形处理器编程)
  * Open Source Rendering Engine(开源渲染器)
  * Open Source GPU Simulator/RTL Implement(开源GPU模拟器

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
 楼主| 发表于 2009-11-10 12:52:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

非常感谢大家的回答.

没想到跟我想像中的一样, 用平行的扫描线组成一个三角形, 遍历所有扫描线, 求出此线左右在三角形边上的位置比例, 然后在纹理的相同比例处模拟画一条直线, 把像素按比例一一对应到目标扫描线上..


有个问题: 画线以及求比例需要用到乘法,除法. 如果大量绘制三角片面的话, 会不会导致效率急剧下降?
有没有什么更好的优化办法?

1

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2009-11-10 16:38:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

都是百分比插值问题,
现在都使用硬件采样,
当然只要愿意,DX11可以满足手动需要.

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
 楼主| 发表于 2009-11-10 16:48:00 | 显示全部楼层

Re:请教一个纹理映射计算公式...

确实, PC上有OpenGL与DX, 但是嵌入式操作系统呢?

如果此嵌入式系统没有OpenGL支持的话, 怎么进行3D绘图?

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2009-11-10 20:02:00 | 显示全部楼层

Re: Re:请教一个纹理映射计算公式...

flyue: Re:请教一个纹理映射计算公式...

非常感谢大家的回答.

没想到跟我想像中的一样, 用平行的扫描线组成一个三角形, 遍历所有扫描线, 求出此线...


效率的话,本身算法里面大部分运算已经都是加法了,用汇编也许可以再快点。不过反正拿来做大型应用肯定还是不太现实。
你可以看看《3d游戏编程大师技巧》的例子,irrlicht也有软件渲染的模块。速度肯定没有硬件计算那么快。

========
确实, PC上有OpenGL与DX, 但是嵌入式操作系统呢?

如果此嵌入式系统没有OpenGL支持的话, 怎么进行3D绘图?
======
整个渲染过程都软件实现啊,基本渲染算法的思想都是一样的。上面提到的都是很好的例子。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-18 05:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表