gpt4 book ai didi

javascript - 三.js LookAt() : how to point some local axis which *isn't* the positive Z axis towards another object

转载 作者:行者123 更新时间:2023-12-02 23:53:14 24 4
gpt4 key购买 nike

我正在创建一个应用程序,其中一个人(现在我使用圆锥形状)站在某个表面上(现在我使用纵向放置的圆柱体),并且我希望他们的脚能够定向朝向某个点(现在是圆柱体的中心)。

The intended result. (编辑:我刚刚意识到这张照片中的 Z 轴指向错误的方向;它应该指向相机,但问题仍然没有改变。)

这是与我想要完成的代码类似的代码版本。 https://codepen.io/liamcorbett/pen/YMWayJ (使用箭头键移动圆锥体)

//...

person = CreatePerson();
person.mesh.up = new THREE.Vector3(0, 0, 1);

//
// ...
//

function updateObj(obj, aboutObj=false){
let mesh = obj.mesh;
if (aboutObj) {
mesh.lookAt(
aboutObj.mesh.position.x,
aboutObj.mesh.position.y,
mesh.position.z)
};
}

//
// ...
//

function animate() {
// ...

updateObj(person);

// ...
}

上面的代码给了我类似于我正在寻找的东西,但问题是lookAt()似乎总是将本地正Z轴指向某个方向,而我' d 更喜欢它指向局部负 Y 轴

我不想更改模型本身的 x、y、z 轴,因为我觉得当我将其他逻辑应用于 person 对象时,处理起来会很痛苦。

有没有办法改变lookAt()使用的轴?或者我是否必须推出自己的lookAt() 函数?谢谢~

最佳答案

Is there a way to change which axis lookAt() uses?

否,3D 对象(不包括相机)的默认本地前向向量为(0, 0, 1)。与其他引擎不同,two.js 不允许配置 forward 向量,只能配置 up 向量。但这对您的情况并没有多大帮助。

您可以尝试变换几何图形以获得类似的效果。

如果您由于某些原因不想这样做,但仍想使用Object3D.lookAt(),则必须计算不同的目标向量(因此不是圆柱体的中心)。

关于javascript - 三.js LookAt() : how to point some local axis which *isn't* the positive Z axis towards another object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55547293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com