Next: , Previous: SPHERE, Up: Formatos de Arquivo de Objeto


4.2.9 Arquivos do Tipo INST

O sufixo convencional para um arquivo INST é .inst.

Não existe formato INST BINARY.

Um INST aplica uma transformação 4x4 (ou (N+1)x(N+1) no contexto de ND-viewing) a outro objeto OOGL. Um arquivo do tipo INST inicia-se com INST seguido de as seções mostradas adiante que podem vir em qualquer ordem:

     geom oogl-object

especifica o objeto OOGL a ser instanciado. Veja Referencias, para a sintaxe de um oogl-object. palavra chave unit é um sinônimo para geom.

     transform   ["{"] transformação 4x4 ["}"]

especifica uma matriz de transformação simples. Ou a matriz pode aparecer literalmente como 16 números, ou a matriz pode aparecer como uma referência a um objeto "transform", i.e.

         "<" arquivo-contendo-matriz-4x4

ou

         ":" símbolo-representando-transformação-de-objeto

Outra forma de especificar a transformação é

     transforms
         objeto-oogl

O objeto-oogl deve ser um objeto TLIST (lista de transformações), ou uma LIST cujos membros dessa lista são objetos TLIST mais recentes. Com efeito, a palavra chave transforms toma uma coleção de matrizes 4x4 e replica o objeto geom, fazendo uma cópia para cada matriz 4x4.

Se nem a palavra chave transform nem a palavra chave transforms aparecerem, ne-nhuma transformação é aplicada (atualmente a identidade é aplicada). Você pode usar isso para, e.g., empacotar uma aparência em torno de um objeto externo fornecido, através de uma LIST de membros simples pode-se fazer isso mais eficientemente.

Veja Matrizes de transformacao, para o formato de matriz.

A cópia de um objeto geométrico simples por meio de um objeto TLIST (veja ‘transforms’ acima) pode ser útil para transformar coordenadas de textura através de outra lista de transformações; essa lista pode ser especificada por

     txtransforms
         objeto-TLIST

O número de transoformações de textura deve coincidir com o número de transformações geométricas. O objeto SPHERE (Veja Sphere Objects) utiliza essa técnica para gerar um esfera completamente texturizada fora de alguma fração de uma esfera (usualmente um octante).

Uma transformação (N+1)-dimensional pode ser especificada por

     ntransform ["{"] N+1 N+1 (N+1)x(N+1) floats ["}"]

A linha acima fornece uma matriz de transformação N+1-dimensional. Ou a matriz pode aparecer literalmente como (N+1)x(N+1) números, ou pode existir uma referência a um objeto ‘ntransform’, i.e.

         "<" arquivo-contendo-matriz-(N+1)x(N+1)

ou

         ":" símbolo-representando-objeto-ntransform

Veja Matrizes de transformacao ND, para o formato de matriz.

Mais dois campos INST são aceitos: location e origin.

Note que location bem como origin são ignorados se esse objeto INST realiza uma ntransform. Também, se a visualização ND está ativada (comando ND-axes, veja GCL) então objetos INST com origin diferente de local não irão ser desenhados, embora o material location possa trabalhar (ou não).

     location [global ou camera ou ndc ou screen ou local]

Normalmente um INST especifica uma posição relativa a seu objeto pai; o campo location permite colocar um objeto em qualquer lugar.

location local é o padrão; o objeto está posicionado relativametne a seus genitores.

     origin [global ou camera ou ndc ou screen ou local] x y z

O campo origin reposiciona o conteúdo da INST de forma que o local da orígem seja o ponto especificado do sistema de coordenadas fornecido. A menos que location seja especificado, essa opção não muda a orientação, somente a escolha da orígem. Ambas as opções location e origin podem ser usadas juntas.

Então por exemplo

     { INST
       location screen
       origin ndc 0 0 -.99
       geom { < xyz.vect }
       transform { 100 0 0 0  0 100 0 0  0 0 -.009 0   0 0 0 1 }
     }

coloca a orígem de xyz.vect no centro da janela, apenas transformando o plano de corte mais próximo. O comprimento da unidade das arestas X e Y são ajustados proporcionalmente para ter o comprimento de apenas 100 unidades de tela – pixels – , independentemente do tamanho da janela.