GarageGames has released it's new product Torque3D last week. Time to have a look at it! 🙂
I've to say, that I never used GaragesGames products before. Correct me, if my first impressions are wrong.
Installation and Startup
Let' begin with the first step: installing: went smooth except it defaults to a target directory right under C: instead under program files. Moreover it doesn't prompt for the start menu location. Things that a modern installer shouldn't do anymore.
GarageGames kinda remained to it's used scheme: a start dialog, called Torque Toolbox, allows to select the project and then what editor to launch. It's not a all-in-one editor approach but world-editor and GUI editor are separate. What I like is the list of all available projects, as it allows to switch between different projects quickly.
Instead of starting with the demo project, I start with a blank one as it forces me more to explore and trying out things – and thus might to things that are unexpected. Creating a new project shows a confirmation dialog that is unfortunately not big enough to display the whole message (target path).
The world editor consists of one window with a custom GUI inside of it. It's not possible to tear off GUI elements for a secondary display. On XP machines this is bad for dual-monitor setups in non span-modes. On Vista the 3d acceleration works a little better on the secondary screen thus it might be less a problem in future.
Using the Function-Keys one can toggle between different editing modes: terrain sculpting, terrain painting, material editing, world editing etc. Depending on the editing-mode an "inspector"-like dialog on the right side adapts it's content. Unfortunately that inspector-window doesn't snap to the right side – it's aligned and sized correctly for the startup window size, but upon resizing the main-window it doesn't adjust automatically. This is not so good.
As I said, the GUI system is custom (except the main menu bar). It can be scripted and therefore the editor itself can be extended via scripting, which is a very nice thing. The GUI itself looks quite good and comes with resize-able panes and collapsible panels. Also the color dialog is good. Windows or panes also snap in range of each other but as said, there are no real docking areas. Editing values like vectors in the inspector is not so good. It's merely a text field with all values listed and separated by a space/blanc character. It seems that there is no way to "slide" values using a separate-gui-handle or a right-click drag operation. This makes tweaking very ineffective.
Moreover the keyboard shortcuts do not take localization into account: undo is on the German keyboard not CTRL+Z but CTRL+Y. But the good news is, there is UNDO ! 🙂
Scene Navigation and Object Transformation
Navigating the scene is easy with the WASD controls and the mouse. Unfortunately there is no speed modification by holding the shift key while flying but there is a slider in the GUI that allows to adjust the speed, … good! Besides the fly-mode there is also an orbit mode. Sometimes the camera does reset it's position and orientation to suboptimal distances when switching between the modes – this gets annoying pretty fast. It is possible to define "view bookmarks" which is nice and not often seen in 3d authoring tools. Using the 'F' key, you can focus the view to the selected object – like in Unity.
Very nice is the 3D transformation handle/gizmo/manipulator. It also includes handles for translating on a plane – like in 3ds max. But it requires to pick it up quite at the corner, which is not so optimal. There are also snapping tools and a mode to snap the object to the terrain surface, very cool! You can also toggle between the object's bounding-box center and the object center, which should be the pivot point. Holding shift while dragging and object, creates a clone – nice! Switching between transformation modes is fast with the key 1 to 4.
Materials seems to be based on a uber-shader. Therefore is quite easy to tweak materials – unlike in Unity which has a powerful shader-system but when one is wanting a material-variation where it's double-sided or using vertex-colors, it requires to copy the shader and modify the shader code of the copy manually for the desired effect. A couple of features like glow, specular, detail map, normal maps etc. are just check boxes thus very easy to enable/disable for a selected material. Torque3D offers max. 4 layers / 4 passes per material. It's maybe not that customizable, but really easy to setup. Moreover it already includes frequent aspects like specular or normal maps, emissive color and transparency.
Creating new materials seems to be not very intuitive with the material editor. I often tried to create a new material but somehow it was never stored properly. Better is to tweak an existing material, but even with this I had problems. I wanted to modify or change the material of an imported object and switch to the object-editing mode, called Shape Editor. But even there I had not much luck. It's a bit confusing as the GUI obviously allows actions that are not valid. Also terrain materials can't be created in the Material Editor Mode but have to be created via a separate terrain operation that is listed in the main menu – i.e. via "import height map". So let's go with terrain creation and modification.
When you import a height map, you have access to the dialog where you create material layers and their textures. Unfortunately it's a bit buggy as it allows tweaking of the texture slots without creating a layer and sometimes material names are not saved back into the channel list. Deleting a material there seems not to be possible. Some text labels are not very well named: "texture maps" would be more descriptive when called "masking textures" or something like that. Luckily the documentation is already quite good and also features the very important search functionality.
Blending between terrain-materials happens on a per-vertex basis, often also referred as "texture splatting". I like per-pixel blending but per-vertex blending allows cover bigger terrain chunks. Unlike in Unity, Torque3D can't smoothly blend multiple materials upon each others. It does blend in a linear way between material "tiles" but you can't mix. This is not so good, as creating terrain texture variation becomes more difficult.
Terrain materials consists of a diffuse map that gets stretched across the whole terrain mesh and a detail map that is blended in at a specifiable distance from the current camera position. Moreover you can define an additional normal map for the detail.
Paint brushes allow to paint materials or terrain height easily. The brush size can be resized on the fly by holding CTRL and using the mouse-wheel. Unfortunately this also zooms the camera at the same time. Moreover the brush size value doesn't get updated in the GUI. Otherwise the change can be changed via the GUI. Also not so good is the maximal brush size of 40 units. The painting or sculpting process works very smooth – no performance problems! In Unity I sometimes had it working less smoothly. Also nice are two slope filter options, so painting only happens in the specified slope ranges. What should be added though are presets for fast switching or memorizing values, plus noise/blur functionality as hard filtering doesn't always give a nicely blended material distribution in transition areas.
I tried to import a height map but that failed. It says to look into the console for further details but I have no idea how to open it!!!
At the distance the terrain LOD sometimes gives slight shading artifacts on slopes due the vertex-lighting. The triangulation can become noticeable at distance, but no "popping" effect occurs. Also no cracking holes at cliff-like mountains, something I sometimes saw with the Unity terrain.
An interesting feature is the possibility to project terrain UVs from the sides for a specific texture. Unfortunately there is no instant feedback when editing properties of terrain materials, one has to close the dialog to see the changes. It's classic GUI mistake – instant feedback allows faster tweaking!
Rivers and Roads
Let's get to something nicer: road and river creation tools based on splines! You can change the edit-mode to create decal-roads, mesh-roads or rivers. Decal roads are a flatly extruded shapes along a spline path with a decal texture. Creating paths for roads and rivers, is ultra easy and fast. Simply click on the terrain where you want the next curve-node to be. The spline can be tweaked afterwards: move, remove/add nodes or changes the width! When creating rivers, holes between the river surface and the terrain surface gets shaded red ( in editing mode), so you instantly see layout-errors, nice! Rivers have a refractive and reflective material with mesh and normal map deformation for waves. They also have a foam texture at their borders but it's unfortunately not smoothly blended out at the borders – thus on beaches it might get a hard cut.
The "mesh-roads" also gives height to the roads. This can be used to also create bridges fast. What I am missing (or I simply didn't found out how to do it) is the possibility to use transparency for decal based roads, so they can be made to blend it's edges smoothly with the ground. Imagine using it for paths that don't have sharp shapes.Sure, you can paint paths, but using decal roads might have it benefits, too. The reflections of the river may become unaligned, if the rivers flows quickly downhill (strong slopes) – but that's not surprising.
Btw. the trees you see in some of the screenshots are COLLADA files that I downloaded from 3DVIA. Adjusting materials is not always straight forward but over all it works painlessly.
To be continued …