Skip to content
Forum Archive

3D Radial Satellite

11 posts

CameronFX#

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
Jaak#
i think it could be done with not "point per point"
i dont know how, tho :P

[edit]
amd duron 750 MHz... and avs is sloooow on my pc
anubis has dont something with ssc's what pwn you'r sattelite faaaar... was it 120-polyhedron
http://www.deviantart.com/deviation/1301789/
[/edit]
CameronFX#
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#edited
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#
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#
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#
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#
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#
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#
[rant]
Daemon really made it difficult to do anything in this thread. 😠
[/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.