Руководство новичка by JatStudio 2009 glscene руководство новичка, JatStudio, 2009
Скачать 0.63 Mb.
|
GLScene руководство новичка , Jat-Studio, 2009 GLLightSource Сначала я объясню , что свет делает в GLScene. Без света сцена темная и нецветная Свет делает ее светлой и яркой Максимум можно иметь восемь источников света Любой свет кроме параллельного имеет предел дальности свечения От источника света к границе его свечения свет от этого источника постепенно уменьшается Это называется ослаблением света Свет от LightSource не создает теней Если , например источник света направлен на сферу , а за ней находится плоскость , то на плоскости тени мы не увидим Свет проходит через сферу , нисколько ее не замечая Вы должны использовать другие методики , чтобы получить тени Например , Lightmaps, Z-Shadows или Shadow Volumes. Существует три типа света : 1. Omni Light – источник света находится в определенной точке Лучи от него расходятся радиально по всем направлениям Вы можете , например , представить электрическую лампочку , висящую где - нибудь на проводе 2. Spot Light – единичный луч света или конус направленного света Вы можете изменить ширину и угол света Если изменить угол на 360°, то свет станет типа Omni. Пример Spot Light – свет фонарика 3. Parallel Light – однородная масса параллельных лучей с одинаковым направлением , которые светят от некоторой плоскости в бесконечность Изменение позиции параллельного источника света не имеет никакого эффекта Параллельный свет обычно используют для симуляции равномерного освещения GLDummyCube GLScene имеет вспомогательные объекты Вспомогательный объект невидим и позволяет организовывать другие объекты в группы Вы должны знать , как использовать DummyCube в максимально возможной степени , так как это упрощает множество вещей DummyCube может использоваться чтобы хранить объекты в качестве собственных потомков Если вы , например , хотите переместить все объекты , помещенные в DummyCube, вы должны просто изменить положение самого DummyCube. Если хотите удалить объекты , помещенные в DummyCube, просто вызовите функцию DeleteChildren объекта DummyCube. Аналогично упрощаются вращения объектов Вы можете создать суставы как DummyCube, где каждый DummyCube ограничит вращение сустава в одной из осей Вы можете сделать DummyCube видимым во время выполнения приложения с помощью свойства VisibleAtRuntime. DummyCube представлен как кубик с обозначенными гранями в виде пунктирных линий Базовая геометрия Базовые объекты геометрии – простые объекты с фиксированной формой Геометрия может быть описана математическими формулами Вы можете изменить индивидуальные параметры объекта , но его форма все равно останется неизменной GLSprite Спрайт это двухмерное изображение , натянутое на плоскость Он всегда повернут к камере лицом В отличие от HUD спрайта , GLSprite размещается в 3D пространстве и может отдаляться или приближаться к камере Если спрайт приближается слишком близко к камере , то могут произойти визуальные ошибки Спрайтам обычно накладывают прозрачную текстуру Изображение может поворачиваться вокруг центра , с помощью свойства Rotation. GLScene руководство новичка , Jat-Studio, 2009 GLPoints С помощью этого объекта вы можете создать как одну точку , так и целый массив точек Эти точки расположены в 3D пространстве Они имеют параметр Size, который определяет диаметр точек в пикселях Если точка будет иметь диаметр 3, то на экране она будет представлена размером в три пикселя , независимо от того , отдаляется она от камеры или приближается Перспектива к ним не применяется Точки могут быть круглыми , квадратными и необъединенными GLLines Линии создаются по точкам , соединенным отрезками Точки при этом называют узлами Линии имеют ширину Они , также как и точки , не зависят от перспективы Узлы могут быть видимыми или невидимыми Узлы можно представить в виде кубиков , звезд или сфер , с изменяемыми размерами GLPlane GLPlane – плоскость это одиночный четырехугольник Четырехугольник представляет собой полигон , скомпонованный из четырех вершин и двух треугольников Плоскость имеет параметры ширины и высоты Также важно направление (Direction) плоскости Оно указывается нормалью плоскости Нормаль здесь – это вектор , который указывает , какая сторона плоскости лицевая , а какая задняя Если мы посмотрим на плоскость с лицевой стороны , мы ее увидим , если с задней – не увидим Таким образом , мы сможем видеть плоскость , только если ее направление (Direction) указывает в сторону камеры Vertex shading иногда может создавать проблемы , особенно с большими плоскостями Если края плоскости выходят за границы освещения , то вся плоскость может стать неосвещенной GLPolygon [ Нет данных ] GLCube GLCube ( Куб ) составлен из шести плоскостей , причем каждая из них может быть отключена Куб имеет свойства CubeWidth ( ширина ), CubeHeight ( высота ) и CubeDepth ( глубина ). GLFrustrum GLFrustrum ( что - то вроде усеченной пирамиды ) – искривленный куб , с разным размером верхней и нижней сторон GLSphere GLSphere ( сфера ) – имеет параметры Radius ( радиус ) – размер сферы , Segments ( доли ) определяет сколько полигонов будет использоваться при отрисовке сферы и , соответственно , насколько гладкой будет ее поверхность GLDisk [ Нет данных ] GLCone [ Нет данных ] GLCylinder [ Нет данных ] GLDodecahedron [ Нет данных ] GLScene руководство новичка , Jat-Studio, 2009 GLIcosahedron [ Нет данных ] Дополнительная геометрия Более сложная , чем базовая геометрия , но описание такое же GLAnimationSprite GLAnimationSprite ( анимированный спрайт ) основан на спрайте обыкновенном , но отображает анимированную последовательность рисунков Эта анимированная последовательность должна быть сохранена в единственном файле Битмап разделен на строки и столбцы Сетка содержит конкретные кадры анимации Эта методика является огромной возможностью для создания всевозможных эффектов взрыва или дыма , но битмап вы должны делать самостоятельно GLArrowLine GLArrowLine – это комбинация цилиндра и конуса ( этакая трехмерная стрелка ). Вы можете изменять ширину и высоту у обоих элементов Направление стрелки указывается с помощью вектора Direction. GLAnnulus Полая труба GLExtrusionSolid [ Нет данных ] GLMultiPolygon [ Нет данных ] GLPipe [ Нет данных ] GLRevolutionSolid [ Нет данных ] GLTorus [ Нет данных ] Объект сетка (mesh) Сеть – совокупность полигонов , с определенными вершинами , координатами текстуры и информацией о связи полигонов между собой Группа объектов сетки имеет одну общую особенность – геометрия объекта должна быть загружена из определенного файла Такие файлы обычно создаются в различных программах 3D моделирования Таких как , например , 3DSMax, Maya, Milkshape. Поддерживаются форматы *.3ds*, *.obj*, *.md2*, *.md3*, *.smd* и другие GLActor Этот объект вы можете использовать , если хотите создать анимированный 3D объект Например , это может быть некоторое живое существо . GLActor основан на GLFreeForm, но оптимизирован для движения Анимации должны быть загружены в Animations. GLActor нуждается в компоненте AnimationControler. Вы можете использовать Quake *.md2* формат Этот формат содержит набор сеток (meshes) в ключевых кадрах анимации Остальные кадры создаются в зависимости от ключевых с плавным переходом между ними Этот формат является быстрым и подходит для низкополигональной модели GLScene руководство новичка , Jat-Studio, 2009 Другой формат – HalfLife *.smd*. Он использует так называемую скелетную анимацию Объект имеет структуру скелета , привязанную к костям Анимация описана в виде сохраненных значений углов между конкретными костями во времени Различная анимация может совмещаться во время выполнения приложения GLFreeForm Этот объект используется довольно часто Он способен загружать геометрию из различных форматов сетки (mesh). Чтобы формат смог использоваться , нужно добавить в раздел uses одноименный модуль формата файла Например , чтобы использовать формат *.3ds* необходимо добавить модуль GLFile3DS. Для загрузки геометрии используется функция LoadFromFile конкретного GLFreeForm. Координаты тестуры обычно включены в файл Некоторые форматы поддерживают мультитекстурирование ( использование множества текстур одновременно для одного объекта ) объектов Вы должны установить используемые текстуры в список Mesh list. Для успешной загрузки текстуры геометрия должна загрузиться перед ней GLMesh [ Нет данных ] GLTilePlane [ Нет данных ] GLPortal [ Нет данных ] GLTerrainRenderer GLTerrainRenderer используется для отрисовки окружающего ландшафта Преимущество GLTerrainRenderer в том , что он использует оптимизацию LOD. LOD – Level Of Detail – уровень детализации сцены Ландшафт составлен из так называемых четверок (quads). Четверки , расположенные ближе к камере , имеют бòльшую детализацию , нежели более дальние Четверки , расположенные далеко от камеры , растягиваются на большие области и теряют детализацию Это приводит к меньшему количеству используемых полигонов ( и ускорению приложения соответственно ), при почти неизменном качестве Данные для GLTerrainRenderer предоставляются компонентами HDS, которые описывались ранее По умолчанию вектор Up GLTerrainRenderer сонаправлен с осью Z сцены Объекты , построенные на точках Эта группа объектов часто используется для каких - либо научных приложений Форма этих объектов задается математическими уравнениями GLFlatText [ Нет данных ] GLHeightField [ Нет данных ] GLXYZGrid Показывает пространственную сеть по осям X, Y и Z. Любая из осей может быть отключена Размеры ячеек сетки могут быть изменены Системы частиц Частицы – большое количество маленьких спрайтов , сгенерированных согласно определенным правилам Частицами создаются специальные эффекты , такие как огонь , дым , взрыв , дождь или снег GLScene руководство новичка , Jat-Studio, 2009 GLParticles [ Нет данных ] GLPFXRenderer GLPFXRenderer – вспомогательный объект , который должен быть представлен в сцене , на которой нужны , должным образом обработанные , эффекты частиц Система работает так : сначала в PFXManager описываются параметры эффекта , эффект добавляется в свойстве Effects нужного объекта и , наконец , PFXRenderer заботится о рендеринге частиц Эта система кажется слишком сложной , зато она очень гибкая и настраивается довольно широко Объекты окружающего пространства По умолчанию фоновый цвет сцены светло - серый Этот цвет определяется свойством SceneViewer.Buffer.BackgroundColor. Если вы хотите использовать в качестве фона неоднородный цвет , используйте объекты окружающего пространства (Environment objects). GLEarthSkyDome [ Нет данных ] GLSkyDome GLSkyDome ( купол неба ) создает градиентный цвет , полосы которого расположены горизонтально Вы можете использовать столько полос , сколько захотите Вы можете добавить маленькие точки ( звезды ) в список Stars. Эти звезды могут сверкать GLSkyBox GLSkyBox – большой куб , с перевернутой нормалью , и шестью текстурами , охватывающими горизонт Текстуры должны быть выровнены друг относительно друга , чтобы создать панорамную иллюзию HUD объекты HUD – Head Up Display { буквально : Нашлемный дисплей ( внешний вид интерфейса )}. Эти объекты выводят на экран картинки ( битмапы ). Их позиция определяется только по X и Y. Где X – горизонтальная , а Y – вертикальная позиция HUD объекта Точка [0, 0] находится в левом верхнем углу окна Не заботьтесь о порядке рендеринга этих объектов ( только если между собой ), они всегда рендерятся последними GLHUDSprite Универсальный HUD объект Выводит на экран двухмерную картинку Используйте GLMaterialLibrary, чтобы хранить текстуру Часто используются прозрачные текстуры Текстура должна быть двухмерной Вы можете изменить размер этого объекта с помощью свойств Width и Height. GLHUDSprite может вращаться вокруг себя , за это отвечает свойство Rotation. GLHUDText Этот HUD объект выводит на экран текст , указанный в свойстве Text. Шрифт текста указывается с помощью использования компонентов шрифта GLScene. GUI объекты GLScene руководство новичка , Jat-Studio, 2009 [ Нет данных ] по следующим GUI объектам : GLRootControl GLPopupMenu GLForm GLPanel GLButton GLCheckBox GLEdit GLLabel GLAdvancedLabel GLScrollBar GLStringGrid GLBitmapControl Специальные объекты Эти объекты не подпадают ни под какую другую категорию GLLensFlare GLLensFlare моделирует эффект , который возникает при взгляде камеры на сильный источник света в реальном мире Этот эффект добавит больше реализма вашей сцене GLLensFlare помещается обычно в ту же позицию , что и сам источник света Кольца и полосы создаются при взгляде прямо на GLLensFlare. В настройках можно указать их количество , размер и качество . GLLensFlare не создает эффекта , если находится позади другого объекта , по отношению к камере GLTextureLensFlare [ Нет данных ] GLMirror [ Нет данных ] GLShadowPlane GLShadowPlane – быстрая техника для динамичекого рендера теней Тени проецируются только на эту плоскость Для их использования вы должны включить буфер трафарета (stencil buffer) у GLSceneViewer. Назначьте источник света , от которого будут производиться тени и затеняемый объект Указанный объект и все его потомки бросят тени на плоскость Z-plane. GLShadowVolume [ Нет данных ] GLScene руководство новичка , Jat-Studio, 2009 GLZShadows [ Нет данных ] GLTextureEmitter [ Нет данных ] GLProjectedTextures [ Нет данных ] GLBlur [ Нет данных ] GLTrail [ Нет данных ] Безделушки (Doodad objects) Специальная категория , вид наиболее передовой геометрии GLSpaceText Этот объект показывает текст в виде трехмерных букв или надписей Используются стандартные Windows шрифты У текста можно изменить глубину (Extrusion). GLTeapot Чайник – объект , хорошо известный по 3DS MAX. GLTree C помощью этого объекта создаются реалистично выглядящие деревья У этого объекта множество параметров , которые позволяют создать практически любой вид деревьев Дерево состоит из одного главного ствола , с отходящими от него ветвями и листьями Количество ветвей ( и соответственно полигонов ) указывается свойством Depth. Листья представлены в виде плоскостей с покрытыми текстурами передней и задней частью GLWaterPlane Этот объект создает довольно хорошо выглядящую реалистичную воду Остальные объекты GLDirectOpenGL Выполните ваши собственные команды OpenGL. Вы должны знать язык OpenGL, чтобы использовать этот объект GLProxyObject В случае , когда вы имеете много одинаковых объектов на сцене , особенно если они GLFreeForm, то , для оптимизации вашего приложения , вы можете использовать GLProxyObject. Вы можете значительно облегчить разработку и ускорить рендеринг приложения . GLProxyObject наследует геометрию объекта , указанного в свойстве Master object. Остальные параметры прокси объектов , такие как позиция , направление или масштаб индивидуальны для каждого прокси объекта GLMultiProxy GLMultiProxy – это более передовая версия объекта GLProxyObjects. Он имеет больше Master object, которые выбираются в зависимости от расстояния до камеры |