← Back to Models
Pantheon Benchmark: Antigravity 2.0 / Flash 3.5 (High)

Pantheon Benchmark: Antigravity 2.0 / Flash 3.5 (High)

by Mach3 ·

Client: Antigravity v2.0.1 (918154430)
LLM: Flash 3.5 (High)

Interactive Preview & Customizer

3D preview with browser-based OpenSCAD rendering on parameter changes.

Loading previewLoading preview...

--- Global Rendering Settings ---

step 0.5

--- Architectural Parameters ---

step 0.5
step 0.5
step 0.5
step 0.5
step 0.5
step 0.5
step 0.1
step 0.1
step 0.5
step 0.1
step 0.1
step 0.1
step 0.5
WASM compiler loads on first parameter change.
Download current STL

Prompt Assets

Prompt image

Prompt reference image

Prompt

Create a cube with a hole on every face.

OpenSCAD Code

// OpenSCAD Pantheon Model
// All dimensions are approximately 1:1 in meters.

// --- Global Rendering Settings ---
$fn = 24; // Render resolution. Use 15-24 for fast preview, 40-60 for final quality.
show_cutaway = false; // Toggle to view the interior niches, coffers, and sphere

// --- Main Colors ---
color_stone = [0.93, 0.90, 0.85];       // Travertine stone (light warm grey)
color_dark_stone = [0.82, 0.78, 0.72];  // Older/weathered stone
color_brick = [0.72, 0.53, 0.38];       // Roman brickwork (terracotta)
color_granite_grey = [0.55, 0.55, 0.55]; // Egyptian grey granite (front columns)
color_granite_red = [0.70, 0.50, 0.45];  // Egyptian pinkish-red granite (inner columns)
color_bronze = [0.45, 0.38, 0.30];       // Patinated bronze (doors and oculus)
color_roof = [0.65, 0.65, 0.60];         // Lead/stone roof tiling

// --- Architectural Parameters ---
rotunda_r_int = 21.65;
rotunda_r_ext = 27.65;
rotunda_h_cyl = 30.40;
rotunda_h_int_cyl = 21.65;

dome_r_int = 21.65;
dome_r_ext = 33.74;     // Calculated radius for external dome sphere
dome_center_z = 12.56;  // Calculated Z center (includes 1.5m plinth)
oculus_r = 4.5;

portico_w = 34.20;
portico_d = 15.60;
portico_h_col = 12.00;
portico_r_col = 0.75;
portico_x_start = 35.35; // Position of the back row of columns

// --- 1. Base / Plinth Module ---
module base_plinth() {
    color(color_stone) {
        // Rotunda circular plinth (stepped, 3 steps)
        for (i = [0:2]) {
            translate([0, 0, i * 0.5])
                cylinder(r = rotunda_r_ext + 1.5 - i * 0.5, h = 0.5, $fn = 80);
        }
        
        // Portico rectangular plinth (extending from the rotunda to the front)
        // From X = 20.0 to X = 52.0 (extra space for steps in front)
        for (i = [0:2]) {
            translate([20.0, -(portico_w/2 + 1.0 - i * 0.3), i * 0.5])
                cube([32.0 - i * 0.3, portico_w + 2.0 - i * 0.6, 0.5]);
        }
    }
}

// --- 2. Portico Column Module ---
module column(is_grey) {
    color(is_grey ? color_granite_grey : color_granite_red) {
        // Base
        cylinder(r1 = 1.0, r2 = 0.9, h = 0.4);
        // Shaft (tapered)
        translate([0, 0, 0.4])
            cylinder(r1 = 0.75, r2 = 0.65, h = 10.6);
    }
    // Capital (carved marble)
    color(color_stone) {
        translate([0, 0, 11.0]) {
            cylinder(r1 = 0.65, r2 = 0.85, h = 0.8);
            translate([-0.9, -0.9, 0.8])
                cube([1.8, 1.8, 0.2]);
        }
    }
}

// --- 3. Portico Columns Assembly ---
module portico_columns() {
    // Column coordinates
    // Front row (X = 49.5): 8 columns
    // Middle row (X = 43.0): 4 columns
    // Back row (X = 36.5): 4 columns
    // Y spacing spans from -15.5 to 15.5
    
    y_cols = [-15.5, -11.07, -6.64, -2.21, 2.21, 6.64, 11.07, 15.5];
    
    // Front row (all grey granite)
    for (y = y_cols) {
        translate([49.5, y, 1.5])
            column(is_grey = true);
    }
    
    // Middle row (pink/red granite, aligned with cols 0, 2, 5, 7)
    for (y = [-15.5, -6.64, 6.64, 15.5]) {
        translate([43.0, y, 1.5])
            column(is_grey = false);
    }
    
    // Back row (pink/red granite, aligned with cols 0, 2, 5, 7)
    for (y = [-15.5, -6.64, 6.64, 15.5]) {
        translate([36.5, y, 1.5])
            column(is_grey = false);
    }
}

// --- 4. Portico Roof & Pediment ---
module portico_roof() {
    // Entablature (sits on columns at Z = 13.5)
    color(color_stone) {
        translate([35.5, -portico_w/2, 13.5])
            cube([15.0, portico_w, 2.5]);
            
        // Overhanging Cornice
        translate([35.2, -(portico_w/2 + 0.3), 16.0])
            cube([15.6, portico_w + 0.6, 0.5]);
    }
    
    // Triangular Pediment (Front Gable)
    color(color_stone) {
        translate([49.3, 0, 0])
        rotate([0, 90, 0])
        rotate([0, 0, 90])
        linear_extrude(height = 1.5) {
            polygon(points = [
                [-(portico_w/2 + 0.3), 16.5],
                [(portico_w/2 + 0.3), 16.5],
                [0, 22.0]
            ]);
        }
    }
    
    // Inscription on the frieze
    color(color_bronze) {
        translate([50.55, 0, 14.75])
        rotate([90, 0, 90])
        linear_extrude(height = 0.1)
            text("M·AGRIPPA·L·F·COS·TERTIVM·FECIT", size = 1.2, font = "Liberation Serif:style=Bold", halign = "center", valign = "center");
    }

    // Portico Roof Tiling
    color(color_roof) {
        translate([35.4, 0, 0])
        rotate([0, 90, 0])
        rotate([0, 0, 90])
        linear_extrude(height = 13.8) {
            polygon(points = [
                [-portico_w/2, 16.6],
                [portico_w/2, 16.6],
                [0, 22.1]
            ]);
        }
    }
}

// --- 5. Intermediate Block ---
module intermediate_block() {
    // Brick walls
    color(color_brick) {
        translate([20.0, 0, 0])
        rotate([0, 90, 0])
        rotate([0, 0, 90])
        linear_extrude(height = 15.5) {
            polygon(points = [
                [-17.1, 1.5],
                [17.1, 1.5],
                [17.1, 16.5],
                [0, 26.0], // Higher gable
                [-17.1, 16.5]
            ]);
        }
    }
    // Marble detail band at the top of walls
    color(color_stone) {
        translate([20.0, -17.2, 16.0])
            cube([15.5, 34.4, 0.5]);
    }
}

// --- 6. Rotunda Exterior Walls ---
module rotunda_exterior() {
    color(color_brick) {
        // Main cylinder
        translate([0, 0, 1.5])
            cylinder(r = rotunda_r_ext, h = rotunda_h_cyl, $fn = 120);
            
        // Stepped rings at the very top of the wall
        translate([0, 0, 1.5 + rotunda_h_cyl])
            cylinder(r = rotunda_r_ext - 0.2, h = 0.5, $fn = 120);
    }
    
    // Horizontal Cornices (travertine bands)
    color(color_stone) {
        // Lower Cornice
        translate([0, 0, 12.0])
            cylinder(r = rotunda_r_ext + 0.3, h = 0.6, $fn = 120);
        // Middle Cornice
        translate([0, 0, 22.0])
            cylinder(r = rotunda_r_ext + 0.3, h = 0.6, $fn = 120);
        // Upper Cornice (Roof line)
        translate([0, 0, 31.0])
            cylinder(r = rotunda_r_ext + 0.4, h = 0.8, $fn = 120);
    }
}

// --- 7. Rotunda Interior Cella ---
module rotunda_interior() {
    // Hollow out the cylinder interior
    color(color_stone)
        translate([0, 0, 1.5])
            cylinder(r = rotunda_r_int, h = rotunda_h_int_cyl + 0.1, $fn = 120);
}

// --- 8. Interior Niches ---
module interior_niches() {
    // 7 niches and 1 door opening. Alternating semicircular and rectangular niches.
    // Semicircular niches at 90, 180, 270 degrees.
    // Rectangular niches at 45, 135, 225, 315 degrees.
    // Door opening is at 0 degrees.
    
    color(color_stone) {
        render(convexity = 6) {
            for (a = [45, 90, 135, 180, 225, 270, 315]) {
                rotate([0, 0, a]) {
                    if (a == 90 || a == 180 || a == 270) {
                        // Semicircular niche
                        translate([rotunda_r_int - 1.0, 0, 1.5])
                            cylinder(r = 3.5, h = 10.0, $fn = 40);
                    } else {
                        // Rectangular niche
                        translate([rotunda_r_int - 1.0, -3.0, 1.5])
                            cube([4.0, 6.0, 10.0]);
                    }
                }
            }
        }
    }
}

// --- 9. Door Opening & Bronze Doors ---
module door_opening_and_doors() {
    // Subtract the door opening
    translate([20.0, -3.0, 1.5])
        cube([9.0, 6.0, 12.0]);
        
    // Left and Right Bronze Doors (if not cut away)
    // Placed slightly open inside the opening
    color(color_bronze) {
        // Left Door (pivot at Y = -3.0, X = 23.5)
        translate([23.5, -3.0, 1.5])
        rotate([0, 0, 25]) // slightly open
        translate([-0.15, 0, 0])
            cube([0.3, 3.0, 12.0]);
            
        // Right Door (pivot at Y = 3.0, X = 23.5)
        translate([23.5, 3.0, 1.5])
        rotate([0, 0, -25]) // slightly open
        translate([-0.15, -3.0, 0])
            cube([0.3, 3.0, 12.0]);
    }
}

// --- 10. Dome Module (Stepped Exterior & Smooth Inner Sphere) ---
module dome_exterior() {
    // Stepped rings (7 rings of decreasing radius)
    color(color_brick) {
        for (i = [0:6]) {
            translate([0, 0, 31.90 + i * 0.8])
                cylinder(r = rotunda_r_ext - i * 0.8, h = 0.8, $fn = 120);
        }
    }
    
    // Smooth dome top (shallow sphere cap)
    color(color_roof) {
        translate([0, 0, dome_center_z])
            difference() {
                sphere(r = dome_r_ext, $fn = 120);
                // Slice away the bottom of the sphere relative to the sphere center.
                // We want to slice below global Z = 37.50 (where stepped rings end).
                // Relative Z = 37.50 - dome_center_z = 37.50 - 12.56 = 24.94.
                translate([-50, -50, -40])
                    cube([100, 100, 40 + 24.94]);
            }
    }
}

module dome_interior() {
    // Inner hemispherical dome
    color(color_stone)
        translate([0, 0, 23.15])
            sphere(r = dome_r_int, $fn = 120);
}

// --- 11. Coffered Ceiling Module ---
module coffer_shape(phi) {
    // Size decreases near the top of the dome (proportional to cos(phi))
    w = 4.2 * cos(phi);
    depth = 0.8;
    
    // A coffer is a stepped pocket recess
    // Step 1: outer step
    translate([-w/2, -w/2, 0])
        cube([w, w, depth/3 + 0.1]);
        
    // Step 2: middle step
    w2 = w * 0.8;
    translate([-w2/2, -w2/2, depth/3])
        cube([w2, w2, depth/3 + 0.1]);
        
    // Step 3: inner step
    w3 = w * 0.6;
    translate([-w3/2, -w3/2, 2*depth/3])
        cube([w3, w3, depth/3 + 0.1]);
}

module dome_coffers() {
    // 5 rows of 28 coffers
    // Spaced between 12.0 and 54.0 degrees elevation
    phi_rows = [12.0, 22.5, 33.0, 43.5, 54.0];
    
    color(color_stone) {
        render(convexity = 10) {
            for (row = [0:4]) {
                phi = phi_rows[row];
                for (col = [0:27]) {
                    theta = col * (360.0 / 28.0);
                    translate([0, 0, 23.15]) // Shift to dome center!
                    rotate([0, 0, theta])
                    rotate([0, 90 - phi, 0])
                    translate([0, 0, dome_r_int - 0.1])
                        coffer_shape(phi);
                }
            }
        }
    }
}

// --- 12. Oculus Module ---
module oculus() {
    color(color_bronze) {
        // Bronze trim around the oculus
        translate([0, 0, 23.15 + dome_r_int - 0.5])
            difference() {
                cylinder(r = oculus_r + 0.5, h = 1.5, $fn = 80);
                translate([0, 0, -0.1])
                    cylinder(r = oculus_r, h = 1.7, $fn = 80);
            }
    }
}

// --- 13. Full Pantheon Model Assembly ---
module pantheon_assembly() {
    difference() {
        // Solid geometry
        union() {
            base_plinth();
            rotunda_exterior();
            dome_exterior();
            intermediate_block();
            portico_roof();
        }
        
        // Internal hollow space
        rotunda_interior();
        
        // Niches inside the rotunda wall
        interior_niches();
        
        // Door opening
        color(color_stone)
            translate([20.0, -3.0, 1.5])
                cube([9.0, 6.0, 12.0]);
            
        // Dome interior space
        dome_interior();
        
        // Coffers in the dome ceiling
        dome_coffers();
        
        // Oculus hole (cuts through everything at the very top)
        color(color_stone)
            translate([0, 0, 30.0])
                cylinder(r = oculus_r, h = 25.0, $fn = 80);
    }
    
    // Add columns (non-subtracted)
    portico_columns();
    
    // Add bronze door panels (non-subtracted)
    // Pivot points and doors are placed inside the doorway
    color(color_bronze) {
        translate([23.5, -3.0, 1.5])
        rotate([0, 0, 25])
        translate([-0.15, 0, 0])
            cube([0.3, 3.0, 12.0]);
            
        translate([23.5, 3.0, 1.5])
        rotate([0, 0, -25])
        translate([-0.15, -3.0, 0])
            cube([0.3, 3.0, 12.0]);
    }

    // Add bronze oculus trim
    oculus();
}

// --- 14. Render Output (with Cutaway support) ---
difference() {
    pantheon_assembly();
    
    if (show_cutaway) {
        // Cut away the front-left half (Y < 0) to view the interior
        // Applying color_brick makes the cut cross-sections of the walls look like Roman brickwork
        color(color_brick)
            translate([-100, -200, -10])
                cube([200, 200, 200]);
    }
}