Planet Tech Art
Last update: May 24, 2013 03:00 PM
May 24, 2013

Epic is Here!!

Go see it!!  It’s a solid success for all departments here at Blue Sky Studios, a true testament to the hard work everyone put into this movie!

epic_mandrake epic_mkepic_nod

 

by Jonas Avrin at May 24, 2013 12:52 AM


May 23, 2013

Summer Of Code @ Linköping University

During April, a mail was sent out to all student at our university talking about a new project the university had started: "Summer of Code"(SOC for short). SOC gives students the possibility to develop one of their own projects during the summer and getting payed by the university. It would be  5 projects would be accepted for this opportunity. A total of 70 projects applied, we were one of them and...

Our projects was accepted!


Fredrik and I had discussed an idea for an smartphone app earlier this year that we wanted to create, and decided to apply to SOC with this idea. The final idea, we will keep a secret for now, but I thought we could still discuss parts of it.

None of us have really worked with app-development before, but you have to start somewhere. Our intentions are to develop for the android platform first and perhap, later for iOS since our target audience is students, and a lot of students use iPads. But we also want to keep developing costs down at a start.

The project consists of 3 major parts: Drawing, Detecting, and Evaluating. The biggest challenge for us right now is the second one, Detecting. None of use have worked with image recognition before. We've been looking into using OpenCV as a framework to help us in this stage. The detection should also be "on the fly" while the user is still drawing to give direct feedback to the user.

We are both looking forward to this July when we will start working and we will do some more updates on the blog for each part during development!

by Erik Larsson (noreply@blogger.com) at May 23, 2013 02:59 PM


May 22, 2013

Summer fun with Rigging Dojo – Solve the puzzle to see the news

      Make sure to subscribe to our newsletter to receive all the details.  Limited time only!  

The post Summer fun with Rigging Dojo – Solve the puzzle to see the news appeared first on Rigging Dojo.

by Rigging Dojo at May 22, 2013 05:20 PM


May 21, 2013

Red9 v1.31 - new Sound Menu

Just a really quick one to show you something that's gone in in the latest build (which I'll push out over the weekend). I've added Sound support to the TraxMenu as below. Nothing too special just a lot of useful small functions when dealing with audio in Maya.


I've been in Trax a lot recently purely because I'm getting facial lipSync setups sorted at work so am always messing around with audio. I was getting really frustrated, not just because in Maya2013 you CAN'T DELETE bloody audio from there any more! Features on this:


  • Delete selected - obvious one, delete selected audio nodes - gets over the bug in 2013 where tyou can't delete them unless you do it in the Outliner
  • Activate Selected Audio - pushes the selected audio node onto the timeline and turns it to be the active one, frustrating there isn't something like this already!
  • Set Timeline to Selected: works on multiple audio's, sets the timeline to the boundaries of the selected AUDIO nodes
  • Mute/unMute - obvious
  • Open Audio Path - open up the selected wav file source folder in explorer (linux/MacOS supported too)


Anyway, if anybody has any suggestions let me know, otherwise I'll ship this build as it is

cheers

Mark

by Mark Jackson (noreply@blogger.com) at May 21, 2013 12:50 PM


Deleting objects in motionbuilder

I am working more and more with motionbuilder and one recent challenge involved dealing with
"referencing"* rigs. One of the biggest challenges here was to "de-ref"* an entire rig, which means I have to delete a large number of objects.

Sounds simple right? Unfortunately simple things are never easy in motionbuilder. 





The reason is because there are dependencies between different objects, that are not properly garbagecollected. Thats bad, hence the crash.

Here is a solution that you should not be proud of, but it works. The key is to delete objects by their type in a very specific order.

* There is no real referencing in motionbuilder :)

by Marcus Krautwurst (noreply@blogger.com) at May 21, 2013 08:27 AM


May 20, 2013

Python Properties

I'm sure there are already a bunch of good tutorials on how to use properties and decorators, but I rarely used this before, so I'm also sharing this to just wrap my head around it once more :)

I am in the middle of writing Py-Mel'ish libraries for motionbuilder and propertys are making my life a lot easier. They will essentially help you reducing your production code later almost by half and make it much more readable.

Our example:
To get the startframe of the animationrange in motionbuilder you have to do something like this:
There is no need to argue that this is just horrible...
Ok, how about setting it? No, its not this

Lets try to unify that! There might be similar things we want to do, like get and set the current frame. So let's decide on writing a small timeline class and add a few functions to that.

The functions we will write here, are getter and setter functions. To make a function a getter, you basically add a property-decorator in front of your function.

The setter function is defined like this getter-functionname.setter.
Make sure that this following function has the same name as the getter function.

Take a look at the code example here:


 Now we just have to instanciate the class To get the animationrange we just have to do this now And we set it like this The same goes for the currentframe, to get it we call And to set it

So to recap, properties give you the ability to execute different functions depending on wether you set or get them.

by Marcus Krautwurst (noreply@blogger.com) at May 20, 2013 06:26 PM


Design Constraints to boost creativity





" We do not know
what we do not know "



Creativity can be seen as the exploration of connections between the building blocks we already know, so we can find out what do not know. So far I have observed that creativity lives in all of us. but we might not be all aware on how to make efficient use of it.

Design constraints is one of those existing methods to take control on our personal creativity. To push other people to think out of the box. It is a way to challenge yourself by limiting the freedom we currently have, so we can find ourselves experimenting for an experience that might work as a solution.

I found out about design constraints at a breakdance workshop in Gent (Belgium). Sam, the teacher was giving a task to make combination of dance moves on 8 counts. The challenge he demanded would be to constraint your movement by your own made rules.
  • do everything on 1 leg
  • hold your hands together
  • always look to the ceiling
  • never touch a specific tile on the floor
Not only was this insanely fun, but you noticed people had a lot more focus. They felt a personal connection because they choose those design constraints themselves. You saw a concept in their movement because you could read their inspiration through the whole routine. They made a combination they never thought about. 

You could directly sense that everybody felt a very rewarding feeling after this difficult challenge where they took control about their own creativity by applying their personal design constraints. Through the whole process there was intense motivation in the room which was inspiring to say the least. And this inspiration was spreading to everyone.

Imagine applying these design constrains on your daily job. Imagine challenging your colleagues with different design constraints and make the whole process of solving problem more creative and challenging.


by Robbert-Jan Brems (noreply@blogger.com) at May 20, 2013 03:32 PM


How breakdance taught me to be a technical artist



Hey everybody,

Thank you for watching my blog. I am happy to notice people are interested in what I am writing.

A couple of months ago my university requested for me to do a presentation. So I reworked my Game developers conference presentation and uploaded it on YouTube.






My goal is to become a lot better in public speaking, so any kind of critics or constructive feedback is welcome. I appreciate your help

Have a nice day!

Robb

by Robbert-Jan Brems (noreply@blogger.com) at May 20, 2013 03:27 PM


Design constraints : How pain became a good design constraint



Don't worry! I will not be talking about how to hurt yourself to create more creativity. Mentioning pain as a design constraint will be just an example on how to use the negative to create the positive.

There are moments when I go dancing, I got some pain in my back, knee, arm , whatever hurts that day, ... Everything can hurt when you do breakdance! This pain makes me feel very uncomfortable when dancing which results that all my concentration and energy goes to that focus of pain and eventually creates frustration. Such a waste of time and it does not make you any happier.

Through a lot of experimentation and the motivation to see the good in the bad, I started using my pain as a design constraint to improve my creativity. Imagine having pain in your knee. You can then setup a rule which does not allow you not use your knee while dancing. Supported by the energy that you would normally waste on frustration, you start to experiment with the possibilities. ( It is always strange to say that limitations create possibilities ... ) These experimentation become the start of many failures that teaches you many moves that you were not aware of at first. Only just the feeling of this challenge can make you feel more focused and ready for more experiments.

Every time you are frustrated, whether it is when dancing, solving a problem or working. See that moment as a cue for creativity. Instead of letting that fact make you stop with what you were doing, let it inspire you to push your own boundaries.

So the next time you are frustrated about something that is holding you back, ask yourself the question :

 " How can I use this shit to push my creativity? "



by Robbert-Jan Brems (noreply@blogger.com) at May 20, 2013 02:55 PM


A Simple Web Image Scraper

I download pics I like from the internet and put them in a pix/ref directory for later.  I have a bunch of these, and they are automatically backed up to my box.net account.  Sometimes I really like artists and want all their images.  For example, http://www.loish.net, or http://www.sergebirault.fr/portfolio.php, or in my latest case, http://www.du-artwork.de/.  

I really love Daniela’s work, but I hate her site. (ok, I don’t hate it, It’s just kind of a hassle and I’d rather view the work in windows picture viewer or adobe bridge.)  I was right-clicking/downloading a lot of the images, and thinking to myself, “this is really repetitive.”  I don’t like repetitive things.  Well anyways, since she has named the images in sequential order 1-40 and had 3 different galleries, I banged out a quick script that will grab all of the images, and save them to your hard drive in a specific location.  The script was thrown together in < 30 mins, so there is no error catching and could be optimized more, but who cares.  I have some ideas for a V2 to make it better, but for now here it is:

p.s. to the artists, don’t make it easy for me to download your images!  

"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""

#tested on windows 7, running python 2.7 #grabs all images and saves them into a directory import urllib output_dir = "C:/Users/shawn/Desktop/Desktop-02-13-2013/art/art ref/daniela_uhlig/" output_file = "daniela_uhlig_" web_site = ["http://www.du-artwork.de/Gallery_1/bild/","http://www.du-artwork.de/Gallery_2/bild/","http://www.du-artwork.de/Gallery_3/bild/"] for gallery in web_site: gallery_num = web_site.index(gallery) + 1 for x in range(40): file_url = gallery + str(x + 1).zfill(2) + '.jpg' print file_url img = urllib.urlopen(file_url) output = open(output_dir + output_file + str(gallery_num) + "_" + file_url.split('/')[-1] + '.jpg', 'wb') output.write(img.read()) img.close() output.close()

May 20, 2013 12:42 AM


May 18, 2013

Made it to Academy of Art's Spring Show 2013

I heard that I made it to the Spring Show for 2013.  My friends told me that I made 2nd place!  Good to hear!  Here is the poster that I made for the school.  Cheers!

by Gene Yanza (noreply@blogger.com) at May 18, 2013 01:59 PM


Now in Georgia!

Thanks to all my friends and family for their support over the past few months.  I am now starting a new journey working at Tripwire Interactive!  The people here are super nice and great at what they do.  I'm lucky to be part of the team!  Plus Georgia is a beautiful place! :)

by Gene Yanza (noreply@blogger.com) at May 18, 2013 01:56 PM


May 16, 2013

When a company's main business is...

buying other business and incorporating them into themselves and they used to be creative team but they haven’t really made anything new, they probably have run out of things to do with that product, and are just making it slower. (a runon sentence  I know)  This is a generalization I’ve come to.  And maybe they are just, plain lazy, or the company is now run by the originators and they all make 200,000 dollars a year.  Or maybe they are working hard.  Maybe thats just how things are.  Maybe companies are meant to just do one thing well, and die.  But that’s not how I feel, and If I ran a company, I would make something great, and move on.  These huge software companies that make one product.  It just blows my mind.  And every year they add in a few new features that no one cares about, or works half ass, hell most of it has been made by community that uses the software.  

1)Make it great

2)don’t bog it down.  

3)Let me have a good bit of control over it.  

It’s not hard, at least it seems that way, but maybe it is.  What the hell do I know.

May 16, 2013 01:09 AM


PoseSaver on Steroids!




Another Vimeo demo added, this one goes through the more advanced features in the Red9 PoseSaver, features aimed at giving the more technical among you access to expand and modify it's behavior on the fly. We use some of these features internally at work to tailor the behavior of specific folders, allowing us to store facial and finger data which need additional logic. I also go through the PoseCompare and hopefully shed a little more light on the filterPriorities and their relevance when loading relative poses.

This is build v1.31 which I'll release sometime over the weekend. For those of you following Red9 on Facebook you'll also have seen that the new pack includes Audio support via a new menu in the TraxEditor. I'm sick to death of Maya2013 not letting us delete sound from Trax so thought I'd add a few features to teh pack, including a few very simple but useful sound tools.

Still looking for more testers so if you want to get involved drop me a mail

cheers

Mark

by Mark Jackson (noreply@blogger.com) at May 16, 2013 12:46 AM


May 10, 2013

Debugging tutorial

There is no denying that a good way to learn is to explain to others. That's why I thought I would do this write up of practical debugging tips and techniques.

 What is debugging and why do I need it? 

So, what is debugging? Its the part of software development when you hit the "build" button and you get no errors in the code. Yes, there are no problems with how you've written the code for the computer to interpret it, but what about the logical errors? What about the while-loops that never ends and the if-statments that never returns true? This is what debugging is, resolving your logical errors that cause your software to misbehave or crash.

Easiest way to debug is just put a "print(x);" somewhere in the code to see the value of  x at that point. We've all started out debugging this way. But there comes a time when the logic of the programs we write gets too big, and using this "print debugging" won't be enough. Either your code will be filled with loads of  print-calls to check why your code doesn't enter a if-clause or why the values of our variables doesn't make any sense. This type of debugging is also insufficient since it will never actually tell you where your problem is, just that somewhere after this, something is wrong. That's why you should use debugging tools that many (if not all) better IDEs (Integrated Development Environment) ships with. I will have Visual studios 2008 as a base when talking about most of the parts in this tutorial, but your IDE should have something similar.

Below are some of the key features to use when debugging.

Breakpoints:
One of the main tools you'll be using while debugging is the breakpoints. The name explains its purpose very good; it's a point within your code that will break(or halt) the execution of code. While the code is halted you'll be able to inspect values of variables and, in some cases, even edit them.
Note: The line with the break point has NOT been executed yet.  
Lets look at the code below:
int apples;
apples = 5;
apples = a + 5;

If our breakpoint is set on:
  • Line 1, apples will still not be declared, most (smarter) editors will just move your breakpoint down to line 2 since nothing in your program changes during deceleration.
  • Line 2, apples has been declared but has not been given a value, it will have something like -5468165819 as its value.
  • Line 3, apples has the value of 5.
  • Line 4(not shown), apples will have the value of 10.

But since we don't want to have breakpoints for every line, we have some tools that allow us to "step" in our code.
There are three types of stepping, Step over, Step into, Step out.

Step Over:  The most used one. This basically say "execute the line we're currently on, but halt at the next line".
Step Into: This stepping method allows us to go into functions. If we look at the code below. if we were to have a breakpoint on line 5 and use Step over we would go to line 6 and be able to see the value of ourApples after the function sum has been run. However, if we press Step into, we will jump into the sum function and halt execution on the first line of the function (line 12). We can then continue using Step over to look at every line in this function.
int main()
{
int myApples = 5;
int johnsApples = 10;
int ourApples = Sum(myApples, johnsApples);
print ourApples;
}

int Sum(int a, int b)
{
//no need for this, but for showing debugging, we do this.
int returnSum = a;
returnSum += b;
return returnSum;
}
Step Out: If we realize, "The error we're looking for isn't caused in this function", then Step out is used to exit that function and go back to the line that called the function (read more about keeping track of how other functions call functions in call stack part further down).
Let say we have a breakpoint at line 12 in the code above, if we would press Step out we would end up on line 6 again, with no need of stepping over line 14 to go back.

We also have Resume which will continue the execution of code until we hit the next breakpoint.

To set a breakpoint you often press to the left of the editor and some sort of indicator should appear. You can often right-click on a line and pick "set breakpoint" there aswell. There are some other, more advanced topics about breakpoints that you can read further below.

One key feature is the fact that when you hit a breakpoint, you can edit the values of variables! So lets say that right now you're not intersted why your variable's value makes no sense, but you want to try your an if-loop thats within a if-case. If you variable's value is hogwash, the if-case will never be true and you'll never enter the loop - make a breakpoint at the if-case and just change the value of the variable and try out your look!

Breakpoint has been hit, indicated by the yellow arrow, 
By hovering over a we can see that it has a very small value, 
we could draw the conclusion that it has only be declared bu never given a value.

Watch/Local Window:
These two windows help us keep track of our variables without having to hover over them in our editor. In Visual studios, we have both "watch window" and "local window". (some IDEs might not have the "local" one)

The Watch window is at first empty. You have to add variables to it by right clicking them in your editor and click "add watch". Then you'll be able to see the value of that variable as long as it remains in the memory or you remove them, which could be nice if that variable, for some reason, is not close to your current breakpoint.

The Local window shows all variables active in the current scope and therefore changes quite radical when changing scope (when you exit a loop or function).
The local window, the value of the calculate array is indicated by red, 
that means that the last row edited this variable

This way you can see how multiple variables are modified quickly.

Call Stack:
When your programs get more and more complicated and class-functions are called from multiple places, you sometimes what to know "From where is this function called?". This is what the window Call stack can do for you. In the picture below, 
  • The top row shows where our current breakpoint is, its in the function called MoreCalculations on line 39.
  • The next row shows us that MoreCalculations was called from another function, CalculateSum and it was called on line 24 of that function.
  • The rows after that get more complicated but shows us that CalculateSum was called from our windows main and after that we get to even more complicated entries.



But what to take away from this is that we can use this window to keep track of, when and where was this function called, and we can use the call stack to retrace those steps.
Advanced Techniques
Conditional Breakpoints
Sometimes when working with breakpoints within loops, it could be a pain in the butt to having to click resume 45 times, since the error we're looking for occurs on the 45th time the loop runs. That's why we want to use conditional breakpoints. There are often two methods for this.

  • The first one is to tell your editor "I only want to break when i've passed this breakpoint 45 times or more" (could be useful in a while(true) loop)
  • Second one is "I want to halt execution when this variable has the value of 45" (useful in for loops e.g i == 45).
This can be useful to speed our debugging processes up.

Disassembly Code
Just before your code is turned into binary, its first turned into Assembly Code. These are CPU specific instructions that are incredibly cryptic and quite difficult to read if you don't know how. This is a very advanced topic that related more to optimization debugging, but in certain cases, the assembler code can help you find the problem to why your software crashes.
I won't talk about it here, because at the time my knowledge for this is quite limited. But if you're intersted, I'd recommend Alex Darby's Low-level Curriculum series over at #AltDevBlogADay

by Erik Larsson (noreply@blogger.com) at May 10, 2013 12:46 PM