关于3d游戏中地图的问题(类似碰撞的问题,就是怎么知道哪些地方可以通过)

game2000 2002-08-26 11:02:10
以前听有人说要建立一张表,来存放每个位置的y值,来控制角色的移动,还有没有其它的更好的方法?还有如果只能用这种方法的话,这个表是手工建立的还是自动建立的,我想让程序自动根据地图模型建立这张表,不过没有太好的算法
...全文
174 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
game2000 2002-08-28
  • 打赏
  • 举报
回复
"也可以根据地形的3D模型算出一张表,取最近顶点高度,"

我最早说的就是这个意思,就是感觉在自动生成的时候不会太准确,而且有很多缺点,比如多层的场景??不过我现在的确在考虑这种方法,而且如果没有别的更合适的方法我就会采用这种方法
IO_X 2002-08-28
  • 打赏
  • 举报
回复
用我最上面的方法可以实现多层的场景,因为就算三角形在水平面
有重合但高度相差很大,可以方便地区分。
IONPhantom 2002-08-28
  • 打赏
  • 举报
回复
我正准备研究 BSP,目标就是 Q3 的地图,现在正在研究 Q3 的 3D 模型——MD3,已经能加载渲染,正在研究动画
game2000 2002-08-28
  • 打赏
  • 举报
回复
好,这个帖子先结了,请继续给我看看上面另一个问题, IO_X(X') 谢谢你
IO_X 2002-08-28
  • 打赏
  • 举报
回复
如果不用二维数组表的话当然是手动定位三角形,若地形是
平整的,三角形数量可以很少,(两个三角合成一个矩形地板或斜坡),
若地形复杂则要根据模型取近似的等效面,必须要有个地图编辑器,
把地板用特殊颜色渲染出来再与模型对比调整。--此方法支持多层

而用二维数组表必须通过地图模型中的三角行来运算。--不支持多层
game2000 2002-08-28
  • 打赏
  • 举报
回复
还有,大伙能不能也帮我看看下面那个问题?

(两个帖子,一个问题,总共有60分)
http://www.csdn.net/expert/topic/972/972444.xml?temp=.392193
http://www.csdn.net/expert/topic/975/975597.xml?temp=.585232
game2000 2002-08-28
  • 打赏
  • 举报
回复
to IO_X(X'):

你说的用来判断高度的三角形面是单独生成一个(自动生成?)还是直接利用
地图模型中的三角行?我就是觉得这种方法是不是速度慢一点?而且我也不知道
以我现在的水平能不能自己实现这个方法
game2000 2002-08-27
  • 打赏
  • 举报
回复
大伙继续发表一下意见
xstnt 2002-08-27
  • 打赏
  • 举报
回复
http://www.gametutorials.com/ 上面的东西可以给你些帮助
game2000 2002-08-27
  • 打赏
  • 举报
回复
我是计算机专业的学生,我就是正在写一个3d引擎,不过能学多少,我认为研究一下不会有坏处
IONPhantom 2002-08-27
  • 打赏
  • 举报
回复
碰撞检测是很复杂的东西,是游戏物理引擎的一部分,如果你要不是真的开发游戏或者有资金支持还是不要研究这种东西了
netrouter 2002-08-27
  • 打赏
  • 举报
回复
哪里有这方面的资料呢?告诉我好吗?
IO_X 2002-08-27
  • 打赏
  • 举报
回复
不过用三角形计算这张表更精确,查找所处三角形,计算高度,但速度有点慢。
IO_X 2002-08-27
  • 打赏
  • 举报
回复
也可以根据地形的3D模型算出一张表,取最近顶点高度,
不用自己编辑,我试成功过。
seagate 2002-08-27
  • 打赏
  • 举报
回复
如果你想实现3D效果,又不想太复杂。IO_X的方法是最好的了。Quake的确是精彩,BSP的确是专业,但你的程序总要先建立在能实现的基础上。
btw,IO_X的方法适用于室外游戏。
lingjingqiu 2002-08-26
  • 打赏
  • 举报
回复
The Easist way: Line
IO_X 2002-08-26
  • 打赏
  • 举报
回复
这些三角形可以根据地图需要来确定精密度,可以很大而数量很少,
也可以满足颠簸地形的需要,另外在三角形可行区域内的障碍物可
用Box区域另加判断。
IO_X 2002-08-26
  • 打赏
  • 举报
回复
可以用一组空间三角形来规定可行区域,不一定要水平。
...
先计算出角色要去新坐标。
然后判断角色的水平坐标(X,Z)是否在某一个三角内(这里不用考虑Y值),
全不是就跳出判断。
(判断方法: 得到三角形每边的二元一次直线函数,再计算角色水平坐标和
每边的对角的水平坐标是否在这一边的同侧,三次判断都成立才可通过。)

如果角色在某三角形区域内,就可以以角色的X,Z坐标计算出这点在三角形
面上的高度Y了。
(得到三角形任一顶点A和角色(X,Z)坐标P形成的二元一次直线函数,算出直线与对边交点B,算出P在A,B间的水平比例i,把i应用到A,B的垂直高度差(Y)中
即可求得角色的Y。)
game2000 2002-08-26
  • 打赏
  • 举报
回复
谁给提供点bsp和OCTREE的中文资料
houstond 2002-08-26
  • 打赏
  • 举报
回复
事情没那么简单。
三维游戏不同于2D的,不知道你说的表是个什么表?
一般来说象QUAKE3这样的基于BSP空间分割的,BSP树里就已经可以记录你当前所在位置空间的属性。
而用OCTREE等方式的,就需要很多其他技术。
而物体与物体的碰状,摄象机与物体,摄象机于场景,物体与场景等等,都还需要用到AABB或OBB等技术。
你可以看看这方面的资料,这个课题不是很小,这里不可能说清楚

8,323

社区成员

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

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