我对three.js相当陌生,并且有一个要求,即网格中的对象需要环绕另一个具有曲线的网格。在我的场景中,我分别具有三个网格平面1,平面2和基本网格(椭球)。见下文。
我希望能够以某种方式将plane1和plane2网格投影到基础网格上,以便将其包裹在基础网格的表面上。见下文。如果基地是例如。一个长方体,然后我也只是定位在其平坦的表面,但因为我的基础网格是弯曲的,我有这个问题的基准面1和平面2。在threejs中可以将网格投影到另一个网格上吗?
答案 0 :(得分:1)
好,要将一个网格“投影”到另一个网格的表面上,您需要从外部向椭球的中心进行一些raycasting处理。光线投射器可以给您相交的位置。假设您在(0, 0, 0)
处放置了一个椭球,则可以执行以下操作:
https://threejs.org/docs/#api/en/core/Raycaster.set
// Vector with desired outer position
var startPoint = new Vector3(10, 5, 0);
// Normalized vector pointing toward center of ellipsoid
// (basically in the opposite direction of startPoint)
var endDirection = new Vector3(-10, -5, 0).normalize();
raycaster.set(startPoint, endDirection);
var intersects = raycaster.intersectObjects( ellipsoid );
console.log(intersects);
您将看到intersects
变量将具有一个object of this format,其截取点为(x,y,z)。