社区
游戏开发
帖子详情
如何把纹理映射到一个球体的表面
archer_hao
2005-04-29 10:46:45
怎样把纹理映射到一个球体或者其它任何物体的表面?纹理一般是一块矩形区域吧,就是说怎样把这块矩形“铺”到球体上,请赐教!
...全文
1127
19
打赏
收藏
如何把纹理映射到一个球体的表面
怎样把纹理映射到一个球体或者其它任何物体的表面?纹理一般是一块矩形区域吧,就是说怎样把这块矩形“铺”到球体上,请赐教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zsq7118
2005-05-24
打赏
举报
回复
不好意思打扰一下:
有兴趣一边上网一边赚钱吗?,赚的还是美元呢。
您想轻松做兼职,超过自己的薪水!!
这绝对是真实的,cctv-10都报道了它的可信性!
特别是上班时能上网的朋友,只要能上网就能赚钱,不用你费心
详情请登陆http://freemoneycn.home4u.china.com/
立即注册http://www.cashfiesta.com/php/join.php?ref=freemoneynj
寻开心
2005-05-24
打赏
举报
回复
那是你的纹理图案在左右边界上图像不连续
是必然的现象,需要找无缝贴图工具处理一下
寻开心
2005-05-24
打赏
举报
回复
从纹理坐标的角度上考虑就是了,在H角度0和360的地方形成的是交线
对应的纹理坐标就是u的数值为0和1的地方
纹理坐标v是0和1的地方对应出来的球体的两级坐标,在这两个点u的数值从0到1都是可能的
寻开心
2005-05-24
打赏
举报
回复
这个线应该是从连接两级的
对于一个texture图片,它的上下两个边都被映射到了球体的上下两级了,在那里图片看起来有些拥挤
而左右边,在上下极点的一个连线上相连在一起的
所以正常的效果是,一条线连接两极,这条线是半圆,不是圆
所以让你怀疑是一半球体有,一半没有
archer_hao
2005-05-24
打赏
举报
回复
还有就是,这条线并不是环绕球体一周,而是一半球体有,另一半却是非常完好的,这种现象是正常的么?
archer_hao
2005-05-23
打赏
举报
回复
syy64(太平洋) ( ) , DX里有现成的函数完成这个工作么
archer_hao
2005-05-23
打赏
举报
回复
happy__888([顾问团]寻开心) , 非常感谢你的帮助,我用你的方法已经成功把一副纹理映射到了球面上,但是有一个问题,在球面上有一条“沟”,我不知道你是否能明白我的意思,就是说球面上有一条线不能被纹理正确的覆盖,请你加我的QQ:28726263,我想详细的请教你这个问题,谢谢!
gamedragon
2005-05-03
打赏
举报
回复
你可以这样理解,在球的两个极点间画一条线,沿着这条线剖开这个球面,在把它铺平,那么球就变成了一个平面。当然接缝地方的点要有两份,分别映射到平面的两端。
Cybergate
2005-05-02
打赏
举报
回复
借用cube mapping的思想。先想想怎么把纹理映射到立方体上,然后再利用cube mapping的方式往球体上映射。。。。呵呵,可能有些怪
archer_hao
2005-04-29
打赏
举报
回复
谢谢,还有个问题,下面这些我没怎么看明白:
把P对应到纹理的V方向, 把H对应到纹理的U方向,假定UV的范围都是0到1
那么
P->V: (P+Pi/2)/Pi
H->U: (H+Pi)/2/Pi
请你详细解释一下好么
寻开心
2005-04-29
打赏
举报
回复
另外,如果单纯是为了获取纹理坐标的目的,不妨从3dmax当中建模设置纹理后直接导出方便。
寻开心
2005-04-29
打赏
举报
回复
http://www.ciw.com.cn/media/ciw/811/d1501.htm
寻开心
2005-04-29
打赏
举报
回复
是的,球面只要有一个洞就在拓扑上和平面是等价的了
但是纹理会在那个洞的位置发生奇变的,必须特殊处理
常用的球面到球面的变换就是
球面点 可以用 (r, h, p) 来表示, r表示半径, h和p是两个角度,一个是俯仰角度一个是方位角度,方位角度是0到2PI范围的, 俯仰角度是-Pi/2到 Pi/2范围的
sphere(x,y,z) = {r*cosP*cosH, r*cosP*sinH, r*sinP}
反向变换就是
P = asin( z / r)
H = atan2( y / r/ cosP, x/r/cosP);
就atan2函数来说 H = atan2(y,x)
把P对应到纹理的V方向, 把H对应到纹理的U方向,假定UV的范围都是0到1
那么
P->V: (P+Pi/2)/Pi
H->U: (H+Pi)/2/Pi
因此,知道球面坐标x,y,z以及半径r后,球面点对应的纹理坐标就是:
V = asin(z/r)/Pi + 0.5;
U = 0.5* ( atan2(y,x)/Pi + 1.0 )
gamedragon
2005-04-29
打赏
举报
回复
happy__888:
纯数学上,球面和平面的确有质的区别。但是只要在球面上有个洞,那么球面就可以被拉伸成一个平面(拓扑学上),如果这个洞缩小成一点(歧义点被分成两个点),在坐标映射的时候,就可以实现映射。
这是我的理解。
archer_hao
2005-04-29
打赏
举报
回复
能否给点具体的代码呢?球体确实是由三角形组成的,问题在于,我怎么把纹理分成相对应的一个个三角形,并给每个顶点的纹理坐标赋值呢?
寻开心
2005-04-29
打赏
举报
回复
在拓扑学的角度上,矩形和球面之间是无法形成无障碍的对接的
因为球面是一个封闭的面,而矩形或者平面是开放的面
在映射转换的时候,肯定会存在一个歧异点
铺贴纹理的方案有很多种,比如投影的方式,包裹的方式,坐标映射的方式等等
但是就球面的纹理映射来说,那种方式都会有问题的
gamedragon
2005-04-29
打赏
举报
回复
如果球体是三角形组成的,就跟平面的没多大区别吧。
如果是raytacing里面的几何体(就是一个球心和一个半径),那么就要用特殊的映射方式了,比如极坐标(这个东西简直就是为球面几何设计的^_^)
syy64
2005-04-29
打赏
举报
回复
球体的纹理映射一般都有现成的函数啊。
寻开心
2005-04-29
打赏
举报
回复
这个只是一个比例和平移变换而已
通过前面的公式,你知道了从xyz坐标到r,h,p的变换了
但是计算得到的h和p的范围分别是[-pi/2, pi/2]和[-Pi, Pi]这个范围的
而你实际需要的纹理坐标的范围是[0,1]
这里就是做这个变换呢
球二维图案
纹理映射
C++.zip
该工程资源含有分数维图案算法的实现、双三次Bezier曲面算法的实现、双三次Bezier曲面拼接球、二维图案到球
球体
的映射算法等。
android OpenGL ES 地球仪绘制——
球体
绘制及
纹理映射
——源码
支持如下: (1)opengl es绘制三角形拼成
球体
(2)图片作为
纹理映射
到整个球面上 (3)双点触控缩放
球体
(4)拖动旋转
球体
SUES计算机图形学 - 实验八
球体
光照模型与凹凸
纹理映射
-实验代码(补充)《孔令徳Visual Studio的MFC教材》
《计算机图形学 - 孔令徳Visual Studio的MFC教材》的 实验八
球体
光照模型与凹凸
纹理映射
的实验代码(补充)
OpenGL的立方体纹理技术实现天空盒的绘制
天空盒内,
一个
球体
映射周围环境的纹理,效果很好。内涵整个工程文件。
实现
一个
带有光照和纹理的地球模型动画
实现
一个
带有光照和纹理的地球模型动画: 1、 使用二次曲面对象创建
一个
球体
提示:课本 P88 介绍了二次曲面对象创建方法 用 gluQuadricTexture(quadric, GLU_TRUE); // 创建纹理坐标 2、 创建平行光源模拟太阳光,照亮地球模型。 参考: 光源位置为 { 50.0, 0.0, 50.0, 0.0 } 漫反射光颜色为 { 1.0, 1.0, 1.0, 1.0 } 全局环境光颜色为 { 0.4, 0.4, 0.4, 1.0 } 可以根据需要自己调整光源的各种属性。 3、 使用 glpng读取地球纹理图片(earth.png),并映射到
球体
上(提示:查看 glpng.html 中的使用说明和 API) 4、 让地球旋转运动起来,生成动画,思考如何让旋转变得平滑流畅。(提示:参考hw1作业参考答案提供的动画主循环编写方法)
游戏开发
8,303
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章