关于 台球 D3D 的纹理坐标 和 球的渲染效果。。。。。。

qq7959501 2010-09-16 08:46:29
如题:最近做个台球,想请问 ,球的纹理坐标怎么计算得到
我是直接将球渲染的 ,效果不好 ,边缘 明显 锯齿(显卡不支持抗锯齿,估计支持 效果也好不到哪)要做到像QQ台球那样的效果 ,需要用到D3D的什么技术(RTT?能行吗 具体怎么操作)
对于碰撞检测 ,大家有什么好的想法
对于正交投影,总感觉 立方体 宽度 长度 near far 平面 和摄像机的位置有点关系 ,但不知道是什么
在做鼠标位置映射到3D空间中的时候 D3DXVec3Unproject(&vOut,&screen,&viewPort,&matProj,&matView,&matWorld);
函数中的matWorld 是物体刚放到世界空间的值 (我是 (0 ,0 ,0)) 不是即时的物体的位置 也不是 最近一次的世界变

谢谢
...全文
351 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
帖图解决不了锯齿,一般显卡都支持抗拒齿,在sdk搜一下multiple sample,你可以把球做的点数更多,效果就好多了,而且用pixel shader用逐像素光照也会使球更圆滑。
uv坐标很好算阿,你就想像把球展开到世界地图上,设经纬度范围是经度从0-360,纬度从0-360,
那么uv坐标就是(经度/360, 纬度/360)
正交投影根相机位置没关系,那个方块是视坐标空间的
D3DXVec3Unproject得matWorld 需要改变,看你想投影的那个物体上,就用那个matworld
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
好冷清啊 ,自己顶下吧
关于台球的效果 ,还有一个就是不想产生尾影(速度太快的话就好像拖着个尾巴)
求解
继续等待好心的牛人
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xingzhe2001 的回复:]
上面那张图你自己看有两重影子
[/Quote]
谢谢 行者了,

自己先研究研究吧
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
那个阴影更简单的办法是用D3DXMatrixShadow生成的矩阵画一个黑色的半透明无材质球就可以了。因为你的球总是投影到桌面这个平面上的。
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
上面那张图你自己看有两重影子
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
不用桌面的纹理图,最好是一个大厅的纹理图,模拟球反射整个游戏大厅和房顶光源
需要做混合,你的显卡应该支持多纹理混合,SetTextureStageState()函数来设置多纹理混合。
4个是个比方,比方说4盏灯,想象在足球场看到的球员的影子

我说的椭圆帖图就是你画个球的影子,因为是斜着照,就是类似椭圆的,你自己看用几个影子好看
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xingzhe2001 的回复:]
看到图了,你说的是边缘太锐利。
固定管线你可以用个球形帖图来模拟反射的效果,球就更好看了。
参考http://topic.csdn.net/u/20090730/10/4bb07335-081c-4fc5-b39e-18d3aaa9a948.html

然后再弄点重影,其实就是4个渐变的椭圆帖图,贴在球下面的桌子上。这样用户就不会注意你的边缘了

用shader的话你可以做个blur,……
[/Quote]
球形帖图来模拟反射的效果 是说用一张桌面的纹理图 来和球的纹理做混合吗
然后再弄点重影,其实就是4个渐变的椭圆帖图,贴在球下面的桌子上 是为了实现球的影吗 为什么要4个呢
这张图应该什么呢 ,球的图吗
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xingzhe2001 的回复:]
看到图了,你说的是边缘太锐利。
固定管线你可以用个球形帖图来模拟反射的效果,球就更好看了。
参考http://topic.csdn.net/u/20090730/10/4bb07335-081c-4fc5-b39e-18d3aaa9a948.html

然后再弄点重影,其实就是4个渐变的椭圆帖图,贴在球下面的桌子上。这样用户就不会注意你的边缘了

用shader的话你可以做个blur,……
[/Quote]
谢谢你了啊 ,一个好人
自己好好研究下
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
看到图了,你说的是边缘太锐利。
固定管线你可以用个球形帖图来模拟反射的效果,球就更好看了。
参考http://topic.csdn.net/u/20090730/10/4bb07335-081c-4fc5-b39e-18d3aaa9a948.html

然后再弄点重影,其实就是4个渐变的椭圆帖图,贴在球下面的桌子上。这样用户就不会注意你的边缘了

用shader的话你可以做个blur,固定管线就算了,太慢了
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
图片只能上传后贴个连接,看不到你的图
那本书通俗易懂,比大学物理简单
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xingzhe2001 的回复:]
就是高中物理就可以了,动量守恒 + 角动量守恒 + 能量守恒
[/Quote]

qq7959501 2010-09-17
  • 打赏
  • 举报
回复
怎么发本地的图片啊,没成功
qq7959501 2010-09-17
  • 打赏
  • 举报
回复

主要是转动这块 ,大学学的都忘了,自己也没好好学
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
就是高中物理就可以了,动量守恒 + 角动量守恒 + 能量守恒
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
把你的效果图贴上看看

像台球这种简单的物理看这本书就可以了

下载
http://download.csdn.net/source/813307
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xingzhe2001 的回复:]
碰撞检测圆形的很好算,圆心距离小于直径就碰上了。主要是碰撞反应你需要考虑下旋转的影响,两个球相碰由于旋转可能会有切向摩擦力,而且旋转的球在球桌上的路线也是歪的
[/Quote]
实时的判断很难仿止穿越的 ,我又加了后置修正,效果差强人意。 感觉预判应该不错。
对于你说的碰撞反映 你有更多的材料吗,涉及到很多的物理数学。我转动这块还很不清楚,只完成了简单的绕运动方向的另外俩轴的旋转(物体坐标系)
对于D3DXVec3Project 和 D3DXVec3Unproject
是从世界空间的原点出发的向量,就用000点,这样你得到的向量是世界坐标的 。感觉有道理。
逐像素光照 ,在固定渲染管线里没有什么方法吗 ,我看一个人的代码 ,他也没用可编程渲染管线啊,顶点个数也不多 ,效果还不错。 好像用到了渲染到纹理 ,我试了下渲染到纹理,得到的纹理效果(存在图片上了)也不好呀?
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
碰撞检测圆形的很好算,圆心距离小于直径就碰上了。主要是碰撞反应你需要考虑下旋转的影响,两个球相碰由于旋转可能会有切向摩擦力,而且旋转的球在球桌上的路线也是歪的
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xingzhe2001 的回复:]
引用 4 楼 qq7959501 的回复:
3 对于D3DXVec3Project 和 D3DXVec3Unproject 我是想得到 鼠标当前位置到3D空间指定面上的对应点, 和3D 中的指定D3DXVECTOR3 到屏幕的装换 。而俩个函数是完成的object space to screen space. 我想要的变换时 世界空间到二维屏幕空间的,是不是这个原因才需要把matworld 设成……
[/Quote]
纠正,是从世界空间的原点出发的向量,就用000点,这样你得到的向量是世界坐标的。
xingzhe2001 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq7959501 的回复:]
3 对于D3DXVec3Project 和 D3DXVec3Unproject 我是想得到 鼠标当前位置到3D空间指定面上的对应点, 和3D 中的指定D3DXVECTOR3 到屏幕的装换 。而俩个函数是完成的object space to screen space. 我想要的变换时 世界空间到二维屏幕空间的,是不是这个原因才需要把matworld 设成变换到(0,0,0)点的 。
[/Quote]
如果是视空间从原点出发的向量,就可以用000点
qq7959501 2010-09-17
  • 打赏
  • 举报
回复
谢谢你的回答
1 我的显卡是 英特尔 G41 Express Chipset ( 1024 MB / 戴尔 ) 他确实不支持抗锯齿 ,我试过多重采样,确实显卡不行。 对于更多顶点 我上次用D3D自带的创建球mesh的函数 ,顶点上千个 ,纹理坐标自动生成,效果也不好,也许纹理坐标有问题吧。对于pixel shader用逐像素光照 先把希望放到他上面吧。
2 有道理,呵呵
3 对于D3DXVec3Project 和 D3DXVec3Unproject 我是想得到 鼠标当前位置到3D空间指定面上的对应点, 和3D 中的指定D3DXVECTOR3 到屏幕的装换 。而俩个函数是完成的object space to screen space. 我想要的变换时 世界空间到二维屏幕空间的,是不是这个原因才需要把matworld 设成变换到(0,0,0)点的 。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧