• Welcome to World Machine Community. Please login or sign up.
June 25, 2019, 08:59:19 am


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

Feature Requests

Started by Eric Cosky, July 08, 2011, 08:16:15 pm

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Eric Cosky

I saw on the blog the solicitation for feature requests so I thought I'd just make a post here to communicate things I think might be worth doing/having in World Machine.
I am an admitted newbie to World Machine, so please forgive any dumb or otherwise useless suggestions I might have. I fully recognize some of these are pretty unlikely to happen but perhaps you will find the ideas useful in some way regardless.

* Drag & Drop images from windows explorer to create a prepared file input device. This would just be a convenience of course, but a handy one.

* A way to view the hires tiled output within the viewer. It seems that only the regular builds are visible in the program itself.

* In the device view, when using mouse wheel to zoom, zoom in on where the cursor is.

* Make the various device modal dialogs non modal. It's mildly annoying and at the least, time consuming, to have to tweak and then close a dialog to see the results.

* I suspect this program could greatly benefit from having the devices written to use CUDA. It's already pretty quick, but it could possibly be orders of magnitudes faster due to the parallel nature of a lot of the work this kind of app does.

* Render farms on a per-tile basis would of course be very useful. This could be done as a service listening to a port, which is sent a .tmd and a tile coordinate to render, returning the results to the PC running the UI. Doing this over a LAN is not as bad as it might sound if using named pipes, btw, but making it work over the internet as a peer to peer service would be ideal. Blender has something along those lines, and it's pretty amazing.

* It would be interesting/useful to see an icon over each device that is the preview for that device. This is similar to what Softimage's Render Tree does for shader nodes; it's an optional display toggled per node.

* It would be nice if the color generator nodes had a display for the color they are generating. This need would be served by the icon display (above), but if the icons aren't going to happen this would be pretty handy.

* At least a few of the nodes do not have their ports documented. It would be nice to see this fixed. For instance, I have no idea what the "Mesh Output" node's "Mesh Mask (Heightfield)" input does. Being a bit new to the program I wonder how many undocumented ports there are.

* This one is a stretch but I thought I'd throw it out there just in case: Have mesh output generate a user specified number of LODs for a tile, with 3 variations on the edge stripping for each side, allowing a renderer to select between them at run time so adjacent tiles can have different resolutions without gaps in geometry. The variations would be LOD+1, LOD+0, LOD-1. As you no doubt know, this is something terrain engines rendering static geometry often have to manage one way or another, but your program in uniquely positioned to solve the data generation for this task. The same logic that generates this data could be used to improve the realtime display. (I'm going to have to implement this for yet another terrain engine is why I mention it.. would be nice if the tools could take care of that instead).

* It would be useful if the mesh output had a resolution division parameter. This would allow a normal & color map to be generated at, say, 1024x1024, while the mesh is generated at 128x128 (and then possibly reduced via triangle reduction). Having triangle resolution match the color & normal map resolution pretty much mandates further processing of the mesh since color & normal maps are always going to be at a much higher resolution than the geometry.

* Provide nodes that are resolution multiplier/dividers. When pulling data from devices with a different resolution, filter or interpolate the input data as needed. Basically, I'd like to use images (such as tiled images of foliage) that are selected based on slope and other settings from a heightmap that is relatively coarse, where the images are at higher resolution than the heightfield itself. If each node had the ability to override the resolution it seems like this might fit in with your current scheme without breaking everything.. just guessing, of course. If this were a part of the system, the mesh division parameter mentioned above wouldn't be necessary because the resolution reduction could be done as part of the node graph using a resolution divider node.

Thanks for reading-


The gpu aided processing (CUDA or openCL) could be very interesting, but as you may know, it's great for some types of calculations and not that great for others.  But I also suspect it could really give some performance boosts.

I wonder if it's possible to develop a device via the WM PDK that uses CUDA?


Some good suggestions there. I will just pick out a few and comment on them. In general, some are things that I've already long wanted to incorporate, others are cool ideas but not necessarily likely.

The highest on my wish list right now, and that will likely be included sooner or later:

Multiple resolution support. More and better mesh support. Improved UI. Full undo/redo, background previewing, and mode-less dialogs.

Much of the groundwork for the above items has already been laid down.

I've been investigating OpenCL more and more lately as GPU powered computing is finally hitting mainstream in terms of return on invested time. The principle area of application for it would be in the simulation-like devices which are currently the slowest to process. This is strictly an R&D item right now though, with no slated time frame for actually being included in a product.
-- Stephen Schmitt
- Creator of World Machine

Eric Cosky

For what it's worth, I've spent a few days now dealing with how to get good meshes with the data coming out of here and I'm expecting to use a feature built in to Softimage to deal with generating LODs from displaced grids. I suspect this will give the best results. The Softimage decimation algorithm is pretty heavy duty with many useful control features. Aside from the fact it would take a lot of work to make WB create LODs as well, the main issue for me is that I've come to realize the need to edit the meshes in the 3d editor so that the LODs can take into account any changes of the highest level LOD. For instance, by adding a building to the world I may need to cut out some ground which the LODs will have to be manually modified to deal with if they had been generated upstream (in the pipeline, so to speak) by WB. If I did it in Softimage, I'd be able to just have the LODs created based on my modified version. Because of this, I'm not expecting to pursue getting meshes out of WB any more. Heightfields and related 2D data are what this app does really well and is what I'm going to focus on getting WB to create for me.

Regarding the GPU support, I can see doing a lot with a device that allowed me to edit HLSL code with up to 8 texture inputs/outputs and access to a set of global float/ints/vector2 that people could use as control inputs. It would take some work on your end to provide the hookups, set up the rendering and pull the data back out of the render targets, but it would be an amazing feature to have access to and it seems like something a device could do internally without changing the entire app's architecture.

Eric Cosky

Speaking of GPU support, it would be really nice to be able to provide our own HLSL shader for rendering the world view using the standard (or some subset of) SAS annotations.

Eric Cosky

In the layout view where there are many shapes, selecting all shapes and selecting "use bezier path" only converts the one you click on. I have dozens of shapes, and it would be nice if this command applied to all selected shapes the same way as the rest of the commands in the context menu.

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.

Please leave this box empty:
Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:

Shortcuts: ALT+S save/post or ALT+P preview