游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2683|回复: 8

关于normal mapping

[复制链接]

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2005-10-11 16:34:00 | 显示全部楼层 |阅读模式
normal mapping里的normal map:
怎么从一个height map 计算得到normal map,有没有介绍算法的资料?
得到一个normal map之后又是怎样映射到模型上去的??

网上找了一些资料,好像都没有详细介绍这两个东西的

不知道哪里可以找到这两个方面的资料或代码?
或者那位大虾能解释一下
谢谢了

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2005-10-11 20:28:00 | 显示全部楼层

Re:关于normal mapping

NV网站上有一个生成Normal map的Photoshop插件
相关文档也可以在上面查到
developer.nvidia.com

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-10-12 09:08:00 | 显示全部楼层

Re: Re:关于normal mapping

sm3d: Re:关于normal mapping

NV网站上有一个生成Normal map的Photoshop插件
相关文档也可以在上面查到
developer.nvidia.com


呃,不好意思,相关的文档在哪??
找到一些其他的介绍,但好像不是我所说的哪些

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-10-12 09:11:00 | 显示全部楼层

Re: Re:关于normal mapping

azureyes: Re:关于normal mapping

将颜色值 减去255 再除以2


谢谢,不过
那么简单么?一张height map好像只是一个8bit的灰度图?
而一张normal map好像是24bit的RGB颜色的图片啊
莫非R,G,B三个分量都一样?好像不是吧?

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-10-12 15:57:00 | 显示全部楼层

Re: Re:关于normal mapping

azureyes: Re:关于normal mapping

颜色值的R,G,B分量也可以表示法线啊, 只是需要变化到 [-1, 1]的区间里面.

还写掉了, 最后还需要乘以二.


呃,但是R,G,B分量的值都一样么?不会吧?
"最后还需要乘以二"什么意思?
减去255,除以2再乘2??? [em7]
能不能说得详细点?
谢谢

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2005-10-12 20:38:00 | 显示全部楼层

Re:关于normal mapping

Normal map的Photoshop插件下载:
http://developer.nvidia.com/object/nv_texture_tools.html

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2005-10-12 21:16:00 | 显示全部楼层

Re:关于normal mapping

要从高度图中得到某一像素所对应的法向量,首先要计算s和t方向上的切向量,这里的切向量依赖于邻近两像素间的高度差。用H(i,j)来表示存储在(i,j)位置的高度值,则s和t方向上的切向量S(i,j)和T(i,j)可表示为:
S(i,j)={1,0,aH(i+1,j)-aH(i-1,j)}
T(i,j)={0,1,aH(i,j+1)-aH(i,j-1)}
其中常数a是用于调节高度值范围的比例系数,用它可以控制对法向量扰动的程度。
最后,可求得法向量:
N(i,j)=S(i,j)×T(i,j)
将它归一化,并转化到[0,1]范围,以存储到纹理中。

6

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-10-13 20:43:00 | 显示全部楼层

Re: Re:关于normal mapping

sm3d: Re:关于normal mapping

要从高度图中得到某一像素所对应的法向量,首先要计算s和t方向上的切向量,这里的切向量依赖于邻近两像素间...


谢谢
1.s,t为什么这么算?为什么高度差都放到第三个分量中,而第一第二个分量取1或0??
2."存储到纹理中"是指normal map图片中么?但是里面的R,G,B分量范围是(0,255)的

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2005-10-13 22:19:00 | 显示全部楼层

Re:关于normal mapping

1.这与所选坐标系有关。高度图中的内容表示的是平面上每个像素的平面高度。对与s方向的切向量,就是高度图u方向邻近2像素的高度差所形成的向量,其第1个分量(u方向)是1(其实不一定是1,不过可以3个分量同除以它而变成1);第2个分量(v方向)是0(很显然);第3个分量(与u,v垂直方向)就是两像素的高度差。
t方向的切向量亦然。
你画个示意图就明白了。
2.RGB分量范围以unsigned int表示是[0,255],而以float表示是[0.0,1.0],我们采用后种。
而法线向量的范围是[-1.0,1.0],用下面公式就可以映射:
red=(normal.x+1)/2
green=(normal.y+1)/2
blue=(normal.z+1)/2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-28 03:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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