ThreeJS - 如何找到枢轴点

Posted

技术标签:

【中文标题】ThreeJS - 如何找到枢轴点【英文标题】:ThreeJS - How to find pivot point 【发布时间】:2016-06-07 07:45:31 【问题描述】:

我有一个 JSON 模型,它是一个盒子,我在我的项目中使用了 Three.JSONLoader。我可以在 ThreeJS 编辑器中看到枢轴点或原点在 X 和 Z 方向上都靠近模型的中心。在加载 JSON 模型后的 ThreeJS 编辑器中,按预期从中心附近绕 Y 轴旋转。

我需要找到枢轴的位置。我使用了一个边界框,它给了我最小/最大值,所以我可以获得实际大小(我认为比例给出相同),我期望网格位置是枢轴或原点的位置,但它不是吨。在 Unity 中,我相信你会使用转换。

如何找到(或计算)枢轴点?

我添加了一些代码

var cube = new THREE.Mesh(new THREE.BoxGeometry(0.1, 0.1, 0.1), 
                      new THREE.MeshBasicMaterial( color: 0xff0000 ));

mesh.add(cube);

我可以在轴心点看到附加到模型的框。显然不同的模型有不同的位置,但是无论我在模型还是我刚刚添加的立方体上使用matrixmatrixWorld,位置的数字都是相同的。所以也许这个位置是正确的。在这种情况下,把它放在头上,我如何计算从位置到模型边缘的距离?我认为可以使用边界框最小值/最大值,但这似乎也不起作用。

【问题讨论】:

我可能是错的,但听起来网格是从原点平移的,编辑器允许您将其旋转为偏移到父原点的子对象。很难回答。不过,这听起来可能很熟悉,要设置特定的枢轴点,您可以使用枢轴垫片:***.com/questions/28848863/… 答案还包括我认为您可能暗示使用统一变换解决方案的 geometry.translate 方法。 我还没有创建模型,但是是的,有些模型的原点(或枢轴点)位于左下角,或者 x=0 y=0 和 z=0 以及一些让它们位于 x=width/2、y=0 和 z=0。其他地方的其他人。我需要知道转换的原点偏移量。 我相信你需要的是网格的矩阵。请参阅此文档:threejs.org/docs/#Manual/Introduction/Matrix_transformations 【参考方案1】:

想通了。和我想的一样。网格的位置给出了原点的位置,即使它是偏移的。使用 box.min/max 值并从位置添加或减去这些值可以得到我需要的值。

【讨论】:

以上是关于ThreeJS - 如何找到枢轴点的主要内容,如果未能解决你的问题,请参考以下文章

ThreeJS 分子 - 双键

如何使用threejs实现第一人称视角的移动

如何在 Threejs 中绘制开口曲线形状

threejs初探

threejs - 4 - 物体

ThreeJS两个点作为起始坐标画一个立方体