演示  

     

桩考练习

模拟驾照考试的科目二桩考。可以作为熟悉桩考的操作步骤的练习。

小试Box2D物理引擎:停车游戏

一个简单的停车游戏,界面非常简陋,但物理效果应该比绝大多数同类游戏要好。因为是基于Box2D物理引擎制作的,对动力学的模拟相当准确。

滚动的球——RigidAPE刚体引擎新进展

in

自从上一个RigidParticle的demo发布以来,我重新整理了它的架构,并完善了它的算法。现在终于有新东西可以看了。
主要的改进是在这些方面:

  • 把检测碰撞点的代码放到了CollisionDetector中,我觉得这样更加合理一点
  • 关于刚体碰撞的运算,放到了一个新的类RigidCollisionResolver中。碰撞的算法以前只是看起来像得近似算法,现在才能算是真正的“模拟”。
  • RigidParticle被删除了,取而代之的有3个新的类:RigidItem、RigidRectangle和RigidCircle。RigidItem是新架构中所有刚体的母类,它管理所有刚体共有的一些操作和运算。RigidRectangle和原来的RigidParticle功能相同,模拟一个矩形的刚体。RigidCircle则是新增的圆形刚体,它可以模拟圆形粒子所无法做到的滚动效果,一个滚动着的球能够借助它的势能爬上山坡,这一点使用圆形的粒子是无法做到的

不过新的架构也有缺点,目前它还无法和普通粒子发生互动,而摩擦力的计算上还没有完全解决。

支持载入"obj"文件的Flash 3D引擎


这个3D引擎能够从obj文件中载入模型,而许多3D工具软件都能够输出obj格式,所以你可以在其它软件中建模,然后拿到这个引擎中使用。
我的3D汽车运动模拟就是在这个引擎的基础上建立的。

这个引擎最早是一个as1.0写成的开源3D引擎,我把它用2.0重写,然后增加了许多新的功能。这个引擎最大的特点是它是一个以矢量图形为基础的3D引擎。与其他大多数以点阵图形为基础的引擎不同。这个引擎更适合运行在flash 8.0以前的版本上。flash8之后引入了位图运算,所以更适合用点阵图形的引擎来做。

你可以看到这个引擎的隐藏面消除还有很多问题,这是因为大多数隐藏面消除的算法都是针对点阵图形引擎的,所以在这里我只用了一个很简单的方法来做隐藏面消除,于是在很多模型上的表现并不好。但是如果你能够在模型上多华一些功夫来细化,你一样可以得到很完美的结果。作为例子,你可以载入house.obj看看,这是我专门优化过的一个模型,你可以看到他的表现相当好,几乎看不到什么破绽。

3D汽车运动模拟


这是汽车运动模拟试验的3D版本,它们使用相同的刚体运动引擎(这个刚体引擎本身就是3D的,它内部使用三维向量),只是这个用三维的形式来表现。

模拟汽车运动试验

这是我一年多以前做的一个小程序,它能够比较准确地模拟汽车的运动,为了达到这个目的,我专门开发了一个模拟刚体运动的引擎。
这个模拟汽车的运动完全是从力开始计算出来的,加速度、速度、力矩、角速度等等完全是经过计算而得到的。所以它的运动方式几乎和真车一样,看起来相当真实。加速时,轮子推动汽车前进,转弯时,车轮与地面的摩擦力则提供整个汽车的向心力。
但是这个刚体引擎并不完整,它没有碰撞和连接、约束的处理,我曾尝试在引擎中加入这些,但是发现很复杂,所以后来就暂时搁置了这个项目。

聚合内容