Ativos, formatos de troca e orçamento de cena — Atlas

O módulo inteiro em oito formas visuais. Cada uma mostra o mesmo conteúdo de outro jeito: o resumo desenhado; os procedimentos passo a passo; os cartões para treinar de memória; o módulo contado como uma história desenhada; o mapa dos tópicos; a página que junta conceito, exemplo, diagrama e fato; a rede de conceitos; e as regras, as contas e os erros previsíveis para consultar na hora.

Resumo ilustrado

Resumo ilustrado em nove partes, sob o título “Ativos, formatos de troca e orçamento de cena” e a frase “uma peça feita fora do projeto entra na cena, e a cena passa a ter um peso que se mede em número”. 1, correto e errado: um ativo é o arquivo de uma peça pronta, feita fora; o arquivo é válido pelas regras do formato, e a peça na cena fica deitada, cem vezes maior, 30 m à frente do lugar dela; o carregamento termina bem, sem nenhum erro e sem nenhum aviso; o que falta não mora no arquivo: quanto a peça mede no mundo, quem sabe é uma pessoa. 2, escrito antes de chegar: a convenção da cena são escolhas escritas uma vez, num lugar só (unidade metro; vertical eixo Y; origem no apoio; frente no sentido positivo de Z); sem ela, uma negociação a cada peça; com ela, a diferença vira uma conta; a especificação do formato de troca (o tipo de arquivo que viaja entre programas) fixa metro e Y, e não tem como obrigar quem exporta a segui-la. 3, medido e declarado: o medido sai da caixa envolvente, a menor caixa alinhada aos eixos que contém a peça, e dá o fator de escala e o assentamento, que se refazem sozinhos; o declarado é o que o arquivo não tem onde carregar (o vertical do autor e o maior lado real), e quem conhece a peça o escreve; o fator digitado é o medido virado declaração, e falha em silêncio no ativo de outra unidade. 4, a ordem não é livre: girar, escalar, assentar, e cada passo mede a caixa que o anterior deixou; assentar fora do último lugar: antes de girar, a peça assenta pelo lado que vai virar lateral e, nesta peça, flutua; antes de escalar, ela se enterra; nos dois casos, sem erro e sem aviso. 5, o laudo: o registro do que chegou, do que ficou e do que foi corrigido; seis campos descrevem (arquivo, como chegou, como ficou, fator, giro e deslocamento) e um acusa: a lista de divergências, uma linha para cada diferença entre o que chegou e o que a cena esperaria; a tolerância, a diferença aceita sem acusar, é frouxa de propósito: um fator de 0,998 é ruído, e a troca de unidade erra por ordens de grandeza. 6, duas colunas: a chamada de desenho é o pedido à placa, e os triângulos, o que a placa desenha; instanciar põe as cópias numa chamada só, e 206 chamadas passam a 1; o nível de detalhe põe menos triângulos ao longe, e 224 passam a 110; cada técnica move uma coluna e deixa a outra parada, e o diagnóstico de um quadro lento (quadro: cada imagem que o aparelho mostra) pergunta qual coluna está grande. 7, antes e depois de simplificar: antes, unir os vértices (os cantos dos triângulos) que estão na mesma posição, senão a peça abre buracos; depois, recalcular a normal, a direção que a luz consulta, senão sai mancha, e não buraco; e conferir: se a malha simplificada (a forma da peça, guardada em listas de números) saiu vazia, ou com coordenada que não é número de verdade, fica a original, e a observação é escrita. 8, censo e leitura: o censo é estático, soma o que existe e diz quanto a cena pesa; a leitura é dinâmica, conta o que a placa desenhou no quadro que saiu e diz o custo do que estava no campo de visão; a diferença é o que ficou fora do enquadramento e o nível de detalhe desligado, nunca erro; o lote, as cópias desenhadas numa chamada só, aparece separado: uma chamada, e os triângulos por cópia vezes as cópias. 9, teto antes, máquina ao lado: o teto é o tempo que o programa tem para cada quadro, escrito no código antes da despesa; 11,1 ms, o do visor (o aparelho preso à cabeça, que cobre os olhos); declarado depois, vira balanço do que já foi gasto; o medidor, que compara cada quadro com o teto, guarda a média e o pior dos intervalos (o tempo real entre um quadro e o seguinte) dos 120 quadros mais recentes; a máquina de referência é a mais modesta do parque previsto, os aparelhos em que o ambiente vai abrir; a placa que a plataforma não informa se escreve “não identificada”.
Figura 1: O módulo numa página: o arquivo correto e a peça errada; a convenção escrita antes; o medido e o declarado; a ordem dos ajustes; o laudo; as duas colunas; o antes e o depois de simplificar; o censo e a leitura; e o teto com a máquina ao lado.

Fluxogramas

Cinco procedimentos do módulo, na ordem em que ele os apresenta. Siga cada um com o lápis, sobre um ativo seu ou sobre a morsa, a ferramenta que aperta entre duas mandíbulas o que alguém vai trabalhar e cujo arquivo chega pronto, feito fora do projeto.

Importar uma peça feita fora

O que o arquivo não diz, e alguém declara, vem antes de qualquer conta: sem o maior lado real, não há fator para medir.

%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
    A["a peça chegou,<br/>sem erro na carga"] --> B["declarar o que o arquivo não diz:<br/>o vertical que o autor usou<br/>e o maior lado real, em metros"]
    B --> C["(1) girar até o vertical<br/>do autor virar o da cena<br/>morsa: −90 graus em X"]
    C --> D["(2) medir a caixa envolvente, já em pé,<br/>e escalar: maior lado real ÷ maior lado<br/>morsa: 0,18 ÷ 18,00 = 0,0100"]
    D --> E["(3) medir a caixa de novo e assentar:<br/>descer a base até o apoio<br/>e centrar no plano do chão<br/>morsa: desce 0,30 m"]
    E --> F{"a peça ficou<br/>de cabeça<br/>para baixo?"}
    F -->|"sim: o sinal do giro está<br/>trocado; girar com o outro"| C
    F -->|"não"| G["escrever o laudo:<br/>arquivo, como chegou, como ficou,<br/>fator, giro, deslocamento<br/>e a lista de divergências"]

Figura 2: Cada passo mede de novo a caixa envolvente que o passo anterior deixou. O laudo não acusa o sinal trocado do giro: com o sinal trocado, o laudo traz giro de 90 graus em X e deslocamento de 0,47 m, números tão razoáveis quanto os certos, e quem acusa é a imagem, com as mandíbulas apontando para o tampo.

Montar a lista de divergências

%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
    B{"fator aplicado<br/>entre 0,5 e 2?"} -->|"não"| U["linha da unidade:<br/>unidades por metro<br/>(morsa: 100)"]
    B -->|"sim"| C{"giro<br/>declarado<br/>zero?"}
    U --> C
    C -->|"não"| X["linha do eixo vertical:<br/>o giro aplicado<br/>(morsa: −90 graus em X)"]
    C -->|"sim"| D{"deslocamento<br/>acima de 1 cm?"}
    X --> D
    D -->|"sim"| O["linha da origem:<br/>o deslocamento<br/>(morsa: 0,30 m)"]
    D -->|"não"| N["fim: uma linha por divergência;<br/>sem nenhuma, a lista diz que não há<br/>divergência acima da tolerância"]
    O --> N

Figura 3: A lista compara o que a importação aplicou com o que a convenção espera. O eixo trocado não passa por tolerância: ele entra sempre que o giro declarado não é zero. A morsa sai com as três linhas.

Escolher a técnica pela coluna que cresceu

%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
    A["o quadro passou do teto:<br/>olhar as duas colunas,<br/>uma de cada vez"] --> B{"a coluna das<br/>chamadas está<br/>grande?"}
    A --> T{"a coluna dos<br/>triângulos está<br/>grande?"}
    B -->|"sim"| C{"cópias da<br/>mesma forma<br/>e material?"}
    C -->|"não"| U["peça única ou<br/>outro material:<br/>não há lote"]
    C -->|"sim"| D{"as cópias<br/>ficam<br/>paradas?"}
    D -->|"sim"| I["instanciar:<br/>uma chamada,<br/>triângulos iguais"]
    D -->|"não"| M["o ganho evapora:<br/>a tabela das posições<br/>volta à placa<br/>a cada quadro"]
    T -->|"sim"| E{"longe: a<br/>diferença não<br/>chega ao olho?"}
    E -->|"sim"| N["nível de<br/>detalhe, um<br/>lote por nível"]
    E -->|"não"| P["perto do olho,<br/>simplificar é<br/>trabalho<br/>jogado fora"]
    B -->|"não"| O["se nenhuma das duas está grande:<br/>a troca de material entre chamadas,<br/>a pintura de muitos pixels ou o trabalho<br/>do próprio programa; as ferramentas<br/>de perfilamento dizem onde<br/>o tempo foi gasto"]
    T -->|"não"| O

Figura 4: A pergunta começa pela coluna que cresceu na contagem, a das chamadas de desenho ou a dos triângulos, e não pelo objeto que parece complicado. A borda de 206 parafusos cai no ramo de instanciar; a prateleira ao fundo, no do nível de detalhe; a engrenagem da mesa, a meio metro do olho, em nenhum dos dois.

Fazer o nível de detalhe de uma peça distante

%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
    A["numa cópia da malha da peça do fundo,<br/>tirar a normal e a coordenada de textura<br/>(qual ponto da imagem colada<br/>sobre a superfície cai no vértice)"] --> C["unir os vértices pela posição<br/>engrenagem: 338 viram 114"]
    C --> D["simplificar com a ferramenta<br/>224 viram 110 triângulos,<br/>57 vértices"]
    D --> E["recalcular as normais<br/>senão sai mancha"]
    E --> F{"malha vazia, ou<br/>coordenada que<br/>não é número<br/>de verdade?"}
    F -->|"sim"| G["fica a original,<br/>e a observação vai para a folha<br/>do programa, o texto que ele<br/>escreve na tela"]
    F -->|"não"| H["o nível de longe: um lote inteiro,<br/>com as mesmas posições"]
    H --> J["além de 2,2 m da câmera ao centro<br/>da prateleira, liga o lote de longe;<br/>mais perto, o de perto"]

Figura 5: Sem a união, a ferramenta tira triângulos do mesmo jeito, e a engrenagem sai com 4 dos 112 triângulos das tampas. A conferência do fim pega a malha vazia e a coordenada inválida; o buraco, não.

Medir e escrever a folha do programa

%%{init: {"flowchart": {"useMaxWidth": false, "rankSpacing": 30, "nodeSpacing": 30}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TB
    A["escrever a máquina no lugar em que<br/>o número sai, antes dos números"] --> B{"a plataforma<br/>deu o nome<br/>da placa?"}
    B -->|"sim"| C["escrever o nome"]
    B -->|"não"| D["escrever que a placa não foi<br/>identificada, com o motivo"]
    C --> E["medir com a câmera em duas posições:<br/>junto à mesa e junto à prateleira,<br/>a leitura de cada uma ao lado do mesmo censo"]
    D --> E
    E --> F{"as duas leituras<br/>deram iguais?"}
    F -->|"não"| G["leituras diferentes são o esperado:<br/>o que cada uma tem a menos que o censo<br/>ficou fora do enquadramento ou no nível<br/>de detalhe desligado, e não é erro"]
    F -->|"sim"| H["numa cena espalhada, nada<br/>está sendo descartado: explicar<br/>isso antes de qualquer outra medida"]
    G --> I["ler o pior intervalo dos 120 quadros<br/>mais recentes ao lado da média"]
    H --> I

Figura 6: A máquina se escreve no lugar em que o número sai e entra na folha do programa antes dos números. A folha do programa é o texto que o programa escreve na tela, abaixo do desenho, com o laudo, as contagens e a medição; as definições a chamam de relatório. O medidor calcula também quantos quadros passaram do teto, mas a folha desta cena não imprime esse número.

Cartões de memória

Leia a frente, diga a resposta em voz alta ou escreva no papel, e só então vire o cartão.

Definição: Formato de troca aberto
Um formato de troca aberto é um arquivo com especificação pública que transporta, de um programa de autoria até um ambiente em execução, a geometria, os materiais e as animações de um objeto.

A especificação pode fixar convenções — a unidade em que os números são lidos e qual eixo é o vertical — e é isso que ela faz. O que ela não pode fazer é obrigar quem exporta a obedecê-las.

Daí decorre a única coisa que o formato não transporta: o tamanho da peça no mundo. Um arquivo escrito noutra unidade continua formalmente válido, e nenhum campo normativo registra a troca: o que o exportador quiser dizer vai em texto livre, que nenhum importador é obrigado a ler. O número de metros que a peça mede fora do computador é conhecido por uma pessoa, não pelo arquivo.
Definição: Convenção da cena
A convenção da cena é o conjunto de escolhas que todo objeto da cena obedece, escrito uma vez e em um lugar só: a unidade de medida, qual eixo é o vertical, onde fica a origem de cada peça e qual sentido é a frente.

Ela se declara antes, em vez de se descobrir no que chega. Uma cena sem convenção escrita não tem contra o que acusar divergência: cada objeto importado passa a trazer a sua, cada ajuste é feito no olho, e não sobra ninguém capaz de dizer qual dos dois lados está errado.

O que a convenção converte é o trabalho de reconciliar. Com ela, a diferença entre o que chegou e o que a cena espera é uma conta; sem ela, é uma negociação, e ela se repete em cada objeto novo.
Definição: Ajuste de importação
O ajuste de importação é a transformação aplicada ao que chegou para trazê-lo à convenção da cena, e ele tem duas metades de naturezas diferentes.

A metade medida sai da caixa envolvente do objeto que chegou, por divisão e por subtração: o fator de escala e o assentamento da base. Ela não tem como estar errada por distração, e trocar o ativo por outro a recalcula sozinha.

A metade declarada é o que o arquivo não carrega e não tem onde carregar: qual eixo o autor usou como vertical e quanto a peça mede no mundo. Ela é escrita por quem conhece a peça.

A fronteira entre as duas é o que separa importar de arrastar. Um fator de escala digitado é a metade medida transformada em declaração, e funciona até chegar um ativo em outra unidade — quando falha, falha em silêncio, e o conserto é feito num terceiro lugar.
Definição: Chamada de desenho
Uma chamada de desenho é uma conversa entre o programa e a placa de vídeo para desenhar um objeto: a placa recebe qual forma usar, com qual material e em que posição, e só então desenha.

O custo dessa conversa é fixo por objeto e independe do tamanho dele. Um objeto minúsculo custa a mesma preparação que um objeto grande, e é por isso que uma cena de mil peças pequenas pode engasgar sem que a contagem de triângulos assuste ninguém.

Chamada de desenho e triângulo são unidades de contas diferentes. As duas se pagam no mesmo envelope, e nenhuma das duas se lê na outra.
Definição: Instanciação
Instanciar é desenhar muitas cópias de uma mesma forma numa chamada de desenho só: a placa recebe a forma uma vez e, em seguida, a lista das posições de todas as cópias.

A tabela das posições vai para a placa uma vez, na montagem, e não volta a ser enviada porque nada a altera depois: a placa guarda o lote e desenha dele a cada quadro. A matriz de cada cópia é escrita uma vez, na montagem, e não a cada quadro.

O que a instanciação move é a coluna das chamadas. A contagem de triângulos não muda: eles continuam sendo os mesmos, um por um, e a placa os desenha igual. Instanciar não é sobre triângulo, e quem espera que o número de triângulos caia conclui, olhando a contagem, que a técnica não funcionou.
Definição: Nível de detalhe
Um nível de detalhe é uma segunda versão da mesma malha, com menos triângulos, exibida no lugar da original quando o objeto está longe o bastante para que a diferença não chegue ao olho.

O critério é a distância, e não o objeto. A mesma peça pode receber nível de detalhe num lugar da cena e não receber em outro, e simplificar o que fica sempre perto do olho é trabalho jogado fora.

A simplificação tem um pré-requisito e uma conferência, e nenhum dos dois acontece sozinho. O pré-requisito é unir os vértices que ocupam a mesma posição. O algoritmo tira triângulos colapsando arestas, e uma aresta só liga duas faces quando as duas usam os mesmos dois vértices. Uma malha que duplica vértice em cada face, para ter aresta viva, chega ao algoritmo partida em pedaços que não se tocam, um por face plana; colapsar aresta num pedaço move pontos que o vizinho não acompanha, e a peça abre buracos. A união se paga com a aresta viva: cada ponto fica com uma normal só para todas as faces que o tocam, e o canto duro fica macio.

A conferência é do resultado: a ferramenta pode devolver malha vazia ou com coordenada inválida, e uma peça que some da cena é defeito pior do que um nível distante mais pesado que o ideal. Quando o resultado não passa, a malha original fica no lugar e a observação vai para o relatório.

Depois de simplificar, as normais são recalculadas: os triângulos que sobraram têm outra inclinação, e manter a normal antiga produz iluminação que não corresponde à forma — um defeito que aparece como mancha, e não como buraco.
Definição: Censo da cena e leitura do quadro
O censo é estático: percorre a árvore da cena e soma o que existe, esteja ou não à vista. Responde quanto esta cena pesa.

A leitura é dinâmica: conta o que a placa desenhou no quadro que acabou de sair. Responde quanto custou o que estava no campo de visão.

A diferença entre os dois mede o que não foi desenhado naquele quadro — o que ficou fora do enquadramento e o nível de detalhe desligado —, e nunca um erro de contagem. Um censo alto com leitura baixa descreve uma cena grande vista por um buraco de fechadura, e vira problema no instante em que alguém gira a cabeça — o que, dentro de um visor, acontece o tempo todo.

O censo conta o lote instanciado como uma chamada e como o produto de triângulos por instância. Somar tudo num número só esconderia exatamente a decisão que se está tomando.
Definição: Máquina de referência
A máquina de referência é o aparelho contra o qual a cena é orçada, e ela é a mais modesta do parque previsto — não a de quem escreveu o ambiente.

Um número de desempenho sem a máquina ao lado não permite a ninguém repetir a conta. "Roda bem" é uma frase sem sujeito; a mesma cena, no mesmo estado, produz números diferentes em aparelhos diferentes, e a decisão que se toma a partir de cada um é oposta.

Medir na máquina mais forte disponível produz um teto que as máquinas de uso não alcançam, e o resultado prático é o ambiente estourar justamente nos computadores em que ele vai ser apresentado.

Quando o aparelho não informa o que se pediu — o nome da placa, por exemplo, que a plataforma em que a cena roda pode se recusar a dizer, por privacidade —, o relatório declara que não sabe. Preencher o campo com um nome plausível é pior do que deixá-lo vazio: quem lê passa a acreditar que a medição é reproduzível.

História em quadros

O módulo contado do começo ao fim, um passo em cada desenho, na ordem em que ele avança.

História em quadros, quinze desenhos, três por fileira. 1, uma peça feita fora: o arquivo da morsa, feito em outro programa, e a cena que carrega o arquivo sem erro; a morsa aperta entre duas mandíbulas o que alguém vai trabalhar; 4 malhas, 2 materiais, 48 triângulos, e uma animação de 3,0 s em que a mandíbula móvel abre e fecha. Legenda: a morsa é o primeiro ativo: o arquivo de uma peça pronta, feita fora do projeto, que a cena carrega. 2, “Dezoito unidades de quê?”: a caixa envolvente, a menor caixa alinhada aos eixos que contém a peça, mede 18,00 × 12,00 × 17,00; na unidade, centímetro lido como metro: 18 m, cem vezes o tamanho dela; no vertical, Z no arquivo e Y na cena, e a morsa deitada; na origem, a base 30 unidades acima do zero do arquivo, e, na cena, a morsa 30 m à frente do lugar dela; nenhum erro, nenhum aviso. Legenda: os três desvios atravessam o carregamento sem mensagem: só aparecem como imagem errada. 3, o buraco no contrato: quem exporta grava em centímetro, com o vertical Z; o arquivo é válido; a cena lê metro, com o vertical Y; a especificação fixa metro e Y, e não obriga quem exporta a segui-la; o texto livre avisa centímetro e vertical Z, mas nenhum importador é obrigado a lê-lo; nenhum campo normativo, que todo importador é obrigado a ler, registra a troca de unidade. Legenda: o formato de troca leva entre programas geometria, materiais e animações; o tamanho no mundo, só uma pessoa sabe. 4, quatro escolhas escritas uma vez: unidade metro; vertical eixo Y; origem onde a peça toca o apoio; frente no sentido positivo de Z; sem convenção, cada peça traz a sua, uma colcha de escalas; com ela, o que chegou contra o que a cena espera vira uma conta; declarada antes, e não descoberta no que chega. Legenda: a convenção da cena se escreve uma vez, num lugar só: é contra ela que cada divergência se acusa. 5, metade se mede, metade alguém escreve: dos números que corrigem os três desvios, a metade medida sai da caixa (o fator de escala, 0,18 ÷ 18,00 = 0,0100, e a base que desce 0,30 m); a metade declarada, o vertical do autor (Z, que dá o giro de −90° em X) e o maior lado real (0,18 m), é de quem conhece a peça; com o fator digitado 0,01 e a mesma peça gravada em milímetro, 180 × 0,01 = 1,8 m, dez vezes o tamanho dela. Legenda: ninguém escolheu 0,0100: a conta se refaz sozinha quando o arquivo muda; digitado, o fator falha em silêncio. 6, girar, escalar, assentar: girar −90° em X, escalar 0,0100, assentar 0,30 m, e cada passo mede a caixa que o anterior deixou; na ordem escalar, assentar, girar, a morsa flutua 36 cm acima do tampo e 38,5 cm para trás, e o laudo registra deslocamento de 0,39 m; na ordem girar, assentar, escalar, ela fica 29,7 m abaixo do tampo, e o laudo registra deslocamento de 30,00 m. Legenda: nesta peça, só girar e escalar trocam de lugar; o assentamento vem por último, e fora do último lugar ele erra sem dar aviso. 7, sete campos que outra pessoa lê: seis descrevem (arquivo, como chegou, como ficou, fator 0,0100, giro −90° em X e deslocamento 0,30 m) e um acusa, a lista de divergências, com três linhas: unidade, 100 unidades por metro; eixo vertical, −90° em X; origem, deslocada 0,30 m da própria base. Fator entre 0,5 e 2 e deslocamento até 1 cm não geram linha. Legenda: o laudo registra o que chegou, o que ficou e o que foi corrigido: outra pessoa confere sem abrir o arquivo. 8, a conversa com a placa: duas cenas comparadas; a cena A tem 1 objeto, 10.000 triângulos e 1 chamada; a cena B tem 1.000 objetos de 10 triângulos, os mesmos 10.000 triângulos e 1.000 chamadas; instanciar ataca as chamadas, simplificar ataca os triângulos; os mesmos triângulos, mil chamadas em vez de uma. Legenda: a chamada de desenho é o pedido à placa para desenhar um objeto, e a preparação custa o mesmo, grande ou pequeno o objeto. 9, 206 parafusos, uma chamada: 2 × 67 + 2 × 36 = 206 cabeças, que ninguém digitou; 24 triângulos cada, 206 × 24 = 4.944; sem instanciar, 206 chamadas e 4.944 triângulos; instanciando, 1 chamada e 4.944 triângulos; a contagem de triângulos não muda; a tabela de posições vai à placa uma vez, na montagem (quando a cena é construída, antes do primeiro quadro). Legenda: instanciar desenha as cópias numa chamada só (o conjunto delas é um lote): move a coluna das chamadas, e os triângulos ficam iguais. 10, a mesma malha, duas distâncias: a engrenagem da mesa, a meio metro do olho, com 224 triângulos e sem nível de detalhe; a prateleira ao fundo, com 24 peças da mesma malha, 224 triângulos cada e 5.376 de perto, 110 cada e 2.640 de longe; 224 viram 110, 51% a menos, onde a diferença não chega ao olho; a troca, a 2,2 m da câmera ao centro da prateleira, liga um lote inteiro e desliga o outro. Legenda: o nível de detalhe é a versão com menos triângulos para quem está longe; o critério é a distância, e não o objeto. 11, unir antes de simplificar: sem unir, 82 triângulos, mas as tampas vão de 112 a 4, um anel oco; unidos pela posição, 338 vértices viram 114, e a simplificada fica com 110 triângulos e 57 vértices; depois, recalcular a normal, a direção que a luz consulta, senão sai mancha, e não buraco; com malha vazia, ou coordenada que não é número de verdade, fica a original, e a observação é escrita. Legenda: unir custa a aresta viva, o canto que a luz não arredonda; ao fundo, é o que se aceita perder. 12, duas contas com o mesmo nome: na folha do programa, as duas se chamam triângulos; o censo soma o que existe, à vista ou não; a leitura conta o que a placa desenhou no quadro que acabou de sair; com a câmera longe da prateleira, os 5.376 triângulos do lote de perto ficam no censo e fora da leitura; a diferença mede o que não foi desenhado, e nunca um erro de contagem. Legenda: censo alto com leitura baixa é uma cena grande vista por um buraco de fechadura, até alguém girar a cabeça. 13, o envelope, agora com o que gastar: dois tetos, o do visor (11,1 ms: 1.000 ÷ 90, supondo 90 quadros por segundo), que é o adotado, e o do computador de mesa (16,7 ms: 1.000 ÷ 60, supondo 60 quadros por segundo); o envelope é o tempo que o programa tem para cada quadro, e o teto é esse tempo escrito no código como número; declarado antes das despesas, que são a morsa (48 triângulos), a borda (4.944 triângulos numa chamada) e a prateleira (5.376 triângulos de perto e 2.640 de longe); o quadro atrasado só sai na vez seguinte: até lá, o aparelho repete a imagem anterior. Legenda: cada quadro é um envelope de onze milissegundos, e o que não couber nele não sai um pouco depois: perde a vez. 14, nenhum número viaja sozinho: a frase “Está rodando bem.” e a pergunta “Em que máquina?”; a máquina de referência é a mais modesta do parque previsto, os aparelhos em que o ambiente vai abrir; a janela de 120 quadros guarda a média e o pior intervalo; a placa de vídeo se escreve pelo nome, ou como “placa não identificada”; a média dilui o engasgo, e o pior intervalo o mostra. Legenda: sem a máquina ao lado, ninguém repete a conta; um nome de placa plausível e não checado é pior que o campo vazio. 15, a linha de base que julga o resto: a morsa no lugar, a borda em lote, a prateleira em dois níveis; a folha deste estado, o texto que o programa escreve na tela com laudo, contagens e medição, vira a linha de base, no lugar dos 440 triângulos das cinco peças do mecanismo, a linha de base anterior; o que vem a seguir, Realidade virtual não imersiva, recebe a cena completa, parada e medida. Legenda: cada recurso novo acrescenta trabalho por quadro, e a primeira queda de desempenho se compara com esta folha, e não com o último recurso.
Figura 7: O módulo do começo ao fim, em quinze desenhos: a peça feita fora; “Dezoito unidades de quê?”; o buraco no contrato; as quatro escolhas; o medido e o declarado; girar, escalar e assentar; os sete campos; a conversa com a placa; os 206 parafusos; a mesma malha em duas distâncias; unir antes de simplificar; as duas contas; o envelope com o que gastar; o número com a máquina; e a linha de base.

Mapa mental

Os tópicos do módulo, do centro para fora, na ordem em que ele os apresenta.

Mapa mental com o título no centro e doze ramos, em sentido horário a partir do ramo de cima, à direita. A cena deixa de bastar a si mesma: a morsa chega pronta, feita fora; “Dezoito unidades de quê?”; três desvios, nenhum erro; cinco informações; a quinta, a máquina do número, sem rastro. O que a especificação fixa e o que não alcança: fixa metro e Y, sem obrigar quem exporta a segui-la; o contrato público e o buraco nele; quatro escolhas escritas uma vez; com a convenção, a diferença vira conta. O que se mede e o que se declara: a caixa envolvente só diz onde a forma começa e termina; o fator de escala sai de uma divisão; o número que só uma pessoa sabe; o fator digitado falha em silêncio. Girar, escalar, assentar: cada passo mede a caixa do anterior; o sinal do giro; a base que vira lateral. O laudo, e o que ele deixa conferir: como chegou e como ficou; seis campos descrevem, um acusa; por que 0,998 não entra na lista; o que mais veio dentro do arquivo. Duas técnicas, dois problemas: a chamada custa por objeto, não por tamanho; instanciar ataca as chamadas; simplificar ataca os triângulos; quem troca uma técnica pela outra; o que nenhuma das duas resolve. Repetição tratada como repetição: 206 parafusos que ninguém digitou; a tabela de posições, escrita uma vez, na montagem; 206 chamadas passam a uma; a coluna dos triângulos não se move. A mesma malha, duas decisões opostas: o critério é a distância; pedaços que não se tocam; unir pela posição antes de simplificar; a normal recalculada depois; o resultado precisa ser conferido. Duas contas com o mesmo nome: na folha do programa, as duas se chamam triângulos; o que existe e o que foi desenhado; o lote aparece separado; o buraco de fechadura. O envelope, agora com o que gastar: o teto declarado antes da despesa; dois tetos, e o do visor adotado; o que o medidor não responde. A máquina viaja junto do número: a mais modesta do parque previsto; a média dilui o engasgo; o pior intervalo dos 120 quadros mais recentes; “não identificada”, e não um nome plausível. A linha de base que julga o resto: a cena completa e parada; a folha do programa neste estado vira linha de base; cada recurso novo se compara com ela.
Figura 8: Os tópicos e subtópicos do módulo, do centro para fora, em sentido horário a partir do ramo de cima, à direita.

Painel do conhecimento

Conceitos

  • Ativo: o arquivo de uma peça pronta, feita fora do projeto, que a cena carrega.
  • Formato de troca aberto: o tipo de arquivo, com especificação pública, que leva a geometria, os materiais e as animações de um programa de autoria até um ambiente em execução; o tamanho da peça no mundo ele não transporta.
  • Convenção da cena: a unidade, o eixo vertical, a origem e a frente, escritos uma vez, num lugar só, antes de chegar o primeiro ativo, para haver contra o que acusar divergência.
  • Ajuste de importação: o que traz o ativo à convenção; a metade medida sai da caixa envolvente, e a declarada é escrita por quem conhece a peça.
  • Laudo: o registro do que chegou, do que ficou e do que foi corrigido, com a lista de divergências.
  • Chamada de desenho: o pedido à placa de vídeo para desenhar um objeto, com custo fixo por objeto, que não cresce com o tamanho dele.
  • Instanciação: desenhar as cópias de uma forma numa chamada só (o conjunto de cópias é um lote); a contagem de triângulos não muda.
  • Nível de detalhe: a versão com menos triângulos, exibida no lugar da original quando o objeto está longe o bastante para a diferença não chegar ao olho; o critério é a distância; antes de simplificar, os vértices na mesma posição se unem, e depois o resultado se confere.
  • Censo e leitura: o que a cena tem, à vista ou não, e o que a placa desenhou no quadro que acabou de sair; a diferença entre os dois é o que não foi desenhado, e nunca erro.
  • Máquina de referência: o aparelho contra o qual a cena é orçada, o mais modesto do parque previsto; nenhum número de desempenho circula sem ela.

Exemplos

  • O arquivo correto e a peça errada: escrito em centímetro, válido pelas regras do formato, sem um campo que o programa leia denunciando a troca.
  • A colcha de escalas: sem convenção escrita, cada ativo traz a sua, e ninguém consegue reconciliar depois.
  • O fator 0,01 digitado, que acerta a morsa e põe dez vezes maior o primeiro ativo em milímetro.
  • O fator de 0,998, ruído de exportação, contra a troca de unidade, que erra por ordens de grandeza.
  • A animação que tivesse relógio próprio, e não o intervalo que move o resto da cena, andaria mais rápido no computador que desenha mais rápido.
  • Quatrocentos parafusos minúsculos, desenhados um a um: quatrocentas conversas com a placa para pouquíssimos triângulos cada, e a cena engasgando sem que a contagem de triângulos assuste ninguém.
  • A cena grande vista por um buraco de fechadura: censo alto, leitura baixa, até alguém girar a cabeça.
  • “Está rodando bem”: uma frase sem sujeito, porque não diz em que máquina.

Diagrama

%%{init: {"flowchart": {"useMaxWidth": false}, "sequence": {"useMaxWidth": false}, "class": {"useMaxWidth": false}, "state": {"useMaxWidth": false}, "er": {"useMaxWidth": false}}}%%
flowchart TD
    C["censo da cena<br/>estático, percorre a árvore da cena"]
    L["leitura do quadro<br/>dinâmica, conta o que a placa<br/>desenhou no quadro que saiu"]
    C --> P1["quanto esta cena pesa"]
    L --> P2["quanto custou o que estava<br/>no campo de visão"]
    P1 --> DIF["a diferença entre os dois"]
    P2 --> DIF
    DIF --> S["o que ficou fora do enquadramento<br/>e o nível de detalhe desligado:<br/>nunca erro de contagem"]
    S --> J["câmera parada na tela do computador:<br/>leitura fixa e confortável"]
    S --> V["cabeça girando no visor:<br/>o que estava fora entra"]

Figura 9: As duas contas da mesma cena, e o que a diferença entre elas mede.

Evidências

  • Contado na importação: a morsa tem 4 malhas, 48 triângulos, 2 materiais e uma animação de 3,0 s; chega com 18,00 × 12,00 × 17,00 unidades do arquivo e fica com 18,0 × 17,0 × 12,0 cm, com fator 0,0100.
  • No próprio arquivo da morsa, em campos de texto livre: centímetro e eixo vertical Z; os vértices põem a base 30 unidades acima da origem.
  • Contado pelo programa: 206 cabeças de parafuso, 24 triângulos cada, 4.944 na borda; 206 chamadas sem instanciar, 1 instanciando.
  • Contado pelo programa: a engrenagem vai de 224 a 110 triângulos, e os vértices de 338 a 114 na união pela posição e a 57 na simplificação; nas 24 peças da prateleira, 5.376 viram 2.640.
  • Contado sem a união: 82 triângulos, e só 4 dos 112 triângulos das tampas; a função pronta que só junta vértices iguais em tudo não une nenhum dos 338.
  • Nenhum número de desempenho desta cena foi medido, em máquina alguma.

Referências

  • Este módulo não cita obra. Os fatos vêm de três procedências: a especificação pública do formato de troca, que fixa o metro e o eixo Y; o próprio arquivo da morsa, com o que ele traz em texto livre; e as contagens que o programa faz da cena.

Aplicações

  • No projeto, as tarefas do módulo pedem o mesmo caminho: importar uma peça com convenção e laudo, tratar a repetição e a distância, e medir com a máquina ao lado.
  • No diagnóstico de um quadro lento, a primeira pergunta é qual coluna está grande, a das chamadas ou a dos triângulos.
  • No módulo seguinte, Realidade virtual não imersiva, a cena completa, parada e medida é a que vai ser exibida.
  • Em todos os módulos seguintes, a folha do programa neste estado é a linha de base: a primeira queda de desempenho se compara com ela, e não com o último recurso acrescentado.

Mapa conceitual

DicaAntes de olhar

Escreva num papel: formato de troca aberto, ajuste de importação, convenção da cena, caixa envolvente, fator de escala, laudo, folha do programa, instanciação, lote, censo, máquina de referência, chamada de desenho, nível de detalhe, leitura do quadro, medidor, triângulos, união pela posição, distância, teto, envelope do quadro. Ligue os conceitos com setas, e escreva em cada seta um verbo que diga qual é a relação. Depois compare com o mapa.

Mapa conceitual. O formato de troca aberto deixa sem campo normativo o tamanho da peça, que entra no ajuste de importação. O ajuste de importação traz o que chegou à convenção da cena. A caixa envolvente dá, por divisão, o fator de escala, e o fator de escala é parte da metade medida do ajuste de importação. O laudo registra o que foi corrigido pelo ajuste de importação e acusa divergências contra a convenção da cena. A folha do programa traz como primeira parte o laudo, traz, antes dos números, a máquina de referência, e traz, na mesma página, o censo. A máquina de referência acompanha cada número do medidor. O medidor compara o tempo de cada quadro com o teto, e o teto é, escrito no código como número, o envelope do quadro. A chamada de desenho se paga no envelope do quadro, e os triângulos também se pagam nele; a chamada de desenho não se lê na contagem de triângulos. A instanciação faz de muitas cópias uma só chamada de desenho, não muda a contagem de triângulos e desenha numa chamada só o lote. O nível de detalhe corta, longe do olho, os triângulos, tem como critério a distância e é, nesta cena, um lote. A união pela posição é o pré-requisito do nível de detalhe. O censo conta como uma chamada, e como o produto de triângulos por cópia, o lote, e difere, e nunca por erro, da leitura do quadro. A leitura do quadro deixa fora o lote desligado do nível de detalhe.
Figura 10: Os conceitos do módulo ligados por frases de ligação. Cada seta, lida da origem ao destino, é uma afirmação do módulo.

Folha de consulta

Convenção e ajuste

  • convenção da cena: unidade metro; vertical eixo Y; origem no ponto em que a peça toca o apoio; frente no sentido positivo de Z
  • metade medida, da caixa envolvente: o fator de escala e o assentamento
  • metade declarada, por quem conhece a peça: o vertical do autor e o maior lado real, em metros
  • fator = maior lado real ÷ maior lado da caixa: 0,18 ÷ 18,00 = 0,0100
  • a mesma peça gravada em milímetro mede 180: 0,18 ÷ 180 = 0,001, sem mexer no programa
  • ordem: girar, escalar, assentar; nesta peça, só girar e escalar trocam de lugar

O laudo

  • sete campos: arquivo, como chegou, como ficou, fator, giro, deslocamento, lista de divergências
  • morsa: chega com 18,00 × 12,00 × 17,00 unidades do arquivo; fica com 18,0 × 17,0 × 12,0 cm
  • as três linhas da morsa: unidade, 100 unidades por metro; eixo vertical, −90 graus em X; origem, deslocada 0,30 m da própria base
  • fator entre 0,5 e 2 não gera linha; deslocamento acima de 1 cm gera
  • a linha do eixo vertical entra sempre que o giro declarado não é zero
  • sem divergência acima da tolerância, a lista diz isso, e não sai vazia

Chamadas e triângulos

Na cena Chamadas Triângulos
borda, sem instanciar 206 4.944
borda, instanciando 1 4.944
prateleira, de perto 1 5.376
prateleira, de longe 1 2.640
  • 206 cabeças: 2 × 67 + 2 × 36; 24 triângulos cada
  • uma peça da prateleira: 224 triângulos de perto, 110 de longe, 51% a menos
  • a troca de nível: a 2,2 m da câmera ao centro da prateleira, um lote inteiro por vez

Simplificar com conferência

  • antes: tirar a normal e a coordenada de textura de uma cópia da malha, e unir os vértices pela posição: 338 viram 114
  • simplificada: 110 triângulos, 57 vértices
  • depois: recalcular as normais, senão sai mancha
  • malha vazia ou coordenada inválida: fica a original, e a observação vai para a folha do programa, que a definição chama de relatório
  • a conferência não acusa buraco: a malha furada não está vazia

Censo e leitura

  • censo: percorre a árvore da cena e soma o que existe, à vista ou não
  • leitura: o que a placa desenhou no quadro que acabou de sair
  • a diferença: o que ficou fora do enquadramento e o nível de detalhe desligado
  • o lote conta uma chamada, e triângulos por cópia × cópias
  • câmera longe da prateleira: os 5.376 do lote de perto ficam fora da leitura
  • câmera perto: ficam fora os 2.640 do lote de longe, os 4.944 da borda e os 524 das malhas soltas, fora de lote (a mesa e as peças sobre ela)

Teto, medidor e máquina

  • visor, supondo 90 quadros por segundo: 1.000 ÷ 90 ≈ 11,1 ms; computador de mesa, supondo 60: 1.000 ÷ 60 ≈ 16,7 ms; esta cena adota o do visor
  • o teto se declara antes da despesa
  • o medidor guarda, numa janela de 120 quadros, a média, o pior intervalo e quantos quadros passaram do teto; a folha do programa não imprime essa contagem
  • a máquina se escreve antes dos números, no mesmo lugar em que eles saem
  • placa que a plataforma não informa: “não identificada”, com o motivo

Erros previsíveis

  • “o arquivo veio quebrado”: ele é válido; o desencontro é de convenção
  • “o formato de troca carrega a escala”: ele fixa metro e não obriga quem exporta a segui-la; o tamanho da peça, quem sabe é uma pessoa
  • “a importação avisa quando algo está errado”: o carregamento dá certo nos três desvios; quem avisa é a comparação contra a convenção escrita
  • “basta digitar 0,01”: o primeiro ativo em milímetro entra dez vezes maior, em silêncio
  • “a ordem dos ajustes é indiferente”: assentar antes de girar assenta a peça pelo lado que vira lateral, sem erro nem aviso
  • “instanciar reduz os triângulos”: os 4.944 continuam 4.944; cai a coluna das chamadas
  • “nível de detalhe reduz chamadas”: ele ataca o triângulo; e o nível de detalhe pronto das bibliotecas, que troca peça por peça, desmancha o lote e devolve uma chamada por peça
  • “simplificar sempre compensa”: perto do olho, é trabalho jogado fora
  • “o algoritmo funciona direto sobre qualquer malha”: sem unir, as tampas da engrenagem ficam com 4 dos 112 triângulos
  • “censo e leitura deveriam bater”: a diferença é o que não foi desenhado naquele quadro
  • “a média basta”: ela dilui o engasgo; o pior intervalo o mostra
  • “medir no computador mais rápido serve”: a decisão sai oposta à que a máquina modesta pediria (acrescentar em vez de cortar), e o ambiente estoura nos aparelhos de uso
  • “o teto pode ser declarado depois”: declarado depois, vira balanço do que já foi gasto