OGRE Manual / Руководство OGRE: 2.3 The SceneManager object
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
В отличие от корневого обьекта (Root), это, вероятно, наиболее важная часть системы с точки зрения приложения. Конечно же, этот обьект приложение будет использовать наиболее часто. Менеджер сцены (SceneManager) отвечает за содержимое сцены, которое визуализируеться движком. Он отвечает за организацию содержимого с использованием наиболее подходящей для этого технологии; за создание и управление камерами, подвижными обьектами, источниками света и материалами (свойствами поверхности обьекта), а также за управление "геометрией мира", которая представляет собой мастштабируемую статическую геометрию обычно используемую для отображения неподвижных частей сцены benjang 05.04.09 в 04:42 |
|
|
Менеджер сцены - это то, к чему вы будете обращаться, когда вам захочеться создать камеру для сцены. К нему же вы будете обращаться для получения или удаления источника света на сцене. Вашему приложению не нужно хранить список обьектов, SceneManager хранит именованый набор всех обьектов, к которым вы можете получить досутп при необходимости. Для справки смотрите в главной документации описания таких методов, как getCamera, getLight, getEntity и т.п. benjang 05.04.09 в 04:50 |
||
|
Менеджер сцены посылает сцену подсистеме рендеринга когда наступает момент для её визуализации. Вам не нужно вызывать метод SceneManager::_renderScene напрямую - он будет вызываться автоматически всякий раз когда область, в которую производиться отрисовка, получает запрос на обновление benjang 05.04.09 в 05:11 |
+1 | |
|
Итак ваше взаимодействие с SceneManager в основном происходит во время создания сцены. Вы можете вызвать большое количество методов (возможно определяемых каким-нибудь входным файлом с данными сцены) для того чтобы создать сцену. Также вы можете изменять содержимое сцены динамически в процессе цикла визуализации, если вы создадите свой объект FrameListener (см. далее). Alexei_987 16.08.09 в 15:17 |
||
|
Поскольку различные типы сцен требуют различных алгоритмических подходов для определения, какие объекты должны быть отправлены в RenderSystem(подсистему рендеринга) для достижения хорошей производительности процесса визуализации, класс SceneManager разработан для того, чтобы наследоваться для различных типов сцен.По умолчанию объект SceneManager осуществляет визуализацию сцены, но практически не занимается оптимизацией сцены и вы не должны ожидать высокой производительности для больших сцен. Ожидается что для каждого типа сцены будут созданы специализированные классы потомки которые будут выполнять оптимизацию сцены для лучшей производительности предполагая что должно быть сделано для конкретного типа сцены. В качестве примера можно привести BspSceneManager, который оптимизирует визуализацию для больших закрытых уровней, основанный на Binary Space Partition (BSP) tree - дереве двоичного разбиения пространства. Alexei_987 16.08.09 в 15:34 |
||
|
Приложение использующее OGRE не должно знать какие подклассы(потомки) доступны. Приложение просто вызывает метод Root::createSceneManager(..) передавая в качестве параметра один из номеров определяющих тип сцены (такие как ST_GENERIC (обобшенный), ST_INTERIOR (интерьер) и т.д.). OGRE автоматически использует лучший для данной сцены потомок класса SceneManager или базовый класс SceneManager если нет специального. Это позволяет разработчикам OGRE добавлять новые специализированные классы для различных сцен, и таким образом оптимизировать ранее не оптимальные типы сцен, при этом не требуя от пользовательских приложений изменения кода. Alexei_987 16.08.09 в 15:48 |
