/mviewer

Reverse Engineer MView 3D File Format

Primary LanguagePython

MView File Viewer

This project consists of 2 scripts. extract_mview to extract files inside the mview archive and extract_model to convert the .dat files to .obj.

Also includes a Noesis plugin. (see below)

Example

File downloaded from ArtStation.

Result

Requirements

Usage

// extract mview archive
// python extract_mview.py <filename>
$ python extract_mview.py test_data/test_file1.mview
$ > thumbnail.jpg image/jpeg
$ > sky.dat image/derp
$ > mesh0.dat model/mset
$ > mesh1.dat model/mset
$ > mesh2.dat model/mset
$ > mesh3.dat model/mset
$ > mesh4.dat model/mset
$ > mesh5.dat model/mset
$ > mesh6.dat model/mset
$ > mat0_c.jpg image/jpeg
$ > mat0_r.jpg image/jpeg
$ > mat0_n.jpg image/jpeg
$ > mat0_a.jpg image/jpeg
$ > mat0_g.jpg image/jpeg
$ > mat0_s.jpg image/jpeg
$ > mat1_c.jpg image/jpeg
$ > mat1_n.jpg image/jpeg
$ > mat2_c.jpg image/jpeg
$ > mat3_c.jpg image/jpeg
$ > mat4_c.jpg image/jpeg
$ > mat4_a.jpg image/jpeg
$ > mat5_c.jpg image/jpeg
$ > mat5_a.jpg image/jpeg
$ > mat5_s.jpg image/jpeg
$ > mat6_c.jpg image/jpeg
$ > mat6_a.jpg image/jpeg
$ > scene.json.sig application/json
$ > scene.json application/json
$ > COMPLETED!!!

// convert dat files to obj (wavefront)
// python extract_model.py <folder_containing_scene.json>
$ python extract_model.py test_data/test_file1
$ > COMPLETED!!!

Viewer

You can use the included viewer called Noesis. Just drag and drop the .obj file into Noesis. You can also open the .obj file with any 3D program that supports wavefront format. @richwhitehouse

A Noesis plugin is also available at noesis/plugins/python/fmt_artstation_mview.py. Just open the .mview files with Noesis.

Notes

To download an .mview file:

  1. Open url with 3D viewer in browser. (do not click play yet)
  2. Open Developer Tools and go to Network tab.
  3. Click the play button on the 3D viewer.
  4. Type or search for mview on the Developer Tools' Network tab.
  5. Right click on the file and select open in new tab. (will start download)

[FIXED] [BUG] There is currently no support for huge files that uses uint32 indices. Pull requests are welcome.

Community