Jul 31

DEMO SPLICE : Bendy arm

DEMO SPLICE : Bendy arm

Hello folks! As promised here a follow up of my development in Fabric Splice !! Today we are talking about bendy arms! Ever heard of it? In the computer graphic industry when you talk about bendy arms you mean a cartoony setup that allows you  to create arcs in body limbs like it was a tail rather that just simple sharp bends in knees and elbows  for example. Now to achieve that result require to resolve of a couple of problems :

  • How to bend the arm? Means how to get an arc?
  • How to orient the bones along the arc?
  • What about distributed twisting?

The node I wrote in splice is going to adress exactly all those problems.

twistSplice

Before get started with explanations let s see what we got here. This is a picture of the actual node , with opengl debug on, the node get as input an array of matrices, in this case 3 , shoulder , mid , elbow and shoots out the matrix array of the computed bendy bones. The resulting dots are the position computed and the lines is the Y axis of the resulting rotation matrix

How to bend the arm? Means how to get an arc?

In order to have the bones deforming into a nice arc I used the input matrices to interpolate a nurbs curve ( Yeah now you see why I wrote a nurbs curve huh?) . Once I get a nurbs computed in the node I can then evalute points along the curve, done we got our bendy positions.

How to orient the bone along the arc? &  What about distributed twisting ?

I am actually gonna answer this two questions all at once because solving one means solving the other. In order to compute the orientation along the curve first of all I need to be able to query a tangent to the curve and an up up vector, once I takled this I can actually generate an orientation matrix , but the math I did is a bit different , since I had to re-adapt the algorithm from maya API to splice API. First thing I did was extracting the twist , this is quite tricky since you need to be able to re-alling quaternions without losing the twist , and I actualyl improved my old algorithm and found a better axis for performing the align, with a combination and the twist and a tangent vector I am able to compute the final quaternion rotation that allows me to get my object aligned to the tangnet on the curve and twisted properly. Actually splice allows you to extract a matrix from a  quaternion and a point which saved me a bit of math. Of course the whole thing is running on parallel thanks to PEX ( where possible).   Enough talk here is the demo!

That s it folks! As usual If you like it please follow my channel and share it around. You can also stay up to date with all my videos by subscribing to the newsletter at : marcogiordanotd.com/newsletter.php

Jul 30

DEMO SPLICE : Bezier and Nurbs curve in Creative Splice API

DEMO SPLICE : Bezier and Nurbs curve in Creative Splice API

 

 

    

 

Hello everyone, today we are talking about SPLICE !

If you don’t know what Splice is I command you to rush to their website and have a look , is quite awesome and I do believe it might be next leap forward in the industry.

I finally started  to play with Splice  and I decided to implement a nurbs curve, you might wonder why I wanted to do that.

The reason behind  that are mainly two, first Splice for now lacks a nurbs curve/surface implementation ( no worries will come soon) and second  I always wanted to learn the the math behind the  nurbs curves , so I took two bones  with one stone and got my hands dirty.

In order to grasp the math I started by implementing  the bezier curve  which is just a specific type of nurbs curve, then I generalized it to a nurbs curve.

I started by being able to compute berstain polinomials , that led me to compute the weights of each control point, this was not too hard, once that was implemented I was  able to do what I had in mind, computing a tangent on the curve at given u param. In order to do so you need to get the derivative at the given u , this was less easy but a lot of study  and banging my head against the wall

in the end made the math clicking in my head and I was eble to implement.

As you can see in the demo , the main problem with bezier is that  in order to add control point you need to raise up the degree of the curve , which will make you lose contol of the locality of the curve, also high degree polinomials will start to get unstable.

This is where next step of the development led me to, implement a nurbs curve , like the maya one.

Again I  followed  the same steps and got it done, also with the tangent computation. (It took also a lot of italian swearing which I am not gonna report , it is like somewhot “colorful”).

Great, I have implemented everything I wanted so time to get serious and start using the nurbs curve class for some heavy lifting.

 

The first usage I could thing of was Parallel Frame transportation ( If you wanna know more you can check  my maya plugin  demo ), basically is a nice and stable way to compute normals along the curve avoiding flipping. Once you are able to compute those normals then is a piece of cake to be able to compute a positon and orientation along the curve, and that s what the second part of the demo is talking about.

Here is the actual demo :

 

That s it folks!

As usual If you like it please follow my channel and share it around.
You can also stay up to date with all my videos by subscribing to the newsletter at :
marcogiordanotd.com/newsletter.php

 

 

Jul 28

MOVIE : Why Need for speed is a great movie

MOVIE : Why Need for speed is a great movie

DISCLAIMER : If you are a movie nazi … one of those that complains about stuff like : “there, you see that sequence ? the light should have come 3 degree lover it changes the whole mood!” …. well

GET THE FUCK OFF MY BLOG  there is nothing for you here. <3

 

Now lets start by saying I am the kind of guy that love explosion and bad ass action in the movies,  we all know that, I don’t say they are the best ever but I do enjoy them and nothing I can do about that.

Then this trailers comes along.

First time I watch it I thought , well that s a pretty cool piece of shit. Really I think the trailer is quite bad, but my bro borrowed me the dvd so I said lets watch it, and I was keeping down my hopes a lot.

I have been burned so many times about movies coming from books or games and they where so damm bad to make me regret watch them ( like Eragon :/).

But if you are a fan of the need for speed series then you will love this movie, it s hard to believe but it really took out the need for speed essence.

It was an hard job, maybe because need for speed doesnt really have  a story, there have been so many titles without a story where basically you just race, and the ones that actually had a story they were so weak that I don’t remember a single character, and there was never a main character because they wanted you to be the one.

The things I loved about this movie  are :

1) Exotics cars : there are a lot of the m and all togheter , races exactly like in need for speed where you see lambo , meclaren , koenigsegg etc etc.

2) The kind of race : you can watch all the fast and furios and they dont look like need for speed, this movies replicate the exact types of  races , with long roads and the iconic double sided super road

in the middle of nowhere

3) the final race : ooooh that was so f**** epic , the emotions it gave me was exactly like the one on the final boss that is so f*** hard you have to get every corner right and you are doing that for the

10th time and you are thinking this is the one, this time I do it.

Also the final race is totally like need for speed hot pursuit  :

 

4) The police : damm what can i say the police was behaving exactly like in the game.

 

SO in the end for being a fan of the need for speed series I am really happy about this movie because I think it really took a snap shot of its essence!

 

Jul 27

DEMO ARDUINO : having a bit of fun with arduino

DEMO ARDUINO : having a bit of fun with arduino

Hey guys I just pulled out some old palying around I did some time a go.

The first very basic test was getting a led to switch on off.

DEMO ARDUINO : test 1 , led on off from Marco Giordano on Vimeo.

The next step was to make the led fade.

DEMO ARDUINO : test 2 , led fading from Marco Giordano on Vimeo.

Then I bought a proximity sensor for a couple of pounds out of amazon, there was a small bit of math to implement to actually compute the proximity of an object,
but other then that all nice and simple.

DEMO ARDUINO : test 3 , proximity sensor from Marco Giordano on Vimeo.

That s it folks I really look forward to start playing around with arduino!
Stay tuned and subscribe to the channel!

Jun 27

HOW TO: Download entire channels from youtube on Linux

HOW TO: Download entire channels from youtube on Linux

 

 

Hello everyone,

so today I am gonna share a quick how to, this is not my usual kind of posts but I found this awesome program on Linux that I use to download video from YouTube and works amazing.

The reason why I needed that is because I always find amazing channels full of tutorials for programming and other stuff and I wish to download and save them.

here it is a small tutorial about that :

HOW TO : Download entire channels from youtube on Linux from Marco Giordano on Vimeo.

Here the python script I used
http://www.marcogiordanotd.com/download/youtube.py

Like the video and subscribe to the channel! and of course share it around!

Jun 11

OPENGL : 3D viewport , let the fun begin!

OPENGL : 3D viewport , let the fun begin!

splashScreen

Hello everyone! It has been quite a bit of time but trust me when I do say there is so much going on in my life right now, I can’t tell you much yet but you will soon know.

Lately I have been focusing on getting better at c++ and Opengl, I do want to move toward pure R&D guy (research and development) rather than staying in rigging.

What I did was creating a 3D viewport maya like , in order to have a play room to implement some stuff I have in mind since a while.

Again, you have to be a little patient you will know later on what my final goal is, for now one step at the time.

Starting learing Opengl was not so easy , there is so much stuff to learn in order to be able to just draw a single triangle (in the proper way) that you can easily find yourself overwhelmed by so much information that you need to know.

Let s start from the beginning.

After I was able to draw a triangle on a 2D screen my first goal was to be able to load in an object, because of course I don’t want to draw manually everything, like vertex , faces , uvs etc.

I decided I was going to write myself a simple obj loader, again just to get a bit more comfortable in parsing text files in cpp, once I did that this was the result:

objLoaded

A nice cube isn’t it?

At this stage I was able to load all the information and to store all the data into buffers to send them to the graphics card.

I wanted my obj loader to be a bit more flexible and I did not want to lose too much time on it , it was out of the scope of my goal, so I just googled to find a nice obj library and I found this:

https://github.com/syoyo/tinyobjloader

Which works really well and if I recall correctly automatically converts quad to triangles at “read” time , which is pretty cool , even tho I did not push too much the tests on this aspect.

Once that was done I actually needed a 3D camera to move around my object, my first implementation of a camera was by rotating around the camera pivot which si not that user-friendly , then after a bit

of effort it was converted into the same kind of behavior of a maya camera.

By the way the camera deformation is performed inside a vertex shader , on a vertex by vertex basis.

At this point of the job it was kinda hard to see the model, the reason is simple , there is not any kind of lighting, the color was completely flat.
I needed to do something about it, here comes in play the fragment shader, this shader gave me quite a bit of trouble to make it up and running but after a lot of swearing I was able to plug it properly in the pipeline

fragment

As you can see initially it was just a simple flat shader but actually the color was being interpolated for each fragment.

Next step was to implement a simple diffuse light model , which is really simple, it is just based on the cosine rule which basically we can resolve with a dot product between camera vector and normal and this is the result

dragonShader

Now it do looks like is starting to look something nice isn’t it ?

Well last thing I do wanted to implement was the ability to load a texture, this task was not too complicated but again just a bit of troubleshooting , is not easy at all to debug shader since they run on the graphics card.

texture

That is it for now , as said in the demo (you can find it here below) I don’t think for now I am going to push rendering much further It s out of the scope , probably I will just implement the wire frame shader.

Here is the video demo , I hope you enjoy , if you like please share and subscribe to my Vimeo channel.

Cheers

M.

Older posts «