OGFVIEWER/MESHTOOL - crossplatform utilities toolkit for viewing, conversion 3d-models and levels from different gaming engines.
Supported formats for open:
Exported formats:
Conversion:
Note that in OGFViewer assumes metric coordinate system. For Orion engine v1 models (which are in centimeters) rescaling is used.
Used engines: IBM OpenGL 1.0, IBM OpenGL 1.1 Gold (beta), WarpMesaGL, 1.4 Scitech SNAP MGL 6.0 (based on Mesa3D OpenGL 1.5 spec).
* to make OGFVIEWER work in OS/2 v3, copy these OpenGL 1.0 DLLs from here: service.boulder.ibm.com) or Warp4 installation to {root}/OS2/DLL directory of your OS/2 v3 PC:
GLUT.DLL LIBAUX.DLL LIBTK.DLL OPENGL.DLL RASTER.DLL
OS/2 v3 is incompatibe with any version of IBM OpenGL 1.1 Gold (beta)
Separately available Windows version - http://www.gameru.net/forum/index.php?showtopic=33123
In base version, object moves over (0:0:0). In alternate version, free camera moves over scene.
All versions built in OpenWatcom 1.9.
IBM OS/2, IBM/MS DOS:
* start up from command line, File Commander.
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 - model samples MESHTOOL\SKY\ - skybox textures for ALT-version (files sky?.dds place in textures\sky) MESHTOOL\FAQ.HTM - FAQ & README (HTML) MESHTOOL\READMEOS2.HTM - FAQ & README for OS/2 (HTML)
All versions
Base Console-version (ogf_glut.exe, ogf_os2.exe, ogf_tk.exe, ogfcons.exe, ogf_snap.exe)
Alternate Console-version (ogf_gluta*.exe, ogf_os2a*.exe, ogf_tka*.exe, ogfconsa*.exe, ogf_snapa*.exe)
libGLU.dll libGlut.dll Mesa_PM.dll MesaGL2.DLL
GATest - SciTech SNAP Graphics Driver Compliance Test Release 3.1 (Mar 27 2011) Copyright 1993-2006 SciTech Software, Inc. All Rights Reserved. Options are: -s - Run in software only mode -e - Emulate missing hardware features in software -g - Use VESA GTF for refresh rate control -m- Use XxY text mode (ie: -m80x60 for 80x60 text mode) -x - Render to front buffer for OpenGL tests -X - Disable hardware page flipping for OpenGL tests -d - Disable dithering for 15/16-bit OpenGL tests -i - Open 3d-model file
For example:
ogf_snap.exe -d -iD:\GSC\GAMEDATA\MESHES\bunker.ogf
*** Changes (2011.04.30) *** OpenGL 1.0 versions of ogfviewer has no support for font output (not including pgl - ogf_os2?.exe). New light scheme - directional Mouse controls in os2 (no in pgl - ogf_os2?.exe) Scitech Snap Graphics support (fastest software OpenGL engine available!), in fullscreen only, random colors generation 3ds file reading support (watcom-compiled binaries only) Proper normals creation *** Changes (2011.06.11) *** New light model in drawmode#1 Support for YouAreEmpty(DS2 engine) and Metro2033 (static) models Now we can read build1935 levels exported by xray_re converter.exe Correct normals creation for *.3ds, *.object Proper bounding box calculation for object, ogfv3 Better support for SNAP: ogf_snap supports VBO, DevIL.DLL can read not only DDS format OpenWatcom-written version can read 3DS models (LIB3DS.DLL required, supplied) Speed-up for reading 'terrain', 'water' meshes Sections mixed 0x1011, 0x1012 (object) Rendering optimization (OpenGL, non-VBO) drawmode#2 with light rewritten (testing...) For mipmapping proper work coeff. ALPHAREF = 50% for LODs (trees) and maxmeshcnt up to 30000 (for object) COMPACT_OBJECT option, now vertexes in object-s optimized (i.e. compressed) *** Changes (2011.07.17) *** New light scheme ( drawmode #1, #2 ) Support for Orion engine v1 models with 0x00000102 header FOV calculated for Y, starts from 67.5 (FovX = 90) to 100 with step 5 then reset to 47.5 Removed not supported tex.filtering combinations and mipmaps Skybox now 3000x1500x3000 metres, distance ~= 2500 metres 0x1008 block - now 10 vmrefs max available (was max=4) *** Changes (2012.01.31) *** Skybox "authentic" as in game (10 planes) Base distance lowered to 400,200,400 + 350 ¬., as in game configs New advanced light scheme in drawmode#2, horizont angle light Now we can Widescreen aspect ratio - 16:9 etc. (keys '5','6') Horizont angle light changes by 7,8,9,0,< + >,< - > keys (drawmode#2) Light sources doesn't affect by ambient light Type model\selflightl = "base" object When loading 3DS nodels check materials and meshes limits OS2 GUI mode (PM_PM) except for ogfcons, removed printf(),WinMessageBox() OGF_GLUT: WarpMesaGL inverts Y axis *** Changes (2012.04.01) *** Export into Collada XML (*.DAE). Export into AutoDesk DXF, meshes arranged by materials in layers. "Reading" DDS-files, as surface of 2x2 meters. Export into StereoLitho (*.STL), MilkShape3D (*.MS3D), X-Ray SDK (*.OGF). OGFDOS16: My own ANM-format for storing animations - 1 mesh only. Reading "multi-mesh" *.DS2MD (You Are Empty). In *.SMD, *.ASE materials rearranged incorrectly - fixed. In *.SMD fixed "extra-large" 100x scale. Export obj rewritten according to X-Ray ActorEditor metodics (all in 1 file). BoundingBox drawn mirrored by Y axis (OpenGL). OGFDOS16: Normales support, misc. optimizations, 2D-"animations" (OGFPLY16), FastGraph engine. ALLE: Models are loded faster now, up-down directional light, statistics (totvert/totind) get from models structure. MESHCONV: Logging expanded. *** Changes (2012.07.31) *** PARSE_SPW: new instument to parse GSC S.T.A.L.K.E.R. spawn files ALL: 22 sky color variants skycolors.png - DaySkyColorReference (frostbo.deviantart.com) ALL(GL): all versions now has two light modes - directional from camera (view pos), sun-similated. OGFLOADER: "Lost" support for multi-mesh ds2md is back. :) ALL (BASE): LOCALVIEWER render-state, reflexes are more accurate now. OGF_GLUT, OGF_TK: OnMouseMove() - removed duplicated x,y variables. OGFLOADER: Correct faces orientation in ms3d export code. ALL: side-step for moving lowered F7 (*4), F8 (/4) OGFLOADER: Removed maximum limit for meshes, materials. OGFLOADER: In metro2033 models duplicated materials are checked now. NEW_REND, OGFSCENE: Not another try to rewrite OGFVIEWER engine (WIP). PARSE_YAE: Now we can parse not only models (ds2md) but aslo geometry (ds2, WIP). OGFLOADER: Note that ms3d model size is limited by 65535 indexes, 65535 vertexes ("hard" limit for this format!). *** Changes (2012.10.31) *** [New features] PARSE_YAE: Now decoding binary models (ds2md) versions 0.6, 0.9, 1.0 ALL: Support for binary ds2md (YaE) models version 0.9 (beriya.ds2md, ship.ds2md) ALL: Support for binary ds2md (YaE) models version 0.6 (krovat.ds2md medscen1.ds2md medscen2.ds2md toilet.ds2md trash_box.ds2md) ALL(DX, GL): In alternate version cull distance incremented to 3 km = 3000 m (was 400 m), use "N" key for it. [Fixed bugs] OGFLOADER: Fix for ds2md (YaE) models with "short" texture paths. ALL(GL): Don't call glBegin(GL_LINES) for grid twice. ALL: Correct rescale for ds2md models (divide by 100) and reading bounding box (ds2md 1.0) [Optimizations] OGFMODEL: Engine classes conflicts with AutoDesk 3DS MAX SDK - fixed (Mesh -> mtMesh ...). ALL: Remove _try {} except (1) everywhere [Notes] OGFLOADER: Size of ms3d model is limited (when exporting) by 65535 indices, vertices ("hardcoded" format limit!). *** Changes (2012.12.29) *** [New features] PARSE_BKP: NEW utility for restoring xray-level source backups MBENCH: new bench tool with tri, ply, nmb? model support, also ltest tool refresh ALL,DX,GL: fully implemented anisotropy PARSE_LEV: Option 4 correcrtly converts lightmaps separated from base geometry [Fixed bugs] PARSE_LEV: fix while deleting nonexistent array ( delete [] swiblk ) OGFLOADER: crop vtx block larger than 65535 for LARGE objects OS2: fix for bad timer - now we use DosTmrQueryFreq/Time, does not depend now on tcpip.lib OS2: IBM CPP needs to remove optimization (-O+) or change it to (-Oc+) so cull using bbox will work properly OGFLOADERZ: now models import not affected by "pragma pack #1" ( /Zp1 ), used in MAX plugins OGFLOADER:fixed 0x0E S_BONE_NAMES section read [Optimizations] ALL: v_far_dist, HI_DIST now in base code (not only in ogf_dx?) OGFLOADER: read object portion 0x1005 in one block regardless of USE_XLAT MESHCONV: define USE_DX9 to disable pointless USE_XLAT stuff OGFLOADER: removing memcpy() where possible - it is slow - use f.e. *(int*) instead OGFLOADER: made normals, calc bbox once for object, m2033, calc bs_radius for *.ds2md PARSE_LEV: now removes duplicated vertices (10% economy for final levels, 30-40% for earlier builds!) OS2: it is safe to use -onatx (i.e. OPT=1) in all Watcom builds IL_WRAP: logging only when USE_LOG, mipmap support ALL,GL,OGFLOADER: anisotropy evaluates float constant ALL: optimize 'F9' MIPMAP code ALL,GL: glCompressedTeximage2D ext. in all code (excl. pure OS/2) *** Changes (2013.06.30) *** [New features] MESHCONV: support for rescaling while converting data OGFLOADER: Now we support all types of 4A Engine models (Metro 2033, Metro Last Light) - *.model, *.mesh [Fixed bugs] CHILDVIEW: When DISABLE_TEXTURING is declared program does not compile (Windows). [Optimizations] OGFLOADER: Internal model code for 4A Engine changed from 0x2033 to 0x4AE0 ALL,GL: Now we show GLSL version in logs, info panels PARSE_203: Now removes duplicated vertices (see. PARSE_LEV above) * * *