游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5153|回复: 7

一个很菜的问题:DirectX怎么给一个球贴贴图呢?

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-10-23 17:35:00 | 显示全部楼层 |阅读模式
用创建球->克隆到新的网格中->给每一个点赋UV值的方法来给创建出来的球贴图,但是遇到一个问题。

因为这个方法做出来到最后第一根经线和最后一根上的点不重合,

这样UV是0-1的部分纹理正常,但是会有一列点到第一列就是1-0了,

所以出来的球体会有一条纹理堆积的现象。

就像这样:




  1. for (int i = 0; i < numVerts; ++i)
  2.         {
  3.             // Calculates texture coordinates
  4.                 if(pVerts->norm.x >=0)
  5.                     pVerts->tu = (asinf(pVerts->norm.y/sqrt( pow(pVerts->norm.x,2) + pow(pVerts->norm.y,2) )) / D3DX_PI )/2 ;
  6.                 else
  7.                     pVerts->tu = -1.0f*(asinf(pVerts->norm.y/sqrt( pow(pVerts->norm.x,2) + pow(pVerts->norm.y,2) )) / D3DX_PI )/2 +0.5 ;

  8.                 pVerts->tv = asinf(pVerts->norm.z) / D3DX_PI + 0.5f ;

  9.             
  10.             ++pVerts ;
  11.         }
复制代码


就是这样算的UV...

不知道有没有什么方法能简单地解决这个问题呢?

PS:在网上找到一个VB的代码,但是没看出来和这个有什么本质的区别,可是那里却好像没有这样的问题...不知道是不是我遗漏了什么
啊...

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2011-10-24 23:19:00 | 显示全部楼层

Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

请搜索 纹理寻址

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2011-10-24 23:55:00 | 显示全部楼层

Re: Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

无名剑: Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

请搜索 纹理寻址

能多提示一些吗?在渲染的时候不论设置哪种寻址方式,影响的都不是那一块的纹理啊...

0

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2011-10-28 15:37:00 | 显示全部楼层

Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

也碰到同样的问题,希望有高人帮助!帮你顶起来。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2011-10-29 10:30:00 | 显示全部楼层

Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

哦~~ 我看错了,我以为是纹理寻址使用了CLAMP导致超过的部分 全部只绘制边缘导致这结果
看来应该是UV坐标没设置好导致的,只有一列的距离 你却设置成过度的距离是几乎整个球当然堆一起了
整个模型的UV必须均匀分布啊,这样最多就是均匀被拉升
如果不然,那么最后一列就不要跟第一列共点,不然肯定会整到一块

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2011-10-30 10:10:00 | 显示全部楼层

Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

把最后一列的顶点拆了。

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2011-11-5 17:46:00 | 显示全部楼层

Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

用CUBE MAP
HDR环境纹理

用常规的2DTexture ...... 那就把这个问题踢给美工吧

2

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2011-11-19 15:34:00 | 显示全部楼层

Re:一个很菜的问题:DirectX怎么给一个球贴贴图呢?

启用纹理环绕即可,注意把uv设置在0~1不要依赖环绕纹理寻址模式。
你可以看看这篇BLOG
http://www.cnitblog.com/luckydmz/archive/2011/04/18/73374.html
看上下两个截图,你就知道这就是你要解决的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 15:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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