游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3687|回复: 9

用ShaderX做顶点变形的法向量问题,大家看看有没有好的建

[复制链接]

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2008-9-26 19:40:00 | 显示全部楼层 |阅读模式
假如一个物体是用着色器渲染的,我要让表面不规律的运动。

我的法向量是在预处理的时候通过每个三角形计算的,
在SHADER中每次只接受一个顶点,有什么比较好的办法可以让这个法向量也正确的运动呢??

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2008-9-27 07:54:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

顶点怎么变的形?

0

主题

243

帖子

357

积分

中级会员

Rank: 3Rank: 3

积分
357
发表于 2008-9-27 09:16:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

顶点动的话三角面的法线一般是没办法修正的...
这也是为什么terrain morph的时候必须用lightmap的原因... 因为没办法根据法线算出正确的方向光

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-9-27 14:41:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

顶点是在Y方向上运动的,暂时没什么头绪怎么动态计算向量。

DeALLBugs你说的用lightmap是预处理时候计算的一张吧(我现在就是这样处理),动态每帧生成一张的话那效率太低了

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-9-27 15:14:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

PS.我另外有个想法是把每个点的邻接两个点也保存到vertex里面,这样在shader的时候三个顶点一起做插值再计算法向量,这样应该就可以动态计算法向量了。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-9-27 15:43:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

不知道lz用的是什么动画,骨骼动画的法线可以把骨骼矩阵处理后做变换,Morph的法线可以把多个Target的法线用权重加成,程序化的动画可以用数学方法来生成法线。顶点法线一般代表面法线的均值,通常不需要专门计算面法线(bt应用中除外)

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-9-27 16:26:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

顶点在y方向上运动的坐标如果可以计为显式的函数,对其求梯度就可以得到法线方程,如果无法显式表示就麻烦了,我曾经也想过保存临近顶点来动态计算面法线均值,如果只保存同一个面的两个邻接点,顶点法线即使算出来也是错误的,如果要保存所有邻接面的顶点,这个数量又无法确定(一个顶点可以被任意多的面共享),除非在预处理模型时就得到一个上限值,然后将顶点数据保存到buffer中供shader访问,但这种方法需要在vs中访问显存资源,很可能是texture(vb附载有限),对系统要求又提高了不少。与其这么绕圈子,还不如改用cpu来隔针算法线,或者改用morph效果还更好些

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-9-29 11:05:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

我把两种方法都试了一下,把邻接顶点保存起来的方法会需要保存很多数据,计算也比较复杂……速度慢……不知道jk20012001说的错误是什么错误,因为只能直观的在屏幕上看到效果。不过我觉得应该没错的吧,因为在shader里是同时对三个点做插值运算的,所以这种方法算出来的normal值应该是最准确的吧…………

我最后用了另外一种方法就是预先吧两个高度的normal值都计算出来然后shader里面只要对位置跟法向量插值,这样不管内存还是计算量都省了不少,就是不知道这种插值出来的normal跟前面的方法比正确性如何……不过看起来效果还是可以的……

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2008-9-29 20:47:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

normal map不就好了?在切线空间里描述的法线,你想怎么动都行。

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2008-9-30 08:18:00 | 显示全部楼层

Re:用ShaderX做顶点变形的法向量问题,大家看看有没有好

其实这是个题目,只给两张高度图,其他就要自己做了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 05:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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