ilya.saitov Posted October 30, 2023 Posted October 30, 2023 (edited) Хочу сделать трек с облетом камеры вокруг объекта на воде с использованием PlayerPersecutor. Посмотрел обучающее видео как сделать Track, изучил пример Tracker из csharp_component_samples. Задумка удалась, обрадовался я. И решил заняться настройками графики сцены, буквально сделал пару переключений между шаблонами пресетов, вернул как было и при запуске сцены я наблюдаю такую картину: Подумал, наверное сбились какие то настройки. Потыкал, решил выйти из сцены без сохранения, зашел обратно - не помогло. Решил проверить трек - в редакторе работает все идеально. Запускаю - снова та же картина. Решил пересоздать ноды на сцене, все удалил, добавил обратно - не помогло. Решил проверить с другой камерой - PlayerDummy. Запускаю и все работает! Наверное дело в настройках камеры. Смотрю, а у меня TargetNode нулевой стоит. Выставил, запустил - та же картина. Перезагружаю сцену в редакторе - TargetNode у PlayerPersecutor пустой снова. Пробую повторить ошибку - запускаю программу, вижу картину на скриншоте, перезагружаю сцену - TargetNode пустой. Вывод: у PlayerPersecutor "отлетает" TargetNode при попытке запустить трек с PlayerPersecutor. Но вот проблема, почему у меня до этого все получалось и все было нормально, а после того, как я покопался в настройках, начались глюки с PlayerPersecutor. Причем больше скажу, даже если я не запускаю трек, а только лишь в сцене имеется компонент с Tracker.cs (из примера Tracker из csharp_component_samples), то все равно у PlayerPersecutor "отлетает" TargetNode. Пробовал создавать пустой проект и повторил данную ошибку на кубиках. В общем на данный момент остался без PlayerPersecutor, а он мне он очень нужен для моей сцены. Только если свой писать... p.s. код вообще не трогал, сделал 1 в 1 как в примере. Edited October 30, 2023 by ilya.saitov
bmyagkov Posted October 31, 2023 Posted October 31, 2023 Добрый день! Илья, большое спасибо что вы так подробно описали проблему, но, к сожалению, это не поможет нам ответить на вопрос в чем именно кроется причина такого поведения. Вы бы не могли подготовить небольшой семпл проект "на кубиках" с возможностью воспроизведения на нашей стороне? Готовую сцену можно запаковать в ".upackage" архив нажав правой кнопкой мыши на ".world" файл из Asset Browser и выбрав из выпадающего меню "Export As Package" после чего прикрепить его к сообщению. Спасибо!
bmyagkov Posted October 31, 2023 Posted October 31, 2023 10 hours ago, ilya.saitov said: p.s. код вообще не трогал, сделал 1 в 1 как в примере. Также, уточните, пожалуйста, на какой пример вы ориентировались? Спасибо!
ilya.saitov Posted October 31, 2023 Author Posted October 31, 2023 13 hours ago, bmyagkov said: Добрый день! Илья, большое спасибо что вы так подробно описали проблему, но, к сожалению, это не поможет нам ответить на вопрос в чем именно кроется причина такого поведения. Вы бы не могли подготовить небольшой семпл проект "на кубиках" с возможностью воспроизведения на нашей стороне? Готовую сцену можно запаковать в ".upackage" архив нажав правой кнопкой мыши на ".world" файл из Asset Browser и выбрав из выпадающего меню "Export As Package" после чего прикрепить его к сообщению. Спасибо! Здравствуйте! Пример Tracker из csharp_component_samples: Ниже прикрепляю запакованную сцену. В ней сейчас включена нода Fly Camera Nice, которая содержит PlayerDummy. Запустите и увидите, что все работает. Затем отключите ноду Fly Camera Nice и включите Fly Camera Error, которая содержит PlayerPersecutor и запустите сцену. Вы увидите, что камера никуда не двигается, хотя трек test_bad.track работает как нужно в редакторе (откройте данный трек в Tracker в редакторе и убедитесь). После запуска сцены с Fly Camera Error попробуйте перезагрузить мир - вы увидите, что у PlayerPersecutor отсутствует Target Node, хотя до этого был test tracker.upackage
bmyagkov Posted November 1, 2023 Posted November 1, 2023 Добрый день! Илья, спасибо за пример. Здесь комплексная проблема: 1) К сожалению, Player Persecutor не работает с Node Reference и это известное ограничение; 2) Player Persecutor имеет свою логику положения в мире, поэтому двигать трекером его не получится, так как он все равно применит свою трансформацию; 3) В редакторе всё работает, потому что в нем отключена собственная логика Player Persecutor и это сделано для того, чтобы была возможность его выставить и настроить; В данный момент объект Player Persecutor стоит в очереди на рефакторинг и единственный выход использовать его как есть, либо писать свою собственную реализацию. Один из примеров имплементации вместе с исходным кодом на C# можно найти в наших примерах Samples -> Demos -> C# Component Samples -> Cameras -> Persecutor https://developer.unigine.com/en/docs/2.17/sdk/demos/csharp_component_samples/cameras?rlang=cpp
ilya.saitov Posted November 6, 2023 Author Posted November 6, 2023 (edited) Спасибо за ответ! Жаль этого не отражено в документации, 8 часов не улетело бы в труху) Другой момент, на который уже улетело пол дня. Сначала думал развалился проект и пришлось собирать заново (даже unigine переустановил), но выявилось, что ситуация повторилась. И как оказалось - виной всему все тот же Tracker. Повторил ситуацию, при которой возникает ошибка. Ошибка пропадает, если на сцене отключить Tracker Manager. Здесь показалась на одном компоненте, в проекте у меня при включении Tracker Manager "отлетают" ссылки на некоторые компоненты сцены, как показано ниже. Это не лечится ни созданием нового компонента, новой ноды, сценой, новым проектом и т.п. Прикладываю ниже сцену test tracker 2.upackage Edited November 6, 2023 by ilya.saitov
ilya.saitov Posted November 6, 2023 Author Posted November 6, 2023 проблема решилась так - вместо ссылок на компоненты через паблик поля, сделал поиск компонентов на сцене через _notificationHandler = World.GetNodeByName("Notification Manager").GetComponent<NotificationHandler>(); Но все равно загадка - почему Tracker Manager как бы удалял ссылки на компонент при запуске мира. Также вопрос - есть ли способ запуска приложения с чисткой кеша? просто бывает внесешь изменения и ошибка остается, запускаешь еще раз, еще раз и она пропадает. Бывает перезапуск редактора помогает.
Recommended Posts