Mark different regions in a 3D scatter plot

Here is my plot and my source code, the points are generated by gRandom and the data will be just like it (the data is not available now).

void plot() {
    TCanvas *cvs = new TCanvas("cvs", "", 800, 600);
    gStyle->SetCanvasColor(0);
    gStyle->SetMarkerStyle(7);
    Int_t palette[5];
    palette[0] = 19;
    palette[1] = 46;
    palette[2] = 6;
    palette[3] = 30;
    palette[4] = 38;
    gStyle->SetPalette(5,palette);

    TNtuple *n = new TNtuple("n", "n", "x:y:z:color");
    for (Int_t i = 0; i < 10000; i++) {
        Float_t x, y, z;
        x=gRandom->Gaus(0, 10);
        y=gRandom->Gaus(0, 10);
        z=gRandom->Gaus(0, 10);
        n->Fill(x, y, z, setcolor(x, y, z));
    }
    for (Int_t i = 0; i < 3000; i++) {
        Float_t x, y, z;
        x=gRandom->Uniform(-40, 40);
        y=gRandom->Uniform(-40, 40);
        z=gRandom->Uniform(-40, 40);
        n->Fill(x, y, z, setcolor(x, y, z));
    }
    for (Int_t i = 0; i < 3000; i++) {
        Float_t x, y, z;
        x=gRandom->Gaus(0, 10);
        y=gRandom->Gaus(0, 10);
        z=gRandom->Uniform(-40, 40);
        n->Fill(x, y, z, setcolor(x, y, z));
        n->Fill(x, z, y, setcolor(x, z, y));
        n->Fill(z, y, x, setcolor(z, y, x));
    }
    n->Draw("x:y:z:color");
}

Int_t setcolor(Float_t x, Float_t y, Float_t z){
    Int_t color = 10;
    if (abs(x)<10 && abs(y)<10 && abs(z)<10) color = 50;
    if ((abs(x)>20 && abs(x)<40 && abs(y)<10 && abs(z)<10)||
        (abs(y)>20 && abs(y)<40 && abs(x)<10 && abs(z)<10)||
        (abs(z)>20 && abs(z)<40 && abs(x)<10 && abs(y)<10)) 
        color = 40;
    if ((abs(x)>20 && abs(x)<40 && abs(y)>20 && abs(y)<40 && abs(z)<10)||
        (abs(y)>20 && abs(y)<40 && abs(z)>20 && abs(z)<40 && abs(x)<10)||
        (abs(z)>20 && abs(z)<40 && abs(x)>20 && abs(x)<40 && abs(y)<10)) 
        color = 30;
    if (abs(x)>20 && abs(x)<40 && 
        abs(y)>20 && abs(y)<40 && 
        abs(z)>20 && abs(z)<40) 
        color = 20;
    return color;
}

I was working on the palette but it looks like a mess, while it’s pretty good on the x-y (or other projection) plane. Maybe it’s not a good idea to do this in a 3-d plot.