\documentclass[12pt]{article}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{times}
\usepackage{graphicx}
\usepackage{url}
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{float}
\usepackage{caption}
\usepackage{multirow}
\usepackage{booktabs}

% SBC paper style margins
\usepackage[top=3cm, bottom=2.5cm, left=3cm, right=3cm]{geometry}

\lstset{
  basicstyle=\ttfamily\footnotesize,
  breaklines=true,
  frame=single,
  backgroundcolor=\color{gray!10},
  language=PHP
}

\title{Análise do Gap Semântico na Geração de Modelos 3D por IA via Código Paramétrico: Uma Plataforma Colaborativa com DeepSeek e OpenSCAD}

\author{
  Nathan Kuhnen Basso\thanks{Aluno do curso de Sistemas de Informação -- UTFPR Campus Francisco Beltrão} \\
  Wellton Costa de Oliveira\thanks{Professor Orientador -- UTFPR Campus Francisco Beltrão}
}
\date{Julho de 2026}

\begin{document}
\maketitle

\begin{abstract}
Este trabalho apresenta uma plataforma web para análise do \textit{gap} semântico na geração de modelos 3D por inteligência artificial, substituindo a abordagem original baseada na API Manus por uma arquitetura aberta e transparente que utiliza o modelo DeepSeek-V4 para gerar código paramétrico OpenSCAD (ou JavaScript para Cascade Studio), renderizado em tempo real via OpenJSCAD. A plataforma, desenvolvida em PHP puro com banco MySQL, permite que usuários descrevam objetos 3D em linguagem natural e obtenham código editável junto ao modelo renderizado, mantendo um chat iterativo para refinamentos sucessivos. Cada sessão é registrada com métricas de tempo, iterações e feedback qualitativo, alimentando um painel de análise que quantifica as categorias de discrepância semântica entre intenção e resultado.
\end{abstract}

\section{Introdução}

A geração de modelos tridimensionais por meio de inteligência artificial tem avançado de forma expressiva, permitindo a criação de objetos 3D a partir de descrições textuais (\textit{prompts})~\cite{li2024generative, jiang2024survey}. Contudo, um dos principais desafios dessa abordagem é o denominado \textit{gap} semântico — a diferença entre a intenção do usuário expressa no \textit{prompt} e o resultado gerado pelo modelo de IA~\cite{dutt2026lost, sadik2026human}. Esse fenômeno compromete a qualidade percebida, a usabilidade e a eficiência da ferramenta.

Este trabalho propõe uma metodologia para avaliar o \textit{gap} semântico por meio de uma plataforma colaborativa que registra métricas de interação entre usuário e IA, inspirada em iniciativas como o 3D Arena~\cite{ebert20253darena} e o SceneEval~\cite{tam2026sceneeval}. 

Diferentemente da proposta original --- que utilizava a API proprietária do Manus~\cite{manus2026} como gerador 3D e o Autodesk Viewer para visualização --- esta versão adota uma arquitetura completamente aberta: o \textbf{DeepSeek-V4}~\cite{deepseek2026v4} atua como motor de IA generativa, produzindo código paramétrico no formato OpenSCAD (ou JavaScript para Cascade Studio), que é então renderizado pelo \textbf{OpenJSCAD} --- um kernel de CAD que executa inteiramente no navegador, sem dependência de servidores externos.

Esta abordagem oferece vantagens significativas:

\begin{itemize}
  \item \textbf{Transparência}: o código gerado é visível, editável e compreensível pelo usuário, revelando exatamente onde a IA acertou ou errou;
  \item \textbf{Custo}: o DeepSeek-V4-Flash custa US\$ 0,14/M tokens de entrada e US\$ 0,28/M de saída, ordens de grandeza abaixo de APIs proprietárias como GPT-4o ou Manus;
  \item \textbf{Independência}: toda a renderização ocorre no \textit{front-end}, eliminando a dependência do Autodesk Viewer ou qualquer serviço de nuvem terceirizado;
  \item \textbf{Educação}: o usuário é exposto ao paradigma de modelagem paramétrica, aprendendo sobre geometria computacional enquanto interage com a ferramenta.
\end{itemize}

\section{Objetivos}

\subsection{Objetivo Geral}

Analisar o \textit{gap} semântico na geração de modelos 3D por inteligência artificial, propondo métricas e uma ferramenta colaborativa de avaliação baseada em código paramétrico aberto.

\subsection{Objetivos Específicos}

\begin{itemize}
  \item Desenvolver uma plataforma web utilizando HTML5, CSS3, JavaScript e PHP 8 puro, com banco de dados MySQL;
  \item Integrar a API do DeepSeek-V4 para geração de código OpenSCAD a partir de \textit{prompts} textuais;
  \item Renderizar os modelos 3D no navegador utilizando OpenJSCad, sem dependência de serviços externos;
  \item Implementar um chat iterativo que permita ao usuário solicitar ajustes sucessivos no modelo gerado;
  \item Coletar métricas quantitativas (tempo, iterações, taxa de abandono) e qualitativas (nota, checkboxes de inconsistências, comentários);
  \item Exibir um painel (\textit{dashboard}) com estatísticas agregadas e ranking das sessões por nota.
\end{itemize}

\section{Justificativa}

Ferramentas de geração 3D por IA prometem democratizar o design e a prototipagem, porém a falta de alinhamento entre a descrição textual e o modelo gerado frequentemente frustra os usuários e limita sua adoção~\cite{sadik2026human, fu2025multidimensional}.

Diferentemente de APIs do tipo caixa-preta (como a Manus), a abordagem baseada em código paramétrico permite \textbf{rastrear exatamente onde o gap semântico se manifesta}: se o DeepSeek gerou \texttt{cube([50,30,10])} quando o usuário queria \texttt{cube([100,60,20])}, o problema de escala é imediatamente visível no código. Esta rastreabilidade é fundamental para uma análise científica rigorosa do fenômeno.

Do ponto de vista acadêmico, a pesquisa contribui para a área de Interação Humano-Computador ao fornecer métricas quantitativas e qualitativas sobre o \textit{gap} semântico em um contexto prático~\cite{barbosa2010ihc, preece2013design}. A plataforma servirá como instrumento de coleta de dados capaz de gerar diretrizes para desenvolvedores e usuários de ferramentas Text-to-CAD.

\section{Arquitetura da Plataforma}

\subsection{Visão Geral}

A arquitetura substitui integralmente a dependência de APIs proprietárias (Manus, Autodesk) por componentes \textit{open source}:

\begin{center}
\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\multicolumn{1}{|c|}{\textbf{Abordagem Original}} & \multicolumn{1}{c|}{\textbf{Nova Abordagem}} \\
\hline
Manus API (US\$ pago) & DeepSeek-V4 (US\$ 0,14/M tokens) \\
\hline
Autodesk Viewer (externo) & OpenJSCAD (navegador) \\
\hline
Caixa-preta (STL opaco) & Código OpenSCAD (transparente) \\
\hline
Sem edição do modelo & Código editável + refinamento \\
\hline
Laravel (framework pesado) & PHP puro (leve, sem dependências) \\
\hline
\end{tabular}
\end{center}

\subsection{Fluxo de Processamento}

\begin{enumerate}
  \item \textbf{Entrada}: Usuário descreve o modelo 3D desejado em linguagem natural (ex: ``uma cadeira com 4 pernas cilíndricas e assento quadrado de 50cm'').
  \item \textbf{Engenharia de Prompt}: O back-end PHP constrói um \textit{prompt} enriquecido com instruções específicas para geração de código OpenSCAD, incluindo exemplos \textit{few-shot} de primitivas comuns.
  \item \textbf{API DeepSeek}: O \textit{prompt} é enviado ao endpoint \texttt{https://api.deepseek.com/chat/completions} com o modelo \texttt{deepseek-v4-pro} e \texttt{thinking mode} ativado.
  \item \textbf{Pós-processamento}: O código retornado é extraído (a IA às vezes inclui explicações em texto), validado sintaticamente e armazenado no banco de dados.
  \item \textbf{Renderização}: O código OpenSCAD é enviado ao front-end, onde o OpenJSCAD o interpreta e renderiza o modelo 3D em WebGL.
  \item \textbf{Iteração}: O chat permanece aberto para ajustes (``aumente a escala'', ``adicione encosto'', ``mude o material''), com o histórico completo registrado.
  \item \textbf{Finalização}: Ao concluir, o usuário responde um questionário de avaliação com nota (1--5), checkboxes de inconsistências e comentários livres.
\end{enumerate}

\subsection{Stack Tecnológico}

\begin{itemize}
  \item \textbf{Front-end}: HTML5, CSS3, JavaScript vanilla, OpenJSCad (WebGL), Three.js (fallback de visualização)
  \item \textbf{Back-end}: PHP 8.4 puro (sem frameworks), arquitetura MVC simples
  \item \textbf{Banco de Dados}: MySQL 8.0 (tabelas: users, sessions, prompts, models, evaluations)
  \item \textbf{IA Generativa}: DeepSeek-V4 via API REST (OpenAI-compatible)
  \item \textbf{Renderização 3D}: OpenJSCad (engine OpenCascade via WebAssembly)
  \item \textbf{Hospedagem}: Servidor Linux Debian 13, Nginx, Docker (opcional)
\end{itemize}

\subsection{Estrutura do Prompt para o DeepSeek}

O template de \textit{prompt} utilizado é:

\begin{lstlisting}[caption={Template de prompt para geração de código OpenSCAD}, label={lst:prompt}]
Voce e um especialista em modelagem 3D parametrica. 
Gere APENAS codigo OpenSCAD valido para o seguinte objeto: 
[D E S C R I C A O   D O   U S U A R I O]

Regras:
- Use primitivas basicas: cube(), sphere(), cylinder()
- Use operacoes: union(), difference(), intersection()
- Use transformacoes: translate(), rotate(), scale()
- Todas as medidas em milimetros
- Codigo completo e renderizavel
- NAO inclua explicacoes, APENAS o codigo
- Use $fn=64 para objetos curvos
- Comente cada parte do codigo com // comentario
\end{lstlisting}

\subsection{Validação e Pós-processamento do Código}

O código retornado pelo DeepSeek passa por um \textit{pipeline} de validação:

\begin{lstlisting}[caption={Pipeline de validação de código OpenSCAD em PHP}, label={lst:pipeline}]
function validateOpenSCAD($code) {
    // 1. Remove markdown code blocks se existirem
    $code = preg_replace('/```(openscad|scad)?\s*/', '', $code);
    $code = str_replace('```', '', $code);
    
    // 2. Verifica presenca de primitivas validas
    $hasPrimitives = preg_match('/cube|sphere|cylinder|polyhedron/', $code);
    if (!$hasPrimitives) return ['valid' => false, 'error' => 'Sem primitivas'];
    
    // 3. Verifica balanceamento de chaves
    $open = substr_count($code, '{');
    $close = substr_count($code, '}');
    if ($open !== $close) return ['valid' => false, 'error' => 'Chaves desbalanceadas'];
    
    // 4. Verifica operadores modulo faltantes
    if (substr_count($code, '(') !== substr_count($code, ')'))
        return ['valid' => false, 'error' => 'Parenteses desbalanceados'];
    
    return ['valid' => true];
}
\end{lstlisting}

\section{Materiais e Métodos}

\subsection{Classificação da Pesquisa}

Quanto à natureza, trata-se de uma pesquisa \textbf{aplicada}, pois visa produzir um artefato de software e conhecimento empírico sobre o \textit{gap} semântico. A abordagem é \textbf{quantitativa e qualitativa}~\cite{wainer2007metodos}: serão coletadas métricas objetivas (tempo, iterações, abandono) e percepções subjetivas (notas, comentários, checkboxes de inconsistências). Do ponto de vista dos objetivos, a pesquisa é \textbf{exploratória e descritiva}. O procedimento técnico consiste em um \textbf{experimento controlado} com usuários reais.

\subsection{Arquitetura do Banco de Dados}

\begin{lstlisting}[caption={Esquema do banco de dados MySQL}, label={lst:db}]
-- Tabela de usuarios
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    consent_accepted BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabela de sessoes
CREATE TABLE sessions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    session_code VARCHAR(10) UNIQUE NOT NULL,
    status ENUM('active','completed','abandoned') DEFAULT 'active',
    started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ended_at TIMESTAMP NULL,
    total_time INT DEFAULT 0, -- segundos
    iterations INT DEFAULT 0,
    abandoned BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Tabela de prompts e respostas (iteracoes)
CREATE TABLE prompts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    session_id INT NOT NULL,
    iteration_number INT NOT NULL,
    prompt_text TEXT NOT NULL,
    generated_code LONGTEXT NOT NULL,
    stl_file_path VARCHAR(255),
    api_response_time_ms INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (session_id) REFERENCES sessions(id)
);

-- Tabela de avaliacoes
CREATE TABLE evaluations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    session_id INT NOT NULL,
    rating INT CHECK (rating BETWEEN 1 AND 5),
    scale_issue BOOLEAN DEFAULT FALSE,
    proportion_issue BOOLEAN DEFAULT FALSE,
    detail_missing BOOLEAN DEFAULT FALSE,
    geometry_distorted BOOLEAN DEFAULT FALSE,
    texture_issue BOOLEAN DEFAULT FALSE,
    other_issue TEXT,
    comments TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (session_id) REFERENCES sessions(id)
);
\end{lstlisting}

\subsection{Coleta de Dados}

A coleta será realizada com um grupo de participantes voluntários, composto por alunos dos cursos de Sistemas de Informação da UTFPR Francisco Beltrão, mediante autorização do Comitê de Ética da UTFPR via Plataforma Brasil. Estima-se uma amostra de 20 a 30 participantes.

Os participantes serão orientados a utilizar a plataforma para gerar pelo menos três modelos distintos, com temas sugeridos (``uma cadeira ergonômica'', ``um vaso decorativo'', ``uma peça mecânica simples''), podendo também propor desafios próprios. A coleta ocorrerá ao longo de duas semanas.

\subsection{Métricas Coletadas}

\begin{itemize}
  \item \textbf{Número de iterações} por sessão (quantas vezes o usuário pediu ajustes)
  \item \textbf{Tempo total} da sessão (do primeiro prompt à finalização)
  \item \textbf{Taxa de abandono} (sessões não concluídas / total de sessões)
  \item \textbf{Nota} atribuída (1 a 5) ao resultado final
  \item \textbf{Inconsistências} selecionadas (checkboxes: escala, proporção, detalhes, geometria, textura, outro)
  \item \textbf{Tempo de resposta} da API DeepSeek por iteração
  \item \textbf{Comentários} textuais sobre técnicas de \textit{prompt} e dificuldades
\end{itemize}

\subsection{Análise dos Dados}

Os dados quantitativos serão submetidos a análises estatísticas descritivas (média, mediana, desvio padrão) e testes de correlação (ex: correlação entre número de iterações e nota final). As inconsistências assinaladas serão contabilizadas para identificar as categorias mais frequentes do \textit{gap} semântico~\cite{dutt2026lost, fu2025multidimensional}. Os comentários textuais serão examinados por meio de análise de conteúdo.

Um diferencial desta abordagem é a \textbf{análise do código gerado}: como o código OpenSCAD é armazenado a cada iteração, é possível comparar versões sucessivas e identificar \textit{exatamente} quais parâmetros a IA ajustou (ou deixou de ajustar) entre uma iteração e outra, fornecendo evidências concretas do \textit{gap} semântico.

\section{Resultados Esperados}

Ao final da pesquisa, espera-se obter:

\begin{itemize}
  \item Uma plataforma web funcional, capaz de gerenciar sessões de geração 3D por IA via código paramétrico, coletar \textit{feedback} e armazenar métricas de forma automatizada;
  \item Um conjunto de dados com pelo menos 100 sessões completas, abrangendo múltiplos domínios de objetos 3D;
  \item A identificação das categorias de \textit{gap} semântico mais recorrentes (escala, proporção, omissão de detalhes), quantificadas por frequência e associadas a trechos específicos do código OpenSCAD gerado;
  \item Um \textit{dataset} de \textit{prompts} e códigos OpenSCAD gerados por IA, com anotações de qualidade --- útil para treinamento de modelos futuros ou \textit{fine-tuning} do DeepSeek para geração CAD;
  \item Correlações significativas entre a qualidade do \textit{prompt} e a nota final;
  \item Recomendações para otimização de \textit{prompts} específicas para geração de código paramétrico (um template de \textit{prompt} validado empiricamente);
  \item Um artigo acadêmico relatando os achados, a ser submetido a evento ou periódico da área de Informática ou Design.
\end{itemize}

\section{Conclusão}

Esta reformulação do projeto de TCC substitui as APIs proprietárias Manus e Autodesk Viewer por uma arquitetura inteiramente baseada em software livre: DeepSeek-V4 como motor de IA, OpenSCAD como linguagem de modelagem paramétrica, e OpenJSCAD como renderizador \textit{client-side}. 

A abordagem é superior à original em transparência (código visível e editável), custo (US\$ 0,14/M tokens vs. APIs pagas), independência (sem serviços de nuvem terceirizados) e valor educacional (o usuário aprende modelagem paramétrica). Além disso, o código gerado a cada iteração fornece evidências objetivas e rastreáveis do \textit{gap} semântico, permitindo uma análise científica mais rigorosa do que seria possível com uma API do tipo caixa-preta.

O sistema já está em funcionamento no endereço \url{https://3d.wellton.com.br/text-to-3d/} e o código-fonte está disponível no repositório \url{https://git.wellton.com.br/wellton/text-to-3d}.

\bibliographystyle{abnt}
\begin{thebibliography}{99}

\bibitem{li2024generative} Li, C. et al. Generative AI meets 3D: A survey on text-to-3d in AIGC era. arXiv preprint arXiv:2305.06131v4, 2024.

\bibitem{jiang2024survey} Jiang, C. et al. A survey on text-to-3d contents generation in the wild. arXiv preprint arXiv:2405.09431, 2024.

\bibitem{dutt2026lost} Dutt, N. S. et al. LoST: Level of semantics tokenization for 3d shapes. arXiv preprint arXiv:2603.17995. CVPR 2026.

\bibitem{sadik2026human} Sadik, A. and Bujny, M. Human-in-the-loop: Quantitative evaluation of 3D models generation by large language models. In: ICAART 2026, p. 3966--3973.

\bibitem{ebert20253darena} Ebert, D. et al. 3D Arena: An open platform for generative 3d evaluation. arXiv preprint arXiv:2506.18787, 2025.

\bibitem{tam2026sceneeval} Tam, H. I. I. et al. SceneEval: Evaluating semantic coherence in text-conditioned 3D indoor scene synthesis. arXiv preprint arXiv:2503.14756v3. WACV 2026.

\bibitem{fu2025multidimensional} Fu, Z. et al. Multi-dimensional quality assessment for text-to-3d assets: Dataset and model. IEEE Trans. Multimedia, 27:8145--8159, 2025.

\bibitem{deepseek2026v4} DeepSeek. DeepSeek-V4 Preview Release: Technical Report. \url{https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro}, 2026.

\bibitem{manus2026} Manus. Manus API documentation. \url{https://manus.im}, 2026.

\bibitem{autodesk2025} Autodesk. Autodesk Platform Services (APS) Viewer SDK. 2025.

\bibitem{barbosa2010ihc} Barbosa, S. D. J. and Silva, B. S. Interação Humano-Computador. Elsevier, 2010.

\bibitem{preece2013design} Preece, J., Rogers, Y., and Sharp, H. Design de Interação: Além da Interação Humano-Computador. Bookman, 3a ed., 2013.

\bibitem{wainer2007metodos} Wainer, J. Métodos de pesquisa quantitativa e qualitativa para a ciência da computação. In: Atualização em Informática, p. 221--262. PUC-Rio, 2007.

\bibitem{zhang20253dgen} Zhang, Y. et al. 3DGen-Bench: Comprehensive benchmark suite for 3D generative models. arXiv:2503.21745, 2025.

\end{thebibliography}

\end{document}
