Iniciando no VRML: Nodes de transformação - Mudando as características dos objetos
Autor/fonte: Desconhecido
Tweet
Material - Dando cores aos objetos
O node Material define características dos objetos como cor e brilho. Os parâmetros que são usados determinam a forma como a luz irá refletir sobre os objetos. São eles:
. diffuseColor - reflexão da luz que estiver incidindo sobre um objeto. Quanto mais diretamente a luz incidir sobre a superfície do objeto, mais luz será refletida. É usado para dar cor aos objetos;
. ambientIntensity - especifica quanto da luz ambiente um objeto deve refletir;
. shininess e specularColor - determinam a luminosidade de pontos de reflexão com maior quantidade de luz (highlight points). Se o ângulo que a luz incidir for próximo do ângulo de observação, o valor de specularColor é adicionado ao cálculo de diffuseColor e ambientIntensity. Shininess determina o brilho do objeto. Quanto maior seu valor, maior o brilho;
. emissiveColor - usado para representar objetos incandescentes. Usado quando todas as outras cores são preta (0,0,0);
. transparency - determina o grau de transparência do objeto, que varia de 0.0 (totalmente opaco) a 1.0 (totalmente transparente).
A cor dos objetos é formada pela composição das cores básicas vermelho, verde e azul (RGB), cujos valores variam entre 0 e 1. Sendo assim, se quisermos um objeto amarelo temos que especificar (1,1,0), ou seja, 100% de vermelho e verde e nada de azul. Vamos acrescentar cor a alguns objetos do exemplo do pinheiro:
Rotation - Rotacionando objetos
O node Rotation é usado para rotacionar objetos no espaço. Como exemplo, vamos rever o node Cylinder. Por default, todo cilindro é criado na posição vertical. Se quisermos um cilindro na horizontal, basta utilizarmos o node Rotation :
No exemplo acima, o cone é rotacionado 90 graus (1.57 radianos) sobre o eixo-z ( 0 0 1 ).
Translation - Deslocando objetos
Este node é parecido com o Rotation, mas é usado para deslocar objetos. Veja o exemplo abaixo :
No exemplo acima, criamos um cone na origem (0,0,0), pois este é o primeiro objeto que está sendo criado e antes dele não foi aplicado nenhum deslocamento ou rotação. Logo após a criação do cubo, usamos o Translation para deslocarmos os objetos subseqüentes para a posição (10,0,0). Isto significa que todo objeto que for criado a partir daí terá seu centro nesta posição. Sendo assim, a esfera que é criada em seguida terá seu centro na posição (10,0,0). Depois aplicamos mais uma vez o Translation. Repare no valor do deslocamento : -20 em relação ao eixo-x. Isto faz com que o cone que é criado em seguida esteja localizado a -20 unidades de distância da esfera em relação ao eixo-x, e a -10 unidades de distância do cubo.
Separator - Definindo a hierarquia dos objetos
Este node define a hierarquia dos objetos dentro do cenário. É usado para separar um grupo de objetos do resto do ambiente, ou seja, as características desse grupo serão diferentes do resto. Veja o exemplo:
Quando definimos a cor amarela pela primeira vez (diffuseColor 1 1 0), esperamos que todos os objetos subseqüentes sejam desta cor. No entanto, apenas o cone é amarelo. Isto se deve ao uso do node Separator, que separa o cubo e a esfera do resto do ambiente. As propriedades definidas para estes objetos (posição e cor) não irão interfirir nos outros objetos que estiverem fora deste contexto ou hierarquia. Repare no translation -10 0 0; não foi necessário deslocar -20 unidades porque este é o primeiro deslocamento feito no contexto em que está o cone. Também a cor verde só vale dentro do contexto do cubo e da esfera.
Texture2 - Trabalhando com texturas
Este node é usado para aplicar texturas aos objetos.
LOD - Definindo o nível de detalhe
Este node determina o nível de detalhe de um objeto ou conjunto de objetos dependendo da distância em que estes se encontram do observador. Isto torna rápida a visualização porque objetos com menos importância na cena podem ser substituídos por outros menos complexos. Por exemplo, um carro que estiver a 1000 unidades de distância pode ser substituído por um cubo. Um cubo é bem mais simples que um carro. O objeto pode também ter mais de um nível de detalhe. O carro pode ser representado como um simples cubo a 1000 unidades de distância, dois cubos a 500 unidades, dois cubos e quatro esferas a 500 etc. Exemplo:
O que acontece no exemplo acima á o seguinte: no primeiro nível de detalhe são mostrados todos os objetos. Isto significa que o observador está posicionado a menos de 15 unidades dos objetos. Se o observador estiver entre 15 e 25 unidades, é mostrado apenas uma esfera e um cubo. Finalmente, se o observador estiver posicionado a mais de 25 unidades de distância apenas um cubo é mostrado.
O node Material define características dos objetos como cor e brilho. Os parâmetros que são usados determinam a forma como a luz irá refletir sobre os objetos. São eles:
. diffuseColor - reflexão da luz que estiver incidindo sobre um objeto. Quanto mais diretamente a luz incidir sobre a superfície do objeto, mais luz será refletida. É usado para dar cor aos objetos;
. ambientIntensity - especifica quanto da luz ambiente um objeto deve refletir;
. shininess e specularColor - determinam a luminosidade de pontos de reflexão com maior quantidade de luz (highlight points). Se o ângulo que a luz incidir for próximo do ângulo de observação, o valor de specularColor é adicionado ao cálculo de diffuseColor e ambientIntensity. Shininess determina o brilho do objeto. Quanto maior seu valor, maior o brilho;
. emissiveColor - usado para representar objetos incandescentes. Usado quando todas as outras cores são preta (0,0,0);
. transparency - determina o grau de transparência do objeto, que varia de 0.0 (totalmente opaco) a 1.0 (totalmente transparente).
A cor dos objetos é formada pela composição das cores básicas vermelho, verde e azul (RGB), cujos valores variam entre 0 e 1. Sendo assim, se quisermos um objeto amarelo temos que especificar (1,1,0), ou seja, 100% de vermelho e verde e nada de azul. Vamos acrescentar cor a alguns objetos do exemplo do pinheiro:
#VRML V1.0 ascii
Material {
diffuseColor 0 1 0
shininess 0
}
Cone {height 30
bottomRadius 10
}
Material {
diffuseColor 64 0 0
shininess 1
}
Translation {
translation 0 -22.5 0
}
Cylinder {radius 3
height 15
}
Rotation - Rotacionando objetos
O node Rotation é usado para rotacionar objetos no espaço. Como exemplo, vamos rever o node Cylinder. Por default, todo cilindro é criado na posição vertical. Se quisermos um cilindro na horizontal, basta utilizarmos o node Rotation :
#VRML V1.0 ascii
Rotation {
rotation 0 0 1 1.57
}
Cylinder {}
No exemplo acima, o cone é rotacionado 90 graus (1.57 radianos) sobre o eixo-z ( 0 0 1 ).
Translation - Deslocando objetos
Este node é parecido com o Rotation, mas é usado para deslocar objetos. Veja o exemplo abaixo :
#VRML V1.0 ascii
Cube {}
Translation {
translation 10 0 0
}
Sphere {}
Translation {
translation -20 0 0
}
Cone {}
No exemplo acima, criamos um cone na origem (0,0,0), pois este é o primeiro objeto que está sendo criado e antes dele não foi aplicado nenhum deslocamento ou rotação. Logo após a criação do cubo, usamos o Translation para deslocarmos os objetos subseqüentes para a posição (10,0,0). Isto significa que todo objeto que for criado a partir daí terá seu centro nesta posição. Sendo assim, a esfera que é criada em seguida terá seu centro na posição (10,0,0). Depois aplicamos mais uma vez o Translation. Repare no valor do deslocamento : -20 em relação ao eixo-x. Isto faz com que o cone que é criado em seguida esteja localizado a -20 unidades de distância da esfera em relação ao eixo-x, e a -10 unidades de distância do cubo.
Separator - Definindo a hierarquia dos objetos
Este node define a hierarquia dos objetos dentro do cenário. É usado para separar um grupo de objetos do resto do ambiente, ou seja, as características desse grupo serão diferentes do resto. Veja o exemplo:
#VRML V1.0 ascii
Material { diffuseColor 1 1 0 }
Separator {
Material {
diffuseColor 0 1 0
}
Cube {}
Translation {
translation 10 0 0
}
Sphere {}
}
Translation {
translation -10 0 0
}
Cone {}
Quando definimos a cor amarela pela primeira vez (diffuseColor 1 1 0), esperamos que todos os objetos subseqüentes sejam desta cor. No entanto, apenas o cone é amarelo. Isto se deve ao uso do node Separator, que separa o cubo e a esfera do resto do ambiente. As propriedades definidas para estes objetos (posição e cor) não irão interfirir nos outros objetos que estiverem fora deste contexto ou hierarquia. Repare no translation -10 0 0; não foi necessário deslocar -20 unidades porque este é o primeiro deslocamento feito no contexto em que está o cone. Também a cor verde só vale dentro do contexto do cubo e da esfera.
Texture2 - Trabalhando com texturas
Este node é usado para aplicar texturas aos objetos.
#VRML V1.0 ascii
Texture2 {
filename "granite.gif"
}
Sphere {}
LOD - Definindo o nível de detalhe
Este node determina o nível de detalhe de um objeto ou conjunto de objetos dependendo da distância em que estes se encontram do observador. Isto torna rápida a visualização porque objetos com menos importância na cena podem ser substituídos por outros menos complexos. Por exemplo, um carro que estiver a 1000 unidades de distância pode ser substituído por um cubo. Um cubo é bem mais simples que um carro. O objeto pode também ter mais de um nível de detalhe. O carro pode ser representado como um simples cubo a 1000 unidades de distância, dois cubos a 500 unidades, dois cubos e quatro esferas a 500 etc. Exemplo:
#VRML V1.0 ascii
LOD {
range [15, 25]
center 0 0 0
#primeiro nível
Separator {
Cube {}
Translation {
translation 3 0 0
}
Sphere {}
Translation {
translation 3 0 0
}
Cone {}
}
#segundo nível
Separator {
Cube {}
Translation {
translation 3 0 0
}
Sphere {}
}
#terceiro nível
Separator {
Cube {}
}
}
O que acontece no exemplo acima á o seguinte: no primeiro nível de detalhe são mostrados todos os objetos. Isto significa que o observador está posicionado a menos de 15 unidades dos objetos. Se o observador estiver entre 15 e 25 unidades, é mostrado apenas uma esfera e um cubo. Finalmente, se o observador estiver posicionado a mais de 25 unidades de distância apenas um cubo é mostrado.
Enviado por xKuRt em 12/11/2006 às 09:55
Avaliação
Esta publicação ainda não foi avaliada!
A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.
Comentários
Este artigo ainda não foi comentado ou o(s) comentário(s) que foi(ram) enviado(s) a ele ainda não foi(ram) publicado(s).
Envio de comentário:
Domingo, 19 de Maio de 2013
Área restrita
Leitura recomendada
Domain-Driven Design - Atacando as Complexidades no Coração do Software
Últimas publicações
Top 5 membros
- dddweb213 pts
- andersonop207 pts
- Jotah197 pts
- fbinasco165 pts
- fredbcn117 pts
Últimos membros cadastrados
- valkyem 18/05
- Info Galaxyem 17/05
- notwenem 16/05





