Hey, tried playing around rendering a hollow cylinder, sort of worked.

Here is my script:

Graal Script Code:

```
``````
//#CLIENTSIDE
```

function onCreated(){

const radius = 200; //The radius of the cylinder.

const detail = 2; //How much detail to show.

const ntsc = false; //NTSC colours, sort of.

const blurlevel = 1; //To skew the render.

const spinspeed = 0.05; //How fast it rotates.

DrawGUI();

}

function DrawGUI(){

this.imgs = 0;

temp.tx = screenwidth/2 - 250;

temp.ty = screenheight/2 + 50;

//Loops through and shows all polygons for the render.

for(temp.i = 0; i < radius*detail; i ++){

this.imgs.add(i);

temp.tx += sin(i)*radius; //Changes the positioning to a circle.

temp.ty -= cos(i)*radius; //Same

with(findimg(1+i)){

layer = 4;

polygon = {

temp.tx, temp.ty,

temp.tx + radius/2,

temp.ty + radius/2,

};

useowncenter = true;

rotationcenter = {temp.tx -radius/2, temp.ty -radius/2};

}

}

onTimeout();

}

function onTimeout(){

//Loops through all images and rotates them.

for(temp.i : this.imgs){

findimg(1+this.imgs[i]).rotation += spinspeed;

if(ntsc){

findimg(1+this.imgs[i]).red = random(0,1);

findimg(1+this.imgs[i]).green = random(0,1);

findimg(1+this.imgs[i]).blue = random(0,1);

}

//Skews the polygons.

findimg(1+this.imgs[i]).stretchx = random(1,blurlevel);

findimg(1+this.imgs[i]).stretchy = random(1,blurlevel);

}

settimer(0.05);

}

The script can cause the Graal client to become quite laggy if rendering a large cylinder with a high detail value.

Not quite sure how to actually make the shape proper 3D.

In which I could rotate it on each axis, x,y,z.

If anyone has some formulas they'd like to share it's more than welcome.