Threejs: 一只根据周围环境构建自己动作姿态的蜘蛛

AI 知识库2天前发布
629 0 0
熊猫办公
Threejs: 一只根据周围环境构建自己动作姿态的蜘蛛
拖动滑块,操控它四处移动,看着它的腿找到自己的立足点。这感觉出奇地平静。
体验地址:

https://proceduralspider.netlify.app/代码地址:https://github.com/majidmanzarpour/threejs-procedural-spider一只能够自我调整动作的程序生成蜘蛛,可以行走于任何地形。它有八条腿,通过封闭形式的逆运动学求解,步态能够即兴发挥,身体能够适应斜坡、墙壁和悬垂物——无需动画片段、骨骼绑定或物理引擎。每一帧都由数学运算完成。使用Three.js构建。特点

  • 解析式IK腿部——每条腿都使用一个双骨骼闭合形式求解器(髋关节→膝关节→足部)进行求解。无需烘焙动画,无需IK迭代收敛:一个公式,精确计算,每一帧都适用。
  • 即兴步态——双脚扎根于地面,而非身体之上。当身体移动超过一只脚的落脚点时,那条腿会抬起,划出一道弧线,找到新的落脚点,然后再次落下。步频是一种交替步态状态机,因此,当你加速、减速或转弯时,行走节奏会自然地重新调整。
  • 地形是一个函数,而非网格——地面是一个封闭形式的高度场,因此蜘蛛可以对任意点的高度和法线进行精确采样。这使得足部落点和身体姿态的调整无比精准。
  • 攀爬墙壁和悬垂物——身体的向上矢量与下方表面的法线融合,因此蜘蛛会倾斜到斜坡上,并紧紧抓住陡峭的墙面,而不是卡住或滑动。
  • 它的身体可以弯曲——两个体节(头胸部+腹部)通过一个灵活的柄节连接,因此腹部可以在腰部折叠:它可以垂挂在墙上,搭在山脊上,或者因自身重量而下垂。这种蜘蛛像真正的蜘蛛一样灵活,而不是僵硬的肉团。(切换:身体弯曲。)
  • 膝关节旋转避障——每条腿都会搜索一系列膝关节方向,并选择能使肢体远离地面和障碍物的方向(可实时调整)。
  • 实时调校面板——速度、行驶高度、步高、步频、转弯速度、步幅和膝关节旋转搜索,所有这些都可以在行走过程中进行调节。
  • 体积小巧,依赖项少——仅8个模块,约1200行代码,且three只有一个运行时依赖项。运行速度高达数百帧/秒。
  • 桌面和触控——WASD + 鼠标,或手机/平板电脑上的屏幕操纵杆。


工作原理这只蜘蛛从不播放动画。每一帧,它都会根据周围环境重新构建自己的整个姿态:

  1. 输入→意图。键盘/游戏手柄转化为所需的移动方向和速度。
  2. 身体控制器。身体转向意图,在地形上前进,并保持目标行驶高度高于其着地双脚形成的支撑面(与BODY CONFORM),倾斜其向上矢量以与之匹配——因此它可以倚靠斜坡,爬上台阶/边缘,抓住墙壁,并且永远不会陷入隆起的地面。
  3. 步态状态机。八条腿共用一个交替四足动物式的计时轮。当身体在其上方移动时,一只脚始终固定在地面上;一旦身体伸展一条腿超过其步幅阈值,该腿就进入一个步态周期——抬起、划过地面stepH,然后落在新的落脚点上。
  4. 搜索落脚点。新的落脚点是根据分析地形高度碰撞器间隙进行采样,因此脚会落在真实的几何形状上——包括垂直和倒置的表面。
  5. 双骨逆运动学。给定髋关节位置、足部目标以及股骨/胫骨长度,膝关节角度可以闭合形式求解(twoBoneKnee)。通过短距离膝关节旋转搜索,将膝关节平面旋转到最能避免穿透地面/障碍物的方向。
  6. 摄像机。第三人称跟随摄像机跟随人体移动,并在几何体可能导致画面裁剪时拉近。

一切都是分析性的——地形是一个公式,反向运动学是一个公式,碰撞是距离函数。没有物理求解器,没有骨骼绑定,没有动画数据。
相关案例:然后有大神用它开发了一个游戏,一个网站:

体验地址:https://re-presentation.jp/tool/arachne.html

Threejs: 一只根据周围环境构建自己动作姿态的蜘蛛

关于作者
做一只爬的最久的乌龟,保持学习保持好奇,即使慢一点,遇到一点困难,只要最后能到达终点,又有什么关系呢。
毕竟人生没有白走的路,每一步都算数。
© 版权声明

相关文章