• Welcome to World Machine Community. Please login or sign up.
July 17, 2019, 08:13:40 pm


Read the Development Diary for an inside look at World Machine's progress!

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - hogjonny

Guest Forum / Tile output not overwritten
July 31, 2017, 04:01:53 pm
Build 1:  I built a 4 x 4 tileset, everything wrote out fine.

Build 2:  Then I used the same world, but built a 16 x 16 tile set ...

Any tile in the original 4 x 4 Build 1, was not overwritten in Build 2 (I can clearly see from the 'date modified' file data)

I've checked that the folders/files in the file tree are NOT read only, that would have been my first guess.

Anyone seen this before?
World Machine has a bug ... it can't validate a tile-set with relative paths!!!

'Specify from Files...'

With the checkbox 'Use relative path to file' selected, the node can't validate the tileset.  Absolute paths work fine.

The problem here, is this is going to cause issues with portable automated builds:

  • I am creating world templates, set up with staged automation:  Build tiles, stitch tiles, etc.  So if I provision new levels from this template (copy the template to a new location), these absolute paths now have to be updated manually before the world can be built.

  • Automated builds will break.  Develop in branch 1 locally, build in branch 2 in a workspace on a remote farm - the absolute paths will cause the build to fail

Feature Requests / Improved curve editor
July 18, 2017, 07:42:42 am
Some additions to the curves node editor would be nice

1 - Visualize water height, I want to draw out flat under the water and smooth beaches along the coastline.
2 - Point based curve, so I can drop in points with specific heights
3 - Overlay a histogram, so I can visualize the curve against the input height fields data more easily
I am trying to figure out if there is a way in the automation scripting, to specify which tile to build?

ideally, I could push the same world data (folder and file structure) to 16 machines, and have each build and render a single tile.

As far as I know, which tile to render is not exposed to the automation scripting .xml file!

But I was reading this about Wildlands:

And it mentions this:
We requested some additional dev to Stephen Schmitt, author of the World Machine. He added an additional variable exposition to the tile rendering system in order to use with a dedicated render farm written in c#.

Does anyone have a working example of this or know how to do it???
General Discussion / Relative Paths
May 10, 2017, 03:22:29 pm
Relative Paths don't always work the way I would expect them to...

Consider this situation:
- I want to use a Sand world, but then use it in several other worlds
- I want a Rocky world that also uses Sand
- I want an Island world that also uses Sand

I have two separate setups for folder structure that I tried.

{one} - This one is more flexible and ideal for modularity

My Depo:

My Rocky World

My Sand

In WorldA, I want to use and output from WorldB ...

  • when I use a input node, and point it to the height.tif from WorldB I get an absolute path:

  • C:\dev\worldmachine\WorldB\input_maps\height.tif

What I would expect as a relative path:  ..\..\WorldB\output\height.tif

Relative paths can usually be up and down the filetree?

{two} - this one allows for downstream cascading only, far less modular


In WorldA, I want to use and output from WorldB ...

  • when I use a input node, and point it to the height.tif from WorldB I DO get a downstream relative path:

  • WorldB\output\height.tif

There are a couple of issues and problems with this workflow,if you are trying to build modular and automate world building:

  • Data portability:  If I copied the c:\dev\worldmachine folder to another drive like D: the path is no longer valid, as it's absolute instead of relative.  Think build machines, source control, multiple users, workspaces and depot mapping ... this will eventually be encountered.

  • Modularity:  I have to always order reuse in a downstream way.  Eventually this will be a mess and become inflexible.

When setting up a world in the GUI,
in the Project Settings, you can create a 4 x 4 world
then you can 'select tiles to output' ... for instance, just 0,0

Basically, I want to do the same thing with the automated scripting (but can't figure out how).
Effectively, I want to render the world 16 times and each call, tell it which tile to specifically build.

Has anyone done this and have a working example?
General Discussion / 2.3 vs 2.9 file support
June 02, 2014, 12:45:07 pm

So my CD created a .tmd in a version of 2.9 and I can't open it in the release 2.3 version.  I assume they are just not compatible?

Is there any way to port it to work in 2.3?

- hogJonny
I can't seem to find a link for downloading a 64bit .exe for the latest release - is there one?
Feature Requests / WM unit support
March 13, 2014, 10:26:42 am
Would it be possible to support a more generic base unit - as a whole unit?

As a game developer, I tend to think more along the lines of this:

1 unit:
    - what is 1 unit in my game engine?
    - what is 1 unit in my 3D editor?
    - how tall is my character in units?

1 unit = :
    - generic unit in engine
    - 1 m in maya (and/or 100 cm)

Character = :
    - 2 meters in height

terrain tile = :
    - 1024 units / m on edge
    - 2048 texels on edge :: macro = 2 texels per unit = texel is 0.5 u/m
    - 64 texels per u/m ::
        - 1024 detail map = 16 u/m = 64 x detail repeat

So in World Machine, I tend to want to just work directly in meters/km - the crux is that likes in many cases WM likes to display in km:
    - I put in 1024 m
    - it displays 1.03 km  (It would be nice to at least get another decimal place so I can work with a precision that represents my whole number units with confidence!)

What I do as a work around?
    - I let 1030 m / 1.03 km be my default tile width/height (because then, any whole number multiplier of that works out 3 tiles = 3 x 1.03 = 3.09)
    - basically, 1.03 km = 1024 units (which is a bit funky for artists to think about)

Switching to 'World Machine Unit' doesn't work out well, as it's basically a floating point (which is even less artist friendly)

Anyone else have any thoughts or input on this?
Feature Requests / WM save button icon
March 13, 2014, 09:06:37 am
How about a toggled save icon, that indicates visually if the files current state has been saved (like notepad++ has)?

I have a feature request (a few points I may have brought up before)

1. Relative input/output/paths:
These are obviously useful for project automation (build as well as !setup!), organization, etc.

  • You CAN already specify 'Default Relative File Path'

  • SOME nodes like 'File Input' and 'Heightfield File Output' support relative paths

  • Other nodes like 'Bitmap Output Properties' DO NOT support relative paths

It would be REALLY nice if everything supported relative paths!

2. Scripting support for modifying/setting file input and output

The WM automation is a great feature!  It would also be really fantastic if there was scripting support for setting up projects, files, node structure, input/output.  I can imagine the ability to fully automate and script the setup and build for a massive world built from tilesets.

Want to go the distance- add a python API!  I volunteer to help :)

Some context:
For my projects, I set up a template world.  We have a common folder structure and naming conventions, to help with automating preview builds, full-res builds, processing and converting.  Pretty much, I remove as many sets as possible from people's daily routine - so they can do what they do best creatively.

We have setup scripts, which clone the template to properly set up new worlds that match project conventions - the only real significant hurdle right now; is that after cloning a world, in order to ensure the world builds into the proper paths is to make sure they go touch every bitmap output node to make sure it's pointing to the proper location.

The biggest snafu is that this is error prone, it is easy to miss a node for example - and this is lost time if it's a mistake in a large world that takes hours to build full-resolution!
Bug 1)  *sometimes* my Tile output is flipped vertically.  I can't figure out why or what causes it... I think it might be resolution of the output.  If I build with tiles of 512, they seem to render fine.  Yet, my prior build was at a resolution of 2048 per-tile and some of my output was flipped vertically.  This is NOT on all output types, it's only on certain type of node layout... which does have some 'tiling' 16-bit .tif inputs, getting combined with other data in the file before getting output.

bug 2)  I am having garbled (odd looking, sometimes inversed, other times blank, other times incorrect tiling edges) data in *some* of the tiles in a set on these same layers - I can't figure that out either.  Anyone else seen this sort of described behavior, know any work arounds?

Help!  I'm in a tight squeeze :)
Feature Requests / Distributed rendering / WM render farm
December 20, 2010, 08:44:03 am
Distributed rendering to a farm would be a great long term feature to build in.
Currently the file input node uses relative / absolute paths for filepath mapping.
The heightfield output also allows you to use relative paths.

However, the mesh output does not... nor does the standard bitmap output node.

(also, all of these nodes have very different looking interfaces even though to an artist type these sort of things are very similar.)

In a team/project environment, having relative paths for everything would save a lot of time.  This includes copy to a 'network drive' as well as cloning a project (renaming the root folder for that terrain) and using it as a template for a new terrain or even a variant of that style (say taking the look and feel of a single play map and using it as the basis for a multiplayer map.)  Currently, when I do an copying or cloning, I have to go in a remap a whole bunch of nodes  :(
Bug Reports and Help / Unsatble File
November 21, 2008, 01:40:52 pm
I have a particular file which seems to remain unstable, for no apparent reason I can see... I am not doing anything odd with it I haven't done in any of my other files which are similar.  It always seems to crash the program on a tiled build, somewhere in the middle.  A non-tiled build seems to work fine.  Anyone know any work arounds?
Bug Reports and Help / Problems with Masks
November 20, 2008, 11:04:25 am
It seems like mask inputs often do not work.  Specifically at the moment, and I can't get the mask input to a combiner to have any effect on where the node does or does not function.
Feature Requests / Layout Generator
November 19, 2008, 06:35:32 pm
I'd like to make some suggestions for the layout generator

I wish there were some other methods for setting the height of a shape or vert.  Let's say I want to make a map layout for a game, I have Base-A, Base-B and a road network between them.

When I create a shape for Base-A, I'd love to be able to set the height of shapes automatically - maybe via means of some sort of average or sampling based on shape coverage.  So basically, the layout generator node would have an input for heightfield (push the same height in, rather then blend the output later.)  An alternative method to setting the altitude of the shape would be a coverage sample (random shotgun test), say a default of 16 random samples within the geometry boundary of the shape - average these samples and use this as the height for the shape.  A higher sample setting would likely result in a more accurate 'average' height of that area.

An easier method of placing roads that roll along the natural terrain, you could do something similar.  Currently, when you push and pull the height of a vert, it's difficult to be precise in setting it to match the terrain; the tool is precise in allowing you to set a specific height, but there is no way to easily pick or sample the height of the terrain in that location.  You just have to kind of 'eyeball it'.  Similar to above, if you know the location of the vert and you know the width of the road, then average a sample set around that location and use this to automatically set the height.

So on a far more advanced note, we could talk about bank and slope setting/limiters as well as influences to creating roads... but that seams pretty advanced and I wouldn't want to wrap my head around it myself.  :)

For our game content, as an example, I spitting out data in multiple passes at different resolutions.

For example:

  • Pass 1 - Mesh Output @ 6 x 6 tiles, 32 resolution

  • Pass 2 - Texture, Normal Map Output @ 6 x 6 tiles, 2048 resolution

As is common, I am compressing my normal maps (removing black) and using them as tangent space normals.  I have shader settings to tweak the amount of normal bump rendered on screen in the, and as a result with this output I can manage to get everything to look OK.  However, I know that the normals are not technically correct, as they are based off of a flat plat and not the mesh output I am importing.

As a result, sometimes I can see where the normals are abnormally 'bent' when rendering on screen in our real-time.  This usually occurs on steep slopes, which makes sense as that is where the most extreme normal deviation would appear on the mesh normals to begin with.

What I would LOVE is a modified normal map output, which could know about or store information about the mesh tile output resolution I am using and then diff the normal output against them when outputing the maps.

Currently we are living with the output normal maps as is, but some point down the road we are likely going to have to find a solution to account for and correct the anomolies.  Which would probably involve us outputing the mesh normals into a texture, then processing the mesh normals against the WM normal maps and outputting a corrected texture.  (some sort of baking process, like transfer maps in maya, or an offline tool.)  But ideally, it would be great to have exactly what we need come out of WM directly rather then add additional steps into our pipeline.  WM out --> 3D app import, done.

*note:  we smooth the normals on the mesh, and average normals across tile edges.  This would be important and necessary to take into account in WM to output correct normals based on the mesh output.

Anyone have thoughts on this?

Feature Requests / Alternate Color Picker / Swatches?
November 19, 2008, 02:38:15 pm
For artists, an alternative color picker / swatch dialog would be great.  There are many great examples out there in various art programs.
So I've got some pretty complex node structures now, with 2-3 large "node clusters" to generate different texture passes for real-time game shader input maps.  I am finding that I am passing the final output heightfield of my terrain generation (ending in final erosion...) into like 10+ different nodes scattered across the file, a couple in each of the larger clusters, and a few loose ones.

It's now becoming more difficult to visually track some of the flow from node to node, lots of wires out of my terrain passing and crisscrossing the file.  This is fine for me as I created the file, but when I think about passing this on to another artist on the team to use or replicate it could appear confusing or even daunting (just as I felt the first time trying to wrap my head around building what I need.)  Like other tools and process in our pipeline for game content, I want to make our files as clean and easy to work with as possible.

What would be really useful to me is some kind of additional flow control, just a simple pass through or a multi-splitter with ALL outputs ON, which would do nothing more then allow me to simplify the visual routing of the node structure.  So for instance, I could split and route my primary heightfield to or around my larger clusters and forgo most of the crisscrossing.

I'm currently looking at doing this by building my own simple macro, but it would be nice if this was a simple tack-on to a future release?
Feature Requests / Water run-off, rivers, lakes, etc.
November 06, 2008, 10:57:01 am
The basic flat water table is great, don't get me wrong.  It's easy to use and works great for most of the worlds we are building for game development.  However, I'd love to see a filter in future versions which would drop water droplets (maybe based on a rainfall setting?) and then build a mask (probably a lot like the sediment flow stuff in the erosion filters) but basically build up tributaries, rivers, fill up lakes and pools and such... cascading down to the global water table.  Maybe then even pass a mask for this into another filter like the beach erosion, to make flat banks and washes associated with it.
Feature Requests / Preview window - pop out
August 19, 2008, 03:50:41 pm
The preview (upper left) is so small - but my workstation has massive monitor space, great powerhouse GPU, etc!

I feel like I have to squint to see the preview sometimes.

I love seeing changes in the large 3D view, but I need split panes, or ability to pop-out the 3D view to a separate resizable window - so I can do my work in the 'device view' and have an open 3D view.

Even the ability to set the size of the preview pane would be great.

- jonny
There are thousand of filter plug-ins out there, and many graphics programs will support them - so there could be some potential here: maybe someone could even write a plug-in with the WM PDK which could support them.  You may have to convert the the heightfield data into a image format, access/run the filter, then convert back to the heightfield format (not sure exactly how it would work.)  But this would let you do some funky stuff with the already very awesome World Machine.

Anyone know more about this?  Here is a google link with some info about the ps filters:  http://www.thepluginsite.com/knowhow/tutorials/introduction/introduction.htm

- Jonny
It has happened 2 times to me currently - anyone else?

10 x 10 tiles build setup

1. I had completed a full build at 256 - writing out all outputs, including mesh generation.
      - All .obj tiles wrote out fine
2. Then I disabled a bunch of nodes (for texture generation, etc.) setting up for 'mesh only' build at lower resolution - custom setting of 50
      - When I imported all of my meshes with my mel scripting, liked mostly fine - but 2 meshes were very dense looking
      - At close inspection, they were 256 posts per edge instead of the 50
      - Looks like 2 of the files were not overwritten when this build pass completed
      - both of the missing tiles were _x'some row'_y09  (not sure if it was coincidence.)
3. I deleted ALL of the .objs from my output_mesh folder - rebuild
      - run my import schwag into maya - and my import halts because a tile is missing
      - I investigate - the folder is in fact missing 2 .obj files - the same exact 2
      - I check to make sure I didn't do anything weird in the preferences (they look fine.)
      - empty the output_mesh folder again, rebuild
Whamo... this time they are all there, import is able to complete, etc.

This isn't a big deal - my mesh output tiled build at this res takes almost no time at all...
But if this happened on an overnight build with high resolutions such as 1024 or higher, and not all of the files wrote out - that could blow on a tight deadline.

Just wondering if anyone else has seen something like this happen?

- jonny

Sorry - I couldn't figure out how to post a reply or continue discussion on my previous post.

so I poked around and got further:

- Absolute file paths in the load tag don't appear to work, either the paths are relative (have not verified this) or the .tmb file you load has to be in the same location as the script file (this is verified to work in the example file, as well as my WIP files.)
- Something is wrong somewhere in the <modify></modify> tag group, within my first section.

Here is my revised script - This version will run and start to build:


   <!--                                                                                         -->
   <!-- World Machine Pro script file. These files are in XML format     -->
   <!-- Comments are created with this tag                                      -->
   <!--                                                                                        -->
   <!-- XML header declaration -->
   <?xml version="1.0" encoding="UTF-8" standalone="no"?>

   <!-- Beginning of the WM automation root block. version must be "WMP2.0A". There can be only 1 automation block -->
   <automation version="WMP2.0A">

   <echo text="Looks like the script is loading... Loading the file."/>

   <!-- Load a TMD file into WM -->
   <section name="ALL Mesh Output">
    <load file="layout_test_withRoad.tmd"/>
    <echo text="File Loaded..."/>
    <build mode="tiled"/>
    <echo text="DONE!"/>

   <echo text="Script Completed"/>



And here is the version which stalls...:


<!--                                                                      -->
<!-- World Machine Pro script file. These files are in XML format      -->
<!-- Comments are created with this tag                                   -->
<!--                                                                      -->
<!-- XML header declaration -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!-- Beginning of the WM automation root block. version must be "WMP2.0A". There can be only 1 automation block -->
<automation version="WMP2.0A">

<echo text="Looks like the script is loading... Loading the file."/>

<!-- Load a TMD file into WM -->
<section name="ALL Mesh Output">
<load file="layout_test_withRoad.tmd"/>
<echo text="File Loaded..."/>
  <disable group="Texture Only"/>
  <disable group="Skirt"/>
  <disable group="Core"/>
  <disable group="Light and Normals"/>
  <tile res="100" number="5" use_extents="1"/>
<build mode="tiled"/>
<echo text="DONE!"/>

<echo text="Script Completed"/>



Has anyone else been able to get any of those modify commands to work properly?  It's essential to me, basically I need to modify a bunch of settings as a build various parts of the world 1) I am using group and enable/disable to help manage memory because I couldn't get a full world of 5x5 tiles at tile res of 2048 x 2048 to complete a build without running out of memory... and 2) well my target utilizes different size map inputs on the final content [i.e. 100 post mesh, 2048 diffuse, 1024 normal map, 1024 lighting, etc...] so I thought rather then down sampling large files, I'd just try to build them at the needed input res - with the hopes this would help me complete a full build.

I can send my example file as well as my entire complete automation script if it is helpful.

- jonny
Bug Reports and Help / Automation
August 14, 2008, 04:12:13 pm
It doesn't appear that automation is working properly.

I CAN get the example file to load...   C:\Program Files\World Machine 2 Professional\Examples\Utility Examples\example_script.tms

Here is the text of that file:
<!--                                                                      -->
<!-- Example World Machine Pro script file. These files are in XML format -->
<!-- Comments are created with this tag                                   -->
<!--                                                                      -->
<!-- XML header declaration -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!-- Beginning of the WM automation root block. version must be "WMP2.0A". There can be only 1 automation block -->
<automation version="WMP2.0A">

<!-- The echo tag lets you echo text from the script to program output -->
<echo text="Beginning Example Script"/>

<!-- The section tag offers a way to group sets of commands together. If a command fails at any point in a section, only that section will fail; other section in the script will still be run -->

<section name="Normal Build">
<!-- Load a TMD file into WM-->
  <load file="example_script.tmd"/>
<!-- Build the world. valid modes are "normal" and "tiled". This does what you might imagine. :) -->
  <build mode="normal"/>

<section name="Tiled Build" enable="false">
<!-- Load the TMD file into WM again. Obviously, this could be a different file!-->
  <load file="example_script.tmd"/>
  <build mode="tiled"/>

<!-- You can also save TMD files, not just load them!-->
<section name="Export" enable="true">
  <load file="example_script.tmd"/>
  <save file="example_script_SAVED.tmd"/>

<echo text="Example Script Completed"/>


Now I more or less cloned this to start testing for my automation...  My file either crashes WM outright, or it just appears to stall (doesn't even ghet to the first echo.) No real feedback from the program here either.)

First thing I noticed was a discrepancy between the documentation and the example files in regard to the "Automation version" - in the documentation (example) the automation line is:  <automation version="WMP2"> but in the example file the line reads this:  <automation version="WMP2.0A">

I am NOT sure that is problem or not - anbody know the proper input for the shipping version of WM 2.0 Pro???

Anyway, here is my script (which crashes WM or appears to just stall...):
<!--                                                                      -->
<!-- World Machine Pro script file. These files are in XML format      -->
<!-- Comments are created with this tag                                   -->
<!--                                                                      -->
<!-- XML header declaration -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<automation version="WMP2.0A">

<echo text="Looks like the script is loading... Loading the file."/>

<!-- Load a TMD file into WM -->
<load file="C:\Documents and Settings\jgalloway\My Documents\World-Machine_WIP\Layout_test_01\layout_test_withRoad.tmd"/>

<echo text="File Loaded..."/>

<!-- -->
<section name="ALL Mesh">
<!--Export Tiled build for all mesh output, 5x5 tiles, 100 res -->
<echo text="START...   ALL meshes output"/>
  <disable group="Texture Only"/>
  <disable group="Skirt"/>
  <disable group="Core"/>
  <disable group="Light and Normals"/>
  <tile res="100" number="5" use_extents="2"/>
<build mode="tiled"/>
<echo text="ALL meshes output...   DONE!"/>
<!-- -->
<echo text="Script Completed"/>

I am working on professional content - not just messing around.  If anyone has a clue or can help me out in any way PLEASE let me know.   :)

thanks - Jonny