我在旋转的父对象中有一些3D对象。
我正在添加一组2D“热点”,它们遵循这些对象的屏幕位置。我得到了这个来成功地将子对象的位置转换为2D:
// HOTSPOTS //
var v1,m1,p,hotspotX,hotspotY;
v1 = new THREE.Vector3();
m1 = new THREE.Matrix4();
m1 = childObject.matrixWorld;
v1.setFromMatrixPosition(m1);
p = projector.projectVector(v1, camera1);
hotspotX = (p.x + 1) / 2;
hotspotY = (-p.y + 1) / 2;
问题是,我不想将子对象的原点用作热点位置,而是将其设置为相对于它,即热点的y可能是childObject.y-10。我认为这需要在转换为矩阵之前发生。有没有办法像matrixWorld一样,但是从向量而不是对象?
我可以为每个热点创建额外的空对象,并将它们的位置设置在我想要的位置,但是看到childObjects已经存在,我宁愿使用它们,如果可以的话。我之前发现的所有示例都使用了现已弃用的函数。希望这是有道理的,我是矩阵的新手。
谢谢!