Javascript ThreeJS在链接方法时将位置偏移添加到Matrix4

Javascript ThreeJS在链接方法时将位置偏移添加到Matrix4,javascript,three.js,Javascript,Three.js,我有一个包含元素位置的3JS矩阵。我还有第二个Matrix4,其中包含偏移量(我可以使用new THREE.Vector3().setFromMatrixPosition(offsetMatrix4))获取该偏移量)。现在我想把这个偏移量加到我的第一个矩阵4的位置上。我目前的做法是: baseMatrix4.setPosition(new THREE.Vector3().setFromMatrixPosition(baseMatrix4).add(new THREE.Vector3().setF

我有一个包含元素位置的3JS矩阵。我还有第二个Matrix4,其中包含偏移量(我可以使用
new THREE.Vector3().setFromMatrixPosition(offsetMatrix4)
)获取该偏移量)。现在我想把这个偏移量加到我的第一个矩阵4的位置上。我目前的做法是:

baseMatrix4.setPosition(new THREE.Vector3().setFromMatrixPosition(baseMatrix4).add(new THREE.Vector3().setFromMatrixPosition(offsetMatrix4)))
这里的问题是,我必须在方法内部访问baseMatrix4,这阻止我将其与以前的方法链接,因为baseMatrix4将是未定义的或过时的


在允许链接的同时,你有没有更好的方法来解决这个问题的想法?

出于好奇,为什么他们必须被链接?如果您允许自己占用一些额外的代码行,那就很容易了,为什么您需要在一条语句中包含所有内容呢

var basePos = new THREE.Vector3().setFromMatrixPosition(baseMatrix4);
var offsetPos = new THREE.Vector3().setFromMatrixPosition(offsetMatrix4);
baseMatrix4.setPosition(basePos.add(offsetPos));
编辑: 如果您不想创建任何
Vector3
s,可以通过复制直接修改矩阵


。。。或者,如果愿意,您可以使用
+=
操作符。

我的代码当前没有变量basePos,它只是一个返回新创建对象的箭头函数。我希望避免创建不必要的变量。我只是在我的答案中添加了一个替代版本,它不需要你创建任何
Vector3
s。这是我首先做的,然后我把它改成了一个函数
[12,13,14]。forEach(I=>b[I]+=o[I])
,现在我只是在别的地方完全这样做
b = baseMatrix4.elements;
o = offsetMatrix4.elements;
b[12] = b[12] + o[12];
b[13] = b[13] + o[13];
b[14] = b[14] + o[14];