Yeah.
As a mean to slowly start changing my life and become more social I joined Google+ and Twitter(SpliterCbb).
My life in the last few months has been almost nothing more than wakeup-watch videos on yt/play games-sleep and it's been a bit colourless lately (especially if I compare it to my academic life before I lost everything). But as a way to keep my sanity and keep myself minimally occupied in my free time (considering I can't bloody do anything creative as I have enough of programming at work) I decided to jump onto the latest social craze.
Whoopee frikin Do.
Spliter
Monday, July 11, 2011
Wednesday, June 1, 2011
The joints are turning
Hello!
Luck is not always on our side and so the animation tutorial will be delayed a little. I do have it completely planned out though so pretty soon you'll see the first chapter. The complete tutorial will have 9 chapters ranging from vector transformations, through skinning, blending animations IK and saving.
It's the biggest such project I have got myself into so wish me luck!
The first chapter will just talk about vectors and vector transformation so those that already know this stuff can skip it without much thought.
In this chapter I will assume you've at least heard of vectors and I'll just speed through a few useful things like dot and cross products, and matrix transformations and some interesting applications, so even if you already understand vectors it'll be worth skimming though it.
Later!
Mikolaj (Spliter) Kuta
Luck is not always on our side and so the animation tutorial will be delayed a little. I do have it completely planned out though so pretty soon you'll see the first chapter. The complete tutorial will have 9 chapters ranging from vector transformations, through skinning, blending animations IK and saving.
It's the biggest such project I have got myself into so wish me luck!
The first chapter will just talk about vectors and vector transformation so those that already know this stuff can skip it without much thought.
In this chapter I will assume you've at least heard of vectors and I'll just speed through a few useful things like dot and cross products, and matrix transformations and some interesting applications, so even if you already understand vectors it'll be worth skimming though it.
Later!
Mikolaj (Spliter) Kuta
Labels:
Animation,
Animation Engine,
Announcment,
Game Dev,
Tutorial
Tuesday, May 24, 2011
I'm back from the dead, and with some good news!
Hello Ludum-Dare-ians and people who randomly found this blog on Google looking for game save tutorial!
I'm back from my slumber, and what slumber it was!
I did get the job at the company I was making those challenges for, I'm even on our company's page (http://www.covii.pt/) as software developer! (though everyone knows there I'm the Senior Graphics Engineer).
Anyway, I've not been completely procrastinating! Since I've worked there for several months I've been programming everyday for almost 8 hours which shows in my code I write for my own projects. However! Even on my own hobby codefront I did not procrastinate (not entirely anyway).
I am now announcing I'm working on a game. I'm not sure if it's gonna be commercial or not (probably not as the quality of many thing will be shit) but I'm making it with a long lived friend of mine MICL.
He's going to write the story and make music, while I program and work on graphic art.
But the point of this post is not that.
My Litterbox engine is reaching it's 4th anniversary, and so I decided to make another step and make it fully 3D!
But the point of this post is not that either!
The point of this post is:
MY ANIMATION ENGINE
So far I've created a working 2D prototype. but mainly it's a tree-based animation system, where the leaves can be either animations, physics, or anything that modifies a given skeleton. This system was larely based on UDK animation system, and because of it's tree-based structure it's possible to do the following things:
1-Dozens of working animations , only the animations connected to the tree are updated so no wastes.
2-Animation Blending, which allows for composed animations (eg: having a character with a walk animation composed of four different walk animations (eg: NSEW directions).
3-Synchronized animations! Yes, this is one of the golden jewels in the crown of my engine. This means that you can have a 1.5 second running animation blended with a 4.0 second walking animation and the transition will be seamless as long as the movement is synchronized timely as well (eg: in both animations the left foot is on the ground at 50% mark, up on the 0 and 100% mark, etc)
4-Easy to add nodes that depend on the current pose. Just pop an IK node between the root and the result of the animation and you have IK with the starting position of the animation.
5-Bone masking! Don't want your "running animation" affect the hands and torso? No problem! you just disable all the bones you don't want animated!
6-Adding new types of nodes is easy! if you just follow the node structure of the animation tree, you can add nodes or leaves that fill any necessity, from IK, Physics/conscious ragdolls to procedural or keyframed animation!
Here's an example of the tree structure I've mentioned:
So! When can you use this fantastic animation engine?
Well... that's the bad news: you can't.
At least not for now. I've made a 2D prototype that works and now In the middle of porting it to 3D.
I've got the skeleton working in 3D with quaternions using my handmade math lib. I've also got skinning working, but no texture loading and no normals so far.
here's how it looks right now:

Not really impressive, is it?
Well, it'll change in a couple of days. I've recently (about a month ago) mailed Chriss Hecker for advice on how to keep focused even if I really don't feel like doing anything.
His advice?
"15 minutes"
Every day work for 15 minutes no matter what the mood, no matter how hard you don't want to.
If you really don't want to do anything then hey, 15 minutes is like 1/16th of your free time if not less. After that go do whatever the hell you want.
I've been following this advice for the last month, I've had occasional slips, but usually when I work I end up working far beyond those 15 minutes. (before writing this post I've been working for about 3 hours stopping occasionally to glance at a video running in the background).
So, this is my official statement:
Since Saturday I'll be making a tutorial on how to implement your own 2D or 3D tree-based animation engine with all the features I listed. And I'll be releasing this tutorials in several chapter, one chapter every 3 to 4 days.
I won't fail unless something really unexpected happens (like the second coming of Christ, or having to stay late at work for the entire weekend).
Wednesday I'll release the list of chapters of the tutorial, but I know I'll be starting explaining the basics of vector math and a bit on matrices and quaternions. In the later chapters I'll explain on how to create a working IK system, and how it'll be integrated into the animation system.
By Saturday I should also have my animation system completely working which should serve as a good proof of concept that I'm not just babbling madly.
I'm out!
Mikolaj Kuta
I'm back from my slumber, and what slumber it was!
I did get the job at the company I was making those challenges for, I'm even on our company's page (http://www.covii.pt/) as software developer! (though everyone knows there I'm the Senior Graphics Engineer).
Anyway, I've not been completely procrastinating! Since I've worked there for several months I've been programming everyday for almost 8 hours which shows in my code I write for my own projects. However! Even on my own hobby codefront I did not procrastinate (not entirely anyway).
I am now announcing I'm working on a game. I'm not sure if it's gonna be commercial or not (probably not as the quality of many thing will be shit) but I'm making it with a long lived friend of mine MICL.
He's going to write the story and make music, while I program and work on graphic art.
But the point of this post is not that.
My Litterbox engine is reaching it's 4th anniversary, and so I decided to make another step and make it fully 3D!
But the point of this post is not that either!
The point of this post is:
MY ANIMATION ENGINE
So far I've created a working 2D prototype. but mainly it's a tree-based animation system, where the leaves can be either animations, physics, or anything that modifies a given skeleton. This system was larely based on UDK animation system, and because of it's tree-based structure it's possible to do the following things:
1-Dozens of working animations , only the animations connected to the tree are updated so no wastes.
2-Animation Blending, which allows for composed animations (eg: having a character with a walk animation composed of four different walk animations (eg: NSEW directions).
3-Synchronized animations! Yes, this is one of the golden jewels in the crown of my engine. This means that you can have a 1.5 second running animation blended with a 4.0 second walking animation and the transition will be seamless as long as the movement is synchronized timely as well (eg: in both animations the left foot is on the ground at 50% mark, up on the 0 and 100% mark, etc)
4-Easy to add nodes that depend on the current pose. Just pop an IK node between the root and the result of the animation and you have IK with the starting position of the animation.
5-Bone masking! Don't want your "running animation" affect the hands and torso? No problem! you just disable all the bones you don't want animated!
6-Adding new types of nodes is easy! if you just follow the node structure of the animation tree, you can add nodes or leaves that fill any necessity, from IK, Physics/conscious ragdolls to procedural or keyframed animation!
Here's an example of the tree structure I've mentioned:
So! When can you use this fantastic animation engine?
Well... that's the bad news: you can't.
At least not for now. I've made a 2D prototype that works and now In the middle of porting it to 3D.
I've got the skeleton working in 3D with quaternions using my handmade math lib. I've also got skinning working, but no texture loading and no normals so far.
here's how it looks right now:

Not really impressive, is it?
Well, it'll change in a couple of days. I've recently (about a month ago) mailed Chriss Hecker for advice on how to keep focused even if I really don't feel like doing anything.
His advice?
"15 minutes"
Every day work for 15 minutes no matter what the mood, no matter how hard you don't want to.
If you really don't want to do anything then hey, 15 minutes is like 1/16th of your free time if not less. After that go do whatever the hell you want.
I've been following this advice for the last month, I've had occasional slips, but usually when I work I end up working far beyond those 15 minutes. (before writing this post I've been working for about 3 hours stopping occasionally to glance at a video running in the background).
So, this is my official statement:
Since Saturday I'll be making a tutorial on how to implement your own 2D or 3D tree-based animation engine with all the features I listed. And I'll be releasing this tutorials in several chapter, one chapter every 3 to 4 days.
I won't fail unless something really unexpected happens (like the second coming of Christ, or having to stay late at work for the entire weekend).
Wednesday I'll release the list of chapters of the tutorial, but I know I'll be starting explaining the basics of vector math and a bit on matrices and quaternions. In the later chapters I'll explain on how to create a working IK system, and how it'll be integrated into the animation system.
By Saturday I should also have my animation system completely working which should serve as a good proof of concept that I'm not just babbling madly.
I'm out!
Mikolaj Kuta
Labels:
Animation,
Animation Engine,
Announcement,
Litterbox
Friday, December 24, 2010
Covii Challenge part 2 update log: Friday
Day 5-Thursday:
Update 1(2:12):
This was Mikolaj Kuta, AKA Spliter
Seeya!
Update 1(2:12):
- The Final day! The Final Hour! The Final ... ok nvm
- I finished the project about 15 minutes ago and sent it for review. I'm fairly confident they'll like it even though I personally would add some things like transition effects, DoF and Anti-Alias. I would probably rework my particle engine to allow particle area segmentation with which I could add some more realistic water effect to the second program (I ended up making two programs since I don't have much time and couldn't implement the transition effect).
And Here are the screenies!
As you can see I fixed the low saturation problem!
Yeah, I know the trail doesn't look perfect, but believe me, it's not at all that noticeable when it's running.
- In retrospect I feel like I wasted far too much time resting, even though this project was a bit strenuous, as I must get used to working under such pressure if they are to keep me in the company for more than a few days. I also made a few rules that should help me survive and lead a healthier lifestlye when working:
- Sleep Early,Sleep a lot!
8 hours of sleep a day is a must, even if it means not playing my games or watching movies before going to sleep. Sleep deprivation and lack of a standard sleep hours were one of my biggest mistakes I did during this challenge. An afternoon nap and a night's sleep is a must! - Eat Healthy Food! (and longcat is long)
As obvious as this sounds eating healthy things is actually a problem for me. Not because I don't like it, as I do enjoy a salad every once in a while, but because I don't find time to prepare proper food and resort to eating tuna or chocolate cream sandwiches all the time. I've noticed that in days I went out to eat in a restaurant I actually performed an incredible lot better than in the days I eat what basically is unhealthy garbage. - A rest from programming is a rest from computerI've learned that if I work for a few long hours and then rest by playing games or watching movies, I don't actually rest as well as if I have taken a walk, it's also a lot more difficult to come back to . I still fall into the trap of playing games or browsing websites when I should leave the pc alone for an hour or two, so it's something I'll have to work on.
- Animation is Concentration! (but I'm programming!)Anyone who ever read Richard Williams "Animators Survival Kit" probably knows the quote "Animation is Concentration" inspired by Milt Khals' angry outburst at Richard when he asked him if he listens to any music while working. This was Milt's response: "F-F-F-For Ch-CH-CHRIST'S S-S-S-SAKE, GG-G-GG-GODDamnit! WHAT A F-FF-F-FF SSSTUPID QUESSSTION!!! I'M NOT SMART ENOUGH TO THINK OF MORE THAN ONE THING AT A TIME!!".
Yeah, Milt Kahl didn't listen to music while he was working and neither should you!
Even though I'm a programmer this still holds. Music and any other sounds distract from work more than you realise and I've come to experience this first handed not only this week but along my life as well when I'm studying or working on my own projects.
Turn off Messenger (or put it on busy and disable all notifications), close any youtube tabs you have open, close Winamp and listen to the silence. - Get InspiredMy biggest problem when working is that I easily change focus, however this also comes with another trait of personality: I get inspired really easily. Every now and then I look for videos made by game "celebrities" like some of Chris Hecker's presentations where he talks about the tech they developed for Spore, or interviews with indie devs like the Wolfire team. Those videos always inspire me to work harder so one day I could achieve what those people have achieved. I also read a lot of tech presentations, especially those made by Valve. Those are also a good source of inspiration and you gain invaluable knowledge even if you can't replicate it at the moment.
- Keep things mixed up!
There's one thing I'm prone to and that's fatigue. I can't work more than a few days on one thing. My solution to this problem was actually quite easy to come by: get a hobby in an area completely unrelated to programming. In my case I always liked to draw so this problem was solved by itself. Every now and then I grab Photoshop or Blender and just do something in it. Having activities spread in unrelated areas is really good for avoiding fatigue, and it even may bring advantages. I for example am more of an Game Engine fundamentals programmer, but being interested in modelling drawing and animation made me interested in graphical computing which in turn gave me this opportunity to work at CoVii!
- I guess that's all of them. Those are the rules I set for the future. Some of them I've been following already, other will take a bit of time before I get used to them, but if I manage to follow them all I should perform my best at work and avoid procrastination while I'm home!
- On Sunday I'll probably upload a video of the program in motion.
This was Mikolaj Kuta, AKA Spliter
Seeya!
Labels:
CoVii,
Life Ramblings,
Litterbox,
Programming
Thursday, December 23, 2010
Covii Challenge part 2 update log: Thursday
Day 4-Thursday:
Update 1(2:49):
Update 1(2:49):
- Almost 3 in the morning, I've been working for the last hour or so with brief rests to watch some youtube videos from my subscriptions. If I'm lucky Batman9502 will upload his LP videos for his Ocarina of Time and Megaman Legends 2 in less than half an hour, if not then it's off to bed without a good-night cartoon :(
Anyway, I digress. Here's what I've accomplished in the last hour and a half:
- Cubes that light up softly
- When the mouse passes them not too fast and not too slow, they fly in the direction of the camera missing it by just enough not to notice any clipping.
- Trail effect on the cubes is finally noticeable.
- Added a very nice looking background that changes softly over time(only noticeable without cubes on the screen), I did this using a simple gradient background texture
- So, not that much done but these are the new accomplishments. As usual I also fiddled with the framebuffer order and some colour and opacity, the colours look too desaturated for me in the current state; changed the bloom effect settings so it's a lot more subtle; changed the way the particles render so the final image looks softer, but at the same time allows me to illuminate the particles I need above their texture color. I also removed the specular highlight. It was far too strong even on the lowest settings, so I'll just stay with the very subtle sphere map.
- ANYWAY! Here's the product from few hours ago:
Randomly Lit cubes with random rotations FTW!
- And here's the product from a few minutes before I started writing this entry:
You see what I mean by too desaturated?
- The background has a very nice color but the cubes, even though they have the same hue, are a lot more desaturated and I'm still trying to figure out why. I'll probably fiddle around with the light and the 2nd pass to add more red and blue
- So! I'd say this part of the project is quite close to being done, all I have to add now is to make the cubes rotate when you pass over them with the mouse! Then it'll be off to the second part of the challenge where I'll have to add the same water-y effects to the particles as in the Yellow Submarine from the previous challenge and create another particle system that creates the particles near the mouse to give a similar effect to the one in the video they gave me. If I'm done in the early afternoon then I'll add some extra flavour like the screen shattering into a hundred of small cubes when changing from one effect to the other. This would be quite easy to do if I had the time since I render most of everything on Texture-bound FBOs.
- I have one regret towards this challenge: I have to copy someone else's work. Not exactly, but since they gave me a reference I've been following it quite strongly so I don't sidetrack as I usually like to do. If I had more time I would've made some significant changes like adding Anti-Alias to the scene so it would look a lot more polished. I would've also added interesting physical effects to the particles, like visual effects like changing the hue of the scene or make the cubes actually behave "softer" using shaders (stretch them in the direction they're flying for example, and expand a bit when rotating really fast)
- I sent my (hopefully) future boss two of the screens I had here on my blog and he liked it! In fact he liked it so much that he said he wants to close the deal! I'm going there to work with them for one day and if they like me I'll be working!! I'll be part of a team that makes awesome projects and lets me get better and better at what I love to do! YEAH!
Ekhem. Now we resume our scheduled programme:
- I added mouse speed dependent rotation to the cubes using cross product between the mouse current, and previous positions and the particle coordinates. Now the cubes rotate properly, if you pass the mouse over them slowly they'll rotate slowly in the direction the mouse is moving, if you pass your mouse a bit on the side it'll rotate on an angle perpendicular to the mouse movement in relation to the particle.
- I also render the trail above the particles but with much more subtlety. This gives them the appearance of delicate semi-translucency especially when they move fast around the screen, it also helps softening the scene giving it a more...uh... ethereal(?) look?
Here are the screenies:
- There are still some thing I would like to try out like making a DoF effect using part of the blur shader but make the blur stronger the closer the particles get to screen, I'm not sure if I have time to do that since I still need to get working on the second part of this program which is making much smaller cubes that light up stronger the faster they go and behave like if they were in water. I would kinda prefer no to do that since I really need a good rest.
Also I would follow my friends advice and add some anti-aliasing to the scene since it doesn't look that good on screenshots. Luckily this isn't such a problem when actually playing around with the program so most passers-by wouldn't notice any difference.
One thing that popped up into my mind (even though unrelated to the challenge) is to make some effects using metaballs. I know it's made using the marching cubes algorithm but I'm curious how the actual mesh would be built from that. - I just noticed I wrote "Tuesday" instead of "Thursday" in the title.
Whoops!
Labels:
CoVii,
Life Ramblings,
Litterbox,
Programming
Subscribe to:
Posts (Atom)
