CommunityImagemgithub.com

threejs-fotointerior-real

Guia abrangente e ponto de partida para criar uma cena interior fotorrealista com three.js, inteiramente gerada por código, sem modelos, texturas ou HDRI.

O que é threejs-fotointerior-real?

Este skill agrupa vários sub-skills em um fluxo completo e fornece um modelo de projeto executável para criar cenas interiores fotorrealistas com three.js, totalmente geradas proceduralmente. Baseado no projeto [room-at-dawn](https://github.com/Leonxlnx/room-at-dawn) (MIT), ele descreve uma cena de quarto ao amanhecer gerada por código, rodando no navegador. O fluxo inclui: especificação de requisitos (com `3d-spec-prompt`), dimensionamento e casca (layout e partes da sala), objetos principais (tecidos, vegetação, plantas interiores), céu e exterior, materiais, objetos de ambientação, iluminação (GI assado com `threejs-baked-gi` e luz direta do sol), pós-processamento (`threejs-realtime-post`) e gravação determinística (`webgl-deterministic-recording`). O skill impõe regras críticas de integração: unidades em metros, coordenadas fixas, determinismo (RNG com semente), iluminação armazenada em vértices (exigindo subdivisão), aplicação obrigatória do patch GI `lit()` em todos os materiais iluminados, separação entre luz indireta assada e luz direta do sol, paredes com núcleo sólido (`shadowSide: FrontSide`) para evitar vazamento de luz, exposição ajustada para o interior, captura de reflexão após a bake, distância do clipping far para incluir o fundo externo, e câmera de sombra do sol cobrindo copas de árvores. O modelo de projeto novo pode ser criado com um script bash, resultando em uma pasta autossuficiente com todos os códigos-fonte, sem necessidade de bundlers ou npm (three.js carregado via jsDelivr). O usuário pode navegar com WASD, clicar para modo FPS, e interagir com parâmetros de URL para câmera, tempo, visualização GI, filtragem de partes e exposição. O skill é ativado quando o usuário deseja criar uma cena realista interna do zero usando apenas código.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ammosu/claude-threejs-photoreal/tree/HEAD/skills/threejs-photoreal-interior

Installed? Explore more Imagem skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Cena Interior Fotorrealista (Guia Geral)

Este skill combina os skills abaixo em um fluxo completo e fornece um modelo de projeto executável. O método é baseado em room-at-dawn (MIT): um quarto ao amanhecer, inteiramente gerado por código, executado no navegador. A escala do projeto original é aproximadamente:

  • 1,83 milhões de triângulos, carregamento em cerca de 7 segundos (RTX 4090).
  • Arquivo de iluminação assada gi.bin com cerca de 13 MB, bake de aproximadamente 30 minutos.
  • Vídeo em 4K HDR10.

Qual skill usar em cada etapa

EtapaskillO que entregar
03d-spec-promptTransformar ideias em especificações verificáveis: ambiente, hora, escala, objeto principal, câmera
1 Dimensões e cascatemplate/src/layout.js, parts/room.js deste skillDimensões reais (metros), janela, espessura da parede, casca
2 Objetos principaisthreejs-procedural-cloth (cobertores, cortinas), threejs-procedural-vegetation (árvores do lado de fora), threejs-procedural-pothos (plantas internas)Objetos de foco visual
2b Céu e exteriorthreejs-sky-backdrop (céu padrão, nuvens, grama externa, casas, sebes distantes, apenas o que é visível)Mesmo céu para bake e cena renderizada
3 Materiaisthreejs-procedural-texturesParedes, chão, madeira, tecidos, marcas de uso, capas de livros
4 Objetos de ambientaçãothreejs-lived-in-propsPano pendurado na cadeira, copo, garrafa, meias, fios, papel amassado
5 Iluminaçãothreejs-baked-giLuz do céu e luz solar indireta assada nos vértices, salvo como gi.bin; luz solar direta em tempo real
6 Imagem finalthreejs-realtime-postAO, bloom, exposição separada interna/externa, correção de cor
7 Validação, gravaçãowebgl-deterministic-recordingRegressão de screenshots, renderização quadro a quadro, saída cinematográfica (profundidade de campo, motion blur, HDR10)

Criar novo projeto

bash <pasta do skill>/scripts/new-project.sh ~/git_project/my-room
cd ~/git_project/my-room && python3 -m http.server 5430 --bind 127.0.0.1
# http://127.0.0.1:5430/            Já inclui bake/gi.bin
# http://127.0.0.1:5430/?bake=128   Após modificar a cena, refazer bake, clicar "download gi.bin" e salvar em bake/

(<pasta do skill> é o diretório base exibido ao carregar este skill; quando instalado como plugin, fica em ~/.claude/plugins/cache/)

  • Este script copia o modelo e os códigos de cada sub-skill para src/lib/ (gi, post, props, textures, cloth, vegetation, pothos, sky, film), tornando o projeto autossuficiente.
  • Não requer bundlers nem npm. three e three-mesh-bvh são carregados do jsdelivr.
  • Parâmetros de URL:
    • ?cam= : Câmera (room, desk, window, corner, view = olhando para fora pela janela).
    • ?t= : Hora fixa (folhas e nuvens paradas, para screenshots).
    • ?view=gi : Visualizar apenas iluminação.
    • ?only=furniture : Construir apenas uma parte.
    • ?exp= : Exposição.
  • A página fornece window.__ready, window.__stats, window.__camera, para conexão com as ferramentas de webgl-deterministic-recording.
  • Controles: Arrastar para girar; WASD / setas para andar (Shift para andar devagar, colide com paredes e móveis); clicar na tela muda para controle de rotação com mouse, visão a 1,6 m (Esc sai). O modo orbital limita câmera e ponto de interesse dentro do cômodo; zoom e pan não ultrapassam as paredes.

Estrutura do modelo:

ArquivoConteúdo
src/layout.jsÚnico local para dimensões, sol, céu (padrão SKIES), configuração externa (OUTSIDE), correção de cor, câmera, áreas de móveis intransponíveis (BLOCKERS)
src/materials.jslit() (patch GI, preserva patches de shader originais, registra albedo), solid(), tbox(), tplane(), metres()
src/scene.jsCria cada parte na ordem fixa pelo campo order
src/parts/room.jsChão, teto, quatro paredes, abertura da janela e peitoril, casca preta externa, núcleo das paredes
src/parts/outside.jsExterior: céu, grama, caminho de cascalho, sebes, casas, árvores distantes, árvore principal e árvores médias/distantes (apenas o visível, com threejs-sky-backdrop + threejs-procedural-vegetation). Todas com gi = false, não bloqueiam luz de bake
src/parts/furniture.jsMesa, cadeira, toalha pendurada (PBD), copo, garrafa, livros sobre a mesa, livros na estante
src/main.jsCriar cena → bake, carregar arquivo ou luz plana → sol → reflexão → pós-processamento → câmera (orbital + andar, restrito ao cômodo)

Regras obrigatórias entre skills

  1. Unidades em metros, coordenadas fixas. X ao longo da parede da janela, Z para dentro (janela em z = 0, z < 0 é exterior), Y para cima. Todas as dimensões somente em layout.js.
  2. Determinismo. Números aleatórios sempre com RNG(seed). Se a ordem, nome ou contagem de vértices de uma peça mudar, o bake daquela malha será invalidado; applyBake reportará como obsoleto.
  3. Luz armazenada nos vértices, exigindo subdivisão. Superfícies com objetos em cima subdivididas a 1,5–2 cm; áreas grandes a 4–8 cm. Use tbox/tplane.
  4. Todos os materiais iluminados devem passar por lit(). giPatch substitui diretamente onBeforeCompile; lit() encadeia os patches originais, incluindo variações de parede (wallPatch), contraste de tecidos, vento. Materiais com textura devem fornecer albedo (a avg da textura) para que a cor da luz indireta seja correta.
  5. Divisão do sol: Luz direta com DirectionalLight (intensidade igual ao sun.irr da configuração de bake); luz indireta assada em arquivo. Não adicione luz ambiente ou hemisférica.
  6. Paredes devem ter núcleo sólido com shadowSide definido como FrontSide. Sem isso, o sol vaza pontos brilhantes no rodapé e nos cantos das paredes (já ocorrido; veja references/integration.md).
  7. Exposição focada no interior. Interior tem cerca de 1/20 da claridade externa: exposure em torno de 4,5; exterior com ext em torno de 0,3 para escurecer.
  8. Reflexão capturada após o bake. captureEnv deve ser executado após applyBake/runBake, com a sonda no centro do cômodo.
  9. Com fundo externo distante, o clipping far da câmera deve ser maior que o elemento mais distante. O modelo usa 400 m (sebes a 100 m, grama até 260 m). Com far = 100, o fundo cortado exibe uma névoa de horizonte branca que se move com a câmera (já ocorrido).
  10. A câmera de sombra do sol deve cobrir as copas das árvores externas para que a sombra das árvores entre: o modelo posiciona o sol a 30 m de distância, near 12, far 40.

Medições reais (modelo, RTX 4090, Chrome headless, 1280×800)

  • Criação da cena: 1,2 s, sendo a toalha pendurada ~0,65 s; 107.000 triângulos; da abertura da página até a imagem: ~1,6 s.
  • Bake em tempo real a 128 spp: 61.407 amostras, 26 workers, 6 s, gi.bin com 743 KB. Após recarregar, aplicado a 39 malhas, 0 inválidas.
  • preview.jpg: cômodo, vista da mesa, janela, apenas luz. preview-bake.jpg: esquerda com luz plana, direita após bake.

Leitura adicional

  • references/workflow.md: Passos de cada etapa, decisões a tomar, entregáveis e pontos de verificação.
  • references/integration.md: Interfaces entre skills, pontos de atenção e problemas encontrados.
  • references/checklist.md: Lista de verificação e faixas de referência para métricas.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

threejs-procedural-cloth

用程式「設計」出照片級的靜態布料(不做物理模擬):沒鋪好的棉被、毯子、桌巾、垂下床緣或桌緣的布、翻起一角的被子、布上放東西,以及掛在桿子上的窗簾(吊環夾出的折、往下鬆開與散開、綁起下擺、車線與雙層縫邊、亞麻平織)。方法是平面高度場(團塊+有方向的長折+削峰+逐條畫上的皺褶)→ 包到支撐物上 → 高的折往一側倒 → 翻角 → 依 3D 曲面攤平 UV → 細皺紋 normal map+凹處變暗,含可重用程式庫、分階段範例、驗證數據,以及搬到 Godot/Unreal 的做法。當使用者說「程式生成布料」「棉被/床單/毯子/桌巾建模」「布料皺褶」「布垂下床邊」「被子翻一角」「布料不要用模擬」「cloth without simulation」「procedural cloth」「布上的花紋被拉長」「布料看起來像塑膠/像山」「窗簾建模」「程式生成窗簾」「窗簾皺褶」「curtain」「布簾」時使用。

threejs-procedural-textures

在 three.js 用程式即時生成照片級材質貼圖(不用任何圖檔):可無縫重複的雜訊、以公釐為單位的高度場轉 normal map、粗糙度與 AO 打包、Canvas2D 轉貼圖、平均反照率(給光照烘焙用)、接縫檢查。內含現成的材質:滾筒漆木屑壁紙加上大尺度的灰泥與漆色變化、烤漆橘皮紋、手摸過的粗糙度、積灰、橡木地板(交錯接縫、每片紋理不同、節疤、四邊微倒角)、通用木紋、對拼橡木貼皮、平織、鬆餅格、毛巾布、羅紋、針織、毛氈、棉繩、使用痕跡(灰塵、油脂、指紋、碎屑、棉絮、頭髮、杯印、細刮痕,同時畫進顏色與粗糙度)、斑點釉、粉體塗裝刮傷、書封圖集與對應 UV 的書本幾何、書頁邊、地形圖海報、照片、假文字。當使用者說「程式生成貼圖」「procedural texture」「不用圖檔的材質」「normal map 怎麼產生」「木地板/木紋貼圖」「牆面看起來太假」「布料材質」「針織/毛巾布 normal map」「使用痕跡」「刮痕/指紋/灰塵」「粗糙度貼圖」「書封/書背」「假文字」「貼圖有接縫」「Canvas 畫貼圖」時使用。

threejs-sky-backdrop

在 three.js 用程式做天空與窗外遠景,不需要 HDRI 或圖檔。天空的同一份參數同時用在三個地方:烘焙光照用的解析式天空、看得到的天空球(雲層、高空薄雲、地平線霧帶、太陽),以及不烘焙時用的太陽光、半球光與環境貼圖。內含四種預設(清晨、白天、陰天、黃昏)和一個量測工具,確認看到的天空和照亮場景的天空亮度一致。遠景部分包括:只建從室內窗戶看得到的東西(窗洞可見性與 LOD)、隨距離變淡的大氣霧化、遠處逐漸變粗的草地網格、碎石小路、樹籬、鄰居房子(陶瓦屋頂、窗戶、煙囪、天窗)、封住地平線的遠方樹牆,並可以搭配 threejs-procedural-vegetation 種樹。當使用者說「天空」「sky shader」「雲」「程式生成天空」「不用 HDRI」「窗外景色」「遠景」「背景房子」「地平線」「大氣透視」「霧化」「窗外的樹」「天空和光照對不上」「清晨/黃昏/陰天的天空」「只建看得到的東西」時使用。

Habilidades Relacionadas