Forum

Moving a huge picture

hello,

ive a pretty huge picture, its probably 20.000 pixels wide …
i know its insane, but it has to be that way …
now i want to move to different spots in the picture and if possible with motion blur

im kinda new, but i guess i got an idea how it works

what i dont understand, is if this problem has to be solved with the ex9, which means that i use the huge picture as a texture ?!

im glad for any tips or ideas

thanks

Just a thought but have you tried assigning the texture to a quad of the same size and use Transform X,Y o maneuver around the image?

Digi

yes, just as Digipic says, you can use the picture as a texture. however, the maximum size for a texture on current graphiccards tops around 4096 (maybe 8192) pixels square, so you’ll have to split your texture into multiple quadratic pieces (else the image quality suffers badly). you can then apply those textures onto multiple quads arranged in a grid, most comfortably with the GridSplit node, and then move those around with Transform nodes of your choice.
if all the textures fit into the memory of your graphics card at once, it could even run smooth.

you might also want to go for dds fileformat with dxt compression. saves a lot of loading time when dealing with that amount of data

thank you for your answers so far …

for now one more question …

as i understood it, there are two ways of aproching the problem

the first is to split the image an distribute those peaces on a set of quads in a row. this quad-stripe is than translated ?!? is that right?

the second option would be to work this whole think more like a “mask”. try to get the whole image in and then translate the texture over the quad?

which one is less recource eating ??
which one is faster ??
and with which one can i realize some motion blur effekt?

thanks

you are right about the quad-stripe.
and i think you also understood the one-texture approach, but missed a point about how textures are handled in the graphics card and dx9 (also read here):

first off, the maximum size of a texture is around 8192 pixels in both width and height. if you try to load any texture bigger than that, it will be scaled down, resulting in diminished image quality.

second, all textures should have square dimensions - since upon loading them into the graphic cards memory, they are made square no matter which aspect ratio they had before. although as far as i know this process enlarges the texture (to fit the smaller dimension to the larger one), there will be some interpolation involved that might degrade image quality. you might get better results by preparing your textures in square dimensions yourself.

third, all textures are loaded in sizes that are powers of 2. any texture that is not 16x16, 32x32, 64x64, 128x128 and so on up to 8192x8192 pixels in size will be scaled to fit these dimensions. i don’t know wether they will be made to fit the next larger or the next smaller dimension, but either way there could be a loss in image quality.

with that in mind, there really is no option: you need to slice your one big texture into multiple smaller square textures and put them on multiple quads.
a motion blur effect can be realized with any method.

I also recommend to have a look at @ampop’s Transform(2dPixel) and vvvv’s Writer(EX9 Texture Grid) modules.
Some intersting stuffs to learn in there!

thank your very much so far!
i got my spripe of quads and a little more background knowledge now …

further questions will need to be a “new topic” i guess

thank you!

diki: Right now, Im reading a book about DX9 - quite interesting, but its written there that DX9 can handle 256x256 much faster than other sizes. Dont ask me why - something about its architecture. Did hear that as well?

hairness: If you want to resize your image at runtime in Vvvv, you should think about DDS fileformat. There is a free plugin for Photoshop available atNvidia.

frank: i honestly have no clue about that specific detail; but it might as well be true. would be interesting to know if this is really a property of dx9 or rather of the graphics adapter.

I’ve been making a patch which has 16 x 1024x1024 DDS textures compressed with DXT3 arranged in a big strip.
When I first loaded it the whole system (amd 2x3800 2gig ram, radeon x1600xt)was terribly slow until I moved the renderer to the second monitor and full screened it. At that point I got amazingly good performance, it zips around 3d space very nicely. Not tried chaining many fx on top of it yet, and I’m going to try adding another strip in front of this one with DXT5 compression using alpha.