<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Maciek Chmura</title>
    <description>The latest articles on DEV Community by Maciek Chmura (@maciek_chmura_building).</description>
    <link>https://dev.to/maciek_chmura_building</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1818282%2Fe0de005f-16fc-424d-897d-b1c3c284d533.png</url>
      <title>DEV Community: Maciek Chmura</title>
      <link>https://dev.to/maciek_chmura_building</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maciek_chmura_building"/>
    <language>en</language>
    <item>
      <title>Building QuickArchViz: turning 3D models into renders</title>
      <dc:creator>Maciek Chmura</dc:creator>
      <pubDate>Fri, 24 Apr 2026 13:07:08 +0000</pubDate>
      <link>https://dev.to/maciek_chmura_building/building-quickarchviz-turning-3d-models-into-renders-10gp</link>
      <guid>https://dev.to/maciek_chmura_building/building-quickarchviz-turning-3d-models-into-renders-10gp</guid>
      <description>&lt;p&gt;A few months ago, I started building QuickArchViz — a tool that turns 3D model screenshots into architectural visualizations in seconds.&lt;/p&gt;

&lt;p&gt;The idea came from a very simple frustration I had in the past when I was still an architect:&lt;br&gt;
&lt;em&gt;My models were ready, but I still needed to make the visualizations for the client&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Rendering takes time. It costs money. And every client meeting resets the whole process.&lt;/p&gt;

&lt;p&gt;I wanted something faster. Something closer to how architects actually work.&lt;/p&gt;

&lt;p&gt;So I started building it - now that I have over 10+ years of experience in programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  What QuickArchViz does
&lt;/h2&gt;

&lt;p&gt;You upload a screenshot from your 3D model (SketchUp, Revit, Archicad — whatever).&lt;/p&gt;

&lt;p&gt;The system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keeps your geometry and camera&lt;/li&gt;
&lt;li&gt;enhances materials, lighting, environment&lt;/li&gt;
&lt;li&gt;generates a presentation-ready visual&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No exports. No rendering settings. No waiting hours.&lt;/p&gt;

&lt;p&gt;Just:&lt;br&gt;
upload → choose style → generate&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzm5b9wkxlu67gbwnxsk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzm5b9wkxlu67gbwnxsk.png" alt=" " width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;p&gt;Nothing exotic. The interesting part is not the stack - it’s how the pieces work together.&lt;/p&gt;

&lt;p&gt;Backend&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel (API + orchestration)&lt;/li&gt;
&lt;li&gt;Postgres (multi-tenant, render tracking, token usage)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frontend&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React + Inertia&lt;/li&gt;
&lt;li&gt;simple UI, focused on speed (upload → result)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI generation&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;image generation via external APIs (currently experimenting heavily)&lt;/li&gt;
&lt;li&gt;prompt engineering is doing most of the heavy lifting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infra&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VPS (Laravel Forge)&lt;/li&gt;
&lt;li&gt;no overkill, trying to stay lean&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The hard part: making AI behave like an architect
&lt;/h2&gt;

&lt;p&gt;The biggest challenge wasn’t “generate a pretty image”.&lt;/p&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;don’t break the architecture&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most AI image tools will happily:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;change proportions&lt;/li&gt;
&lt;li&gt;move windows&lt;/li&gt;
&lt;li&gt;redesign the building&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes them useless for real workflows.&lt;/p&gt;

&lt;p&gt;So the core of the system is actually the prompt framework, not the model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core constraints (this took weeks to get right)
&lt;/h3&gt;

&lt;p&gt;Every generation follows strict rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;preserve exact geometry&lt;/li&gt;
&lt;li&gt;preserve camera position&lt;/li&gt;
&lt;li&gt;preserve hard surfaces (paths, roads)&lt;/li&gt;
&lt;li&gt;do not redesign the building&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then only enhance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lighting&lt;/li&gt;
&lt;li&gt;materials&lt;/li&gt;
&lt;li&gt;environment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Styles are harder than they look
&lt;/h3&gt;

&lt;p&gt;I thought styles would be easy.&lt;/p&gt;

&lt;p&gt;They’re not.&lt;br&gt;
Example: Golden hour&lt;/p&gt;

&lt;p&gt;Most models go straight into:&lt;/p&gt;

&lt;p&gt;orange Instagram sunset in Bali&lt;/p&gt;

&lt;p&gt;What I needed was:&lt;/p&gt;

&lt;p&gt;subtle, European, architectural light&lt;/p&gt;

&lt;p&gt;So styles became controlled systems, not just “vibes”.&lt;/p&gt;

&lt;p&gt;Current styles&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean daylight (default, most reliable)&lt;/li&gt;
&lt;li&gt;Golden hour (recently fixed, less saturated)&lt;/li&gt;
&lt;li&gt;Overcast / Nordic&lt;/li&gt;
&lt;li&gt;Evening / blue hour&lt;/li&gt;
&lt;li&gt;Artistic (marker, watercolor, concept)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one has its own prompt logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  UX decisions (what actually matters)
&lt;/h2&gt;

&lt;p&gt;I’m trying to remove every possible friction point.&lt;/p&gt;

&lt;p&gt;Key decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no file exports required → screenshot is enough&lt;/li&gt;
&lt;li&gt;no settings → just styles&lt;/li&gt;
&lt;li&gt;no queue UI → simple “processing” state&lt;/li&gt;
&lt;li&gt;pay-as-you-go (no subscription)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5u6kcnbn9ro93mxyzh6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5u6kcnbn9ro93mxyzh6.png" alt=" " width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I’m working on now
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;improving daylight realism (less “CGI”, more “photo”)&lt;/li&gt;
&lt;li&gt;refining golden hour (already toned down)&lt;/li&gt;
&lt;li&gt;adding more artistic styles&lt;/li&gt;
&lt;li&gt;improving landing page conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to check it out:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://quickarchviz.com" rel="noopener noreferrer"&gt;quickarchviz&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thought
&lt;/h3&gt;

&lt;p&gt;This is one of those products where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the tech is not the hardest part&lt;/li&gt;
&lt;li&gt;the UX is not the hardest part&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hardest part is:&lt;/p&gt;

&lt;p&gt;making AI respect reality&lt;/p&gt;

&lt;p&gt;Still working on that.&lt;/p&gt;

&lt;p&gt;If you’re building something in this space or fighting similar issues (especially consistency / prompting / positioning), curious what worked for you 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
