Как сделать трекинг модели (чтобы элементы UI (модельки three.js) "смотрели" в камеру)

с помощью three.js подгружается некоторая 3D модель. Около этой модели расположены элементы UI (белые кружочки)
введите сюда описание изображения

При клике на каждый из элементов UI (белые кружочки) выполняется какой то обработчик.

Проблема: Если вращать модельку, то вместе с моделькой вращаются и элементы UI. И происходит такое введите сюда описание изображения

Вопрос: Как сделать так, чтобы "лицевая сторона" элементов UI, независимо от того как перемещает пользователь камеру, "смотрела" прямо в камеру?


Ответы (1 шт):

Автор решения: MidNightElf
let ui_elems = [ // содержит имена объектов которым нужно смотреть в камеру
    "UI_element1",
    "UI_element2",
    "UI_element3",
    "UI_element4",
    "UI_element5",
    "UI_element6",
    "UI_element7"
];

function rotate_ui(scene, ui_elems, camera_rotation) {
    
    scene.traverse((child) => {


        for (let i = 0; i < ui_elems.length; i++)
            if (child.name == ui_elems[i]) {
                child.rotation.z = camera_rotation.z;
                child.rotation.y = camera_rotation.y;
                child.rotation.x = camera_rotation.x;
            }

    });
}

function animate() {
    renderer.render(scene, camera);
    requestAnimationFrame(animate);

    rotate_ui(scene, ui_elems, camera.rotation);

}
→ Ссылка