ilya.saitov Posted October 30, 2023 Share 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 Link to comment
bmyagkov Posted October 31, 2023 Share Posted October 31, 2023 Добрый день! Илья, большое спасибо что вы так подробно описали проблему, но, к сожалению, это не поможет нам ответить на вопрос в чем именно кроется причина такого поведения. Вы бы не могли подготовить небольшой семпл проект "на кубиках" с возможностью воспроизведения на нашей стороне? Готовую сцену можно запаковать в ".upackage" архив нажав правой кнопкой мыши на ".world" файл из Asset Browser и выбрав из выпадающего меню "Export As Package" после чего прикрепить его к сообщению. Спасибо! Link to comment
bmyagkov Posted October 31, 2023 Share Posted October 31, 2023 10 hours ago, ilya.saitov said: p.s. код вообще не трогал, сделал 1 в 1 как в примере. Также, уточните, пожалуйста, на какой пример вы ориентировались? Спасибо! Link to comment
ilya.saitov Posted October 31, 2023 Author Share 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 Link to comment
bmyagkov Posted November 1, 2023 Share 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 Link to comment
ilya.saitov Posted November 6, 2023 Author Share Posted November 6, 2023 (edited) Спасибо за ответ! Жаль этого не отражено в документации, 8 часов не улетело бы в труху) Другой момент, на который уже улетело пол дня. Сначала думал развалился проект и пришлось собирать заново (даже unigine переустановил), но выявилось, что ситуация повторилась. И как оказалось - виной всему все тот же Tracker. Повторил ситуацию, при которой возникает ошибка. Ошибка пропадает, если на сцене отключить Tracker Manager. Здесь показалась на одном компоненте, в проекте у меня при включении Tracker Manager "отлетают" ссылки на некоторые компоненты сцены, как показано ниже. Это не лечится ни созданием нового компонента, новой ноды, сценой, новым проектом и т.п. Прикладываю ниже сцену test tracker 2.upackage Edited November 6, 2023 by ilya.saitov Link to comment
ilya.saitov Posted November 6, 2023 Author Share Posted November 6, 2023 проблема решилась так - вместо ссылок на компоненты через паблик поля, сделал поиск компонентов на сцене через _notificationHandler = World.GetNodeByName("Notification Manager").GetComponent<NotificationHandler>(); Но все равно загадка - почему Tracker Manager как бы удалял ссылки на компонент при запуске мира. Также вопрос - есть ли способ запуска приложения с чисткой кеша? просто бывает внесешь изменения и ошибка остается, запускаешь еще раз, еще раз и она пропадает. Бывает перезапуск редактора помогает. Link to comment
Recommended Posts