#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);
});
});