hwbnet
注册于:2007年1月22日 等级:注册会员 帖子数:30 积分:178 阅读权限:20 | |
假设有这样一组顶点: d=-1; ff[d=d+1]=0.0f,ff[d=d+1]=0.0f,ff[d=d+1]=0.0f; for(i=0;i<9;i++) { f[0]=(2*D3DX_PI*i)/8; ff[d=d+1]=cosf(f[0])*3.0f,ff[d=d+1]=sinf(f[0])*3.0f,ff[d=d+1]=-10.0f; } 三角形索引为: d=-1; sy[d=d+1]=0,sy[d=d+1]=1,sy[d=d+1]=2; sy[d=d+1]=0,sy[d=d+1]=2,sy[d=d+1]=3; sy[d=d+1]=0,sy[d=d+1]=3,sy[d=d+1]=4; sy[d=d+1]=0,sy[d=d+1]=4,sy[d=d+1]=5; sy[d=d+1]=0,sy[d=d+1]=5,sy[d=d+1]=6; sy[d=d+1]=0,sy[d=d+1]=6,sy[d=d+1]=7; sy[d=d+1]=0,sy[d=d+1]=7,sy[d=d+1]=8; sy[d=d+1]=0,sy[d=d+1]=8,sy[d=d+1]=9; 请问:如何求这10个顶点的法线?
|
胡文斌 |
|
| 🗓2007-10-8 21:51(约17年前) 👁1084 |
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
你这代码可读性不怎么样啊,请把顶点用一个结构来表示(如下),最好画出草图(就10个点应该不麻烦,否则看的人烦,要是在GameRes都懒得回答你)。 struct FVF { D3DXVECTOR3 pos; D3DXVECTOR3 nor; };
你把你的每个三角形代入下面的公式就是了: 三角形法线计算公式: D3DXVECTOR3 v1 = Vertex[a].pos; D3DXVECTOR3 v2 = Vertex[b].pos; D3DXVECTOR3 v3 = Vertex[c].pos; D3DXVECTOR3 n; D3DXVec3Cross( &n,&(v2-v1), &(v3-v2)); n=NorVec(n);//然后规格化一下
另外打听一下,我还不知道你是做什么游戏的?[em41]
|
我的Blog网址:blog.geminight.com |
|
|
|
hwbnet
注册于:2007年1月22日 等级:注册会员 帖子数:30 积分:178 阅读权限:20 | |
这10个点是原点和一个圆构成一个圆锥体。 由于相临的三角形面有公共的顶点,这时法线如何计算?法线算出来后在光照中怎样计算? 主体类型是大富翁类型,内含俄罗斯方块,飞机等游戏。
|
胡文斌 |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
把公共顶点的法线相加后在规格化一下。 至于光照计算记得GameRes上有我没有,你去找找看,主要是一些写Shade的人用的。
|
我的Blog网址:blog.geminight.com |
|
|
|
hwbnet
注册于:2007年1月22日 等级:注册会员 帖子数:30 积分:178 阅读权限:20 | |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
忘了 还有DX9SDK里也有,那个LightingVS例子。
|
我的Blog网址:blog.geminight.com |
|
|