Jump to content

Ошибка работы камеры PlayerPersecutor при попытке запустить трек


photo

Recommended Posts

Хочу сделать трек с облетом камеры вокруг объекта на воде с использованием PlayerPersecutor. Посмотрел обучающее видео как сделать Track, изучил пример Tracker из csharp_component_samples. Задумка удалась, обрадовался я. И решил заняться настройками графики сцены, буквально сделал пару переключений между шаблонами пресетов, вернул как было и при запуске сцены я наблюдаю такую картину:

image.thumb.png.39cdfc253933621792369ec46dc69640.png

Подумал, наверное сбились какие то настройки. Потыкал, решил выйти из сцены без сохранения, зашел обратно - не помогло. Решил проверить трек - в редакторе работает все идеально. Запускаю - снова та же картина. Решил пересоздать ноды на сцене, все удалил, добавил обратно - не помогло.

Решил проверить с другой камерой - PlayerDummy. Запускаю и все работает! Наверное дело в настройках камеры. Смотрю, а у меня TargetNode нулевой стоит. Выставил, запустил - та же картина. Перезагружаю сцену в редакторе -  TargetNode у PlayerPersecutor пустой снова. Пробую повторить ошибку - запускаю программу, вижу картину на скриншоте, перезагружаю сцену - TargetNode пустой.

Вывод:  у PlayerPersecutor "отлетает" TargetNode при попытке запустить трек с PlayerPersecutor. 

Но вот проблема, почему у меня до этого все получалось и все было нормально, а после того, как я покопался в настройках, начались глюки с PlayerPersecutor. 

 

Причем больше скажу, даже если я не запускаю трек, а только лишь в сцене имеется компонент с Tracker.cs (из примера Tracker из csharp_component_samples), то все равно у PlayerPersecutor "отлетает" TargetNode. 

 

Пробовал создавать пустой проект и повторил данную ошибку на кубиках. В общем на данный момент остался без PlayerPersecutor, а он мне он очень нужен для моей сцены. Только если свой писать...

p.s. код вообще не трогал, сделал 1 в 1 как в примере.

Edited by ilya.saitov
Link to comment

Добрый день!

Илья, большое спасибо что вы так подробно описали проблему, но, к сожалению, это не поможет нам ответить на вопрос в чем именно кроется причина такого поведения.

Вы бы не могли подготовить небольшой семпл проект "на кубиках" с возможностью воспроизведения на нашей стороне? Готовую сцену можно запаковать в ".upackage" архив нажав правой кнопкой мыши на ".world" файл из Asset Browser и выбрав из выпадающего меню "Export As Package" после чего прикрепить его к сообщению.

Спасибо!

Link to comment
10 hours ago, ilya.saitov said:

p.s. код вообще не трогал, сделал 1 в 1 как в примере.

Также, уточните, пожалуйста, на какой пример вы ориентировались?

Спасибо!

Link to comment
13 hours ago, bmyagkov said:

Добрый день!

Илья, большое спасибо что вы так подробно описали проблему, но, к сожалению, это не поможет нам ответить на вопрос в чем именно кроется причина такого поведения.

Вы бы не могли подготовить небольшой семпл проект "на кубиках" с возможностью воспроизведения на нашей стороне? Готовую сцену можно запаковать в ".upackage" архив нажав правой кнопкой мыши на ".world" файл из Asset Browser и выбрав из выпадающего меню "Export As Package" после чего прикрепить его к сообщению.

Спасибо!

Здравствуйте! 
Пример Tracker из csharp_component_samples:

image.thumb.png.f1bd0123ec663ee5af7647bebe2a9c89.png

Ниже прикрепляю запакованную сцену. В ней сейчас включена нода  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

Добрый день!

Илья, спасибо за пример. Здесь комплексная проблема:

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

Спасибо за ответ! Жаль этого не отражено в документации, 8 часов не улетело бы в труху)

Другой момент, на который уже улетело пол дня. Сначала думал развалился проект и пришлось собирать заново (даже unigine переустановил), но выявилось, что ситуация повторилась. И как оказалось - виной всему все тот же Tracker. 

Повторил ситуацию, при которой возникает ошибка. Ошибка пропадает, если на сцене отключить Tracker Manager. Здесь показалась на одном компоненте, в проекте у меня при включении Tracker Manager "отлетают" ссылки на некоторые компоненты сцены, как показано ниже. Это не лечится ни созданием нового компонента, новой ноды, сценой, новым проектом и т.п.

Прикладываю ниже сцену

image.thumb.png.42772cb50a2b8dd81d0ef4499122e0eb.png

test tracker 2.upackage

Edited by ilya.saitov
Link to comment

проблема решилась так - вместо ссылок на компоненты через паблик поля, сделал поиск компонентов на сцене через 

_notificationHandler = World.GetNodeByName("Notification Manager").GetComponent<NotificationHandler>();

 

Но все равно загадка - почему Tracker Manager как бы удалял ссылки на компонент при запуске мира. 

 

Также вопрос - есть ли способ запуска приложения с чисткой кеша? просто бывает внесешь изменения и ошибка остается, запускаешь еще раз, еще раз и она пропадает. Бывает перезапуск редактора помогает. 

Link to comment
×
×
  • Create New...