I’ve been learning World Machine 2.0 Pro over the past couple of weeks and I’m absolutely blown away by the software. After assembling my first terrain in 3ds Max using height/diffuse/normal maps, I was eager to use my experience with Maxscript to start automating the process. In particular, I was looking toward scripted import and welding together of several adjacent map-displaced meshes into one optimized mesh.
Unfortunately, I’ve scoured the WM 2 Pro manual only to realize that the simple form of automation I needed doesn’t exist. WM2 Pro currently has plenty of “set” and “do” functionality, but no “get” functionality whatsoever. In other words, there is no way to inquire World Machine (or its output files) for the information needed to find, import, position, displace and texture the exported sections of terrain in 3ds Max (such as Render Extent name, position, size, resolution, single vs. tiled, tile pattern, types of maps exported, map file names…etc.)
This functionality would be best implemented in the form of a unified “Output Info” XML file automatically generated/updated every time a file is exported from a world in WM 2 Pro. This would allow the legions of scripters in the various 3D communities (Max, Maya, XSI, C4D, etc.) to create user-friendly scripted tools for fast, precise and automated import and handling of even the most complicated output from WM 2 Pro. In my opinion, the lack of this feature is by far the single largest obstacle you face in expanding World Machine’s usage in low-end and mid-range commercial graphics (e.g. training, forensic, educational, marketing, etc.). Adding a text-based file like this would open up WM 2 Pro’s output to automated import into every major 3D app on the market, and I can guarantee that I’d be working on such a tool for 3ds Max as soon as this feature was added.
[hr]
[size=12pt]------- SPECIFICATION -------[/size]
[hr]
Below is some pseudocode depicting a rough structure for the Output Info XML file, and I’ve included some clearly global settings (such as Altitude Scale and Units) inside each File Output section. I consider this a more powerful way of storing the information, as it allows 3rd party developers to detect if users have output files with conflicting settings.
[hr]
[font=Courier]
[/font]
[hr]
NOTE #1: It would be critical that the Output Info file is updated during each output without destroying any existing data for the other File Outputs/Render Extents. The file would be created/recreated whenever needed and the individual File Output sections would only be added/overwritten as those outputs are completed/repeated. This behavior would allow a script to either gut or delete the XML file after a complete import is finished, and any new files output from WM would show up in the XML file as ready for import/update.
NOTE #2: The Output Info file would save to the location set by the Project Settings > General Setup > Default Relative File Path section. Ideally, the file name could be specified and allow the use of a tag/alias for the current world file name. (This functionality was requested for other areas of the UI at the end of my my previous post.)