MESHTOOL - кроссплатформенный комплект утилит для просмотра, конвертации 3d-моделей движка X-Ray (GSC 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, IBM OpenGL, Mesa3D OpenGL, allegro library.
Cистемные требования:
Возможна работа без аппаратной 3D-акселерации. ( OGFViewer cовместим с TransGaming SwiftShader, Realtech VR DXGL Wrapper, AltOpenGL, TechLand Soft OpenGL, mesaFX OpenGL. )
Смотрим:
Форматы экспорта:
Конвертируем:
Microsoft Windows: MESHTOOL\WIN\GUI\OGFViewer.exe - Win32 MS OpenGL версия. MESHTOOL\WIN\GUI\OGFViewer_sgi.exe - Win32 SGI/MMX OpenGL версия. MESHTOOL\WIN\GUI\OGFViewer_DX.exe - Win32 MS DirectX версия. MESHTOOL\WIN\GUI\ALT\OGFViewer.exe - Win32 MS OpenGL версия (альтернативное управление, для level-ов). MESHTOOL\WIN\GUI\ALT\OGFViewer_sgi.exe - Win32 SGI/MMX OpenGL версия (альтернативное управление, для level-ов). MESHTOOL\WIN\GUI\ALT\OGFViewer_DX.exe - Win32 MS DirectX версия (альтернативное управление, для level-ов). MESHTOOL\WIN\GUI\PROMO\OGFViewer.exe - Win32 MS OpenGL версия (альтернативное управление, для level-ов, c небом и VBO). MESHTOOL\WIN\GUI\PROMO\OGFViewer_DX.exe - Win32 MS DirectX версия (альтернативное управление, для level-ов, c небом). MESHTOOL\WIN\OTH\ogffscr.exe - Win32 MS OpenGL Console PROMO версия (альтернативное управление, для level-ов, c небом). MESHTOOL\WIN\OTH\CVA_ogffscr.exe - Win32 MS OpenGL Console PROMO версия (альтернативное управление, для level-ов, c небом и CVA). MESHTOOL\WIN\OTH\VBO_ogffscr.exe - Win32 MS OpenGL Console PROMO версия (альтернативное управление, для level-ов, c небом и VBO). MESHTOOL\WIN\OTH\dx7base.exe - Win32 MS DirectX7 Console версия. MESHTOOL\WIN\OTH\dx7alt.exe - Win32 MS DirectX7 Console версия (альтернативное управление, для level-ов). MESHTOOL\WIN\OTH\ogfconsa.exe - Win32 Allegro Console версия. MESHTOOL\WIN\CONSOLE\dx7capsG.exe - табло памяти DirectX MESHTOOL\WIN\CONSOLE\glxinfo.exe - системная информация, Console MS OpenGL версия. MESHTOOL\WIN\CONSOLE\glxinfo_sgi.exe - системная информация, Console SGI/MMX OpenGL версия. MESHTOOL\WIN\CONSOLE\Make_Ogf.exe - создает псевдослучайную OGF-модель. MESHTOOL\WIN\CONSOLE\MeshConv.exe - конвертер моделей в 3DS формат, Console версия. MESHTOOL\WIN\CONSOLE\OBJ2OGF.exe - конвертер WAVEFRONT OBJ-моделей в Xray OGF формат, Console версия. MESHTOOL\WIN\CONSOLE\OGF2OBJ.exe - конвертер Xray OGF-моделей в WAVEFRONT OBJ формат, Console версия. MESHTOOL\WIN\CONSOLE\OGF2SMDa.exe - конвертер Xray OGF-моделей/анимаций в SMD формат, Console версия. MESHTOOL\WIN\CONSOLE\Parse_Lev.exe - конвертер уровней в OGF формат, Console версия. MESHTOOL\WIN\CONSOLE\Parse_Msh.exe - парсер orion v1 msh-моделей, Console версия. MESHTOOL\WIN\CONSOLE\Parse_Obj.exe - парсер Xray object-моделей, Console версия. MESHTOOL\WIN\CONSOLE\Parse_Ogf.exe - парсер Xray ogf-моделей, Console версия. IBM OS/2, IBM/MS DOS: MESHTOOL\OS2\GL10\ogf_tk.exe - OS/2 LIBTK+OpenGL 1.0 Console версия. MESHTOOL\OS2\GL10\ogf_tka.exe - OS/2 LIBTK+OpenGL 1.0 Console версия (альтернативное управление, для level-ов). MESHTOOL\OS2\GL10\ogf_tkas.exe - OS/2 LIBTK+OpenGL 1.0 Console версия (альтернативное управление, для level-ов, c небом). MESHTOOL\OS2\GL10\ogf_glut.exe - OS/2 GLUT+OpenGL 1.0 Console версия. MESHTOOL\OS2\GL10\ogf_gluta.exe - OS/2 GLUT+OpenGL 1.0 Console версия (альтернативное управление, для level-ов). MESHTOOL\OS2\GL11\ogf_tk.exe - OS/2 LIBTK+OpenGL 1.1 Console версия. MESHTOOL\OS2\GL11\ogf_tka.exe - OS/2 LIBTK+OpenGL 1.1 Console версия (альтернативное управление, для level-ов). MESHTOOL\OS2\GL11\ogf_tkas.exe - OS/2 LIBTK+OpenGL 1.1 Console версия (альтернативное управление, для level-ов, c небом). MESHTOOL\OS2\GL11\ogf_glut.exe - OS/2 GLUT+OpenGL 1.1 Console версия. MESHTOOL\OS2\GL11\ogf_gluta.exe - OS/2 GLUT+OpenGL 1.1 Console версия (альтернативное управление, для level-ов). MESHTOOL\OS2\GL11\ogf_glutas.exe - OS/2 GLUT+OpenGL 1.1 Console версия (альтернативное управление, для level-ов, c небом). MESHTOOL\DOS32\ogfdos.exe - DOS32 Console версия. MESHTOOL\DOS16\ogfdos16.exe - DOS16 Console версия (320x200). +++ MESHTOOL\REF\MESH.TXT - Orion engine v1 MSH format datasheet MESHTOOL\REF\OGF3.H - xray ogf v.3 datasheet MESHTOOL\REF\OGF4.H - xray ogf v.4 datasheet MESHTOOL\REF\OBJECT.H - xray object datasheet MESHTOOL\SAMPLES - каталог с примерами MESHTOOL\REG\ - ветки реестра для ассоциаций MESHTOOL\SKY\ - текстуры неба для PROMO-версии (текстуры sky?.dds положить в textures\sky) MESHTOOL\soft_gl.7z - Mesa3D OpenGL 2.1 library v6.5.2, v7.3 (software OpenGL emulation) MESHTOOL\soft_dx.7z - Microsoft Software DirectX rasterizer library v8.x (software DirectX emulation) MESHTOOL\FAQ.HTM - FAQ & README (HTML) MESHTOOL\READMEOS2.HTM - FAQ & README for OS/2 (HTML)
Отличия, особенности версий ogfviewer
Существует ограничение на количество материалов (до 500) и вложенных блоков (до 17000).
Вращается и двигается модель относительно центра координат. Вариант для просмотра отдельных моделей. Умеет VBO (OpenGL). Включен мипмэппинг и фильтрация текстур. Использование буфера VBO (OpenGL) имеет "обратную сторону" - при его переполнении эффективность от VBO пропадает.
Вращается и двигается свободная камера. Вариант для просмотра уровней и крупных объектов. Вместо скайбоксов используется туман. Включена DXT-компрессия (OpenGL), фильтрация текстур.
Альтернативная версия вместе с VBO (OpenGL) и скайбоксами. Вращается и двигается свободная камера. Вариант для просмотра уровней и крупных объектов. Включена DXT-компрессия (OpenGL), фильтрация текстур. Использование буфера VBO (OpenGL) имеет "обратную сторону" - при его переполнении эффективность от VBO пропадает.
OpenGL движок, программная его часть оптимизирована под инструкции MMX (Pentium и старше). Немного быстрее, чем движок MS OpenGL.
MS OpenGL: Если при запуске идут сообщения об ошибках - положите в каталог программы opengl32.dll из soft_gl.7z.
SGI OpenGL: Если при запуске идут сообщения об ошибках - отключите видеоакселерацию в панели управления.
или впишите, импортируйте эту строчку в реестр, значение = 00000001:
REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Silicon Graphics\OpenGL] ;"OverrideDispatch"=dword:00000000 ; default (use OpenGL for Windows unless hardware accelerated) "OverrideDispatch"=dword:00000001 ; force use of OpenGL for Windows ;"OverrideDispatch"=dword:00000002 ; force use of Microsoft's OpenGL Implementation
Если при запуске программы она показывает пустой черный экран - положите в каталог WINDOWS\SYSTEM32 d3dref8.dll из из soft_dx.7z (или DirectX 8.x SDK).
Если при запуске программы программы она тормозит или глючит - положите в каталог программы d3d8.dll из SwiftShader или DXGL Wrapper. На вопрос "Use software renderer?" ответить "No".
Распаковываем ресурсы игры:
Используя 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 одновременно.
Как (где) ищется конфигурация ogfviewer.cfg
Размер ogfviewer.cfg - 255 символов максимум.
OpenGL: Если размер текстуры для объекта превышает допустимый, то он масштабируется до максимально допустимого размера.
Если в итоге указанная текстура для объекта не находится, то в drawmode #2 объект с данной текстурой не отображается.
Как ассоциировать файлы с ogfviewer?
Требуются права администратора!
редактировать REG\instogf.reg, исправить там путь к файлу.
затем:
regedit instogf.reg
Как убрать ассоциацию c ogfviewer?
Требуются права администратора!
затем:
regedit delogf.reg
Предположим, что имя нашего уровня - testers_mp_railroad
Для конвертации используем parse_lev.exe.
Из gamedata\levels\testers_mp_railroad запустить:
parse_lev 0 testers_mp_railroad.ogf
Скопировать террейны:
gamedata\levels\testers_mp_railroad\terrain\*.dds -> gamedata\textures\terrain\
Полученный файл testers_mp_railroad.ogf открывать любой т.н. альтернативной версией, например:
WIN\GUI\ALT\ogfviewer.exe WIN\GUI\ALT\ogfviewer_sgi.exe WIN\GUI\ALT\ogfviewer_dx.exe
Для конвертации используем converter.exe из xray_re_tools.
При данном виде конвертации - деревья, кусты, техника, некоторые прочие объекты - не переносятся.
Cкопировать террейны:
gamedata\levels\name\terrain\*.dds -> gamedata\textures\terrain\
Редактировать converter.ini, прописать там пути к папкам с распакованными ресурсами игры.
В той же папке где лежит gamedata\ создать rawdata\objects\levels
Запускаем из папки, где лежат converter.exe, converter.ini:
converter.exe -level testers_mp_railroad -out testers_mp_railroad -mode maya
Полученный файл testers_mp_railroad.object открывать любой т.н. альтернативной версией, например:
WIN\GUI\ALT\ogfviewer.exe WIN\GUI\ALT\ogfviewer_sgi.exe WIN\GUI\ALT\ogfviewer_dx.exe
Для открытия крупных уровней вроде marsh_bench, pripyat - необходимо много оперативной памяти! Рекомендуется при этом закрыть ВСЕ прочие запущенные программы.
Как конвертировать 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 файлы.
Методичка по консольным утилитам.
Утилита: 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 файл)
Утилита: obj2ogf
Запуск: ogf2obj имя_модели.obj [ имя_модели.object ] [ > parse.log ]
если имя_модели.obj опущено - показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл, иначе конверсия в имя_модели.ogf ( xray ogf формат )
Утилита: ogf2obj
Запуск: ogf2obj имя_модели.ogf [ имя_модели.obj ] [ > parse.log ]
если имя_модели.obj опущено - показывает структурированный дамп содержимого модели на экран, при указании parse.log пишется в файл, иначе конверсия в имя_модели.obj ( wavefront obj формат )
Утилита: ogf2smda
Запуск: 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/1: с оптимизацией вертексов? - нет/да (включать не рекомендуется!)
режим 0/2: пропускать lod-,prop_fake-объекты? - нет/да (включать не рекомендуется!)
режим 0/4: пропускать лайтмапы? - да/нет (включать не рекомендуется!)
режим 0/8: не конвертировать, только дамп? - нет/да
режимы складываются.
при указании parse.log пишется в файл.
Утилита: 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) :)
* 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) * USE_ANISO - anisothr. filtering (OpenGL) * USE_FOG - fog (alt,ALL) * USE_SKY - use skyboxes (alt,ALLL) * 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_3DS - no 3ds import/export * 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) * USE_OS2 - os2 mode (OpenGL) * DM2_LIGHT - enable light in drawmode#2 (OpenGL,DirectX)
Изменения (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 формат Изменения (11.02.2011) : [New features] OGFFSCR: Новая версия для MS OpenGL, "отвязанная" от MFC DX7ALT/DX7BASE: Новая версия для MS DirectX7 OGF_GLUT: Новая версия на базе GLUT.DLL (Windows, OS/2) OGF_TK: Новая версия на базе LIBTK.DLL (OS/2) OGFCons: Новая версия на базе LIBAUX.DLL (OS/2) OGFViewer: F12 центрирует модель (ALL) OGFViewer: F12 смещает камеру в центр модели (ALL,alt-версия) OGF2OBJ: показывает LOD-объекты OGFFSCR: отлажен для mesafx 6.2, techland, altogl OGFFSCR,OGF_GLUT,OGF_TK: "M" ("T" для OS/2) - дамп материалов в object.log OBJ2OGF: Новая утилита для конверсии wavefront obj в xray ogf v4 MAKE_OGF: Новая утилита для создания псевдослучайных моделей xray ogf v4 OS2: Портирован DevIL 1.7.8 на платформу OS/2 (devil.dll, ilu.dll), умеем только DDS! OGFViewer: опция DM2_LIGHT [Fixed bugs] OGFViewer: контроль переполнения maxmesh/maxmat OGFViewer: maxmesh увеличен до 17000 (levels\aver) OGFViewer: пересчитываем FOV для widescreen (?) OGFViewer: в предыдущей версии поддержка Orion v1 MSH была сломана - починили OGFConsA: Имя cfg-файла в формате 8:3 (ogfview.cfg), алгоритм так же как и в Win32-версии OGFViewer, Parse_Obj: считываем все известные разновидности object-формата OGFViewer: нет внутреннего бордюра (WS_EX_CLIENTEDGE) в GUI-версии OGFViewer: свет на 0.25m выше камеры (ALL,alt-версия) DX7: Поддержка VertexBuffers, правильный aspect ratio Parse_Lev: Точные вычисление нормалей (в уровнях они сжаты с потерями :() OGFViewer: во всех версиях - 8 типов фона OGFConsA: задержка после "TAB", "F1" [Optimizations] OGFViewer: Только один fseek() в ogf_readchunk() OGFViewer: Пропускаем ненужные секции (ogf/object) OGFViewer: Генерируем массивы индексов отдельно, после считывания модели (DirectX) OGFViewer: GL1.0: при смене miplevel - вызываемl glTex...() 1 раз (OpenGL) OGFViewer: отключаем IsList(), убираем кисть - RegisterClass(...,HBRUSH = null,...) OGFViewer: новый механизм разбора шейдеров m_Flags, различаем 'terrain', 'model', 'models/model' [Notes] ALTOGL: работает только с опцией LIMIT_DDS или без текстурирования, полный экран (ogffscr) TechLand Software(3dfx,s3,d3d): работает только в drawmode #1/#2, полный экран (ogffscr)
Чтение анимаций (ogf,omf), секций S_BONE_NAMES, S_IKDATA, S_MOTIONS Чтение анимаций (object,skl,bones) Чтение particles Чтение level из билдов 1xxx (XRLC формат 0x0C и ранее) Импорт/экспорт *.lwo (LightWave3D) Импорт/экспорт плагин для 3DSMax, Maya Экспорт в *.ogf/*.object (XRay SDK) Fullscreen режим (есть OpenGL бета - ogffscr.exe) Полностью программный рендерер. Ini-фaйл для OGFViewer (meshtool.ini?) Версия для Linux (уже есть - WINDOWS, OS/2, DOS32, DOS16)
Использованные материалы и благодарности
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 DevIL, 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 SGI OpenGL: http://www.gameprog.it/pub/oldtuts/GuideOGLwin/releasenotes.html#hwconfig Techland MiniGL driver: http://www.techlandsoft.com/english/minigl.htm GLIntercept v0.5: http://glintercept.nutty.org/ OpenGL on OS/2: http://www.edm2.com/common/authors/pnewhook.html