O sufixo convencional para arquivos OFF
é .off.
Sintaxe:
[ST][C][N][4][n]OFF # Palavra chave do cabeçalho [Ndim] # Dimensão do espaço dos vértices, presente somente se nOFF # estiver também presente NVértices NFaces NArestas # NArestas não é usado nem checado x[0] y[0] z[0] # Vértices, possivelmente com normais, # cores, e/ou coordenadas de textura, nessa ordem, # se os prefixoN
,C
,ST
# estiverem presentes. # Se 4OFF, cada vértice possui 4 componentes, # incluindo uma componente final homogênea. # Se nOFF, cada vértice possui Ndim componentes. # Se 4nOFF, cada vértice possui Ndim+1 componentes. ... x[NVértices-1] y[NVértices-1] z[NVértices-1] # Faces # Nv = # vértices na referida face # v[0] ... v[Nv-1]: índices dos vértices # no intervalo 0..NVértices-1 Nv v[0] v[1] ... v[Nv-1] colorspec ... # colorspec colar contínuo v[Nv-1] # até o aparecer um caractere de fim de linha; pode ser de 0 a 4 # números # nenhum: padrão # inteiro: índice do mapa de cores # 3 ou 4 inteiros: valores RGB[A] no intervalo 0..255 # 3 ou 4 números em ponto flutuante: valores RGB[A] no intervalo 0..1
Arquivos OFF
(nome para "object file format" formato de arquivo de objeto) representa coleções
de polígonos planos com vértices possivelmente compartilhados, um caminho conveniente para
descrever poliedros. Os polígonos podem ser côncavos mas não existe
suporte para polígonos contendo buracos.
Um arquivo OFF
pode começar com a palavra chave OFF
; isso é
recomendado mas também é opcional, muitos arquivos existentes precisam dessa palavra chave.
Três inteiros ASCII seguem a palavra chave OFF
: NVértices, NFaces, e
NArestas. Esses são o número de vértices, faces, e arestas,
respectivamente. Atualmente o software não utiliza nem verifica NArestas; ele
não precisa ser correto mas deve estar presente.
As coordenadas do vértice seguem: dimensão * Nvértices
valores em ponto flutuante. Esses valores em ponto flutuante estão implicitamente numerados de 0 a
NVértices-1. A dimensão é ou 3 (o padrão) ou 4 (especificado pelo
caractere chave 4
diretamente antes da palavra chave OFF
).
Seguindo esses acima citados estão as descrições das faces, tipicamente escritos com uma linha por face. Cada linha tem a forma
N Vert1 Vert2 ... VertN [cor]
Aqui N é o número de vértices sobre a considerada face, e Vert1 a VertN são índices dentro da lista de vértices (no intervalo 0..NVértices-1).
O modificador opcional cor no final da linha acima pode tomar várias formas. Caracteres de fim de linha são significativos nesse ponto: a descrição cor inicia-se após VertN e termina com o caractere de fim de linha (ou próximo caractere cerquilha # representativo de comentário). Uma cor pode ser:
Para o caso de um inteiro, o mapa de cores é lido diretamente do arquivo cmap.fmap em sua forma atual no diretório data do Geomview. Algum melhor mecanismo para fornecer um mapa de cor será fornecido provavelmente algum dia.
O significado de "cor padrão" varia. Se nenhuma face do objeto tem uma cor, tudo recebe como herança a cor material padrão do ambiente. Se alguma mas não todas as faces possuem cores, o padrão é cinza (R,G,B,A=.666).
Um formato [ST][C][N][n]OFF BINARY
é aceito; veja Formato binario. Esse formato assemelha-se ao formato ASCII em quase tudo que você poderia esperar,
com inteiros de 32-bit para todos os contadores e índices de vértice e números em ponto flutuante de
32-bit para posições de vértice (e coordenadas de textura ou cores de vértice ou
retas normais se algum dos formatos
COFF
/NOFF
/CNOFF
/STCNOFF
/etc. estiver presente).
Exceção: cada um dos índices de face do vértice são seguidos por um inteiro indicando quantas componentes de cor o acompanham. Componentes de cor de face devem ser números em ponto flutuante, não valores inteiros. Dessa forma uma face triangular pouco colorida pode ser representada como
int int int int int 3 17 5 9 0
enquanto a mesma face colorida com vermelho pode ser
int int int int int float float float float 3 17 5 9 4 1.0 0.0 0.0 1.0