# Posts tagged ‘N-Spaces’

I’ve just started watching the Gilbert Strang MIT Courseware on iTunes, and highly recommend it – after watching it a light bulb went off in my head. Daniel Pook Kolb’s Blendshape system is very very impressive – but I did’nt and still dont understand it fully.

Thinking out loud here I thought that it might be essentially a form of finding out the ‘unknown’ in a linear combination of an nth dimensional space as the corrective of the combining shapes. For example the unknown of :

x[2,3] +  y [4,5]  = [6,7] would be [-1, 2] ( its hard to show as i’m not using LaTex atm)

Before any corrective is used the  ‘unknown’ is [0,0], this would be synomanous to  adding two blendshapes together without any corrective.

So I’m back in the UK spending christmas with family, but had some time to think about the relationship between datasets and n-space’s.  An n space of 2 is pretty easy to work out as the dataset existing in that space can either be (1), (2) or (1,2) and has a direct relationship to the vector existing in the space the datasets reside. What gets trick is when the dimensions get bigger:

For instance a 3n space consists of 3 weights and datasets existing at aproximately 7 places at positions of 1 and infinite inbetween positions like so: [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3] What gets tricky is that the if a dataset exists at [1,2,3] (a value of 1.0 at each dimension) with a vector in this space: [.5, .5, 0]. How does the dataset know about the 0?

We’ll it should’nt – infact this is what im doing with the dataset, if a dataset is at [1,1,0] then really its at [1,2] with a value along each of these dimensions. So this is what theoretically what im doing with the nspace – essentially its dynamic. If I have 3 weights but only 2 are greater than 0, then I only use them in my nspace like so,

[1,0,1] = [1,3]

then i’ll do a cross-check against these. Dont know if this is correct but, im gettting there slowly.

I took another look at some research on n-space combination sculpture today and the light-bulb ( i think) finally went off in my head as to how it works. Essentially you have four parts:

• A n-space comprised of weights
• A set of targets (i.e shapes)
• An orgin/neutral shape
• A vector (the sum of the weights)

The old ideas of standard blendshapes basically go out the window, but the power you gain is pretty amazing – and in theory can be used for any facial type setup including bones and muscle rigs.

In simple terms, you associate a target(shape) to a weight,this for all instances is standard blendshape stuff – but with n-space combinations you can associate a target to more than one weight.

For example lets say we have two targets: A and B, and there respective weights: w1[1,0] and w2[0,1] remember weights exist in an n-space so if there was 3 it would be as follow w1[1,0,0] , w2[0,1,0]  and w3 [0,0,1]. These do nothing atm, until we associate a target(s) to them so e.g target a is associated to w1 at [0.5,0] ( a target doesnt have to be at 1 of the weight)

Still follow? Well simply put we define a space from weights so point1 would be just one weight, a point2 would be 2 weights and a point3 would be three weights.. and so on. If we have a space of the nth number its an n-space so if we have 30 weights, i.e sliders in our rig we have…. yes….. an n-space of 30 dimensions!

Now the clever part comes in that the system basically cant break. The cool part comes in that you can associate a target shape to 1 or more weights(sliders)! so say we set weight w1 at a value of 1 so [1,0] and w2 the same [0,1] we now have a combined value of: [1,1] and this shape combination may not work. So we associate a new shape to this weight vector.

All that changing the value of the weights does is that it moves a vector through the space of what its comprise of eg. 3 weights [.3,0,0] [0,.2,0] [0,0,.7]  we have a vector in this space: [0.3,0.2,0.7].

What i dont fully understand is achieving the final, delta. But im working on it – the funny thing is Jason Osipas setup is very reminesent of this n-space idea, working in planes etc. And could easily i think be adapted to work with it.

more to come..