问题标签 [physijs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - PhysiJS:如何在旋转物体的给定点获得线速度
给定对象的线速度和角速度,如何在 PhysiJS 中查询对象点的线速度(相对于世界空间)?
为此,我正在考虑在对象上创建一个不可见的顶点,但我认为 API 甚至没有提供这种功能。我需要根据物体的平移和旋转速度自己计算吗?(如果是这样,THREE.js 或 PhysiJS 是否提供了一种直接的方式来做到这一点?)
从第一原则:
- 给定
object.position
(1) - 给定点在世界空间中的位置
object.localToWorld(point)
(2) - 给定
object.getLinearVelocity()
(3) - 给定
object.getAngularVelocity()
(4)
所以我需要:
- 从 (2) 中减去 (1) 以给出点在世界空间 (5) 中的偏移量
- 使用 (4) 和 (5) 获得点相对于对象 (6) 的线速度
- 将(6)和(3)相加得到点的总线速度
对于第一步和第三步,我可以使用 Three.js 的 Vector3.sub(Vector3)
和.add(Vector3)
方法,但是中间操作让我望而却步,尽管我猜想是一种乘法。鉴于 (4) 可以是欧拉角或四元数,我应该使用哪种操作?
我对矩阵的了解非常有限(而且生疏!)并且不存在四元数。
Three.js 的 API 文档在这里
谢谢
three.js - 在没有 FPS 下降的情况下有效地生成块/体素地形?
我在使用 Three.JS 生成/显示地形时遇到了一点问题,而没有主要的 FPS 下降。这是我为创建每个块并设置正确位置而编写的代码:
基本上,它创建每个块,设置位置并将它们合并在一起THREE.GeometryUtils.merge
以构成“块”(矩形)MineCraft 样式。
我很确定构成每个块的大量单个块导致低 FPS。只有 10 个块,FPS 很好。如果我再添加,FPS 会急剧下降。
我的一个想法是使用 WebWorker 进行处理,但由于我无法添加块甚至在其中使用 Three.JS,这是不可能的。这也只会有助于加载时间,而不是我遇到的 FPS 问题。
如果有人对我将如何解决此问题有任何想法,我将不胜感激。:) 也许可以隐藏相机看不到的块?或者我可能只是完全以错误的方式做事。谢谢!
javascript - 如何使用physijs和threejs从场景模拟中获取数据
我正在做一个演示,它与此页面中的一个示例非常相似(http://chandlerprall.github.io/Physijs/examples/body.html)。只是一个盒子掉下来了。但我想计算从盒子开始下落到落地所用的时间,这样我就可以计算速度。有没有办法做到这一点??请帮忙。
javascript - 使用 Physi.js 的玩家运动/物理
我正在使用 Three.js 作为渲染器和 Physijs 作为物理引擎创建一个简单的游戏,尽管这个问题可以很容易地推广到整个游戏。
在游戏中,玩家的物理/运动通常看起来与其所在的物理引擎是分开的。它们以瞬间加速移动并立即停止。但是,根据物理引擎的规则,玩家可以从高处坠落并与其他物体(或玩家)发生碰撞。
请注意,就我的问题而言,玩家有一个不受物理约束的相机对象,尽管它可以很容易地连接到物理对象。
达到这种效果的最佳方法是什么?我想到了一些解决方案,但似乎没有一个完全足够:
没有物理附件,翻译玩家的相机。然而,这将忽略碰撞,绕过物理引擎。
物理附着,并对物理对象施加力。然而,这涉及到摩擦力,并将玩家的运动置于物理引擎的支配之下。
想法?(有一个类似的问题“ https://stackoverflow.com/questions/15822168/how-to-make-a-walk-though-like-fps-tps-games-with-three-js-and-physics-engine ",虽然它没有收到任何答复)
three.js - How to draw the trajectory of a mesh with threejs
I'm trying to draw the trajectory of a projectile motion with threejs. Which is the best way to do that? Here is an example of it: http://www.physgl.org/index.php/welcome/logout Try the projectile motion demo and click run.
I thought of drawing a second mesh that follows the previous movement by obtaining the position of the mesh as it's moving, but that did not work. This is what I tried (this code) to get the position of the object moving:
box.geometry.computeBoundingBox();
Please Help. Thanks.
javascript - 未定义 physijs 对象材质的three.js
在使用三个.js 创建一个小场景后,我尝试实现 Physi.js。
我被困在第一个对象上,一个立方体,我尝试更改为 Physi.js。Firefox 控制台告诉我,Physi.js 第 899 行的“object.material 未定义”。
我尝试了以下方法:
还有这个:
还有这个:
所有都会导致相同的错误,使用 chandlerprall-Physijs-1558502。
请告诉我,我在这里缺少什么。
提前致谢。
three.js - 让 Physijs 考虑顶点着色器位移
我不确定标题是否最好,但我会尝试解释我的问题是什么。我正在使用 Three.js 和 Physijs 制作一个简单的游戏,让玩家可以在场地上四处走动。我使用平面几何作为地面,并想使用置换贴图来改变它的形状。我之前直接操作顶点(仅使用一些数学公式来置换顶点)并使用 HeightfieldMap 进行碰撞检测,效果很好,但现在我通过顶点着色器实现了置换映射,Physijs 将地面视为平面对象。我猜测着色器中顶点的操作发生在 Physijs 模拟之后,但是有没有办法让 Physijs 在进行碰撞检测时考虑到着色器中的顶点位移?或者,
three.js - Threejs/Physijs 游戏 MMO 角色控件
我正在为我正在开发的游戏开发第三人称角色控制。到目前为止,我对结果感到满意。角色控件有很多简洁的功能,例如:如果一个物体在相机前面,它会向前移动,所以你仍然可以看到角色,但是当我将它旋转到一边然后将我的玩家转开时,相机会严重卡顿从中。我在 JSFiddle 上上传了一个测试:http: //jsfiddle.net/nA8SV/我只在 chrome 中测试过这个,由于某种原因,结果部分没有得到按键,直到你点击与画布相邻的空白区域框架。
[我也开始使用“--disable-web-security”来忽略跨源]
但是,一旦您单击页面,按键就会起作用。控件是轨道控件的修改版本。因此,您可以左键单击并旋转视图。此外,您可以使用 wasd 键四处移动,当您移动/旋转时,相机视图应返回到玩家身后。
对于在 JSFiddle 上工作非常困难的问题,我深表歉意。(但旋转错误正在发生,所以它至少重现了这一点。)
基本上我试图让我的相机旋转回到我的角色后面,所以我有一些代码可以修复第 250 行的旋转,但是当角色移动时相机会卡住。
以下是我的理论,我认为相机的整体抖动与玩家轻微反弹的物理模拟有关,但我不确定如何解决这个问题,任何帮助将不胜感激。
这是完整的代码,但我会推荐 JSFiddle 链接,我更容易看到它工作。
谢谢!!!
three.js - Physijs 加载模型three.js 碰撞不起作用
当我使用 JSONLoader 加载我的模型(地图)时,我遇到了碰撞问题。如果我使用 BoxMesh 加载它可以工作,但几何碰撞就像一个立方体,而且我的模型不是立方体,我的模型中间是空的。我将另一个对象(立方体)放在我的地图顶部,该对象停在这张地图的顶部而不是里面。
搜索后,我用凸面加载了我的模型,顶部的对象落在我的地图平面上,但我认为大小(40)加载不正确,因为如果我将对象移动得很少,他就会落在空间中.
我像这样加载我的模型:
不知道是不是很容易理解这个问题。
BoxMesh:这里的对象是停止的。
凸:不检测碰撞
我上传了我的测试,我想也许更好理解: http ://www.hebergeurfichier.com/download/a97e3ae31c36dfe98525213cde90165f.html
PS:我用搅拌机创建我的模型并在三个.js 扩展中导出。
three.js - Physijs 对象通过 concaveMesh
我有一个似乎众所周知的问题:我的“边界”对象没有与“地板”凹面网格碰撞。
我已经读到这个问题可能是由于将 concaveMesh 与模型一起缩放时出错引起的,所以我导出了我需要的按比例缩放的地板模型,并且在我应用了 concaveMesh 之后(如下所示)但它不起作用。
我把这个红了:https ://github.com/chandlerprall/Physijs/issues/102和很多关于这个主题的其他事情(Physijs Load model three.js 碰撞不起作用和类似的),我做了以下代码但无事可做:(
我真的不明白为什么“边界”会穿过地板。
这是我的代码:
我也在 render() 函数中尝试了这个:
在控制台中,我可以读取“边界”和“地板”之间的距离。这应该意味着地板作为对撞机存在,但它不会阻止边界下落。为什么?