Giter Club home page Giter Club logo

wowexporttools's Introduction

WoW Export Tool

Tool to export World of Warcraft assets to more portable formats.

Site

Build Instructions

Windows

The solution requires Microsoft Visual Studio 2017 and:

  • NuGet Package Manager
  • .NET Framework 4.8 SDK
  • .NET Core cross-platform compilation with .NET Core 2.0 development tools
  1. Open the solution in VS2017
  2. Type Update-Package -reinstall in Tools -> NuGet Package Manager -> Package Manager Console
  3. Build Solution

wowexporttools's People

Contributors

dkrutsko avatar kruithne avatar marlamin avatar thunderysteak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

wowexporttools's Issues

Ambient sounds cause internal exception on playback

It has been observed that attempting to play ambience sounds (amb_kunlaisummit_shadopan_base for example) in the exporter causes an exception, preventing playback.

This does not effect exporting, and the exported files play without problem. Potential cause may be the extended wave size of these tracks compared to the smaller ones.

AccessViolationException

I've ran into AccessViolationException after the initial setup window (where you choose online/retail and export folder path).

Here is the event log data:

Application: OBJExporterUI.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
   at OpenTK.Graphics.OpenGL.GL.BindFragDataLocation(Int32, Int32, System.String)
   at OBJExporterUI.Shader.CompileShader(System.String)
   at OBJExporterUI.PreviewControl.RenderCanvas_Load(System.Object, System.EventArgs)
   at System.Windows.Forms.UserControl.OnLoad(System.EventArgs)
   at System.Windows.Forms.UserControl.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean)
   at System.Windows.Forms.Control.CreateControl(Boolean)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.ScrollableControl.WndProc(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.ContainerControl.WndProc(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.Control+ControlNativeWindow.OnMessage(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)

I am running it on a Windows 8.1 inside Parallels Virtual Machine for macOS.
I could be related to graphics and the my weird setup, but other complicated software runs fine (playstation emulators, various native rendering programs and so on). WoW runs just fine.
I am also using this setup for day-to-day C++ and C# development, so I can assist you with debug if you need, just not familiar with graphics, although I played with XNA so I might understand.

Map names with spaces break the importer

(  0.0000 sec |   0.0000 sec) Importing ADT OBJ 'E:\\Temp\\Location\\world\\maps\\troll raid\\troll raid_23_38.obj'...
troll raid  0.00%
23
38
12266.666666666668
20266.666666666668
(  0.0000 sec |   0.0000 sec) Importing OBJ 'E:\\Temp\\Location\\world\\maps\\troll raid\\troll raid_23_38.obj'...
  (  0.0010 sec |   0.0010 sec) Parsing OBJ file...
    (  2.3481 sec |   2.3471 sec) Done, loading materials and images...
    (  2.3501 sec |   2.3491 sec) Done, building geometries (verts:37120 faces:65536 materials: 1 smoothgroups:1) ...
    (  6.1484 sec |   6.1474 sec) Done.
  (  6.1494 sec |   6.1494 sec) Finished importing: 'E:\\Temp\\Location\\world\\maps\\troll raid\\troll raid_23_38.obj'
Progress: 100.00%



Traceback (most recent call last):
  File "C:\Program Files\Blender Foundation\Blender\2.78\scripts\addons\io_scene_adt\__init__.py", line 77, in execute
    return import_adtobj.load(context, self.filepath)
  File "C:\Program Files\Blender Foundation\Blender\2.78\scripts\addons\io_scene_adt\import_adtobj.py", line 94, in load
    with open(csvpath) as csvfile:
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\Temp\\Location\\world\\maps\\troll raid\\troll raid_23_38_ModelPlacementInformation.csv'

Investigate textures like mm_strmwnd_wall_04

Seems to be used in-game, but BLP -> PNG export always seem partial. Maybe a layer of some sorts?

Same thing seems to happen for WMOs like 7lg_legion_gatewaysmall01.wmo, previews fine but exports bad.

3ds Max import - wrong position WMO and ADT

Hey. Just found your wow exporter yesterday and its awesome.

I exported all Warsong Gulch tiles and imported to 3ds max 2018 as OBJ, but wmo and adt are not placed correctly.

wowexporter

I'm not even really sure, Blender isn't my thing.

Traceback (most recent call last):
File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\io_scene_adt_init_.py", line 77, in execute
return import_adtobj.load(context, self.filepath)
File "C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\io_scene_adt\import_adtobj.py", line 82, in load
nodes = node_tree.nodes
AttributeError: 'NoneType' object has no attribute 'nodes'

Minimap generation enhancement

Currently, minimaps are generated via a point-cloud of an ADT. The resulting image is very odd looking, and not quite blizz-like. I know that that the application is already able to render appropriate overhead views, so generation of a more proper-looking minimap should be possible.

Take the baked textures function and use it to 'bake' a set of minimap textures instead of using the point map. The downside is the lack of models/wmo's, which I assume will one day be a part of the 3d view functionality.

ADT Splat/Alpha textures

Hi, it would be beneficial to export the data used to generate the ADT's 8k texture that you allow for exporting. There are many usecases where it is needed to control PBR values per ground texture, and normals, which can't be done with one massive 8k terrain texture.

I am not entirely familar with the ADT filetype but it appears that since you're able to render out the final version you should also be able to render out the splat/alpha/control textures used to create it.

Exporting options

For all:

  • Texture transparency (default on)
  • Texture metadata (default off)

For ADTs:

  • Which WMOs
  • Which M2s

For WMOs:

  • Which groups
  • Which doodadsets/M2s
  • Include extra materials or not (default off)

For M2s:

  • Which geosets (yay, done!)

More?

Direct external M2 conversion

As discussed on Discord, a neat little extra for the tool would be the ability to point to an M2 file on disk, and have it converted to an OBJ (or other applicable format) using the tools internal convertor.

Bonus points if this could extend to BLP -> PNG.

Gaps in between ADT chunks

There are still visible gaps in between MCNKs. Likely caused by incorrect math. Doesn't seem to be a rounding issue.

Exporting from online mode Classic (retail)

I've noticed a problem when exporting from the Online mode (classic Retail) Maps - Instance Eastern Kingdoms map 31_28 and 30_28 does not export the ground obj file.

I did check some tiles nearby and they did not seem to have the same problem. the once I did check are:
32_28
29_28
29_27
28_27
42_26
41_26 all the way to 28_26

Also noticed a white line on the border when exporting 36_40 in 4k and 8k, however this does not occur when doing it in 16K.

Map export textures not overwriting for different render resolutions

Steps to reproduce:

  • Export a map tile with the texture resolution set to 256px.
  • Export the same tile with the texture resolution of 4k.

Expected outcome:
The original 256px texture file on disk would be replaced with the 4k version.

Actual outcome:
A 4k texture file is not produced for the second export.

Cause of issue:
For single-texture map tile exports, the exporter uses the same naming convention regardless of texture quality. To prevent re-rendering a texture that's already exported, the exporter checks for the presence of the file on disk and skips rendering if it already exists.

Potential fixes:

  • Use a different naming convention for the different texture resolutions. For example, the texture for 4k exports could be azeroth_xx_yy_4k.png
  • Check the dimensions of the image file on disk, and if the dimensions are different to the intended export, replace it with a new render.

Advanced Filtering/Wildcards

If someone wanted to search for all files containing the phrase 'fire', but limit the search to only entries beginning with 'spells/', this is currently impossible. Some form of filtering wildcard system would be a massive quality of life improvement.

ADT Import takes a very long time

Blender sits using a full core, the commit and RAM usage very very slowly increase (we're talking a few KB every couple seconds) and the disk usage is literally 0. If I wait long enough, it eventually works fine. Why does it take so long, though? Is it not possible to speed it up somehow? D;

Foliage export

With the map export tool, a useful addition would be the option to export foliage with it. Given the complexity, it doesn't need to be included with the terrain geometry itself, rather the individual foliage models should just be dropped into a foliage folder alongside the export so that users can import them for usage with an emitter or other foliage solution.

Classic support

  • ADT loading
  • ADT exporting
  • Maptexture compilation
  • WMO loading
  • WMO exporting
  • M2 loading
  • M2 exporting

Program crashes :( help pls

Hello, use the Blender version 2.80.
As soon as I want to load a map, the program crashes. Or I get error messages. (see image)
Unbengannt-1

Bugged / corrupted models after export?

Sorry for "spamming" you with issues mate, I just started trying out OBJ exporter today, and ive run into a few issues so far.

One of the more annoying one is this. It seems that some of the files are "corrupted" when just opening the .obj file with Cinema 4D after exporting it from OBJ Exporter.

Seen this before?
Import

Blender Import Tools Bugs

Like my previous issue report, these issues were known but did not have a dedicated post.
WMOs and M2s do not import with proper positioning
When importing an adt to Blender (and by extension exporting it) the objects (wmos and m2s) won't be in their proper position, and will be offset (using unity to show the example since Blender crashes when I have everything loaded with textures because my avaliable.) Highmountain (adt trollraid22_23)
image
image

You can see objects floating, the lodge and other objects do not actually align to the road. A better example on picture 2 shows where the mini arena should be versus where it actually gets imported.

Here is a picture of how it should work (not 100% accurate but much closer than the initial import)
image

Importing multiple adts with one session in blender, will only import the objects for one adt.
Example: if you import adt1, all objects will be present. If you then import adt2, the objects from adt won't be present.
This may be something on my end, end user solution is to simply import one adt per file, export, then start a new instance and export. Leaving about one exported file per adts. Realistically, I'm unsure if this is even an issue, it might lead to cleaner project files, being able to individually edit adt objects rather than an entire map space for a minor change.

Cheers

Unified Asset Directory

Hey,

How feasible would it be to allow a configurable directory that assets are dropped into for exports, and referenced in the 3D models from there? Over the course of time, I have a metric tonne of duplicated files all over the place, which isn't a problem but also not ideal.

Ideal scenario would be something like...

  • Define an asset directory in config, such as D:\assets
  • All M2 objects that are exported go into D:\assets\m2 without their WoW directory structures.
  • All WMO objects that are exported go into D:\assets\wmo without their WoW directory structures, and drop child M2 objects into D:\assets\m2
  • All textures for M2/WMOs are exported into D:\assets\tex without their WoW directory structures.
  • For ADT tiles, export into D:\assets\adt under a single directory for the map, such as D:\assets\adt\expansion01\expansion01_43_12_29.png

While losing the organization structure that the exporting currently provides, it would be far more beneficial for the following reasons.

  • Stops duplicated texture/object files all over the place, which saves a lot of disk space.
  • Moves texture files away from objects, making the directory with the objects less cluttered.
  • Easier for sustained import usage to filter one single directory containing all M2 objects, rather than having to navigate the WoW directory tree to find every item, and makes it searchable using the Blender import directory as opposed to having to Windows search and then still manually navigate.
  • Speeds up exporting if existing files are not overwritten since more re-use?

Map tiles merging

Hi there!

Thank you for your OBJExporter tool - it is very useful! :)

Can you suggest a proper way for merging generated map tiles (.obj) into one .obj file (8 neighbor tiles + 1 center tile).

Import M2 from ADT but not from WMO option

Hey,

In the same vein as the other PRs, would it be feasible to have an option for map exporting that allows the M2 doodads from the ADT itself to be included, but the M2 doodads from included WMOs to be excluded?

Use-case example: Exporting the area of Wollerton Farm behind Stormwind city for a scene. Having the M2 doodads that are part of the ADT itself would be useful (trees, pumpkins, fences, etc). But if the interiors of the WMO's is not used, having all the M2's inside of those slows it all down unnecessarily.

<3

Export entire map option

There are some maps that are made with just a base WMO object and then a bunch of M2 doodads, without any actual terrain chunks. Could it be possible to get an "export entire map" button. This could also be useful for trying to export the entirety of a small map without having to do each individual chunk.

C4D Importer

Hi I've tried the Exporter. And this creates a nice folder with all the assets but when I want to use it with the importer it doesn't recognize all the obj files in the directory. For instance I've tried to export Dalaran but when using the import plugin only a chest and an axe seem to be selectable. The rest of the files which are there are not showing.

Add 'ignore alpha' option for textures

Hey,

A lot of textures in the game use the alpha channel to store specular (assumption) data rather than actual alpha values. When exporting textures to PNG, this is trivial to fix, but when flicking through the textures in the exporter itself, things are a little more annoying.

marlamin s_wow_exporter_0 3 2 4_2019-03-03_18-41-32

Simple fix: Add a checkbox on the texture viewer to 'Ignore alpha', and in the preview when this is checked, simply ignore the alpha channel completely.

Bonus: If this option could extend to actually exporting the textures without the alpha values, that would be a small quality of life increase. Doubly so if this can be extended into the model exporter so that exported textures also adhere to the checkbox.

Texture Alpha Channel

Some models are exported with a material that has a correct alpha channel. However some seem to not correctly use an alpha channel despite there being one.

Example of a "broken" model:

  • Export "stormwind", tile 29,48
  • Look at model "deadmineanchor" (the chain has a texture with alpha, but the alpha channel is turned off/not exported to the MTL)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.