MESHTOOL/OGFVIEWER README, FAQ [201012xx]


  1. Что это?

  2. Что умеем?

  3. Комплектация пакета

  4. Отличия, особенности версий ogfviewer

  5. Управление клавиатурой, мышью для GUI-версий

  6. Предварительные действия

  7. Какие форматы текстур умеем

  8. Как (где) ищется конфигурация ogfviewer.cfg

  9. Как ищутся текстуры

  10. Как ассоциировать файлы с ogfviewer?

  11. Как убрать ассоциацию c ogfviewer?

  12. Как смотреть уровни

  13. Как конвертировать ogf и omf-анимации в smd

  14. Методичка по консольным утилитам

  15. Директивы компиляции

  16. История изменений

  17. Планы

  18. Использованные материалы и благодарности


  1. Что это?

    MESHTOOL - комплект утилит для просмотра, конвертации 3d-моделей движка X-Ray (S.T.A.L.K.E.R. series) а также MSH (Orion engine v1 MSH - Stalin Subway, Red Veil, Метро-2, Метро-2:Смерть вождя), Autodesk 3DStudio MAX 3DS.

    Использовались "движки": Microsoft Directx, Microsoft OpenGL, SGI OpenGL, Mesa3D OpenGL, allegro library.

    Cистемные требования. Windows 9x/NT/2000/XP/Vista/Win7 [x32/x64] (а также Linux+Wine :) ) Возможна работа без аппаратной 3D-акселерации. ( OGFViewer cовместим с TransGaming SwiftShader, Realtech VR DXGL Wrapper. )


  2. Что умеем?

    Смотрим:

    Форматы экспорта:

    Конвертируем:


  3. Комплектация пакета

    OGF\GUI\OGFViewer.exe - Win32 MS OpenGL версия.
    OGF\GUI\OGFViewer_sgi.exe - Win32 SGI/MMX OpenGL версия.
    OGF\GUI\OGFViewer_DX.exe - Win32 MS DirectX версия.
    OGF\GUI\ALT\OGFViewer.exe - Win32 MS OpenGL версия (альтернативное управление, для level-ов).
    OGF\GUI\ALT\OGFViewer_sgi.exe - Win32 SGI/MMX OpenGL версия (альтернативное управление, для level-ов).
    OGF\GUI\ALT\OGFViewer_DX.exe - Win32 MS DirectX версия (альтернативное управление, для level-ов).
    OGF\GUI\PROMO\OGFViewer.exe - Win32 MS OpenGL версия (альтернативное управление, для level-ов, c небом и VBO).
    OGF\GUI\PROMO\OGFViewer_DX.exe - Win32 MS DirectX версия (альтернативное управление, для level-ов, c небом).
    OGF\BETA\ogfconsa.exe - Win32 Allegro консольная версия.
    OGF\BETA\DOS32\ogfdos.exe - DOS32 консольная версия.
    OGF\BETA\DOS16\ogfdos16.exe - DOS16 консольная версия (320x200).
    OGF\BETA\OS2\ogf_tk.exe - OS/2 консольная версия.
    OGF\CONSOLE\Parse_Lev.exe - конвертер уровней в OGF формат, Console версия.
    OGF\CONSOLE\MeshConv.exe - конвертер моделей в 3DS формат, Console версия.
    OGF\CONSOLE\OGF2SMDa.exe - конвертер моделей/анимаций в SMD формат, Console версия.
    OGF\CONSOLE\glxinfo.exe - системная информация, Console MS OpenGL версия.
    OGF\CONSOLE\glxinfo_sgi.exe - системная информация, Console SGI/MMX OpenGL версия.
    +
    OGF\REF\MESH.TXT - Orion engine v1 MSH format datasheet
    OGF\REF\OGF3.H - xray ogf v.3 datasheet
    OGF\REF\OGF4.H - xray ogf v.4 datasheet
    OGF\REF\OBJECT.H - xray object datasheet
    OGF\SAMPLES - каталог с примерами (без текстур)
    OGF\REG\ - ветки реестра для ассоциаций
    OGF\SKY\ - текстуры неба для PROMO-версии (текстуры sky?.dds положить в textures\sky)
    OGF\soft_gl.7z - Mesa3D OpenGL 2.1 library v6.5.2, v7.3 (software OpenGL emulation)
    OGF\soft_dx.7z - Microsoft Software DirectX rasterizer library v8.x (software DirectX emulation)
    OGF\FAQ.HTM - FAQ & README (HTML)
    

  4. Отличия, особенности версий ogfviewer

    1. Для всех версий:

      Существует ограничение на количество материалов (до 500) и вложенных блоков (до 15000).

    2. Базовая:

      Вращается и двигается модель относительно центра координат. Вариант для просмотра отдельных моделей. Умеет VBO (OpenGL). Включен мипмэппинг и фильтрация текстур. Использование буфера VBO (OpenGL) имеет "обратную сторону" - при его переполнении эффективность от VBO пропадает.

    3. Альтернативная:

      Вращается и двигается свободная камера. Вариант для просмотра уровней и крупных объектов. Вместо скайбоксов используется туман. Включена DXT-компрессия (OpenGL), фильтрация текстур.

    4. Промо:

      Альтернативная версия вместе с VBO (OpenGL) и скайбоксами. Вращается и двигается свободная камера. Вариант для просмотра уровней и крупных объектов. Включена DXT-компрессия (OpenGL), фильтрация текстур. Использование буфера VBO (OpenGL) имеет "обратную сторону" - при его переполнении эффективность от VBO пропадает.

    5. На движке SGI OpenGL:

      OpenGL движок, программная его часть оптимизирована под инструкции MMX (Pentium и старше). Немного быстрее, чем движок MS OpenGL.

    6. Программный режим (OpenGL):

      MS OpenGL: Если при запуске идут сообщения об ошибках - положите в каталог программы opengl32.dll из soft_gl.7z.

      SGI OpenGL: Если при запуске идут сообщения об ошибках - отключите видеоакселерацию в панели управления.

    7. Программный режим (DirectX):

      Если при запуске программы она показывает пустой черный экран - положите в каталог WINDOWS\SYSTEM32 d3dref8.dll из из soft_dx.7z (или DirectX 8.x SDK).

      Если при запуске программы программы она тормозит или глючит - положите в каталог программы d3d8.dll из SwiftShader или DXGL Wrapper. На вопрос "Use software renderer?" ответить "No".


  5. Управление клавиатурой, мышью для GUI-версий


  6. Предварительные действия

    Распаковываем ресурсы игры:

    Используя converter.exe из xray_re_tools:

    converter.exe -unpack -2215 gamedata.xdb
    converter.exe -unpack -2945 gamedata.xdb
    converter.exe -unpack -2947ru gamedata.xdb
    converter.exe -unpack -2947ww gamedata.xdb
    converter.exe -unpack -xdb gamedata.xdb
    

    Ключи после -unpack позволяют указать тип архива с игровым контентом.

    В результате имеем:

    Если просмотр моделей с текстурами нам необходим, в ogfviewer.cfg записывем путь к текстурам. Если игра лежит у нас в C:\GSC\STALKER, то в в ogfviewer.cfg пишем:

    C:\GSC\STALKER\gamedata\textures\

    Возможен запуск нескольких копий ogfviewer одновременно.


  7. Какие форматы текстур умеем


  8. Как (где) ищется конфигурация ogfviewer.cfg

    1. В каталоге откуда запустили
    2. В каталоге где лежит ogfviewer.exe

  9. Как ищутся текстуры

    Размер ogfviewer.cfg - 255 символов максимум.
    OpenGL: Если размер текстуры для объекта превышает допустимый, то он масштабируется до максимально допустимого размера.
    Если в итоге указанная текстура для объекта не находится, то в drawmode #2 объект с данной текстурой не отображается.


  10. Как ассоциировать файлы с ogfviewer?

    Требуются права администратора!

    редактировать REG\instogf.reg, исправить там путь к файлу.

    затем:

    regedit instogf.reg

  11. Как убрать ассоциацию c ogfviewer?

    Требуются права администратора!

    затем:

    regedit delogf.reg

  12. Как смотреть уровни

    Предположим, что имя нашего уровня - testers_mp_railroad

    Для открытия крупных уровней вроде marsh_bench, pripyat - необходимо много оперативной памяти! Рекомендуется при этом закрыть ВСЕ прочие запущенные программы.


  13. Как конвертировать ogf и omf-анимации в smd

    Предположим, что имя нашей модели - сat.ogf

    Если к ней есть анимация cat_animation.omf, объединяем их:

    copy /b cat.ogf + cat_animation.omf cat_full.ogf
    ogf2smda.exe cat_full.ogf

    Иначе - пропускаем этот шаг и делаем:

    ogf2smda.exe cat.ogf

    В итоге имеем каталог SMD, там:

    SMD\reference.smd - базовая, остальные - отдельные анимации.

    Далее, используя плагин SMDImporter.mzp к Autodesk 3DStudio MAX, можно импортировать полученные SMD файлы.


  14. Методичка по консольным утилитам.

    Утилита: dx7capsG
    Запуск: dx7capsG
    Результат: статистка памяти directx на экране

    Утилита: glxinfo
    Запуск: glxinfo.exe [ > parse.log ]
    Результат: показывает microsoft opengl info на экран, при указании parse.log пишется в файл

    Утилита: glxinfo_sgi
    Запуск: glxinfo_sgi.exe [ > parse.log ]
    Результат: показывает sgi opengl info на экран, при указании parse.log пишется в файл

    Утилита: meshconv
    Запуск: meshconv имя_модели.ext
    имя_модели.ext: xray ogf, object или orion msh
    Результат: конверсия в файл 'export.3ds' (3DStdio MAX 3ds файл)

    Утилита: ogf2obj
    Запуск: ogf2obj имя_модели.ogf [ имя_модели.object ] [ > parse.log ]
    если имя_модели.object опущено - показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл, иначе конверсия в имя_модели.object ( wavefront obj формат )

    Утилита: ogf2smd
    Запуск: ogf2smd имя_модели.ext
    имя_модели.ext: xray ogf v4 ( составная модель, склеивается так: copy /b cat.ogf + cat_animation.omf )
    Результат: конверсия в каталог /smd анимаций (smd формат), reference.smd - базовая модель

    Утилита: parse_lev
    Запуск: parse_lev < режим > [ имя_модели.ogf ] [ > parse.log ]
    режим 0: показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл
    режим 1: конверсия в имя_модели.ogf
    режим 2: конверсия в имя_модели.ogf (с оптимизацией вертексов) - не рекомендуется!!!

    Утилита: parse_msh, parse_ogf, parse_obj
    Запуск: parse_msh (или parse_ogf, parse_obj) имя_модели.ext [ > parse.log ]
    Результат: показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл

    Утилита: make_ogf
    Запуск: make_ogf < к-во вертексов > < к-во индексов > < имя_модели.оgf >
    вертексы: от 3 до 2^32 (отсекается до кратного 3)
    индексы: от 3 до 65535 (отсекается до кратного 3)
    имя_модели.оgf: имя файла - приёмника
    Результат: создание "мусорной" псевдослучайной модели 2 x 2 метра для тестирования нагрузки на движок и видеокарту.

    Все консольные утилиты удобнее запускать из Far Manager (или cmd.exe) :)


  15. Директивы компиляции

     * ALT_CONTROLS - compile as alternate "level-only" version (ALL)
     * DISABLE_CULL - disable invisible faces culling (ALL)
     * DISABLE_TEXTURING - no texturing support (ALL)
     * COMPACT_NVTS - use nvtristrip library to convert tris to strips (OpenGL)
     * COMPACT_WF - linestrip, for w/frame, speedup for drawmode #0 (ALL)
     * DX_REND - DX8 render (DirectX)
     * SGI_GL - SGI/MMX OpenGL linking (OpenGL)
     * USE_GL10 - OpenGL 1.0 compatibility (OpenGL)
     * USE_CVA - CVA compiled_vertex_array extention (OpenGL)
     * USA_VBO - VBO vertex_buffer_object extension (OpenGL)
     * USE_DXT - DXT1/DXT5 compr. (OpenGL)
     * USE_MIPMAP - use mipmapping (ALL)
     * NO_3DS - no 3ds import/export
     * USE_ANISO - anisothr. filtering (OpenGL)
     * USE_FOG - fog (ALL)
     * USE_SKY - use skyboxes (OpenGL)
     * USE_LOG - verbose logging (ALL)
     * LIMIT_DDS - limit texture size to 256x256 max (3dfx compat?, OpenGL)
     * DISABLE_ARRAYS - don't use glDrawElements(),glDrawArrays() (OpenGL)
     * USE_SUBST - substitute missing textures by generic one (ALL)
     * USE_ALLEG - allegro restrictions
     * NO_SAVE - do not export, save (ALL)
     * USE_ANIM - read and display animations, also ogfv3 bones (wip)
     * USE_SINGLE - single buffering (OpenGL)
     * USE_CONV - do export, save (ALL)
     * USE_ZTRICK - z-trick (OpenGL)
    

  16. История изменений

    Изменения (19.02.2010) :
    
    OGFViewer: Масштабирование не вызывает геометрических искажений
    OGFViewer: Оси x/y/z yвеличены до 5 единиц
    OGFViewer: Поддержка колесика мыши
    OGFViewer: Исправлена поддержка вложенных (CHILDREN) моделей (напр. wpn_gauss.ogf)
    OGFViewer: Сохранение в *.object
    OGFViewer: Исправлена совместимость с MESA3D OpenGL
    OGFViewer: Исправлены "косяки" с ориентацией тесктур (из-за nv_dds.obj)
    OGFViewer: Снято ограничение DXT-compressed DDS - поддержка ARB_texture_compression не актуальна
    OGF2obj: новая версия
    
    Изменения (21.02.2010) :
    
    OGFViewer: Исправлено падение программы при отмене открытия OGF-файла
    OGFViewer: Исправлена точность вращения по левой кнопке мыши
    OGFViewer: Исправлен глюк с "мерцающими" цветами осей и путей DDS
    OGFViewer: режим просмотра wireframe (сетка) / normal по ср.кн.м. (или колесику)
    
    Изменения (28.02.2010) :
    
    OGFViewer: Исправлено 8-bit/4-bit OpenGL render
    OGFViewer: Исправлена точность вращения
    OGFViewer: Добавлено управление с клавиатуры
    OGFViewer: Исправлена ошибка: не создавался ogfmodel.mtl
    OGFViewer: Шрифт для DDS: Lucida Console (Normal)
    OGFViewer: Коррекная конвертация "многотекстурных" моделей
    OGF2obj: Коррекная конвертация "многотекстурных" моделей
    
    Изменения (06.03.2010) :
    
    OGFViewer: Оптимизация ( удаление невидимых граней, glVertex3fv(), glDrawElements() )
    OGFViewer: Показываем "вменяемую" ошибку glTexImage2D()
    OGFViewer: Ограничение вращений -360.0 ... +360.0
    OGFViewer: Имя файла и версия программы в заголовке окна
    OGFViewer: Цветные подписи ( FPS, dds[?] )
    OGFViewer: Исправлена утечка памяти при загрузке текстур
    OGFViewer: 3 режима фигуры - wireframe, colored, textured
    OGFViewer: Поддержка командной строки, фикс на относительные пути
    OGFViewer: Файл реестра для ассоциации моделей с программой
    OGFViewer: Выбор пути к текстурам по клавише F5
    OGFViewer: При отсутствии OGFViewer.cfg путь по умолчанию - "textures\"
    OGFViewer: "Горячие" клавиши F3 - открыть, F2 - сохранить.
    
    Изменения (14.03.2010) :
    
    OGFViewer: Cетка 20x20 метров (как в X-Ray SDK ActorEditor), F1 - в(ы)кл
    OGFViewer: Новое освещение для colored-режима
    OGFViewer: Чтение моделей X-Ray object (частично)
    OGFViewer: Чтение моделей XRay ogf #0x0112 (экспорт-модель из X-Ray SDK)
    OGFViewer: Поддержка до 1000 материалов в модели (veh\niva, veh\mi-26)
    OGFViewer: Исправление управляющих клавиш и движения камеры (см. выше).
    OGFViewer: Поддержка текстур TGA (Targa)
    OGF2obj: Чтение моделей XRay ogf #0x0112 (экспорт-модель из X-Ray SDK)
    OGF2obj: Поддержка до 1000! материалов в модели (veh\niva, veh\mi-26)
    
    Изменения (21.03.2010) :
    
    OGFViewer: Свет F9 on/off, шаг движения F7 (*10), F8 (/10), F11 - OpenGL info
    OGFViewer: Считывание bounding box-ов (окр. прямоугольника)
    OGFViewer: Стандартизация форматов 3d векторов, небольшая оптимизация скорости загрузки (для уровней в *.object)
    OGFViewer: Увеличение materialcount до 100000 (для уровней в *.object) 
    OGFViewer: Поддержка текстур RGB24 = 8/8/8
    OGFViewer: Поддержка прозрачных текстур (стёкла, фары и т.п., veh\niva)
    OGFViewer: Экспорт в Autodesk ASE, 3DS (только геометрия)
    OGFViewer: Исправлено - утечка при незакрытии файла
    OGFViewer: Импорт Orion engine v1 MSH (1 материал)
    OGFViewer: Исправлено - падение при экспорте object в obj,ase
    OGFViewer: ogfcons3 - тестовая console версия OGFViewer
    
    Изменения (28.03.2010) :
    
    OGFViewer: Экспорт в ASE теперь с текстурами
    OGFViewer: Microsoft Directx рендерер (рендерит быстрее GL :), но модели отражаются зеркально :( )
    OGFViewer: SGI GL рендерер (+ opengl.dll, glu.dll), немного быстрее MS GL :)
    OGFViewer: F12 центрирует модель по bounding box
    OGFViewer: в OGF моделях одинаковые текстуры не загружаются повторно
    
    Изменения (11.04.2010) :
    
    OGFViewer: Не работаем в 1/4/8-бит цвете (DirectX)
    OGFViewer: Выбор аппаратной/программной отрисовки (DirectX)
    OGFViewer: Теперь все модели ориентированы правильно (DirectX)
    OGFViewer: F4 - режим прозрачности
    OGFViewer: Уточнены коррдинатные системы (dx:x/y/z,gl:x/-y/z)
    OGFViewer: Msh модели теперь ориентированы правильно 
    OGFViewer: Загрузка и сохранение в 3DS формат
    OGFViewer: Исправлены ошибки при загрузки 'огромных' объектов (уровни в object)
    OGFViewer: Рендерер на базе allegro gaming library (DOS32/WIN32)
    
    Изменения (23.04.2010) :
    
    OGFViewer: Сделано альтернативное управление (в OpenGL - с туманом)
    OGFViewer: Fov = 46.0f (как в S.T.A.L.K.E.R.) 
    OGFViewer: Ускорение FPS в wireframe-режиме
    OGFViewer: Исправлены фиктивные ошибки загрузки текстур (OpenGL, MS/SGI)
    OGFViewer: Исправлен СNT-счётчик
    OGFViewer: "Правильное" освещение и "радуга" в colored-режиме (OpenGL)
    OGFViewer: Расчёт нормалей для 3DS/object
    OGFViewer: Оптимизация рендеринга - без задержек (glFlush/glFinish), VBO (OpenGL)
    OGFViewer: Многопроцессорность в рендерере (DirectX)
    OGFViewer: Исправлен перебор текстур в object-моделях (DirectX)
    OGFViewer: Не вылетаем с ошибкой при выходе из проги :) (DirectX)
    OGFViewer: Текущая версия требует наличия расширения GL_ARB_vertex_buffer_object (OpenGL)
    OGFViewer: Исправлено обработка сообщений палитры в 8-bpp (OpenGL, MS)
    OGFViewer: Приложена новая библиотека Mesa3D 7.3 (стандарт OpenGL 2.1)
    OGFViewer: Шрифт сообщений - "Verdana"
    
    Изменения (10.05.2010) :
    
    MeshConv: Исправлен экспорт моделей
    OGFViewer: CNT-cчетчик форматируется корректно (000xxx.00)
    OGFViewer: Исправлен расчёт нормалей, при отключенном свете они не нужны
    OGFViewer: Изменения состояний и свет считаем один раз
    OGFViewer: [ * ] на цифровой клавиатуре меняет цвет фона
    OGFViewer: [ / ] на цифровой клавиатуре меняет гамма-коррекцию
    OGFViewer: Дальность обзора - 300 метров
    OGFViewer: Туман - 100...300 метров (OpenGL)
    OGFViewer: Не запускаем glGetError() без необходимости (OpenGL)
    OGFViewer: Неточность при запуске glNewList() (OpenGL)
    OGFViewer: Поддержка света (DirectX)
    OGFViewer: Исправлен выбор пути для текстур
    OGFViewer: Исправлен расчёт текстурных координат для object
    OGFViewer: Корректный выход из программы при открытии "битых" object-файлов
    OGFViewer: Теперь умеем читать object-модели с костями (spesnaz_run.object)
    OGFViewer: Ускорена загрузка текстур у object моделей
    OGFViewer: Существенно ускорена загрузка текстур у Orion engine v1 моделей
    OGFViewer: Теперь умеем читать Orion engine v1 модели без привязанных текстур
    OGFViewer: Отключаем сглаживание (blending) для terrain-текстур
    OGFViewer: Для ускорения вращения/движения сцены сбрасываем настройки качества на минимум
    OGFViewer: Исправлено форматирование в выходном файле экспорта (ASE-формат)
    OGFViewer: В обычной версии временно включена поддержка VBO + mipmap-сглаживание (OpenGL)
    OGFViewer: В ALT-версии временно включено mipmap-сглаживание (OpenGL)
    
    Изменения (26.05.2010) :
    
    OGFViewer: Моделей с "встроенными" анимациями (cat.ogf) считываются без лишней геометрии
    OGFViewer: Экспорт в HalfLife SMD (cтатика + текстуры)
    OGFViewer: Корректно считываем блоки 0x1008, 0x1012 (object)
    OGFViewer: Скорректированы трансформации и вращение (DirectX)
    OGFViewer: Исправлено незакрытие ogf-файлов
    OGFViewer: Унифицировано управление (OpenGL <-> DirectX)
    OGFViewer: Новая документация (каталог \REF)
    OGFViewer: Cчитаем что везде красная ось - X, зеленая ось - Y, синяя ось - Z
    OGFСons: Убраны буквы осей X,Y,Z
    parse_lev: Новая утилита, анализирующая геометрию уровней
    parse_obj, parse_ogf, parse_msh: Утилиты, анализирующая структуру моделей
    OGF2SMDa: "воскрешен" экспорт OGF,OMF анимаций в HalfLife SMD (на базе OGF2SMD SRC 2.03)
    OGF2SMDa: Читаем все модели OGFv4 (2215, ТЧ, ЧН, ЗП)
    OGF2SMDa: Читаем OMF ('copy /b man.ogf + man_animation.omf man_full.ogf', затем 'OGF2SMDa man_full.ogf')
    OGF2SMDa: Для "беспозвоночных" моделей формируются фейковые кости
    OGF2SMDa: Модели и текстуры ориентированы правильно
    
    Изменения (25.07.2010) :
    
    OGFViewer: убраны лишние вызовы RenderScene(), txload()
    OGFViewer: Cоздаем координаты p,n,t однократно
    OGFViewer: Общая оптимизация утилитой Мicrosoft Prefast
    OGFViewer: Работает статусная строка
    OGFViewer: Балансировка альт. версии - работает DXT, но отключен мипмэппинг
    OGFViewer: Для скорости удаление невидимых линий включено, может вызывать глюки на уровнях
    OGFViewer: Опция использовать программный рендерер (OpenGL)
    OGFViewer: Инфо панель (F11) показывыет тип акселерации (OpenGL)
    OGFViewer: Более темный цвет материала, может ухудшаться освещение в colored-режиме (DirectX)
    OGFViewer: Текстуре воды (water*) не нужен блендинг (карта limansk)
    OGFViewer: Aвтомасштабирования текстур "вниз" для поддержки старых видеокарт (3Dfx, ATI Rage, Trident, S3)
    OGFViewer: Исправлены ошибки в программном редеринге 16bpp (MS OpenGL)
    OGFViewer: Не перерисовываем экран при нажатии < KPad / > "Гамма"
    OGFViewer: FOV меняется 45-60-75-90 (шаг 15), < KPad 5 >
    OGFViewer: Глубина обзора - 0.2/500.0 метров - базовая, 1.0/500.0 метров - альтернативная
    OGFViewer: Туман 100 - 500 метров (OpenGL)
    OGFViewer: Альфасмешивание в альт. версии (OpenGL)
    OGFViewer: Новые директивы компиляции USE_ANISO, NO_3DS, USE_GL10
    glxinfo: новая информационная утилита для OpenGL
    glxinfo: испралены глюки glxinfo на картах nVidiа
    parse_lev: исправленная версия, в перспективе войдет в состав парсера OGFViewer
    
    Изменения (15.08.2010) :
    
    parse_lev: Cчитывание level-ов (билды 2xxx, 3xxx), и конвертация их в ogf
    OGFViewer: Клавиша FOV - < F5 >
    OGFViewer: Глубина обзора - 0.2/500.0 метров - базовая, 0.2/1500.0 метров - альтернативная
    OGFViewer: В некоторых текстурах просвечивает фон заднего плана :(
    OGFViewer: Разбор шейдеров, материалов
    OGFViewer: Текстуры грузятся отдельно от модели, пригодится для анимаций
    OGFViewer: Текстурирование работает в OpenGL 1.0
    OGFViewer: Несколько путей до текстур в ogfviewer.cfg
    OGFViewer: Поддержка текстур PNG, BMP
    OGFViewer: Туман (DirectX, alt)
    OGFViewer: Клавиша < F9 > в colored-режиме в(ы)ключает освещение.
    OGFViewer: Клавиша < F9 > в textured-режиме в(ы)ключает фары, светильники, и проч.
    OGFViewer: Очередная бета DOS32-версии OGFViewer :)
    OGFViewer: Исправлены глюки с alphablend (DirectX)
    OGFViewer: Клавиша < F1 > показывает список материалов и шейдеров, в командной строке - статистика
    OGFViewer: В ALT-версия рисуется небо (текстуры sky?.dds положить в textures\sky)
    OGFViewer: ALT-версия значится в заголовке как 1.0.5@ (базовая без @)
    
    Изменения (27.08.2010) :
    
    OGFViewer: Правильная ориентация граней в cubemap-е неба, промо-версия (GL)
    OGFViewer: Клавиши < W >< A >< S >< D > - управление с клавиатуры
    OGFViewer: Ogfview.cfg - сначала ищем в каталоге программы, затем в каталоге запуска
    OGFViewer: Cетка перемещается вместе с моделью
    OGFViewer: Новый механизм удаления невидимых объектов в альт. версии (видимы только объекты перед наблюдателем на дистанции 150m)
    OGFViewer: Альфасмешивание включено всегда
    OGFViewer: Не переключаем мипмэппинг при движении сцены
    OGFViewer: Клавиша < F4 > теперь управляет освещением/фарами
    OGFViewer: Клавиша < F9 > переключает фильтрацию текстур
    OGFViewer: Рассчитываем bounding box и bounding sphere, radius для ogf, object
    OGFViewer: Не рисуем сцену после < F7 >, < F8 >, < F11 >
    OGFViewer: Автонормализация векторов в mode #1
    OGFViewer: Количество материалов ограничено до максимум 500 
    OGFViewer: Количество объектов в модели ограничено до максимум 15000
    
    Изменения (13.11.2010) :
    
    OGFViewer: Skybox cubemap (DirectX, alt, Promo)
    OGFViewer: Корректное отсечение невидимых объектов на 150м (alt)
    OGFViewer: Исправлена медленная загрузка программы при отсутствии текстур
    OGFViewer: Сжатие/оптимизация линий в drawmode#0 быстрее
    OGFViewer: Не используем OpenGL glCallList() в OpenGL 1.0 (GL)
    OGFViewer: Отключаем drawmode#2 если disable_texturing=1 (DirectX)
    OGFViewer: Выложен подробный FAQ / README по OGFVIEWER
    OGFViewer: Исправлено падение на выходе (Allegro)
    OGFViewer: Новая версия библиотеки DevIL (OpenIL) 1.7.8, поддержка новых форматов (GL)
    OGFViewer: Общая оптимизация переменных
    OGFViewer: Корректное перемещение свободной камеры (alt)
    OGFViewer: Клавиша "N" отключает отсечение невидимых объектов на 150м (alt)
    OGFViewer: Увеличен радиус вращения с 1 до 5 углов (alt)
    OGFViewer: Клавиша "L" управляет светом, фарами
    OGFViewer: Клавиша "I" - информация о рендерере
    OGFViewer: Клавиша "F11" - полный экран
    OGFViewer: Клавиша "F6" - "качество" картинки
    OGFViewer: Расчет радиуса для ogfv3, object
    OGFViewer: Корректное отсечение прозрачных объектов в object-уровнях (alt)
    OGFViewer: Считываем всех IFF-секций (на потом)
    
    Изменения (26.12.2010) :
    
    [New features]
    OGFViewer: Единственный источник света в ALT-версии (drawmode #1)
    OGFViewer: Новое меню, кнопки (отдельно base/alt), MFC-иконка теперь видна
    OGFViewer: Не используется отсечение невидимых граней для прозрачных объектов
    OGFViewer: Опциональная поддержка single-buffering (GL)
    OGFViewer: Поддержка ogfv3 тип 0x00000112, формат AE/LE 1xxx
    OGFViewer: Начальная позиция камеры 0,-3(или 3),-10 - согласно GSC AE/LE (alt)
    OGFViewer: Дистанция отсечения base/alt ~150 м
    OGFViewer: Дистанция отсечения (alt+fog) alt версии 200 м
    OGFViewer: Дистанция отсечения (alt+sky) promo версии 1500 м
    OGFViewer: Поддержка 32,24 bpp ZBuffer (DirectX, alt)
    OGFViewer: ZBuffer info по клавише "I" (GL)
    OGFViewer: Клавиша "M" - дамп статистики в object.log
    OGFViewer: Переделан счетчик FPS/ms
    meshconv: Новая утилита для конвертации
    make_ogf: Новая утилита для создания тестовых бенчмарк OGF моделей из "мусора"
    ogfdos16: Поддержка OpenWatcom compiler
    
    [Fixed bugs]
    OGFViewer: В диалоге открытия файла показываются по маске все поддерживаемые форматы
    OGFViewer: При экспорте в wavefront obj одинаковое имя для obj- и mtl- файлов
    OGFViewer: В режиме VBO работает отключение vsync (GL)
    OGFViewer: Новый порядок отрисовки drawmode #2 - сначала "обычные" меши, затем меши с alphablend
    OGFViewer: Корректная отрисовка water, wallmarks, down skybox в drawmode #2
    OGFViewer: Блокируется F12 если модель не загружена (base)
    OGFViewer: ilShutdown() на выходе (GL)
    OGFViewer: Баги GL 1.0 (single-(multi-)texture, mipmap, visible[], proxy, txload() err chk)
    OGFViewer: Не отсекались невидимые грани в drawmode #2 - GL_CULL_FACE (GL)
    OGFViewer: Карты nVidia требуют glFinish() перед выводом в GDI (GL)
    OGFViewer: Предустановка света только для drawmode #1
    parse_lev: Корректный экспорт в OGF без "мусора" (учёт swidata, swicntr)
    
    [Optimizations]
    OGFViewer: Вызываем SetTexture(NULL) один раз (DirectX)
    OGFViewer: Не грузить текстуры повторно если у них один растр, а шейдеры разные
    OGFViewer: Исправлена ошибка в классах MFC - OnXXX (palettes, m/wheel)
    OGFViewer: Не используем Lstr... функции (Lstr... -> str...)
    OGFCons: Не линкуем MFCxx.LIB
    OGFViewer: Не используем нормали в drawmode #2 (GL)
    OGFViewer: Опция USE_ZTRICK для ATIRage, Permedia, 3Dfx (GL)
    OGFViewer: Отдельная функция для выгрузки иодели
    OGFViewer: Начата поддержка экспорта в LWO формат
    

  17. Планы

    Чтение omf-анимаций, секций OGF_SBONE_NAMES, OGF_S_IKDATA, OGF_S_USERDATA (ogf)
    Чтение анимаций skl/bones (object)
    Чтение particles
    Чтение ogfv3 (пока умеем не все)
    Чтение object из билдов 1xxx (пока умеем не все)
    Чтение level из билдов 1xxx
    Импорт/экспорт в *.lwo, *.x mesh (DirectX)
    Импорт/экспорт плагин для 3dsmax (GSC ogf, object, level)
    Fullscreen режим
    Полностью программный рендерер.
    Ini-фaйл для OGFViewer (meshtool.ini?)
    FSAA Antialiasing support
    Версия для OS/2, DOS32 (есть беты DOS32 - allegro+djgpp, dos16 и OS2 - OpenGL)
    

  18. Использованные материалы и благодарности

    batya: исходники OGFViewer 1.0.2 (26 Nov 2006)
    batya: исходники LevelEditor 0.0.2 (07 Apr 2007)
    bardak: исходники X-RAY RE-Tools-SRC (10 Sep 2008)
    kasper, haron: исходники OGF2SMD SRC 2.03
    Stalkerin wiki: http://stalkerin.gameru.net/wiki/index.php/Категория:Форматы_файлов
    Wavefront obj format: http://en.wikipedia.org/wiki/Obj
    Wavefront mtl format: http://en.wikipedia.org/wiki/Material_Template_Library
    OpenIL: http://openil.sourceforge.net/, DDS,TGA reading support
    lib3ds: http://lib3ds.sourceforge.net, 3DS import, export
    Mesa3D: http://www.mesa3d.org/, software OpenGL
    SGI OpenGL 1.1.1/MMX (ver 2.0): opengl2.exe
    TransGaming SwiftShader (ver 2.01): http://www.transgaming.com/business/swiftshader/technology/
    Realtech OpenGL Extensions Viewer: http://www.realtech-vr.com/glview/
    Realtech VR DXGL Wrapper: http://www.realtech-vr.com/directx/
    ATI Radeon 9700 OpenGL SDK: http://developer.amd.com/downloads/Gl_sdk.zip
    GL_ARB_vertex_buffer_object: http://www.nvidia.com/dev_content/nvopenglspecs/GL_ARB_vertex_buffer_object.txt
    GL_EXT_compiled_vertex_array: http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt
    GL_ARB_texture_compression: http://www.opengl.org/registry/specs/ARB/texture_compression.txt
    GL_SGIS_generate_mipmap: http://www.opengl.org/registry/specs/SGIS/generate_mipmap.txt 
    GL_EXT_cull_vertex: http://www.opengl.org/registry/specs/EXT/cull_vertex.txt
    Graphic Remedy gDEBugger version 4.5: http://www.gremedy.com/
    GMax 1.2, free game modeling tool (3DSMax compatible): http://www.turbosquid.com/gmax/
    Blender 3D cross platform suite: http://www.blender.org/
    NVIDIA DDS plug-in: http://www.nvidia.com/object/photoshop_dds_plugins.html
    NvTriStrip Library: http://developer.nvidia.com/object/nvtristrip_library.html
    Allegro - A game programming library: http://alleg.sourceforge.net/
    UniLink: ftp://ftp.styx.cabel.net/pub/UniLink (by Юрий Харон)
    level format: http://haperpage.narod.ru/format/
    level format: http://www.gamedev.ru/community/gde/articles/
    camera: http://pmg.org.ru/nehe/nehe_camera.htm 
    culling: http://www.flipcode.com/archives/Frustum_Culling.shtml
    lwo format: http://www.sandbox.de/osg/lightwave.htm
    soft. raster.: http://pmg.org.ru/basic3d/index.html
    VBO whitepaper: http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html
    "Batch": http://developer.nvidia.com/docs/io/8230/batchbatchbatch.pdf
    

    2010.12.26