Преобразование значений положения 3D носа в значения 2D?

#spark-ar-studio

#spark-ar-studio

Вопрос:

Просто интересно, пытались ли это раньше.

Я создаю игру, в которой 2D-объекты падают сверху, и я использую свой нос, чтобы «поймать» эти объекты.

В настоящее время я настроил его таким образом, что если значения X и Y для носа и 2D-объекта совпадают, это увеличивает счетчик.

Однако я заметил, что положение для 3D и 2D объектов отражают очень разные значения.

Я пытался использовать нулевые объекты для размещения 2D-холста, но это тоже не сработало.

Возня со значениями допуска не привела к желаемому эффекту.

Равно исправлению

Первое число берется из нулевого объекта, второе число берется из положения носа.

Из nullobject: -0.09079 Из nose: 0.00108

Это как-то связано с ограничениями или я делаю что-то неправильно? Спасибо, что нашли время, чтобы прочитать это : (

Ответ №1:

Вот проект, который преобразует 3D-положение носа в 2D-пространство экрана. Я снял видео о том, как это сделать: видео и вот ссылка для бесплатного скачивания.

Для проецирования 3D-положения в 2D-пространство экрана требуется несколько строк сценария и модуль сцены.

 const Scene = require('Scene');
const Patches = require('Patches');

Promise.all([

    // The 3D Object or 3D Point we want to track
    Scene.root.findFirst('Nose3D'),

]).then(function (results) {

    // Define variable names for items we found
    const nose3D = results[0];

    // This transforms the world coordinate of the 3D Object to a screen coordinate.
    var nose2D = Scene.projectToScreen(nose3D.worldTransform.position)

    // Get the Nose3D Position, then set the projectToScreen point Nose2D
    Patches.outputs.getPoint("Nose3D").then(pointSignal => {

        Patches.inputs.setPoint2D('Nose2D', nose2D);

    });
});