*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
--bg:#fff;
--bg2:#f6f6f6;
--bg3:#efefef;
--surface:#fafafa;
--border:#e2e2e2;
--border-dark:#bebebe;
--black:#111;
--muted:#666;
--muted2:#999;
--tag-bg:#f0f0f0;
--copy-ok:#2d7a4f;
--font:'Inter',sans-serif;
 }
html{scroll-behavior:smooth}
body{
background:var(--bg);
color:var(--black);
font-family:var(--font);
font-size:13px;
line-height:1.6;
min-height:100vh;
-webkit-font-smoothing:antialiased;
 }
header{
border-bottom:1px solid var(--border);
padding:44px 48px 32px;
 }
.header-eyebrow{
font-size:10px;
font-weight:500;
letter-spacing:0.16em;
text-transform:uppercase;
color:var(--muted2);
margin-bottom:12px;
 }
h1{
font-size:clamp(1.5rem,2.8vw,2.1rem);
font-weight:600;
line-height:1.15;
color:var(--black);
letter-spacing:-0.02em;
 }
.header-sub{
margin-top:10px;
color:var(--muted);
font-size:13px;
max-width:580px;
line-height:1.65;
 }
.rules-banner{
margin:24px 48px 0;
border:1px solid var(--black);
border-top:3px solid var(--black);
background:var(--bg2);
padding:18px 22px;
display:flex;
gap:28px;
flex-wrap:wrap;
 }
.rule-item{
display:flex;
align-items:flex-start;
gap:11px;
flex:1;
min-width:230px;
 }
.rule-num{
font-size:10px;
font-weight:700;
background:var(--black);
color:#fff;
width:20px;
height:20px;
border-radius:50%;
display:flex;
align-items:center;
justify-content:center;
flex-shrink:0;
margin-top:1px;
 }
.rule-text{font-size:12px;color:var(--black);line-height:1.55}
.rule-text strong{font-weight:600;display:block;margin-bottom:2px}
.filter-bar{
padding:13px 48px;
border-top:1px solid var(--border);
border-bottom:1px solid var(--border);
display:flex;
gap:6px;
flex-wrap:wrap;
align-items:center;
background:var(--bg);
position:sticky;
top:0;
z-index:100;
margin-top:20px;
 }
.filter-label{
font-size:10px;
font-weight:500;
letter-spacing:0.12em;
text-transform:uppercase;
color:var(--muted2);
margin-right:4px;
 }
.filter-btn{
background:transparent;
border:1px solid var(--border-dark);
color:var(--muted);
font-family:var(--font);
font-size:11px;
font-weight:500;
padding:5px 13px;
border-radius:2px;
cursor:pointer;
transition:all 0.1s ease;
 }
.filter-btn:hover{border-color:var(--black);color:var(--black)}
.filter-btn.active{background:var(--black);border-color:var(--black);color:#fff}
main{
padding:32px 48px 48px;
display:grid;
grid-template-columns:repeat(auto-fill,minmax(500px,1fr));
gap:18px;
 }
.card{
background:var(--bg);
border:1px solid var(--border);
border-radius:2px;
overflow:hidden;
display:flex;
flex-direction:column;
transition:border-color 0.15s, box-shadow 0.15s;
 }
.card:hover{
border-color:var(--border-dark);
box-shadow:0 2px 14px rgba(0,0,0,0.07);
 }
.card-header{
padding:16px 20px 12px;
border-bottom:1px solid var(--border);
background:var(--surface);
display:flex;
align-items:flex-start;
justify-content:space-between;
gap:12px;
 }
.card-category{
font-size:9px;
font-weight:600;
letter-spacing:0.16em;
text-transform:uppercase;
color:var(--muted2);
margin-bottom:4px;
 }
.card-title{
font-size:13.5px;
font-weight:600;
color:var(--black);
line-height:1.3;
letter-spacing:-0.01em;
 }
.card-badge{
font-size:9px;
font-weight:600;
letter-spacing:0.1em;
text-transform:uppercase;
background:var(--tag-bg);
border:1px solid var(--border);
color:var(--muted2);
padding:3px 8px;
border-radius:2px;
white-space:nowrap;
flex-shrink:0;
 }
.card-body{padding:14px 20px;flex:1}
.card-desc{
font-size:12px;
color:var(--muted);
margin-bottom:12px;
line-height:1.65;
 }
.prompt-box{
background:var(--bg3);
border:1px solid var(--border);
border-radius:2px;
padding:14px 16px;
font-family:'Courier New',Courier,monospace;
font-size:11px;
color:var(--black);
line-height:1.85;
white-space:pre-wrap;
word-break:break-word;
 }
.prompt-box .rule-line{font-weight:700}
.card-footer{
padding:10px 20px;
border-top:1px solid var(--border);
background:var(--surface);
display:flex;
justify-content:space-between;
align-items:center;
flex-wrap:wrap;
gap:8px;
 }
.tags{display:flex;gap:5px;flex-wrap:wrap}
.tag{
font-size:9px;
font-weight:500;
letter-spacing:0.1em;
text-transform:uppercase;
background:var(--tag-bg);
border:1px solid var(--border);
color:var(--muted2);
padding:2px 7px;
border-radius:1px;
 }
.copy-btn{
background:transparent;
border:1px solid var(--border-dark);
color:var(--black);
font-family:var(--font);
font-size:10px;
font-weight:600;
letter-spacing:0.08em;
text-transform:uppercase;
padding:6px 14px;
border-radius:2px;
cursor:pointer;
transition:all 0.1s;
flex-shrink:0;
 }
.copy-btn:hover{background:var(--black);color:#fff;border-color:var(--black)}
.copy-btn.copied{border-color:var(--copy-ok);color:var(--copy-ok)}
.tips-section{
margin:0 48px 48px;
border:1px solid var(--border);
border-top:2px solid var(--black);
border-radius:2px;
overflow:hidden;
 }
.tips-header{
padding:13px 20px;
border-bottom:1px solid var(--border);
font-size:10px;
font-weight:600;
letter-spacing:0.1em;
text-transform:uppercase;
background:var(--surface);
 }
.tips-grid{
padding:16px;
display:grid;
grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
gap:10px;
background:var(--bg);
 }
.tip-item{
padding:12px 14px;
background:var(--surface);
border:1px solid var(--border);
border-radius:2px;
 }
.tip-label{font-size:9px;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;margin-bottom:5px}
.tip-text{font-size:11.5px;color:var(--muted);line-height:1.6}
footer{
padding:16px 48px;
border-top:1px solid var(--border);
font-size:10px;
font-weight:500;
letter-spacing:0.08em;
text-transform:uppercase;
color:var(--muted2);
display:flex;
justify-content:space-between;
flex-wrap:wrap;
gap:6px;
 }
@media (max-width: 720px){
header,main,footer{padding:24px}
.filter-bar{padding:12px 24px}
.rules-banner{margin:16px 24px 0;padding:14px 16px}
main{grid-template-columns:1fr}
.tips-section{margin:0 24px 32px}
 }
Interior Photorealism — Complete Prompt Library
All prompts for converting 3D interior models and SketchUp exports into photorealistic renders. Covers full rooms, wide shots, furniture, macro and micro detail. Two hard rules apply to every prompt.
InteriorPro.ai · SketchUp Plaza — complete edition, for internal and community use
Nano Banana Pro · v1.0 Complete
const RULE1 = "Do not add, remove, or change any object, furniture, surface, or spatial layout from the uploaded image. The input is the ground truth — preserve it exactly.";
const RULE2_FIX = "Artificial light only where a light fixture (lamp, pendant, ceiling fixture, wall sconce) is clearly visible in the uploaded image. Each fixture emits light from its exact modeled position only. No fixtures visible = no artificial light.";
const RULE2_DAY = "No artificial light. Daylight only, entering through window openings that are visible in the source.";
const prompts = [
// ── PHOTOREALISTIC ──
{
id: 1,
category: "3D → Photorealistic Interior",
title: "Natural Daylight — Balanced Exposure",
badge: "Universal",
desc: "The workhorse prompt. Soft overcast daylight, balanced exposure, accurate materials. No changes to the uploaded model whatsoever.",
tags: ["daylight", "materials", "balanced"],
filter: "photorealistic",
prompt:
`Photorealistic interior photography, converted from a 3D architectural render.
${RULE1}
${RULE2_FIX}
Natural diffused daylight through existing windows, soft shadows with gentle penumbra.
Physically accurate materials: visible wood grain, matte plaster, brushed metal, woven textile.
Balanced exposure, no blown highlights, no crushed blacks.
Subtle imperfections: hairline grout joints, micro scratches on metal, slight fabric texture variation.
Architectural photography style, editorial quality.
Camera: 24mm equivalent, eye-level, no tilt-shift distortion.`
},
{
id: 2,
category: "3D → Photorealistic Interior",
title: "Warm Afternoon Sun — Direct Light",
badge: "Living / Dining",
desc: "Angled afternoon sunlight through existing windows. Artificial light only where fixtures are visible in the source render.",
tags: ["sunlight", "shadow", "warm", "afternoon"],
filter: "photorealistic",
prompt:
`Hyper-photorealistic interior photograph, based on uploaded 3D model or render.
${RULE1}
${RULE2_FIX}
Warm afternoon sunlight entering through existing window openings visible in the source only.
Defined light beams with soft edges, warm 4500K color temperature.
Natural light falloff on walls and furniture. Long shadow patterns across floor surface.
Natural material rendering: visible timber pores, linen weave, satin lacquer micro-reflections.
Dust particles in light shafts. Authentic interior photograph quality.`
},
{
id: 3,
category: "3D → Photorealistic Interior",
title: "Overcast Nordic Light",
badge: "Scandinavian",
desc: "Flat diffused daylight, no directional shadows. Ideal for minimalist interiors. No artificial light unless fixtures are present.",
tags: ["overcast", "nordic", "flat light", "minimal"],
filter: "photorealistic",
prompt:
`Photorealistic interior photography, based on uploaded architectural model.
${RULE1}
${RULE2_FIX}
Overcast daylight: fully diffused, no directional shadows, uniform ambient illumination.
Cool 6200K color temperature. Clean whites remain neutral, not overexposed.
Exceptional material clarity: fine wood grain, stone veining, textile pile direction all visible.
Architectural editorial style, Scandinavian interiors quality.
Camera: 28mm, slight elevation above eye level, no barrel distortion.`
},
// ── ARCHITECTURAL ──
{
id: 4,
category: "Wide Architectural Shot",
title: "Full Room — Soft Natural Light",
badge: "Architectural",
desc: "Wide room overview. All geometry, furniture, and materials preserved exactly. Artificial light only where fixtures are visible.",
tags: ["wide", "full room", "overview", "daylight"],
filter: "architectural",
prompt:
`Professional interior architectural photography, wide room overview.
Based on uploaded 3D model or render.
${RULE1}
${RULE2_FIX}
Daylight through existing window openings only, as positioned in source.
All materials rendered accurately: floor, walls, ceiling, furniture, textiles.
Light falloff visible across room depth, consistent with window positions.
No barrel distortion. Verticals straight. Perspective lines correct.
Full depth of field, f/8 equivalent, front to back sharpness.
Camera: 24mm equivalent, 1.1m tripod height, composition matching source viewpoint.
Architectural Digest / Dezeen quality interior photography.`
},
{
id: 5,
category: "Wide Architectural Shot",
title: "Kitchen — Counter and Volume",
badge: "Architectural",
desc: "Wide kitchen shot. Cabinet volume, countertop material, appliances exactly as modeled. No food styling or added props.",
tags: ["kitchen", "wide", "cabinetry", "counter"],
filter: "architectural",
prompt:
`Architectural interior photograph of a kitchen, wide establishing shot.
Based on uploaded source model.
${RULE1}
${RULE2_FIX}
Do not add food, styling props, or objects not present in the source image.
Render all cabinets, countertops, appliances, and handles exactly as modeled.
Natural window light from existing openings in the source.
Camera: 24mm equivalent, counter height (0.9m), angle matching source viewpoint.
Edge profiles, backsplash, and sink details rendered faithfully from source.
Interior design publication quality.`
},
// ── FURNITURE ──
{
id: 6,
category: "Furniture Close-Up",
title: "Lounge Chair — Editorial Hero Shot",
badge: "Furniture",
desc: "Single chair hero shot from the source model. No added props, pillows, or throws unless already present in the input.",
tags: ["chair", "editorial", "hero", "furniture"],
filter: "furniture",
prompt:
`Interior editorial photography of a lounge chair, based on uploaded source model.
${RULE1}
${RULE2_FIX}
Render the chair exactly as modeled: materials, proportions, and leg detail unchanged.
Soft directional light from existing window openings in the source.
Chair fills the frame generously, slight breathing room at edges.
Background: existing wall and floor as shown in source, soft focus.
Depth of field: chair sharp, background breathing, f/5.6 equivalent.
Interior design magazine photography quality.`
},
{
id: 7,
category: "Furniture Close-Up",
title: "Sofa — Three-Quarter View",
badge: "Furniture",
desc: "Three-quarter hero shot of a sofa from the source model. Cushions, arms, and legs as modeled. No added styling.",
tags: ["sofa", "furniture", "three-quarter", "materials"],
filter: "furniture",
prompt:
`Photorealistic interior photograph of a sofa, based on uploaded 3D model.
${RULE1}
${RULE2_FIX}
Render upholstery material, arm shape, and leg detail exactly as modeled in the input.
Camera at seated eye level, 28mm equivalent, three-quarter angle showing sofa depth.
Soft ambient interior light and window light from existing openings in the source only.
Gentle shadow under sofa body consistent with light direction.
High-end furniture photography in authentic interior context.`
},
{
id: 8,
category: "Furniture Close-Up",
title: "Dining Table — Surface and Structure",
badge: "Furniture",
desc: "Hero shot of a dining table from the source. No tableware or styling added. Material and proportion exactly as modeled.",
tags: ["table", "material", "structure", "furniture"],
filter: "furniture",
prompt:
`Editorial interior photograph of a dining table, based on uploaded source model.
${RULE1}
${RULE2_FIX}
Do not place tableware, decorations, or objects not visible in the source image.
Tabletop surface, base structure, and edge profile rendered exactly as modeled.
Three-quarter angle, camera slightly elevated, 35mm equivalent.
Soft ambient light and window light from existing openings in the source.
Chairs visible but soft-focused in periphery, positioned as in source.
Furniture design photography quality, architecture studio level.`
},
// ── MACRO ──
{
id: 9,
category: "Macro Detail Shot",
title: "Wood Grain — Quarter-Sawn Oak",
badge: "Macro",
desc: "Extreme close-up of a timber surface in the source. Shallow DoF isolates grain. No surface improvements or added props.",
tags: ["wood", "macro", "shallow DoF", "material"],
filter: "macro",
prompt:
`Extreme macro photography of a timber surface, cropped from the uploaded interior image.
${RULE1}
${RULE2_DAY}
Render only the material visible in the input crop. Do not improve or alter the finish.
Quarter-sawn oak: medula rays as silver-gold fleck pattern, as present in source.
Ultra-shallow depth of field, f/2.8 equivalent, focus plane across grain direction.
Raking sidelight consistent with the scene's existing light source direction.
Micro-relief of wood pores and growth ring color variation visible.
No background beyond the material surface. No added props.`
},
{
id: 10,
category: "Macro Detail Shot",
title: "Natural Stone — Marble or Limestone",
badge: "Macro",
desc: "Close-up of stone visible in the source render. Captures vein depth and translucency without altering the surface.",
tags: ["stone", "marble", "macro", "material"],
filter: "macro",
prompt:
`Macro photography of a stone surface, cropped from the uploaded interior model.
${RULE1}
${RULE2_DAY}
Do not alter finish, add polish, or change any surface quality not present in the source.
Render veining, color, and surface texture exactly as shown in the uploaded image.
Slight translucency in thinner veins catching ambient light, as the material behaves.
Soft directional light consistent with existing scene light direction. No specular hotspot.
Shallow depth of field, center-sharp, edges softening.
No added props, watermarks, or texture overlays.`
},
{
id: 11,
category: "Macro Detail Shot",
title: "Woven Textile — Bouclé or Linen",
badge: "Macro",
desc: "Close-up of upholstery or curtain fabric in the source. Weave and fiber as modeled. Nothing added.",
tags: ["textile", "fabric", "macro", "upholstery"],
filter: "macro",
prompt:
`Macro interior detail photograph of a fabric surface, cropped from the uploaded source image.
${RULE1}
${RULE2_DAY}
Render the fabric exactly as present in the input: color, weave structure, fiber type, sheen.
Individual yarn loops or weave structure visible as shown in source.
Soft raking light consistent with the scene's existing light direction.
Matte fiber behavior as modeled — do not add sheen or improve texture beyond source.
Shallow depth of field. Front fibers sharp, background softening.
No added props or decorative elements.`
},
// ── MICRO ──
{
id: 12,
category: "Micro Detail Shot",
title: "Upholstery Stitching — Seam Detail",
badge: "Micro",
desc: "Micro close-up of a stitched seam visible in the source. Thread and material rendered exactly as shown. No improvements.",
tags: ["stitching", "leather", "micro", "craftsmanship"],
filter: "micro",
prompt:
`Hyper-close micro photograph of an upholstery seam, cropped from uploaded source.
${RULE1}
${RULE2_DAY}
Do not add stitching, improve stitch quality, or add texture not present in the source.
Render thread color, spacing, and tension exactly as visible in the input.
Leather or fabric surface grain as present in source material.
Extreme shallow depth of field, sharp focus on seam midpoint.
Raking light at low angle, consistent with scene's existing light direction.
No added background or props. Artisan furniture photography quality.`
},
{
id: 13,
category: "Micro Detail Shot",
title: "Cabinet Joinery — Corner or Miter",
badge: "Micro",
desc: "Tight shot of a furniture joint visible in the source. No quality improvements beyond what is modeled.",
tags: ["joinery", "cabinetry", "micro", "millwork"],
filter: "micro",
prompt:
`Micro detail photograph of a cabinet or furniture joint, cropped from uploaded source image.
${RULE1}
${RULE2_DAY}
Do not tighten, improve, or alter the joint quality beyond what is visible in the source.
Render panel material, grain direction, finish, and joint gap exactly as modeled.
Raking sidelight consistent with the scene's existing light direction.
Reveals surface texture and edge detail as present in source.
Shallow depth of field, sharp on joint intersection.
No added props or background. Bespoke furniture photography quality.`
},
{
id: 14,
category: "Micro Detail Shot",
title: "Metal Hardware — Brushed or Satin Finish",
badge: "Micro",
desc: "Close-up of metal hardware visible in the source. Finish, color, and reflectivity exactly as modeled. Nothing added.",
tags: ["metal", "hardware", "micro", "finish"],
filter: "micro",
prompt:
`Micro photograph of a metal hardware element, cropped from the uploaded interior source.
${RULE1}
${RULE2_DAY}
Do not add polish, change the finish type, or alter the geometry shown in the source.
Render material, color, brush direction, and sheen exactly as present in the input.
Reflections: diffused, consistent with scene ambient — no added specular hotspot.
Light angle consistent with the scene's existing light direction.
Shallow depth of field. Focus on primary surface of the hardware.
No added background or props. High-end hardware photography quality.`
},
// ── TWILIGHT ──
{
id: 15,
category: "Twilight / Dusk Ambiance",
title: "Dusk Interior — Warm Light meets Cool Exterior",
badge: "Mood",
desc: "Blue hour: warm interior light from visible fixtures only, cool exterior through existing windows. No invented light sources.",
tags: ["twilight", "dusk", "mood", "warm-cool"],
filter: "twilight",
prompt:
`Interior architectural photography at blue hour, based on uploaded source model.
${RULE1}
${RULE2_FIX}
Exterior through existing windows: deep blue sky, 6500K cool ambient.
Each visible fixture emits warm 2700K light from its modeled position only.
If no fixture is visible in the source: interior is lit by cool blue ambient from windows only — no warm light added.
Warm-cool contrast creates layered depth. Interior glows against exterior blue.
Exposure balanced to show both interior detail and exterior sky.
Window glass shows internal reflections. Slight halation around fixture light sources.
Architectural photography standard for nightfall interiors.`
},
{
id: 16,
category: "Twilight / Dusk Ambiance",
title: "Evening Interior — Warm Low-Key Light",
badge: "Mood",
desc: "Deep evening, no daylight. Warm light only from fixtures visible in the source. No fixtures = no artificial light added.",
tags: ["evening", "warm", "low-key", "mood"],
filter: "twilight",
prompt:
`Evening interior photograph, deep low-key lighting. Based on uploaded source model.
${RULE1}
${RULE2_FIX}
No daylight. Each visible fixture emits warm 2400–2700K light from its exact modeled position only.
If no light fixture is present in the source image: do not add any artificial light source whatsoever.
Light falloff rapid and natural. Shadows deep but not fully crushed.
Material behavior: warm light intensifies wood tones and textile texture, metals catch warm specular.
Camera: 35mm, f/4, intimate atmosphere.`
}
];
function buildPromptHTML(text) {
const esc = s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
return text
.replace(new RegExp(esc(RULE1), 'g'), `${RULE1}`)
.replace(new RegExp(esc(RULE2_FIX), 'g'), `${RULE2_FIX}`)
.replace(new RegExp(esc(RULE2_DAY), 'g'), `${RULE2_DAY}`);
}
function renderCards(filter) {
const grid = document.getElementById('card-grid');
grid.innerHTML = '';
const list = filter === 'all' ? prompts : prompts.filter(p => p.filter === filter);
list.forEach(p => {
const card = document.createElement('div');
card.className = 'card';
card.innerHTML = `
${p.badge}
`;
grid.appendChild(card);
});
document.querySelectorAll('.copy-btn').forEach(btn => {
btn.addEventListener('click', () => {
const p = prompts.find(x => x.id === parseInt(btn.dataset.id));
navigator.clipboard.writeText(p.prompt).then(() => {
btn.textContent = 'Copied';
btn.classList.add('copied');
setTimeout(() => { btn.textContent = 'Copy prompt'; btn.classList.remove('copied'); }, 2000);
});
});
});
}
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.addEventListener('click', () => {
document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
renderCards(btn.dataset.filter);
});
});
renderCards('all');
