くつした くつした
老魔法师了。
关注数: 0 粉丝数: 136 发帖数: 45,996 关注贴吧数: 283
多边形的连续碰撞检测真是麻烦 个人demo里的平面几何算法纯属个人创作、优化,应该有比我更快的。 如果只是质点,质点的移动轨迹(扫掠形)就是线,连续碰撞检测就是线段与线段相交,点碰撞在交点;在地形上移动为单接触点移动。 下图,线段相交算法 cpu tick(通过rdtsc指令读取)平均为52/次而下图,到地形索引块碰撞上几乎乘以20,当然普通速度不会这么巨大以平常跑步速度为例如下图,【不跨索引块】,地形部分只有一条多段线,如下图,tsc为300多以平常跑步速度为例如下图,【跨索引块】,地形部分只有一条多段线,如下图,tsc会比上面多25%左右----------------------------------------------------------------------------------------------------------------------------------------------- 而线段的移动轨迹(扫掠形)是平行四边形,连续碰撞检测就是段线扫掠段线(多段线简化),线段碰撞扫掠距离最短点,直接看下图,文字表达太烦;在地形上移动为1~2接触点移动。 凸多边形的话,只取移动方向上的边,其移动轨迹(扫掠形)是多段线的移动构成的一并的平行四边形,连续碰撞检测就是多段线扫掠多段线,多段线碰撞扫掠距离最短点,直接看下图,文字表达太烦;在地形上移动为1~2接触点移动。线段扫掠碰撞算法 cpu tick(通过rdtsc指令读取)平均为122/次,原理上讲符合线段相交的3倍左右而目前卡在讨人厌额与地形索引块融合的阶段,质点根据索引块边界任一时刻只会属于一个索引块,凸多边形则会占据多个,想要性能好真麻烦。估计最优要到3000~4000 tick
好久没更新小demo了 正在搞多边形CCD算法http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fpan.baidu.com%2Fs%2F1OlEOe6LcCzHRYy2CUkSRyw%3Fpwd%3Dmqfd&urlrefer=eae1d9b570c88feee744ea3e8407797a 质点位移bug不太想修了 操作 Esc: 退出程序 主键盘0~1:地形切换 A:动画信息显示开关 E:碰撞能量损失开关 F:技能脚步位移开关 G:重力开关 K:按键记录显示开关 M:地形k值显示开关 N:地形矢量信息显示开关 P:技能缓速开关 S:技能速度开关 T:地形索引块显示开关 ins:四倍缓速开关 pageup:缓速倍速加1 pagedown:缓速倍速减1 pause:暂停/继续 space:下一逻辑帧 backspace:上一逻辑帧 tab:显示标记 ctrl:鼠标到地图表面最近点 capslock: 小键盘5:重置视口位置 小键盘8246:上下左右移动视口 小键盘0:视口更随 鼠标中键:拖拽视口 鼠标滚轮:缩放视口 F12:重置缩放视口 F1:不显示其它尔茄 F2:显示你的过去和未来 鼠标左右键功能0:GJK凸多边形重叠测试,点击左键画最多两个多边形,拖拽第二个多边形,右键确认当前绘制或删除已绘制的 鼠标左右键功能1:地形质点碰撞测试,左键拖拽一条矢量(暂停),所有尔茄以此矢量为速度,以出发点为起点,右键取消暂停 F3:切换鼠标左右键功能 F4:显示角色的点模式(目前地形碰撞实际使用中的模式)对象 F5:改变那个做技能动作的尔茄的动画 F8:显示键盘状态示意图,如果连接手柄则顺带显示手柄信息,没有做手柄控制,想搞多手柄与键盘分别控制不同 ←或→:行走 ←←或→→或shift←或shift→:奔跑 ↓:蹲 ↑:防 C:跳(长按短按高度不同) ↓C(无先后):下穿地形 →→C:远跳 奔跑时→C:远跳 【以面朝右为例】 在执行不可打断动作时按住要做的指令不放可以在动作结束时马上做新动作 ←←(直到快静止):高优先级转身(可配合上一条做一些方便的转身配合操作) 斩、刺、回旋斩时↑X(无先后):二段斩上 斩、刺、回旋斩时→X(无先后):二段回旋斩 以下和原游戏无区别 X:斩 (未启用)X(长按):吟唱 Z:收剑/拔剑 ↓→:前滚 ↓←:后翻 移动时←:迅速减速 静止时←:转身 ↓X无先后:刺 奔跑时↓X(无先后):骑枪刺 下落时↓X(无先后):下刺 ←X(无先后):刺 →X(无先后):回旋斩 ↑X(无先后):斩上 跳跃上升时↑X(无先后):圆月斩 →↑X:飞踢 →↓X:车轮斩 ↑→X:跳跃回旋斩 ←↓X:真空斩上
1 下一页