游戏开发论坛

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

真正商业游戏中由很多共面的顶点组成的人物或是怪物,

[复制链接]

18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-10-25 18:14:00 | 显示全部楼层 |阅读模式
一些简单的D3D或是OPenGL教程,都只是说法线垂直于这个平面,然后弄个立方体或是干脆一个平面正方形来讲解法线。我觉的这个实用意义不大,因为真正的商业游戏里面的人物或是怪物形状都是圆滑的,不是四四方方的,所以光照法线用的都是顶点法线,用面法线出来的光照效果估计比用FLAT方式渲染的强不了哪去,全是一个个的三角形片。


我是这么计算真正复杂模型每个顶点的法线的。先求这个顶点的共面的各个三角形面的法线,然后在把他们求平均值。比如:下面的图,

要求点P的法线,就是先求出这4个三角形的面法线 n1,n2,n3,n4, 然后求这个四个面法线的平均值就作为顶点P的顶点法线。

点P的法线 =(n1+n2+n3+n4)/4


不知道我用这样的方法求一个复杂多边形每个顶点的法线对不对?请大家指教!
sf_20051025181425.jpg

8

主题

239

帖子

239

积分

中级会员

Rank: 3Rank: 3

积分
239
发表于 2005-10-25 22:21:00 | 显示全部楼层

Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物

好想不用求吧,直接从3dmax里搞出来就行了。

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2005-10-26 00:22:00 | 显示全部楼层

Re: 真正商业游戏中由很多共面的顶点组成的人物或是怪物

我刚刚做了一个可以加载md2格式的DEMO

就是用这种方法计算顶点法线的,还有一个细节就是要考虑三角型的

面积.主要是用叉积求每个三角形的面法线,法线的长度跟面积成正比

然后累加面法线,最后normalize相加后的法线,不要除以4

11

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2005-10-26 08:19:00 | 显示全部楼层

Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物

然后累加面法线,最后normalize相加后的法线,不要除以4
================================

我倒是觉的应该除以4,因为是求面法线的平均值吗!求的平均值后再Normalize。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-26 09:20:00 | 显示全部楼层

Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物

按面积加权,求和,直接Norm就可以了。

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2005-10-26 11:11:00 | 显示全部楼层

Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物

一般不大会去程序中重新计算,因为一个模型里,有的面比较平滑,有些面比较尖锐,这些需要美工来决定,不大可能在程序里统一给一个平坦度。

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

积分
305
发表于 2005-10-26 15:11:00 | 显示全部楼层

Re: 真正商业游戏中由很多共面的顶点组成的人物或是怪物

今天看了一下书,原来dx还有这个函数D3DXComputeNormals

可以方便用一下

39

主题

102

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2005-10-26 19:07:00 | 显示全部楼层

Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物

啊!要是照楼上好几位的说法,那法线岂不是不用程序员计算了,直接从文件中读取即可,这倒是好事。那Cross(叉积)函数岂不是要下岗了。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-26 19:58:00 | 显示全部楼层

Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物

一般来说都是不需要计算的,实时计算法线是很耗资源的。

7

主题

299

帖子

305

积分

中级会员

Rank: 3Rank: 3

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

Re: Re:真正商业游戏中由很多共面的顶点组成的人物或是

taizhezou: Re:真正商业游戏中由很多共面的顶点组成的人物或是怪物,计算顶点法线是用的什么方法呢?

啊!要是照楼上好几位的说法,那法线岂不是不用程序员计算了,直接从文件中读取即可,这倒是好事。那Cross(叉积)函数岂不是要下岗了。


那倒未必阿,cross函数不止是用来计算法线阿
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 10:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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