I finally started to learn Unity3D after having observed it from distance over a couple of years now. Something I've done and I am still doing for many real-time technologies like i.e. Ogre3D, Shiva3D, DxStudio, Visual3D, Blade3D, Quest3D etc. etc.
I am using an older PowerBookG4 – as I am still not motivated to buy a new Mac – which seems to be ok for my purposes. Unfortunately shortly after I got the Eval version my working days became very long and very quickly 2 weeks went by where I nearly did not had the time to look at it. I then bought the restricted Indie version to be able to continue but I won't be able to look at Windows deployment and plug-in development – which are two very important topics to me – but maybe later, when I learned the basics, I'll reask for a Pro Eval Key.
You may ask: what is the difference between the Indie and the Pro version … well … I think there is currently unfortunately no overview chart for this. Some Pro features are: Real-Time Shadows, Render-To-Texture, Windows .Exe deployment, custom plug-in using C++, OpenGL low-level access via Scripting and support for the Unity Asset Server.
I'll blog about my experiences with Unity – especially from a Virtools Users perspective – while I learn and think about it. Please keep in mind that I am a complete Unity3D newbie, therefore I might state things that are not true or I try to make things in a complicated/unusual way etc. Of course I am happy for any hint etc. I can get, so don't hesitate to comment or write me an eMail.
Unity Basics
Unity is a Mac only authoring system for real-time 3D content. It has a webplayer for Mac OS-X and PC Windows. You can also export to standalone applications on both platforms thought windows deployment needs the Pro version. A PC version of the authoring system is planed but probably nothing that will be released soon.
Unity's architecture is using the GameObject (GO) and Component approach. GameObject are containers without much functionality. You add Components to your GOs to define its functionality. If you want to learn more about Component-Architectures I suggest you to search for presentations about Engines like Dungeon-Siege, Thief, Spellforce etc. They all use component based systems.
From a Virtools perspective a GameObject would be something like a BeObject (Behavioural Object) and a Component a mix of an Attribute and a BuildingBlock. Of course you could also compare a behavior graph with components but in Unity you cannot compose Components via other components or Buildingblocks.
A custom component (a script) is implemented via Scripting which is based on .Net/Mono. The available languages are JavaScript, C# and Boo. JavaScript performance can be improved by defining the types of variables. There are several callbacks that can be implemented – the most important one is the Update function. More on this later.
The GUI
Resize-able Window Panes
The GUI is quite nice!
Basically the main window is composed by smaller, embedded window panes. Each pane can be resized or maximized by hitting the SPACE key while having the mouse over it. The content of a pane is not fixed – a drop down control allows you to use that place for any kind of content you want (3D Views, inspectors etc).
Something very nice is the possibility to split or join windows (like in blender) vertically or horizontally. This allows to setup window layouts in a flexible and easy way. You can also save your layout and recall it anytime you want or use one of the predefined layouts via the drop down-menu in the top-right corner.
Detaching windows (i.e. for multi monitor setups) seems not to be supported, but I don't know. I have no idea how a Mac supports Multi-Monitor setups and maybe Unity has none either.
3D Views
First of all you can have as many 3D views as desired which is a big plus over Virtools. There are 2 versions of the 3D view: Game View and Scene View. You can select and manipulate the 3d content only via the Scene View. The Game View is simply the view from the player's/user's perspective. This is sometimes confusing as I often try to select something in the Game View which of course fails.
One can nicely navigate inside the scene view using the 3d mouse buttons while holding the ALT key. This allows to zoom, pan and rotate the view. This is also more usable than the Virtools way in regards of how one quickly switch between each navigation mode. I haven't found a Fly-Through mode like the hidden one in Virtools (use the Y key) yet and it seems that there is no "rotate-around selection" mode in Unity – something I nearly use all the time in Virtools.
As in Virtools you can hold the SHIFT key to accelerate Panning. But it seems that you cannot redefine the amount of panning, zooming or rotation via the preferences in Unity.
Although you can select multiple objects by adding one by one, you can't do Rectangle-Selections like in Virtools. Virtools does even include two modes: selected has to be inside completely or partly.
One can move objects inside the 3D Scene view interactively by using Gizmos/Handles like in 3ds max or Maya. Actually I think this is more the Maya version as I am missing the 2-axis corners that allow one to drag along a plane in the select coordinate system. As I am mentioning coordinate systems: Virtools offers a variety coordinate systems: local, world, screen, grid etc. I can't see such option in Unity. The Transformation Gizmos seem to operate in local space mainly.
Lights and Cameras are displayed inside Unity's 3D Views as 3D Sprites – Virtools uses real 3D geometry. Currently I have no preferences about this.
Something I haven't found yet in the docs is how to change the camera for a Scene View?!
… to be continued …
(p.s. will add pictures later)