Blender shortcuts for common tasks

I've had to deviate from Flash a little over the last few weeks and return to creating some visual work for a project I'm involved in at present.  The change has been very welcome because it's given me an opportunity to play around with Blender in the workplace.
 
Blender is an open source 3d creation suite that I've been dabbling around with from time to time over the last few years mainly as a hobby.  I am very interested in the world of 3d and, after some research a few years back, I thought I'd invest some free time into learning Blender.  After seeing it's rate of development over several releases and experiencing the community ethos that Blender is synonymous with, I feel vindicated for choosing Blender as my focus for all things 3D as opposed to the more obvious commercial alternatives.

Great features:

It’s been a while (version 2.37) since I tried to produce anything in Blender and I have found that there are lots of new modelling and texturing features that have made life a lot easier;

  • Vertex snapping is a great aid for positioning meshes.  This used to be a real chore because the only real mechanism for arranging objects precisely (besides the transform properties pane) used to be the options on the Snap menu and this was based around positioning of the 3d cursor.
  • The modifier system totally changes workflow and allows you to non-destructively manage objects.  This has got to be one of the most important developments!  I found myself using the array modifier a lot when modelling an ancient temple!  The cast modifier also proved useful when I wanted to get acanthus leaves to better fit around a Corinthian capital.
    The bevel modifier and the bevel tool help to add realism to objects in seconds - a slight bevel can make a world of difference to a final render.  I completed an AutoCAD class a few years ago and was bevelling everything back then :-).   
  • The UV unwrapping toolset makes unwrapping meshes in preparation for texturing almost pleasurable.
  • Render layers has proved very useful in managing what actually gets rendered without having to hide layers in the 3d viewport.

Look what I made!

temple_of_athena

This is a screenshot of the Temple of Athena that I’ve made for an education project.  I'm reasonably pleased with it but I'm even happier with what I've learned in the process of creating it.

Where to start

Blender can seem insurmountable when launching it for the first time but the same can be said for any application that is so feature-rich and capable. I resorted to a document I wrote a couple of years ago to help me get back up and running with it.  The document is a compilation of the keyboard shortcuts that I needed to learn in order to complete common tasks and I jotted them down as they were encountered.  I've also updated it to reflect the latest release.  Feel free to download it.  Please note that this document covers, for the most part, only shortcuts for basic operations.  Go to the online documentation for a more comprehensive guide (http://wiki.blender.org/index.php/Manual).

Blender shortcuts document

Posted by admin on May 29th, 2008 No Comments

Scotch onAir, Dublin, 11th April

This is to let interested parties know who are based in or around the Dublin area (or beyond) that Scotch onAir is taking place this Friday.  Organised chiefly by Kev McCabe, it's the official replacement event for the Dublin leg of the Adobe onAir Tour, which was subsequently cancelled.

It's shaping up to be a really worthwhile event to attend if you're interested in learning about or considering using Adobe-related technologies. 

Here's the schedule:
12:00 - Lunch in the Bar
13:00 - Ted Patrick (Flex 101)
14:00 - 10 Minute Break
14:10 - Kev McCabe (ColdFusion & Flex)
15:10 - 10 Minute Break
15:20 - Ryan Stewart (AIR 101)
16:20 - 10 Minute Break
16:30 - RIA Open Debate (One & All)
17:30 - Raffle, Close & Thank

You can Register here for FREE.

Posted by admin on April 7th, 2008 No Comments

AS3 is good for your old Flash projects too (one way or another)

Despite Flash CS3 and AS3 being out for a while now, there are still plenty of old Flash projects out there that have been written in older versions of Actionscript. It can be difficult returning to an old timeline-coded AS1 project after enjoying working within code-assisted and error checking environments like Flex Builder or Flash Develop (these are the IDEs that I use). The options available can include all/some of the following;

  1. Continue to maintain the timeline-based code (and tolerate the status quo, getting the task done- be it a fix or functionality enhancement - and getting it done within the small timeframe the task was afforded);
  2. Place the code into include files (so that an external editor can be used instead of panel shuffling, thereby reducing the chances of suffering from RSI in the process!)
  3. Undertake a more substantial refactor by converting functionality to AS2 class files that can live happily with other parts of the code that you don't have time to convert (and then benefit from code hinting and a little syntax checking in Flash Develop for AS2 projects)
  4. Do a complete re-write in AS3 (sorting out the spaghetti code, bringing about more order and also having the latest APIs and components to avail of to replace the old UI components that weren't really that good in the first place. This will take more time in the short term but will allow for scalability in anticipation of inevitable future requests – This is difficult though, since project scopes and budgets don't always look beyond their scopes and budgets)

I like to promote the possibility of upgrading to AS3 whenever it is feasible. Therefore, a common task as an Actionscript developer these days can involve converting code written in one version of Actionscript to another version. It's also a good exercise if you are trying to learn AS3 - in other words, learning something new (AS3) within the context of something familiar (AS1 or 2). As an example, I thought I'd try converting an AS1 menu that was created by Ladislav Zigo. (There are plenty of nice code snippets floating around on the net written in AS1 or 2 that are still very beneficial to study.) In this example alone, I learnt a couple of worthwhile things along the way;

  • _xscale and scaleX don't directly translate. (_xscale = 100 is the same as scaleX = 1)
  • Dynamically setting registration points of display objects is an additional consideration when translating attached moveclips in AS1 to a more dynamic, solution that isn't tied to library items

Here's my AS3 conversion. I'm using a DynamicMovie Class written by Oscar Trelles to dynamically alter the registration point of menu items.

It also works the other way.

Having worked a little with Flex and AS3 now, I'm finding that I'm bringing better development practices back to older projects even though they are destined to remain in the same version of Actionscript that they were originally written in.

I'm using custom events for example and design patterns are finding their way into parts of old projects as well. These sorts of things are much better documented and more widely covered in the Flash blogisphere than they used to be. I can safely say that I am a better AS1 and 2 programmer now that I have experience working with AS3.

Flash really is turning out to be a double-edged sword for us Flash Developers though. In the past it has enabled us to create amazing applications, whilst we lay in the quasi-coder realm of I'm-a-designer-no-I'm-a-developer. But many of us (including myself) didn't always follow best coding practice (if we're honest) partly because;

  • We didn't always know how to take the best approach due to sparse documentation,
  • Partly because Flash let us, and therefore encouraged us to, write bad code,
  • Largely because Flash developers tend not to have traditional development experience, a much better learning ground for picking up general development know- how until fairly recently.

Combine all of these factors, and now we are faced with maintaining projects written in legacy Actionscript that are awkward and unpleasant. I find that ironic but at least we can make more informed decisions thanks to experiencing AS3 development and by availing of resources such as the extended community that has come about since the introduction of Flex.

Posted by admin on March 25th, 2008 No Comments

Basic ArrayBinder class for CS3 and Actionscript projects

I've written a class that can help separate the view from the model in Flash projects.  It is by no means equivilent to data binding available in Flex (and far from it!) but I've used bind in the title because it does effectively bind the values held in an ArrayBinder instance to object properties that have subscribed to refer to those values.   The specific use that I have in mind for ArrayBinder is in assisting with localising interfaces for applications that are developed in Flash CS3.  Here's how it works;

Create a simple array:
Quick Code


var dataArr:Array = new Array();
dataArr[0] = "Sample title for my Flash App";
dataArr[1] = "Sample textfield value";
datArr[2] = "This is a button label";

Assign the simple array to an ArrayBinder instance:
Quick Code


var myArrBind:ArrayBinder = new ArrayBinder(myArr);

Register class types and their property names that will be used in the ArrayBinder instance:

Quick Code


myArrBind.addReceiverType(TextField, "text");
myArrBind.addReceiverType(Button, "labelTxt");

Register stage instances and the index position of a value to subscribe to:

Quick Code


myArrBind.addReceiverInstance(title_text,0);
myArrBind.addReceiverInstance(sample_txt,1);
myArrBind.addReceiverInstance(myButton,2);

The code so far will automatically populate a basic interface consisting of two textfields and a button. The real benefit of this approach occurs when you have a more elaborate interface with a lot more button labels, textfields, textAreas, etc. When I want to change the interface text to another language, all I have to do is change the datasource that the ArrayBinder instance is using;

Quick Code


myArrBind.changeArray = anotherLangArr;

I can also alter specific values without changing the entire datasource;

Quick Code


myArrBind.updateArrayIndexOf(2, "This is my NEW button label");

Here is a link to the Class file.

Posted by admin on March 9th, 2008 1 Comment

Meetup account for MMUG Dublin

I've just created a meetup account for MMUG Dublin.

http://ria.meetup.com/11/

Hopefully we'll get the numbers needed to entice Adobe technology evangelists to come over to Dublin more frequently.

I'm going to FITC Amsterdam and I'm also attending Colin Moocks AS3 training in February.  I'd be great if some of these events happened a little closer to home.

Feel free to join up :)

Posted by admin on January 28th, 2008 No Comments