|
用创建球->克隆到新的网格中->给每一个点赋UV值的方法来给创建出来的球贴图,但是遇到一个问题。
因为这个方法做出来到最后第一根经线和最后一根上的点不重合,
这样UV是0-1的部分纹理正常,但是会有一列点到第一列就是1-0了,
所以出来的球体会有一条纹理堆积的现象。
就像这样:
- for (int i = 0; i < numVerts; ++i)
- {
- // Calculates texture coordinates
- if(pVerts->norm.x >=0)
- pVerts->tu = (asinf(pVerts->norm.y/sqrt( pow(pVerts->norm.x,2) + pow(pVerts->norm.y,2) )) / D3DX_PI )/2 ;
- else
- pVerts->tu = -1.0f*(asinf(pVerts->norm.y/sqrt( pow(pVerts->norm.x,2) + pow(pVerts->norm.y,2) )) / D3DX_PI )/2 +0.5 ;
- pVerts->tv = asinf(pVerts->norm.z) / D3DX_PI + 0.5f ;
-
-
- ++pVerts ;
- }
复制代码
就是这样算的UV...
不知道有没有什么方法能简单地解决这个问题呢?
PS:在网上找到一个VB的代码,但是没看出来和这个有什么本质的区别,可是那里却好像没有这样的问题...不知道是不是我遗漏了什么
啊...
 |
|