» Blog
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Blog

new post

  reset tags

addon-release core-release date devvvv gallery news screenshot shout stuff
delicious flickr vimeo youtube

Click to toggle, doubleclick or Shift+click to solo a tag

Order by post date popularity

helos,

this just to mention the second chapter examples of the Generative Gestaltung book (which btw. have i mentioned already? is now also available in english and français) just dropped. check: parasitic-design-a-vvvv-beginners-cookbook to get the latest pack.

the pack includes 36 new documented examples that crack some hard nuts. should be interesting for beginners/intermediates to browse and tinker over some of the details..

let us know if you find bogus or have other problems/questions.
goodnites.

joreg, Monday, Aug 20th 2012 Digg | Tweet | Delicious 0 comments  

photo by benju

okok,

this one took us longer than planned, but it was a difficult one in a way that it includes so many new details. if you are following the devvvv blog you should already know about most of the new stuff thats coming with this release. here is a feature-summary:

for the user

  • we finally have a refactoring option. select a bunch of nodes, press CTRL+G and see them be replaced by a suitable subpatch. gorgeous.
  • we got a series of new vector-modules that should just be more comfortable to use than what's been there so far. check:
  • now please have a look at the new Zip/Unzip nodes. they are basically generalized Vector Join/Split nodes but faster. here are some details: zip-and-unzip
  • there has been a subtle change for all keyboard and mouse related nodes. shouldn't worry you to much as a user. is now just supposed to be more comfortable. specifically check the revamped KeyMatch (String) which will save you some nodes from now on. some more on this is here: keyboardstate-mousestate
  • the next thing is a bit more nerdy but just as userfriendly. it basically allows you to control values in your patches from your android phone. here is how: remoting-vvvv-exposing-pins-kontrolleur

for the developer

here is a list of the latest blog-posts with infos regarding changes to the plugininterface for beta28 that should make your devvvvs lifes easier:

for a full list of fixes and changes check the change-log as usual.
good patch,
yours devvvvs.

Download: 32bit vvvv_45beta28 | See Changelog | 1593 Dls
joreg, Tuesday, Aug 14th 2012 Digg | Tweet | Delicious 0 comments  

rendering by unc

this is the first beta28 addonpack.

it comes with a bunch of new stuff by unc regarding realtime cubemapping, ie modules for conversions between different formats. and lecloneur spent you all a humble bundle of 30 TextureFX modules. just type his name into the NodeBrowser to see the list.

there is a new TypeWriter (String) based on original code by bo27 that should come quite handy for creating onscreen keyboards.

besides that a series of fixes and new nodes by yours truly vux and woei as documented in the change-log.

remember: everything thats in the addonpack (and more) is open-source: https://github.com/vvvv/vvvv-sdk

joreg, Tuesday, Aug 14th 2012 Digg | Tweet | Delicious 5 comments  

For analysing small textures there is a new node that let's you do that in a patch:
Texture (EX9.Texture Split) gives you all RGBA-Values for each texel of the texture.
Even for small textures this results in quite big spreads. So typically this is useful when you can identify the interesting texels with just a few nodes. E.g. you could check if the alpha value is > (Value) 0. You then can Select (Value) those texels and operate on just those few texels.

texture-split-demo

gregsn, Monday, Aug 13th 2012 Digg | Tweet | Delicious 0 comments  

dear beginners,

with the rise of generative design (and a bit late) vvvv wants to get its share of the buzz. so in its long tradition of copying the best it gives to you:

Parasitic Design a series of demo-patches with detailed explanations that closely resemble the output of their originals which are the processing-examples that come with the book
http://www.generative-gestaltung.de
which btw. is available in english and french now!

over the course of the next few weeks we'll release most of the examples of their P chapter (>60) reimplemented as vvvv patches for your studying pleasure. they work nicer with the book at hand but also without the book you should be able to learn by just inspecting the patches.

looking through the examples you'll notice that some of them are not really suitable to demonstrate the strengths of vvvv. nevermind. those examples are there for all of us to find out more about vvvvs weaknesses. we left out only a few that we found too embarrasing to implement..

so the first 6 examples from the "Color" chapter are available from today. next week will see the drop of the "Shape" patches... subscribe to this contribution:
parasitic-design-a-vvvv-beginners-cookbook
to be informed of all releases.

muchos gracias go out to the patchers who spent countless hours on creating, documenting and cleaning the patches for you: roman_g, ridike and robotanton. plus special thanks for beta-testing and -critizism to anna. and an extra quad to the generative-design-team for their kicking us and the mention in the english version of the book. horray.

hope this helps,
yours devvvvs.

joreg, Monday, Aug 13th 2012 Digg | Tweet | Delicious 1 comments  

the beta28 release will contain two new spread operations available for all major data types: zip and unzip. their operation is best explained by two screenshots of their help patches:

read more...
Elias, Tuesday, Aug 7th 2012 Digg | Tweet | Delicious 10 comments  

there're situations were one needs to create pins at runtime depending on the value of some config pin. for example consider the Expr (Value) node. it creates input pins for each given variable name.

with beta28 coming up this kind of task got considerably easier to do with a new interface called IIOFactory.
it basically provides a method to create so called IO containers, containing the actual "view" on the pin data (such as ISpread) and controlling the lifetime of it.

say we want to create an ISpread<ISpread<T>> during runtime, we do something like this:

[Import] 
IIOFactory FIOFactory;
...
var inputAttribute = new InputAttribute("Input Foo");
var inputFooContainer = FIOFactory.CreateIOContainer<ISpread<ISpread<T>>>(inputAttribute);
var inputFooSpread = inputFooContainer.IOObject;
...

in case we decide to get rid of those two pins which are used by inputFooSpread we simply call Dispose on the associated IO container:

...
inputFooContainer.Dispose();
...

for details and as a starting point have a look at the new dynamic plugin template contained in beta28, which creates inputs and outputs on the fly, when changing the associated config pins.

Elias, Tuesday, Aug 7th 2012 Digg | Tweet | Delicious 0 comments  

We are looking for a few beta testers! The MINT framework is now at a point where we want to get the feedback from the vvvv community and would like to invite evvvveryone to apply for the closed beta. Just write a comment below and I will contact you with the details.

read more...
ampop, Monday, Aug 6th 2012 Digg | Tweet | Delicious 15 comments  

the easiest way to write a plugin with a texture output was by extending the DXTextureOutPluginBase class and overriding the CreateTexture and UpdateTexture methods. this approach lead to several issues though:

  1. the plugin was limited to one texture output. if there was the necessity to have more than one texture output one had to go the long route by implementing IPluginDXTexture2 and doing the resource management manually.
  2. it wasn't possible to reinitialize the textures on a slicewise basis. for example if the size of one texture changed all textures had to be recreated.
  3. dealing with a pin of type texture was completely different than all the other data types. wouldn't it be nice to simply write ISpread<Texture> and be done with it?

well it's nearly as simple as that now. you can create a texture output by writing

[Output("Texture")]
ISpread<TextureResource> FMyTextureOut;

the TextureResource class takes care of the resource management, for example if a renderer is moved to another screen, the directx9 device changes and therefor the texture on the old device needs to be disposed and recreated on the new one.

the resource management is the reason why we can't simply write ISpread<Texture> as there might be multiple textures for one single slice. for example if the texture output is connected to two renderer each using its own directx9 device, two textures have to be created for each slice.

the constructor of the TextureResource class takes up to four arguments:

  1. some arbitrary user data which will be supplied as the first argument to the following functions
  2. a function which creates the texture, taking as first argument the user data, as second the device for which a texture was requested and returning the newly created texture.
  3. a function which updates the texture (optional), taking as first argument the user data and as second argument the texture to be updated.
  4. a function which destroys the texture (optional), taking as first argument the user data and as second argument the texture to be destroyed.

so in order to create a texture we need to do this:

FMyTextureOut[i] = TextureResource.Create(i, CreateTexture);
...
Texture CreateTexture(int slice, Device device) {
  return new Texture(device, ...);
}
the static TextureResource.Create method does nothing more than calling new TextureResource<TMetadata>(...), so you might ask yourself why not calling new directly? well the reason is that using the static factory method we can make use of c#'s type inference. so instead of writing new TextureResource<SomeComplexMetadataType<ContainingInnerTypeArguments>>(...), we let the type inference algorithm figure out the SomeComplex...BlaFoo thing.

if we want to update the texture when some input changes:

FMyTextureOut[i] = TextureResource.Create(i, CreateTexture, UpdateTexture);
...
void UpdateTexture(int slice, Texture texture) {
  // Do something with the texture
}

and if something special needs to be done when destroying the texture:

FMyTextureOut[i] = TextureResource.Create(i, CreateTexture, UpdateTexture, DestroyTexture);
...
void DestroyTexture(int slice, Texture texture) {
  // Destroy the texture
}

in many cases the UpdateTexture call can be quite expensive, in order to disable it set the NeedsUpdate property on the TextureResource to false and set it back to true under a certain condition.

for a full example have a look at the rewritten dynamic plugin template.

oh and all this stuff works for meshes too, simply replace TextureResource with MeshResource.

Elias, Thursday, Jul 26th 2012 Digg | Tweet | Delicious 1 comments  

ever wanted to write a sample and hold node as a plugin? well you couldn't, until now :)

read more...
Elias, Wednesday, Jul 25th 2012 Digg | Tweet | Delicious 5 comments  

anonymous user login

Shoutbox

~6h ago

u7angel: unity = 2 million users , not bad

~6h ago

u7angel: @m4d, yeah...i'm not into unity but from what i've seen, they've done a good job

~7h ago

m4d: @u7angel: these guys basically put food on my table for the last ~3 years :) (started with indie then went pro)

~12h ago

tekcor: yez beta30. guys who is in 7hill accomodation for the LPM?

~12h ago

alg: big thx, nice changes

~15h ago

robe: Olè!

~23h ago

r4dian: Ah, vvvv just beat me in the race to 30.

~1d ago

Noir: THANKS DEVVVVS