Оберните сетку Threejs на другую сетку - PullRequest
0 голосов
/ 02 февраля 2019

Я довольно новичок в three.js и у меня есть требование, когда в сетке нужно обернуть другую сетку с кривой.В моей сцене у меня есть три сетки plane1, plane2 и base mesh (эллипсоид) соответственно.См. Ниже.

(b)

(a)

Я хочу иметь возможность проецировать плоскость plane1 и plane2на базовой сетке как-то так, чтобы она была обернута на поверхности базовой сетки.Увидеть ниже.Если база была для например.кубоид, тогда я бы просто поместил плоскости1 и плоскость2 на их плоской поверхности, но поскольку моя базовая сетка изогнута, у меня возникла эта проблема.Можно ли добиться этого за три дня, когда вы можете проецировать сетки на другую сетку?

(c) (d)

1 Ответ

0 голосов
/ 02 февраля 2019

Ну, чтобы «спроецировать» сетку на поверхность другой сетки, вам нужно сделать лучевое вещание снаружи по направлению к центру эллипсоида.Raycaster может дать вам положение пересечения.Предполагая, что у вас эллипсоид расположен в (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 будет иметь объект этого формата с результирующей (x, y, z) точкой перехвата.

...