three.js第三人称字符控制器

编辑:最新演示:http://jblaha.art/sketchbook/latest681
只是想展示我的项目,因为我不确定以前是否做过类似的事情(很可能是的)。也欢迎任何反馈。
如果你知道类似的事情,我很想看看,并了解其他人是如何处理事情的。GitHubswift502/Sketchbook 1.2k基于three.js及cannon.js. 在GitHub上创建一个帐户,为swift502/Sketchbook的开发做出贡献。nthumb1008×756 243 KB
非常整洁!我喜欢你添加了一个“渲染物理”选项,这样我们就可以看到它是如何计算Hitbox的。
我相信Heraclos267也在使用cannon.js. 如果你点击“Shift+O”,你可以看到他们处理物理问题的方式。看起来他们只通过计算与你的角色非常接近的碰撞来进一步优化他们的物理引擎。
如果打开控制台,你可以看到许多其他选项。
太棒了!我喜欢你的着色风格,它只是一个带有环境光遮挡的基本Lambert着色器吗?
真的很顺利!干得好
谢谢。nHeraclos中的调试选项真的很酷。他们的“免费拍照”模式和我的完全一样,这很有趣。我发誓我自己做的。
如果他们对canno
进行了任何有价值的优化,我会很感兴趣。我了解到,它的发动机性能远不如我最初想象的那么好。尽管如此,这显然还是令人惊奇的,特别是自从盖伊自己做了这件事之后。
是的!AO是在搅拌机中烘焙的。
我正在制作“真实”的精美图形。这些模型实际上只是占位符,但我认为即使是占位符也应该看起来不错。
谢谢!
我从来没有见过像这样有很多动画的流体角色运动,所以决定尝试一下。
整个系统非常通用,我正计划添加汽车(到目前为止,我还没有在弹药/加农炮中看到令人惊讶的实现)以及与环境交互的方法,以制作一个小型GTA克隆。
谁知道这可能需要多长时间。
这真是一项非常酷、伟大的工作!动画效果很好,“threejs”人脸的触感很好。
在比较了Heraclos和Plume 83(同样由CannonJS制成)之后,我很好奇使用基于物理的角色控制器与导航网格之类的东西相比有什么优点/缺点?我理解Unity提供了这两种功能,除了我在这里读到的内容之外,我不太了解其中的差异:https://www.patreon.com/posts/astro-kat-moving-213435280.
与我在第三人称游戏中预期的反应能力相比,我的机器上所有三个基于CannonJS的控件都感觉有点迟钝。启动、停止和转弯有点慢。我自己以前在CannonJS中实现过一个角色控制器,我自己的结果比上面三个例子都差。
我还做了一些基于导航网格的控件(示例107,带有三个寻路64)。它感觉更灵敏、更可预测,但我还没有尝试在
avmesh上实现跳跃。我想在这条路上会有正反两面。
我希望这不会成为批评——我喜欢你的例子,谢谢你分享!但我很好奇,你和其他人认为不同方法的局限性是什么……物理在某些情况下更好吗?难道CannonJS的物理引擎不如Bullet/AmmoJS那么强大吗?我知道AmmoJS有更多的功能,但我也没有看到一个好的角色控制器是用AmmoJS实现的。n@Donmcurdy我相信RoboStorm是用PlayCanvas引擎构建的,它使用AmmoJS作为内置的物理库https://playcanv.as/p/baucox6/89但不确定具体如何实施,因为它不是开源的。太空车55是使用AmmoJS的另一个例子。
这是强大的麦克迪本人!感谢您的反馈,非常感谢。
我想这是品味的问题。我也发现赫拉克洛斯和羽流的移动非常缓慢,但我对我的控制器非常满意。我特意添加了速度缓和来补充动画。让它更具响应性,甚至像您的示例121一样响应性,这是没有问题的。
最后,对于像我这样的系统,您可以完全控制系统的响应性。这场运动的绝大多数是定制逻辑。我只把重力之类的东西留给引擎,但根据我的喜好调整所有计算出的速度。我的运动基本上是物理引擎不可知论。我可以使用任何提供光线投射和刚体碰撞的引擎。实际上,我从弹药换成了加农炮,因为我发现在很多地方弹药都很缺乏。
这是一个调整参数以获得你喜欢的行为的问题。我曾读到人们觉得《死亡救赎2》中的运动缓慢而令人沮丧,而我认为它是非常流畅,不会对摇滚明星的游戏头衔有任何期待。所以,这看起来真的像是品味的问题。在我的例子中,过于缓慢的运动确实是我的一个缺点,与物理引擎无关。
老实说,我甚至从未考虑过纯粹的导航网格控制。我肯定认为
av网格逻辑是建立在基于物理的角色控制器之上的东西。事实上,在我的演示中尝试并实现令人惊叹的三种寻路方式已经在我的待办事项列表中了。
如果你正在构建一个类似GTA的游戏,并且想要确保你的角色在任何情况下都能表现良好,在任何可以想象的几何体上移动或碰撞,在汽车等动态实体上移动,甚至做攀爬、游泳等动作,那么基于物理的控制器是必要的,这是定义角色行为的一般方法。下一步是实施导航网格寻路,以帮助AI四处移动。
我认为您的示例121对于步行模拟器类型的游戏很有用,比如《目击者》。但是它看起来确实很有限制,因为我不能超越由level designer定义的导航网格。不过,对于一些游戏来说已经足够了。
很棒的演示,真的令人印象深刻。
不久前,我为JS评估了一些不同的物理引擎,包括cannon。我得出的结论是“不是我自己做的”。js是一个严肃的选择,其余的都太弱了。不久前我还写了一个角色控制器,它与你的非常相似——胶囊,使用武力,建立在弹药上。
可以肯定地看到你想在哪里使用物理来进行车辆游戏,是的。
对于动态障碍物、攀爬和游泳,我相信你也可以用导航网格来完成大部分工作。像Recast41这样的库有一些整洁的特性,我一直想在三个寻路的同时探索这些特性。无论这比用物理来做同样的事情更容易还是更好,我都不知道好主意搅拌机2.80(暂时?)由于没有
avmesh创建功能,该工作流肯定会变得有点不方便…
如果你想了解它,我很想看到一个演示,玩家加速/减速启动,或者我可以在时间允许的情况下尝试一下。再次感谢您的演示!
我想看看纯导航网格控件的更复杂行为。我刚退出了GTA 3,我基本上是在我的演示中复制它,因为Rockstar似乎在很多年前就找到了一种很好的角色移动的通用方法。
这里是最大的弹簧加速度:njblaha.art/examples/min-spring.html119
你仍然可以感觉到这件衣服的弹性,有点烦人。我们可以通过实现类似lerp平滑的东西,而不是弹簧来消除这种情况。同样,你可以随意处理速度。
这里根本没有平滑:njblaha.art/examples/no-spring.html66
平滑的目的实际上只是为了给角色带来重量感,让角色的动作更自然。当然,动画也扮演着重要的角色。使用更灵活的角色制作不同的动画可能会让人感觉完全不同。
我和一位同事为Yuka 56开发了一个导航网格实现,我想在这里与大家分享。它执行凸区域合并,并使用空间索引来提高性能。此外,它还可以与基于 = new THREE.Vector3(mouse.x, mouse.y,>nYou should update your question with more details about what you\"re actually trying to achieve and where you stuck. People invest their free time to help. For me its not really clear, but the transforms can be decomposed from the matrix like = new THREE.Vector3()obj.matrix.decompose(position, quaternion, scale)的Yuka任务机制一起使用,以便在多个帧上分配计算工作。
这项工作仍在进行中,但我们已经在许多演示中使用它。nhttps://mugen87.github.io/yuka/examples/navigation/navmeshPerformance/123
当然,您也可以使用
avmesh限制游戏实体和第一人称演示中演示的玩家的移动:nhttps://mugen87.github.io/yuka/examples/entity/firstperson/121n@swifterik谢谢!“最大化弹簧加速”的例子让我感觉很好,我想这毕竟是不同的期望/感知。“不平滑”的例子感觉也很灵敏,但是角色的瞬间转换会让人感觉有点不舒服。@Mugen87这太酷了!和相当广泛的API!我还没有看到很多与游戏相关的WebGL库,我想知道为什么会这样。未来在网络上看到更复杂的人工智能行为将是令人兴奋的。我花了一些时间试图将“重铸/绕道”编译成WASM,我想一些Mozilla工程师也确实做到了。
太好了,我非常喜欢它。
如果你不介意的话,我很想得到启发。
这是一份好工作。
当然是我的客人
如果您对任何东西的工作原理有任何疑问,我将很乐意帮助您…
非常好的控制器和操作!
这是一种沙箱框架,可以免费用于构建游戏,我理解对了吗?
您的待办事项看起来相当雄心勃勃,是否有计划也添加第一人称
Third person character controllern

three.js[已解决]正交摄影机的变换控件:gizmos缩放问题

您好,我正在使用带轨道控制的正交摄影机。我注意到当缩放照相机变焦不改变相机的位置(如透视相机)。首先,我想知道为什么这两个相机的实现方式不同?第二,我也在使用TransformControls,对于透视摄影机,更新功能上的小控件的重新缩放在这个等式中非常有效>但是使用OrbitControls更改缩放而不是正交摄影机的位置时,它没有正常工作。我试着像这样在等式中添加缩放,但没有得到任何好的结果>我应该以不同的方式包括它吗?我应该使用其他控件吗?谢谢大家的帮助!NaDaMa:首先,我很想了解为什么这两个摄像头...

日期:2021-12-11 08:00:01 浏览:1739

three.js多次渲染同一模型(obj模型),FPS要低得多

我试图在程序中渲染150个相同的树模型,但FPS突然从60下降到30+。你能告诉我什么是最好的解决办法吗?非常感谢。和平与爱。skr有两种典型的方法可以解决这个性能问题(太多的绘制调用):- 使用实例化渲染- 将所有几何体合并为一个几何体(因此只有一个网格)...

日期:2021-12-11 08:00:02 浏览:1746

three.js可缩放场景背景

three.js大家好,我有一个场景,由一个物体(反射雕像)组成,保持在一个漂亮背景的中心。我一直在使用威尼斯日落矩形hdr地图作为我的场景背景它既可以作为环境地图,也可以作为背景我看到背景不会与场景中渲染的网格一起缩放。这给人一种场景完全是假的感觉。i、 e状态向上/向下缩放,但背景不缩放。目前,我已经禁用了放大/缩小功能,这样用户就不会感到害怕。我的问题是:1. 当轨道控制放大/缩小时,我是否需要在此处使用一些着色器魔法来放大或缩小场景背景,以便看起来场景中的所有对象都在均匀缩放?或者这根本不可能做到?...

日期:2021-12-11 09:00:02 浏览:1272

three.js移动导入的Gltf模型

three.js我导入了我的gltf模型并将其添加到场景中,但现在如果我尝试移动它,它将不会=新建三、几何();var=混音器( 模型动画[0]>如何移动模式?Prakar_Srivastava:var>3D对象不能是Geometry或BufferGeometry类型。它应该是Object3D或类似Mesh、Points或Line的派生类的实例。在您的情况下,我只是这样声明变量:var mode;在动画循环中,执行以下操作:如果(mod!==未定义)>还请记住,基本3D场景的重要部分在代码片段中丢失(例如相...

日期:2021-12-11 10:00:01 浏览:1111

three.js平面明暗处理的问题

three.js嗨!我在项目中使用节点材质。我在模型渲染方面有问题。它看起来像是真实的平面阴影。如何平滑多边形?也有点像低分辨率阴影纹理贴图的自阴影。可能不是,但可能是。@Arkadiy\\u Vinkovskiy您需要在您的帖子中添加更多细节。屏幕截图不足以说明这里发生了什么。始终包括引起问题的代码,如果您使用的是模型,也要包括这些代码。更好的是,使用codepe制作一个工作示例...

日期:2021-12-11 10:00:02 浏览:997

three.js如何渲染立方体材质?

您好,直到昨天,我才相信Object3D是一组网格,而网格是一组几何体+材质,每个对象只有一个对象。我发现了立方体材质的结构,因此object3D的网格包含1个几何体(boxGeometry)和6个材质!所以问题是,这种网格的渲染效果如何?有关于它的文件吗?(这是为了提高我对three.js)非常感谢还有其他问题,与我的上一个帖子相关,如果一个网格中可能有多个材质,如何设置CustomDistanceMaterial以考虑所有材质的所有贴图?elysium11:所以问题是,渲染如何在这种类型的网格上工作?您...

日期:2021-12-11 11:00:03 浏览:857

three.js如何创建要在网格中拟合的线段

three.js伙计们,我想帮忙,假设我有一个这样的网格图像718×729 1.25 KB我想在网格面内创建线段,也就是说,我想将网格转换成这样的线图像710×828 740字节有人能帮忙吗???...

日期:2021-12-11 12:00:01 浏览:909

three.jsGLTFLoader.js这是我的登记簿错误

three.js每当我试着做决定的时候3.GLTFLoader对象我收到此错误代码:“未捕获类型错误:这是我的登记簿不是一个函数“我需要帮助!由Penta#u Trax在post#5中解决我最终发现我一直在使用错误的文件,当你需要使用jsm/example时,我使用的是js/example。其他东西也是个问题。但这是问题的基础。你能给我们看看你的代码吗?通常,如果你使用的是import语句,GLTFLoader不需要在前面加三个字符。好的,所以在这之前,我刚刚关注了这个视频,因为它是去年发布的。但是现在我试...

日期:2021-12-11 12:00:02 浏览:1069

three.js使用threejs的光流

嘿,我需要通过我的屏幕显示一束移动的光束。我不想使用任何模型或动画。我想知道我是否可以单独使用threejs来实现这一点。我也应该能够控制其运动的颜色强度和路径。嗨!也许这会有帮助:GitHub-jeromeetienne/三倍体积聚光灯: three.js扩展以提供体积聚光灯13,用于可视化光锥。您可以使用THREE.Curve()设置其路径。控制颜色强度,可能取决于曲线上的位置,也可以使用tween.js或者GSAP用于复杂的动画。创造力取决于您这是您想要的吗?https://threejs.org/e...

日期:2021-12-11 13:00:01 浏览:1316

three.js使用光线投射动态绘制多边形

我要画多边形three.js具有交点。为此,我使用下面的函数。首先,我使用光线投射器在第一个交点的第一个点添加球体。每次单击后,在交点处创建新球体,并在该交点和上一点之间创建线。现在,我希望在第一次单击时关闭多边形指向或单击该点周围。如何实现此目标。raycaster params是否与网格一起工作以检测鼠标位置周围的网格?function checkIntersectionclick() = raycaster.intersectObjects(addedObject, true);if (interse...

日期:2021-12-11 13:00:02 浏览:868