Difference between revisions of "GLScene/ru"

From Free Pascal wiki
Jump to navigationJump to search
Line 31: Line 31:
 
*общая поддержка шэйдеров
 
*общая поддержка шэйдеров
 
*высокоуровневая поддержка классов Cg шэйдеров
 
*высокоуровневая поддержка классов Cg шэйдеров
*polymorphic image support for texturing (allows many formats as well as procedural textures), easily extendable
+
*полиморфные изображения для текстурирования (позволяют использовать множество форматов также хорошо как и процедурные текстуры, с простым расширением
*more than 150 predefined colors like clrCornflowerBlue or clrCoolCopper (easily extendable) *in addition to standard colors and direct RGBA specifications
+
*более чем 150 предопределенных цветов таких как clrCornflowerBlue или clrCoolCopper (легко расширяемые) *в дополнение к стандартным цветам и прямому использованию спецификации RGBA
*easily to use texture movement and scaling properties, independently from texture coordinates
+
*простое использование перемещения и масштабирования свойств текстур, независимо от координат текстур
*32 bits Bitmap support class
+
*поддержка 32-битны растровых классов
  
Rendering
+
Визуализация
*automatically uses the hardware OpenGL driver if available
+
*автоматическое использование аппаратных возможностей OpenGL, при их наличие
*a well working camera model using focal length and targeting
+
*использование с моделью камеры, фокуса, расстояния и цели
*multiple viewers for one or more scenes, easy change of view through camera selection
+
*множество точек обзора для одной или больше сцен, простая смена вида через выбор камеры
*fog and depth-of-view support
+
*поддержка тумана и глубины вида
*render to a file, a bitmap or to the printer in any color and pixel resolution
+
*визуализация в файл в виде растровой картинки или на принтер в любом цвете и разрешениии
*full screen support with dynamic resolution changes
+
*поддержка полно-экранного режима с динамической сменой разрешения
*reflections and mirror effects
+
*эффекты отражения и зеркала
*dynamic shadow casting
+
*динамические тени
*high-performance scene-wide transparent particles system support
+
*высокопроизводительная поддержка системы прозрачных частиц во всей сцене
 
*automatic frustrum culling (hierarchical or per-object)  
 
*automatic frustrum culling (hierarchical or per-object)  
  
Animation
+
Анимация
 
*propagation of time progression events  
 
*propagation of time progression events  
 
*skeletal animation (multiple bones per vertex)  
 
*skeletal animation (multiple bones per vertex)  
Line 56: Line 56:
 
*automatic, realtime scene cadenceing  
 
*automatic, realtime scene cadenceing  
  
Interface
+
Интерфейс
 
*easy-to-use functions to determine picked objects  
 
*easy-to-use functions to determine picked objects  
 
*helper functions for camera movements  
 
*helper functions for camera movements  
Line 62: Line 62:
 
*helper functions for converting between screen and world coordinates, raycasting  
 
*helper functions for converting between screen and world coordinates, raycasting  
  
Utilities
+
Утилиты
 
*optimized geometry functions and utilities (vector, quaternion and matrix...)  
 
*optimized geometry functions and utilities (vector, quaternion and matrix...)  
 
*cubic spline support functions and class  
 
*cubic spline support functions and class  

Revision as of 11:09, 21 March 2009

О GLScene

GLScene это основанная на OpenGL 3D библиотека. Изначально была написана для Delphi, но теперь спокойно работает с C++ Builder, Kylix, Delphi и Lazarus.

Основные карактеристики :

Описание сцены

  • иерархическая структура объектов с множеством объектов (количество зависит от ОЗУ) и простотой расширения
  • интерактивное управление сценой (numerous Delphi experts)
  • простые функции вращения и перемещения для каждого объекта
  • предопределенные объекты (все стандартные от куба до чайника и спрайтов), легко расширяемые
  • структурные объекты (каркасный куб, прокси-объект) для управления композитными объектами
  • процедурные объекты (heightfield, вращение твердых тел, трубы, tesselators...)
  • поддержка 2D и 1D объектов (спрайты, линии с поддержкой сплайнов) полностью интегрирована
  • HUD-объекты (спратый визуализированные в 2D координатах)
  • утилитные объекты (сетки, небо, стрелки...)
  • поддержка классов для прямого доступа OpenGL
  • объекты камеры и света могут быть испольщованы в клюбом месте иерархии объектов сцены
  • поведенческие объекты могут быть привязаны к объектам для их анимации с возможностью расщирения
  • специальные эффекты на объект (до/после визуализации объекта и сцены), с возможностью простого расширения
  • поддержка систем частиц, любые объекты или структуры объектов могут выступать в роли частиц
  • импорт 3D Studio файлов с автоматическим вычислением векторов нормалей (using the given *smoothing groups of the file) и текстурных координат
  • поддержка других форматов импорта: OBJ/OBJF, SMD, MD2, STL, TIN, PLY

Материалы

  • простые в использовании, оптимизированные, объекты материалов
  • библиотека материалов для совместного использования
  • поддержка света: окружающего, диффузного, излучаемого, отраженного и светимости
  • поддержка режимов смешивание (прозрачность, наложения...)
  • автогенерация альфа-канала
  • поддержка форматов OpenGL текстур, включающих сжатие (DXT, S3TC и т.д.)
  • общая поддержка шэйдеров
  • высокоуровневая поддержка классов Cg шэйдеров
  • полиморфные изображения для текстурирования (позволяют использовать множество форматов также хорошо как и процедурные текстуры, с простым расширением
  • более чем 150 предопределенных цветов таких как clrCornflowerBlue или clrCoolCopper (легко расширяемые) *в дополнение к стандартным цветам и прямому использованию спецификации RGBA
  • простое использование перемещения и масштабирования свойств текстур, независимо от координат текстур
  • поддержка 32-битны растровых классов

Визуализация

  • автоматическое использование аппаратных возможностей OpenGL, при их наличие
  • использование с моделью камеры, фокуса, расстояния и цели
  • множество точек обзора для одной или больше сцен, простая смена вида через выбор камеры
  • поддержка тумана и глубины вида
  • визуализация в файл в виде растровой картинки или на принтер в любом цвете и разрешениии
  • поддержка полно-экранного режима с динамической сменой разрешения
  • эффекты отражения и зеркала
  • динамические тени
  • высокопроизводительная поддержка системы прозрачных частиц во всей сцене
  • automatic frustrum culling (hierarchical or per-object)

Анимация

  • propagation of time progression events
  • skeletal animation (multiple bones per vertex)
  • frame interpolation and morph targets
  • easily extendable Behaviours
  • dynamic physics : inertia, acceleration, damping and force application
  • automatic, realtime scene cadenceing

Интерфейс

  • easy-to-use functions to determine picked objects
  • helper functions for camera movements
  • helper functions for picked object's translation
  • helper functions for converting between screen and world coordinates, raycasting

Утилиты

  • optimized geometry functions and utilities (vector, quaternion and matrix...)
  • cubic spline support functions and class
  • mesh manipulation and optimization (stripification, vertex-cache awareness, etc.)
  • component to make full-featured screen-saver in a few clicks
  • precise frame speed determination
  • asynchronous timer (multi-threaded)
  • joystick support
  • asynchronous keyboard access, keymap support

Снимики экрана (Screenshots)

Gl effect.jpg Gl cel.jpg Gl trinity.jpg
Gl ode.jpg

Автор

Author: изначально Mike Lischke
at time maintained by Eric Grange
Порт LCL: Christian Ulrich

Скачать

Последняя версия (v1.0.0.2)

This should be almost identical to the original cvs repository of today in terms of functionality and bugfixes, however, there are still some parts missing. There wont be a "Lazarus-with-GLScene-Installer" with this new release, unless someone else creates it. --Crossbuilder 20:16, 18 July 2007 (CEST)

Устаревшая версия

An older release (version 0.9.1.6) can be found on the Lazarus CCR Files page together with a lazarus installer with GLScene already in the Lazarus IDE and GLScene demoes. UPDATE: This is pretty old now. If possible, use the svn checkout (see below).

SVN

you can checkout the actual source from
http://svn.freepascal.org/svn/fpcprojects/glscene/trunk/

The command would be:

svn co http://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene

This will download the trunk (main) repository to "glscene" dir to whereever you invoked the command from.

In windows you can use clients like tortoise SVN and others.

Bug reporting

Bug Reporting/Featurerequest Please select Project "Packages" and Category "glscene" for your reports. Thanks.


Change Log

  • 18.07.2007 Snapshot release version 1.0.0.2
    • adjusted some things, so it works with latest lazarus svn version
    • added object bitmaps for the SceneEditor
    • fixed another AV in SceneEditor
    • incorporated all patches and bugfixes from original glscene cvs repo like dynamic textures ..
  • 13.06.2007 Snapshot release version 1.0.0.1
    • incorporated all patches and bugfixes from original glscene cvs repo
    • improved scene editor (crashes less, but still needs some love)
      Tip: Save your project frequently ;-)
    • seperated mmsystem dependent stuff from generic sound support so e.g. FMOD is available in linux, too
    • many more ..
  • 01.12.06 Added support for ODE, gtk2 and Cg shaders in Linux (ODE is limited to normal release, unsupported are cone, ccylinder and terrains)
  • 10.08.05 Too many changes to post here see cvs history
  • 16.07.05 GLScene 0.9.X Port
  • look at GLScene Sourceforge Account for complete Changelog

Status: Beta

Установка версии 1.0.0.2

Требуется fpc 2.1.4 или новее и lazarus 0.9.23 rev. 11348 или новее !!

  • распаковка исходного кода
    • ZIP:
      • в каталоге "lazarus/components/" выполните "unzip glscene-1.0.0.2.zip"
        При этом будет создан каталог lazarus/components/glscene/
    • SVN:
      • в каталоге "lazarus/components/" выполните
        svn co http://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene
        При этом будет создан каталоге lazarus/componets/glscene/
      • Tortoise SVN: добавьте каталоге "glscene" вручную, так чтобы получилось lazarus/components/glscene. После этого выполните команду контекстного меню "SVN Checkout..." на созданном каталоге. Введите в поле "URL of repository"
        http://svn.freepascal.org/svn/fpcprojects/glscene/trunk
        Подтвердите кнопкой "OK".


  • Завершение установки:
    • скопируйте "lazarus/components/glscene/globallinks/*.lpl" в "lazarus/packager/globallinks/"
    • запустите lazarus-ide
    • выберите команду "Configure installed packages ..." из меню "Components"
    • выберите "glscenelazarus" из списка "Available packages"
    • щелкните по кнопке "Install selection"
    • щелкните по кнопке "Save and rebuild IDE"
      • ВНИМАНИЕ: Может появится ошибка о том что пакет "jpegforlazarus" не найден. Если такая ошибка появилась, то делайте следующее:
      • Components --> Open loaded package...
      • выберите "glscenelazarus" (Version 1.0.0.3) и щелкните "Open..."
      • Внизу появившегося списка "Required Packages" удалите зависимость от "jpegfromlazarus".
      • Посмотрите модуль "jpeg" в каталоге /lazarus/components/glscene/Source/base и удалите "LazJPEG" (в разделе uses) в модуле "LazJPG" (из пакета ImagesForLazarus).
      • Сохраните и повторите последние 4 шага опять.
      • ПОДСКАЗКА: Вам следует установить пакет "ImagesForLazarus" (тем же самым способом что и пакет "glscenelazarus").
    • повторите последние 4 шага для остальных пакетов, которые вы собираетесь использовать.
      • Заметка: glsceneode и glscenecgshader требуют наличия их библиотек в системе во время инсталяции!
    • Заметка: вы также можете попробовать выбрать и установить все пакеты одновременно.Тем не менее, я предпочитаю делать это шаг за шагом, чтобы видеть где произошла ошибка, если она произошла ;)
    • Install "glscenelazarus" - mistakes: (only needed when using glscene-1.0.0.2.zip, in svn these are already fixed)
      • To correct the unit GLLCLViewer: procedure TGLSceneViewer.CreateParams(var Params: TCreateParams); - at procedure TGLSceneViewerLCL.CreateParams(var Params: TCreateParams);
      • To correct the unit GLLCLViewer: procedure TGLSceneViewer.EraseBackground(DC: HDC); - at procedure TGLSceneViewerLCL.EraseBackground(DC: HDC);
      • To correct the unit GLLCLFullscreenViewer: Change "RegisterClasses([TGLSceneViewer, TGLFullScreenViewer]);" to "RegisterClasses([TGLFullScreenViewer]);"
  • List of packages:
    • glscenelazarus The main package.
    • glscenecgshader Cg Shader components
    • glsceneode ODE components
    • glss_fmodlaz FMOD component
    • gls_winonly Windows only, contains sound support over mmsystem, BASS support and GLScreenSaver component
  • Сompilation "demo" - mistakes:
    • If not found class - TGLSceneViewer: To correct the uses (demo): GLLCLViewer - at GLViewer

Installation version 0.9.6.1

  • Create the directory lazarus\components\GLScene
  • On this directory, unzip the files from the zip file
  • Open lazarus
  • Open the package glscenelazarus.lpk with Component/Open package file (.lpk) from lazarus\components\glscene\Lazarus
  • (Click on Compile is only necessary, if you don't want to install the component into the IDE)
  • Click on Install
  • Repeat these steps (open .lpk, click install) for the other packages you want to use. Note: these additional packages need additional libs (fmod, ode, Cg).
    • glscenecgshader.lpk : Cg shaders (only with NVidia cards?)
    • glsceneode.lpk : support for ode lib
    • glsss_fmodlaz.lpk : support for fmod lib
    • gls_winonly.lpk : this can be installed on windows only. Contains screensaver stuff as well as support for BASS lib.

Hint: sometimes an Error "GLGraphics not found" occurs. Don't worry, just do Tools->Build Lazarus again and it should be ok.

A full install of Lazarus with GLScene already in the IDE is available as binary win32 release or http://www.skinhat.com/lazarus

Just a warning for (new) Linux users: GLScene in its current state is not working "out of the box" (lots of modifications/additions needed). UPDATE: this is not true anymore. glscene for lazarus is pretty up-to-date and most things work good right out of the box for windows as well as for linux.

As of latest trunk version (see svn above) the linux version is working well. Some demos (about 20%) are still broken but the majority of glscene is now working. We're also moving towards making it work in other Unix platforms like FreeBSD.

The missing/nonworking parts on non-windows are: glKeyboard (uses winapi, but is not required mostly), glSound(which uses mm, we need to use openal or somesuch)

Пока в разработке fully featured windows installer.

Помощь