CameronFX
22nd August 2003 17:31 UTC
3D Radial Satellite
This is a pretty nice 3D model of what looks a bit like a satellite
I was investigating how many Super Scopes can be included in a single AVS file
This model has 100 Super Scopes each with 17 points (enough points for a piece of a 3D world)
The super position is a way of including more super scopes
I see this at 17 FPS with 400x400 window size
Can anyone help out with the following questions ? :
(1)
Does anyone else have any experience and advice regarding large numbers of super scopes?
(2)
What sort of machine does the average winamp avs user have?
Thanks
CameronFX
22nd August 2003 17:40 UTC
by "point per point" do you mean:
x = if(equal(c,1),.2,x);
x = if(equal(c,2),.9,x);
x = if(equal(c,3),.2,x);
x = if(equal(c,4),.4,x);
etc...
I think this might be the fastest way to describe some simple shapes,
like I beams for example:
... ...
. ................................ .
. .
. ................................ .
... ...
(this looks like a sideways capital 'I' on a fixed width font :) )
Are equal tests fast or slow?
Jaak
22nd August 2003 18:34 UTC
They are fast... but they are annoying... and you use lots of ssc's... what means you do 3d rotation in every scops, and this is makes most of the slowdown... i think its bossible to do same thing with 10-15 ssc's...
yea... you'r good on 3d indeed... try doing some raytracing...
Jaheckelsafar
26th August 2003 02:40 UTC
Yeah, that definately doesn't need 100 scopes.
BTW, does anyone know if there's an appreciable speed difference between doing something lots of times with many small scopes or once with a bing scope? The preset would definately be smaller.
anubis2003
26th August 2003 03:05 UTC
I have a pIV 3.2 GHz.
In regards to the massive number of SSCs, you can reduce the number of them. This will normally speed the presets up dramatically, but it can slow them down depending on how the combination of multiple SSCs is done. The best way is to just do it on paper and try to find the shortest path that covers all of the lines(preferably one that doesn't have to draw the same line multiple times.
Deamon
26th August 2003 10:23 UTC
I have an AMD 2600+ with 1 GB RAM.
Fast way of doing p2p: (example)
Init:
n=48
On Beat:
xr=(rand(50)/500)-0.05; yr=(rand(50)/500)-0.05; zr=(rand(50)/500)-0.05;
Per frame:
xt=xt+xr; yt=yt+yr; zt=zt+zr; p=0;
Per point:
p=p+1;
x1=-0.5*equal(p,1)+-0.5*equal(p,2)+0.5*equal(p,3)+0.5*equal(p,4)+-0.5*equal(p,5)+-0.5*equal(p,6)+-0.5*equal(p,7)+0.5*equal(p,8)+0.5*equal(p,9)+-0.5*equal(p,10)+-0.5*equal(p,11)+-0.5*equal(p,12)+0.5*equal(p,13)+0.5*equal(p,14)+0.5*equal(p,15)+0.5*equal(p,16)+0.5*equal(p,17)+0*equal(p,18)+-0.5*equal(p,19)+-0.5*equal(p,20)+0*equal(p,21)+0.5*equal(p,22)+0.8*equal(p,23)+0.5*equal(p,24)+0.5*equal(p,25)+0.8*equal(p,26)+0.5*equal(p,27)+0*equal(p,28)+-0.5*equal(p,29)+-0.5*equal(p,30)+0*equal(p,31)+0.5*equal(p,32)+0*equal(p,33)+-0.5*equal(p,34)+-0.5*equal(p,35)+0*equal(p,36)+0.5*equal(p,37)+-0.5*equal(p,38)+-0.8*equal(p,39)+-0.5*equal(p,40)+-0.5*equal(p,41)+-0.8*equal(p,42)+-0.5*equal(p,43)+0*equal(p,44)+0.5*equal(p,45)+0.5*equal(p,46)+0*equal(p,47)+-0.5*equal(p,48);
y1=-0.5*equal(p,1)+-0.5*equal(p,2)+-0.5*equal(p,3)+-0.5*equal(p,4)+-0.5*equal(p,5)+0.5*equal(p,6)+0.5*equal(p,7)+0.5*equal(p,8)+0.5*equal(p,9)+0.5*equal(p,10)+0.5*equal(p,11)+-0.5*equal(p,12)+-0.5*equal(p,13)+-0.5*equal(p,14)+0.5*equal(p,15)+0.5*equal(p,16)+-0.5*equal(p,17)+-0.8*equal(p,18)+-0.5*equal(p,19)+-0.5*equal(p,20)+-0.8*equal(p,21)+-0.5*equal(p,22)+0*equal(p,23)+0.5*equal(p,24)+-0.5*equal(p,25)+0*equal(p,26)+0.5*equal(p,27)+0.8*equal(p,28)+0.5*equal(p,29)+0.5*equal(p,30)+0.8*equal(p,31)+0.5*equal(p,32)+0*equal(p,33)+-0.5*equal(p,34)+0.5*equal(p,35)+0*equal(p,36)+-0.5*equal(p,37)+-0.5*equal(p,38)+0*equal(p,39)+0.5*equal(p,40)+0.5*equal(p,41)+0*equal(p,42)+-0.5*equal(p,43)+0*equal(p,44)+0.5*equal(p,45)+-0.5*equal(p,46)+0*equal(p,47)+0.5*equal(p,48);
z1=-0.5*equal(p,1)+0.5*equal(p,2)+0.5*equal(p,3)+-0.5*equal(p,4)+-0.5*equal(p,5)+-0.5*equal(p,6)+0.5*equal(p,7)+0.5*equal(p,8)+-0.5*equal(p,9)+-0.5*equal(p,10)+0.5*equal(p,11)+0.5*equal(p,12)+0.5*equal(p,13)+-0.5*equal(p,14)+-0.5*equal(p,15)+0.5*equal(p,16)+0.5*equal(p,17)+0*equal(p,18)+-0.5*equal(p,19)+0.5*equal(p,20)+0*equal(p,21)+-0.5*equal(p,22)+0*equal(p,23)+0.5*equal(p,24)+0.5*equal(p,25)+0*equal(p,26)+-0.5*equal(p,27)+0*equal(p,28)+0.5*equal(p,29)+-0.5*equal(p,30)+0*equal(p,31)+0.5*equal(p,32)+0.8*equal(p,33)+0.5*equal(p,34)+0.5*equal(p,35)+0.8*equal(p,36)+0.5*equal(p,37)+0.5*equal(p,38)+0*equal(p,39)+-0.5*equal(p,40)+0.5*equal(p,41)+0*equal(p,42)+-0.5*equal(p,43)+-0.8*equal(p,44)+-0.5*equal(p,45)+-0.5*equal(p,46)+-0.8*equal(p,47)+-0.5*equal(p,48);
x2=x1*sin(zt)-y1*cos(zt);
y2=x1*cos(zt)+y1*sin(zt);
z2=x2*cos(yt)+z1*sin(yt);
x3=x2*sin(yt)-z1*cos(yt);
y3=y2*sin(xt)-z2*cos(xt);
z3=y2*cos(xt)+z2 *sin(xt);
x=x3/(z3+2);
y=y3/(z3+2);
Raz
27th August 2003 03:55 UTC
Meh, looks more like a dandelion to me. And it has absoloutely no beat reaction. It's a nice achievement but what's the point if not even the 3d rotation reacts to music?
CameronFX
27th August 2003 14:46 UTC
Thanks Guys
:) Raz, my intention is to test performance with 100 super scopes, and to show you my cool 3D model - not to view a complete AVS preset
Thanks everyone
I think I may use AVEs for future 3D work - that way I can have an array that holds all of the points, and I can load the array from a file - saving me the time of copying and pasting generated x y z data from other sources into super scopes - plus having full control in C++
one problem is that they would show up in the preset list
I might be able to reduce this to one entry, with indirection to specific dlls (ie provide one APE preset that contains dll file name that contains the implementation...)
I know its all a bit separate from AVS but then the work done is portable to other renderers etc, and C++ is nice interface to work in
The AVE interface looks very easy (minus the tab panel dialog box)
and if I got that straight it is just a matter of implementing the class:
class C_RBASE {
public:
C_RBASE() { }
virtual ~C_RBASE() { };
virtual int render(char visdata[2][2][576], int isBeat, int *framebuffer, int *fbout, int w, int h)=0; // returns 1 if fbout has dest, 0 if framebuffer has dest
virtual HWND conf(HINSTANCE hInstance, HWND hwndParent){return 0;};
virtual char *get_desc()=0;
virtual void load_config(unsigned char *data, int len) { }
virtual int save_config(unsigned char *data) { return 0; }
};
and exporting the function:
__declspec (dllexport) int _AVS_APE_RetrFunc(HINSTANCE hDllInstance, char **info, int *create)
-----------------
Question:
What is the communities opinion of writing AVEs for rendering (without any settings)
Any comments? Any Protests?
------------------
anubis2003
27th August 2003 17:38 UTC
[rant]
Daemon really made it difficult to do anything in this thread. :mad:
[/rant]
First of all, it's APEs, not AVEs. I don't really like having a lot of APEs, but I go through and delete the ones that aren't used much every now and then, so it's not too bad. If you want to use APEs to specifically render certain figures in AVS, that's alright with me. Just make sure to say how many preset-specific APEs you are including.