Сообщения, оставленные пользователем montego

Здравствуйте. так получилось, что вначале я стала изучать EV ToolBox по урокам в Rutube. Потом столкнулась к некоторыми сложностями и решила записаться на курс. Но, оказывается это те же самые уроки, которые я уже смотрела, поэтому проходить не стала. Ответа на свои вопросы я не могу пока найти. Буду очень благодарна, если кто-нибудь поможет мне. Вопрос первый: после подключения VR контроллера и включения режима Предпросмотра, мышь работает странно - как будто перевернутая. Двигаться вперед можно очень медленно и на короткое расстояние, а назад быстрее и дальше. И еще мне кажется, что поворот сцены должен бы быть по другому. Сейчас эффект, как будто я цепляюсь мышью за стену и ее поворачиваюсь, хотя логичнее было бы поворачивать стены вокруг меня. Итог данной странности - я не могу выйти вперед в другое помещение храма, хотя назад могу. Настройки проекта: поддержка Сцены и Предпросмотра, отключена камера. Второй вопрос: у меня не получается настроить луч, чтобы он был бы под наклоном, как в видео-уроке в rutube. И в Предпросмотре я вижу току луча прямо посередине экрана, это нормально? Третий вопрос: в уроке 21 двигают сцену. Куда и зачем, что хотят добиться - не объясняется. Четвертый вопрос: После добавления модели на сцене появляется Эйлерова система координат. Подробной информации, как модели располагать относительно ее центра нет нигде, влияет ли это на работу VR проекта. Пятый вопрос: В реурсах есть модели контроллеров - как я поняла, джойстиков. А если будут очки, то как настраивать проект? Пока очков нет, но в планах приобрести. Хотелось бы все понять. Буду благодарна, если поможете разобраться в нюансах.

Здравствуйте! Ответили на ваши вопросы в отдельной теме
https://eligovision.ru/forum/topic/127/

Отредактировано 21 Авг, 2025 16:20

Вопрос первый: после подключения VR контроллера и включения режима Предпросмотра, мышь работает странно - как будто перевернутая. Двигаться вперед можно очень медленно и на короткое расстояние, а назад быстрее и дальше. И еще мне кажется, что поворот сцены должен бы быть по другому. Сейчас эффект, как будто я цепляюсь мышью за стену и ее поворачиваюсь, хотя логичнее было бы поворачивать стены вокруг меня. Итог данной странности - я не могу выйти вперед в другое помещение храма, хотя назад могу.

Это особенности работа манипулятора камеры в режиме “trackball”. Для приближения к точке вы можете сначала совершить поворот, а потом уже приближаться. Также можете перемещать манипулятор, зажав колесико мыши. Клавиша “Пробел” возвращает в начальное положение.

Второй вопрос: у меня не получается настроить луч, чтобы он был бы под наклоном, как в видео-уроке в rutube. И в Предпросмотре я вижу току луча прямо посередине экрана, это нормально?

Чтобы менять угол луча, необходимо создать объект “Система координат” и в него добавить дочерним объект “Поиск пересечений”. Затем у объекта “Система координат” можно задать нужный угол. Точку луча посередине экрана вы видите, потому что модель контроллера, в которую добавлен луч, должна быть скрыта.

Третий вопрос: в уроке 21 двигают сцену. Куда и зачем, что хотят добиться - не объясняется.

Делают это, чтобы позиция зрителя(манипулятор камеры) была установлена на 1.9 м выше уровня пола. Можно также сдвинуть сам манипулятор вверх.

Четвертый вопрос: После добавления модели на сцене появляется Эйлерова система координат. Подробной информации, как модели располагать относительно ее центра нет нигде, влияет ли это на работу VR проекта.

Система координат появляется, т.к. у Вас включен один из режимов трансформации на панели инструментов - “Поворот”, “Перемещение” или “Масштаб”. Центр системы координат это опорная точка модели(pivot point), которая задается при создании 3D модели и может не совпадать с центром модели. Все трансформации применяются относительно опорной точки.

Пятый вопрос: В реурсах есть модели контроллеров - как я поняла, джойстиков. А если будут очки, то как настраивать проект? Пока очков нет, но в планах приобрести. Хотелось бы все понять. Буду благодарна, если поможете разобраться в нюансах.

Если вы имеете в виду очки дополненной реальности(AR), например Rokid Max, то основное взаимодействие в них это трекинг(маркерный, безмаркерный, поверхностей). Пример, который рассматривается в видеоуроках предназначен для шлемов VR с контроллерами.

И еще до кучи подскадите как в LUA у объекта текст изменить размер шрифта - на 14 пунктов - напишите строку кода как это делается - спасибо!
И так же про поля - padding не могу в LUa написать код изменения полей у объекта типа прямоцгольник
Напишите пожалуйста примером

Код ниже увеличивает шрифт текста на 14 пикселей, используя класс ScreenUnitLength и его параметр value

text.text.font_size = ScreenUnitLength(text.text.font_size.value + 14, "px")

Для полей используйте класс ScreenPadding, принимающий четыре параметра(поля сверху, справа, снизу и слева):

rect.rect.padding = ScreenPadding("100px", "0%", "100px", "0%")

Также можно в значении указать “keep-aspect” - сохранять соотношение сторон.

Также, если вдруг что-то не получается, Вы можете построить простую схему из объектов в сценарии(например по какому-нибудь событию устанавливать поля прямоугольника), и нажать правой кнопкой в окне Сценарий, выбрав “Сгенерировать код и вывести в Консоль”. Код, выведенный в консоль(если она у Вас не открыта, то выберете ее в меню Вид), может подсказать, какие классы и параметры используются.

Подскажите пожалуйста или приведите код Lua как задать размеры прямоугольника
local rect = reactorController:getReactorByName(“Rect”)
rect:setRect_size(size)
например как написать код который задает размер прямоугольника 14 на 11 и единицы измерения пиксели?

rect:setRect_size(14, 11, px) так не работает? Или нельзя в LUa задать данный параметр, а можено только в EVToolbox ?

И как задавать новое положение (position) пример кода новой позиции? Тоже не понятно позицию новую кодом как задать?

Чтобы задать размер, нужно использовать два класса: ScreenSize и ScreenUnitLength:

rect.rect.size = ScreenSize(ScreenUnitLength(14, "px"), ScreenUnitLength(11, "px"))

Код ниже задает размер прямоугольника 14 пикселей по ширине и 11 по высоте. Класс ScreenUnitLength принимает два параметра: значение и единица измерения.

Чтобы задать позицию, укажите через дефис строковые значения привязки горизонтальной(left, center, right) и привязки вертикальной(bottom, center, top). Например для привязки к нижнему левому углу:

rect.rect.position = 'left-bottom'

Обратите внимание, что свойство позиции обязательно указывается как rect.position, которому предшествует имя переменной реактора(которое, в данном случае, тоже rect)

Скажите при использовании в скрипте Lua объекта “Система трекинга” какое имя мне нужно писать в команду
local trek = reactorController:getReactorByName(“Система трекинга”) чтобы обращаться через переменную trek в программе к событиям и действиям и свойствам объекта “Система трекинга”. При такой записи не работает - значит имя “Система трекинга” не рабочее - ни где нет имени по которому можно получить реактор объекта “Система трекинга” или данный объект не программируется в LUA?
Тоже самое у объекта “Система” напишите его имя - не работает как и с обхъектом “Система трекинга”

Добрый день! Объекты, которые присутствуют в проекте в единственном экземпляре, такие как “Система” и “Система трекинга”, имеют зарезервированные имена, которые нельзя изменить. Вы всегда можете узнать имя объекта, нажав в панели объектов правой кнопкой мыши по объекту, в выпадающем списке оно будет указано в первой строке(а в скобках будет указан тип объекта). В данном случае имена объектов - “TrackingSystem” и “System” соответственно.

local trackingSystem = reactorController:getReactorByName("TrackingSystem")
local system = reactorController:getReactorByName("System")
Отредактировано 09 Июл, 2025 16:59

Добрый день! Ниже пример кода, который создает в цикле 10 реакторов моделей, загружаемых из ресурсов. Добавьте модель в ресурсы через интерфейс студии и укажите необходимое имя в скрипте. Также не забудьте добавить сам скрипт “main.lua” в ресурсы.

function createModel(num)
    reactor = reactorFactory:create("node.model", reactorContext) -- создание реактора типа "Модель"
    reactorController:addReactor(reactor) -- добавление реактора в объект reactorController, управляющий всеми реакторами

    reactor:freeze()    -- заморозка реактора для настройки его параметров

    reactor.name                    = "model_logo_" .. num
    reactor.model                   = resourceRepository:getResourceByName("ev_model.fbx") -- получения ресурса по имени
    reactor.nodeMask                = NodeReactor.Mask.VISIBLE -- маска узла, в данном случае видимая
    reactor.rotate                  = osg.Vec3(90, 0, 0)    -- вращение модели, в данном случае 90 градусов по оси X
    reactor.trans                   = osg.Vec3(num, 0, 0)   -- перемещение модели, в метрах

    reactor:thaw()
    reactor:configure() -- завершение конфигурации реактора

    return reactor
end

local scene = reactorController:getReactorByName("Scene")

for i = 1, 10 do
    scene:addChild(createModel(i)) -- добавление созданной модели в сцену
end

Отредактировано 22 Ноя, 2024 18:38