Не работает функция OnBecameVisible.

Программирование на Юнити.

Не работает функция OnBecameVisible.

Сообщение Sergasteam 11 мар 2012, 15:24

Всем здравствуйте,полазил по форуму, что здесь, что на иностранном и в документации по движку,нету ни одного решения как все таки скрыть объекты за спиной камеры,чтобы невидимые объекты не нагружали видеокарту,да и вообще производительность. Так вот,функция OnBecameInvisible-скрыть объект,работает нормально,т.е. обязательно нужно чтобы ни одна камера юнити не смотрела на объект, и объект будет скрыт. А вот обратно, как только невидимый объект попадает в поле зрения любой камеры, так он все так же не отображается. Чтобы вы все поняли вот выкладываю скрипт:

Синтаксис:
Используется javascript
OnBecameInvisible()
{
renderer.enabled=false;
}
OnBecameVisible()
{
renderer.enabled=true;
}
 


Из моих предположений,так как объект !renderer, то его меш так же не видим,т.е. от объекта остается только его имя,а с другой стороны, например если прикрепить box collider и камерой создать бесконечный луч который будет сталкиваться с объектом, то объект поидее должен появиться, но как быть со случаем,если перед этим самым 1-м объектом стоит второй объект,который не должен быть скрыт? Вообщем загвоздка с оптимизацией,помогите кто чем сможет.
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Не работает функция OnBecameVisible.

Сообщение Woolf 11 мар 2012, 17:04

Они и так не рендерятся. Даже если boundingbox попадает в в обзор камеры, а сами полигоны нет (такое бывает иногда) - всё равно, эти полигоны отбрасываются на конвеере, что оптимизирует по филлрейту. И это даже не на движке реализовано, а на самом железе видеокарты. Железо нонче вумное пошло. А на уровне движка идёт отбрасывание объектов по boundingbox. Вы, кстати, можете сами проверить по DС - поставьте на террейн кучу объектов, подойдите к краю террейна и отвернитесь от них. дк сразу уменьшится, фпс возрастёт. Далее - оптимизацию нужно делать лодами. В 3.5 этот функционал уже есть, я правда, не уверен, может оно только для про.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Не работает функция OnBecameVisible.

Сообщение Sergasteam 11 мар 2012, 18:19

т.е. хотите сказать, что в движке уже заложена эта функция "отрезания мэшей" за спиной камеры? Но ведь если даже так,то сцена все равно тормозит,мне кажется,что это из за загруженных объектов в памяти,которые нужно удалять и заново инстансировать(но это решение оптимально для большого города с использованием триггеров). Не отрицаю,возможно из за переменной, которая все время плюсуется,либо лайтмаппинг,но с лайтмаппингом я справился,все лампочки отключил,но все равно сцена тормозит. Возможно ли из за большого количества коллайдеров в сцене?
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Не работает функция OnBecameVisible.

Сообщение Woolf 11 мар 2012, 19:11

Sergasteam писал(а):т.е. хотите сказать, что в движке уже заложена эта функция "отрезания мэшей" за спиной камеры? Но ведь если даже так,то сцена все равно тормозит,мне кажется,что это из за загруженных объектов в памяти,которые нужно удалять и заново инстансировать(но это решение оптимально для большого города с использованием триггеров). Не отрицаю,возможно из за переменной, которая все время плюсуется,либо лайтмаппинг,но с лайтмаппингом я справился,все лампочки отключил,но все равно сцена тормозит. Возможно ли из за большого количества коллайдеров в сцене?


Конечно заложена. Иначе смысл вообще от движка тогда? По поводу количества коллайдеров - если используете мешколлайдеры - то конечно возможно из-за них. Используйте бокс-коллайдеры. А вообще, посмотрите профайлером, что у вас тормозит. Да еще - если речь идёт о городе - используйте лоды, батчинг и лайтмаппинг. Лоды - обязательно. Во первых - вы сбросите нагрузку при расчёте коллайдеров, во вторых уменьшите полигонаж ну и в третьих - ускорите рендеринг за счёт использования более быстрых шейдеров.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Не работает функция OnBecameVisible.

Сообщение Sergasteam 11 мар 2012, 19:30

а где это профайл найти? стандартный лог?
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Не работает функция OnBecameVisible.

Сообщение Woolf 11 мар 2012, 19:53

Sergasteam писал(а):а где это профайл найти? стандартный лог?


В меню Window опция Profiler
Появится вот такое окошечко:

Изображение

Запускаете проект и смотрите ,что больше всего занимает времени. В моём случае - это рендеринг и тени.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Не работает функция OnBecameVisible.

Сообщение Sergasteam 11 мар 2012, 20:12

а это в 3.4 юнити есть? или только в 3.5?
Sergasteam
UNIт
 
Сообщения: 68
Зарегистрирован: 16 янв 2011, 00:04

Re: Не работает функция OnBecameVisible.

Сообщение Woolf 11 мар 2012, 20:25

Sergasteam писал(а):а это в 3.4 юнити есть? или только в 3.5?


Хм.. 3.4 не уверен. А в 3.5 про - точно есть )
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Не работает функция OnBecameVisible.

Сообщение Neodrop 11 мар 2012, 20:44

Профайлер есть начиная с версии 3.0
Просто он есть только в ПРО версии.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13