Loading
Nota de Estudos
Study Reminders
Support
Text Version

Transformações em 3D

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Olá e bem-vindo a palestra número 12 no curso Gráficos de informática. Por isso, estamos, como você pode se lembrar, discutindo o pipeline gráfico, e como estamos fazendo para as últimas palestras, vamos começar por ter uma reveja nos estágios de pipeline para que possamos nos lembrar melhor.Então, há 5 estágios no pipeline gráfico, a primeira etapa é representação de objetos, segundo estágio é modelagem ou transformação geométrica terceira etapa é iluminação ou atribuindo cor a pontos nos objetos, quarta etapa está visualizando pipeline onde transferimos um objeto 3D para um avião de visualização 2D. A transformação acontece por meio de 5 sub estágios visualização transformação, recorte, remoção de superfície oculta, transformação de projeção e janela para os transformadores de viewport e o quinto e último estágio é de conversão de varredura. Aqui, nós realmente mapeamos o objeto de plano de visualização para a grade do pixel na tela.E como já mencionamos anteriormente, cada um desses estágios ocorre em sistemas coordenados específicos, representação de objetos é feita em sistema de coordenadas local ou objeto, transformação de modelagem aqui nós realmente transferimos de sistema de coordenadas local para mundo, iluminação ocorre em coordenadoria mundial, então visualização de pipeline ocorre em 3 sistemas de coordenadas; coordenadoria mundial, coordenada de visualização e então coordenadoria de dispositivos. E, finalmente, a conversão de varredura ocorre em sistema de coordenadas de tela. Por isso, as diferentes coordenadas estão envolvidas em diferentes etapas do pipeline. Entre estes estágios, até agora discutimos a primeira representação de objeto de estágio. Atualmente estamos discutindo a segunda etapa que é modelagem ou transformação geométrica. E no último par de palestras, discutimos a ideia básica de transformação incluindo como realizar transformações complicadas em termos de sequência de transformação básica, mas toda nossa discussão se baseou em transformações de 2D.Em outras palavras, estávamos realizando transformações em quadro de referência dimensional de 2. Agora, vamos ter uma olhada na transformação 3D. Por isso, a transformação 3D será tema de discussão para nossa palestra hoje.Então, quando falamos de transformação 3D, essencialmente nos referimos a todas as transformações básicas que já discutimos em 2D mas de forma modificada. E as transformações são na verdade mesmo como em 2D, mas sua representação é diferente. Em 2D, discutimos 4 transformações básicas, nomeadamente a tradução, rotação, escalonamento e cisteamento. Agora, estes 4 restos de transformações básicas em palavra 3D também. Então, mais cedo nós tínhamos usado sistema de coordenadas homogêneo para representar a transformação. Usaremos aqui o mesmo sistema de coordenadas para representar a transformação do 3D também, mas com a diferença. Agora, mais cedo na representação matricial, utilizamos 3 matrizes × 3 no sistema de coordenadas homogêneas para representar cada uma das transformações. Em 3D, utilizamos 4 matrizes × 4 para representar cada transformação. No entanto, o fator homogêneo h permanece o mesmo que é h=1.Então, essencialmente estamos usando em vez de 3 × 3, estamos usando 4 matrizes de transformação de 4 para representar uma transformação em 3D, e o fator homogêneo h permanece igual a 1 porque estamos lidando com a transformação de modelagem. Mas há certas diferenças e devemos ter em mente essas diferenças, as diferenças são primordiais com relação às transformações de 2; rotação e cisalhamento. é diferente.Em rotação anteriormente, assumimos que as rotações estão ocorrando com respeito ao eixo z ou algum eixo que seja paralelo a ele. Essa foi a nossa suposição básica em rotações 2D. Em 3D essa suposição não é mais válida, aqui temos 3 rotações básicas com relação a cada eixo princípio x, y e z. Antes tínhamos definido apenas uma rotação com relação ao eixo z. Agora, em 3D estamos definindo 3 rotações básicas com relação ao eixo princípio de 3 x, y e z, portanto, número de transformações básicas mudou. Então, mais cedo nós tínhamos um para rodízio, agora temos 3 para rodízio também. Também anteriormente, não enfrentávamos essa situação quando definimos rotação com relação ao eixo z. Agora aqui, matriz de transformação que devemos utilizar para representar rotação sobre qualquer eixo arbitrário que significa, qualquer eixo que não seja o eixo princípio, é mais complicado do que em 2D. Então, em 2D podemos ter apenas z como eixo princípio, em 3D temos 3 eixo princípio, temos que levar em conta todos os 3.Então, quando estamos tentando definir uma rotação arbitrária com relação a qualquer eixo arbitrário então derivar a matriz de transformação torna-se mais complicado. E a forma da matriz também é mais complicada do que o que temos encontrado em 2D. Teremos um olhar para esta derivação de matriz de rotação com relação a qualquer eixo arbitrário posterior na palestra que é sobre rotação.Agora como eu disse, a shearing também está tendo alguma diferença com relação ao seu homólogo 2D. É de fato mais complicado comparado com o que vimos em 2D.Então, iniciemos nossa discussão com shearing em 3D então falaremos sobre as diferenças de rotação e então veremos como derivar uma matriz de transformação composta para rotação sobre qualquer eixo arbitrário. Agora, quando estamos falando de tosse, como vimos anteriormente estamos tentando basicamente mudar a forma do objeto. Então, essencialmente para introduzir alguma deformidade na forma de objeto. Agora essa distorção ou deformação pode ser definida ao longo de 1 ou 2 direções de cada vez enquanto mantém 1 de direção fixa que é 1 constrain que seguimos para definição de shearing em 3D.Por exemplo, se estamos tentando xear ao longo de x e y direções então temos que manter a direção z toscindo fixa como resultado, a forma geral é diferente do que em 2D shearing. Na verdade, podemos definir 6 fatores de cisalamento. Lembram que fator de cisalamento refere-se à quantidade de distorção ou deformação que queremos introduzir ao longo de um determinado eixo. Assim, neste caso em caso de 3D shearing podemos definir 6 fatores de cisteamento e cada fator pode levar qualquer valor real ou zero se não houver um shear ao longo desse direcionamento específico, portanto, quando o fator de cisteamento é 0 que significa, ao longo dessa direção não há tosse. E com relação aos seis fatores, a matriz de cisalhamento parece algo assim, onde shxy, shxz, shyx, shyz, shyz, shzx e shzy são os seis fatores da seara.Entre estes fatores shxy e shxz são usados para brilhar ao longo de y e z direções, respectivamente, deixando o valor de coordenada x inalterado. Mais cedo mencionamos que ao mesmo tempo em que executar shearing one direction tem que ser deixado inalterado. Assim, neste caso, estamos realizando shearing along y e z direções enquanto que, shearing along x direção permanece 0.similarmente, shyx e shyz refere-se aos fatores shearing ao longo de x e z direção quando y valor de coordenada permanece inalterado. E da mesma forma, os outros 2 fatores de cisalhaço podem ser definidos que são shzx e shzy, estes 2 referem-se a shearing ao longo de x e y direção deixando z valor inalterado. Assim, cada par se refere de fato a shearing ao longo de 2 direções enquanto as terceira direções permanecem inalteradas que significa que shearing ao longo desse terceiro direcionamento não se realiza.Então, isso é sobre o shearing como você pode ver é mais complicado comparado com a matriz de shearing que temos visto para a transformação 2D que é porque agora temos 6 fatores de tevê. Agora, vamos ter uma olhada em outras matrizes de transformação básica matrizes de transformação básica.A tradução é a mais simples e a forma permanece quase a mesma com a adição de mais uma dimensão. Então, temos tx referente à tradução junto x direção, ty referindo-se à tradução ao longo da direção y e tz referindo-se a tr. Como disse antes, para rodízio, não temos uma matriz única. Em vez disso, temos 3 matrizes separadas, cada matriz correspondente à rotação ao longo de um determinado eixo de princípio. Portanto, portanto, uma vez que há 3 eixo, portanto temos 3 matrizes de rotação ao longo da direção z. Rotação sobre o eixo x, quando o ângulo de rotação é parecido parece algo como esta matriz.Rotação ao longo do eixo y novamente, assumindo que o ângulo de rotação para serem raios é mostrado aqui.E, finalmente, rotação sobre eixo z por um ângulo de ângulo é mostrado aqui nesta matriz. Assim, temos 3 matrizes representando 3 rotações básicas; um sobre eixo x, um sobre eixo y e um sobre eixo z.Escala também é semelhante ao homólogo 2D, Sx é o fator de escalonamento ao longo de x direção, Sy é o fator de escala ao longo da direção y, Sz é o fator de escala ao longo da direção z. Assim, se não quisermos realizar qualquer escalação ao longo de uma determinada direção, simplesmente definimos esse fator de escalação particular como 1. Então, se não quisermos escalar ao longo de dizer y direção, então vamos definir Sy=1. E se você pode se lembrar de fator de escala menor que 1 meios, naquela direção em particular queremos reduzir o tamanho e o fator de escala maior que 1 significa naquela direção em particular queremos aumentar o tamanho.Então, o escalonamento está relacionado ao tamanho, a shearing está relacionada à forma, a tradução e a rotação está relacionada à posição. Então, então, temos em 3D mais de 3 matrizes básicas, temos uma para tradução, uma para escalar, uma para tosse, e três para rodízio so total 6 matrizes básicas representando 6 transformações básicas em 3D. A outra diferença que mencionei com relação à transformação 2D é a rotação de um objeto com relação a qualquer eixo arbitrário que significa, qualquer eixo que não seja um do eixo princípio x, y e z.Então, qual é a ideia de que queremos girar um objeto por um ângulo θ sentido horário em torno de um eixo de rotação passando pelos 2 pontos P1 e P2. Por isso, aqui estamos definindo esses dois pontos porque com esses dois pontos, podemos definir um segmento de linha ou de linha que representa o eixo de rotação. Assim, a não ser que mencionamos os pontos, será difícil representar o eixo. Então, então temos um eixo definido pelos 2 pontos, temos um ângulo de rotação theta, que é contra no sentido horário.Lembre-se de que estamos usando uma convenção que se ângulo de rotação é contra no sentido horário então é ângulo positivo, se ângulo de rotação é no sentido horário, então consideramos que ele é ângulo negativo. Portanto, se estamos rodando o objeto por um ângulo θ contador no sentido horário, então ele será simplesmente θ, mas se estamos rodando o mesmo objeto por um ângulo θ sentido horário, então substituiremos θ with-θ. Agora, vejamos o que acontece quando estamos tentando realizar essa rotação com relação a qualquer eixo arbitrário, como podemos derivar uma matriz composta representando essa rotação.A ideia é ilustrada na série de etapas. Então, essa figura de esquerda superior mostra a situação inicial em que P1 e P2 definem o eixo de rotação representado com a linha pontilhada com relação ao quadro de referência 3D ou quadro de coordenadas. Agora então, na etapa 1, o que fazemos? Traduzimos a linha para a origem. Lembre-se, mais cedo em nossa discussão sobre composição de transformação, discutimos como combinar múltiplas transformações.Então, lá o que dissemos que se estamos tentando realizar alguma operação básica com relação a qualquer ponto fixo arbitrário diferente de origem, então o que seguimos? Nós primeiro traduzimos o ponto para a origem, executamos a transformação básica e depois traduzimos de volta para sua localização original. Por isso, o mesmo princípio básico que estamos a seguir aqui, nos é dado o eixo arbitrário ou linha fixa arbitrária. Na primeira etapa, traduzimos para a origem que significa que o eixo passa através da origem.Na etapa 2, o que fazemos? Agora o eixo passa pela origem, mas não há garantia de que ele se alinha com qualquer um do eixo princípio. Por isso, nesta etapa 2, alinhamos a linha com o eixo z em nossa explicação particular, mas não é necessário sempre alinhar com o eixo z, em vez disso você sempre pode alinhá-lo com eixo x ou y também. Mas vamos supor que estamos alinhando-o com o eixo z. Então, então isso envolve rotação sobre x e eixo y.Então, agora nosso eixo arbitrário está alinhado com o eixo z. Por isso, a rotação ocorrerá em torno ou sobre o eixo z que fazemos na Etapa 3, aplicamos a rotação sobre o eixo z. Após o rodízio ser feito na etapa 4, o que fazemos é, giramos a linha de volta para sua orientação original. Então, quando trouxemos ou traduzimos na etapa 1 para passá-la através da origem, tinha uma orientação. Então na etapa 4, devolvemos a essa orientação e na etapa 5 ou a etapa final, traduzimos de volta para sua posição original.Então, na etapa 4, estamos devolvemos para sua orientação original e na etapa 5 estamos traduzindo de volta para sua posição original. Sendo assim, essas 5 etapas são necessárias para construir a matriz composta representando rotação de um objeto com relação a qualquer eixo arbitrário. Então, vamos tentar derivá-lo então. Como temos visto na figura, portanto, há 5 transformações. Assim, a matriz composta ou a final definitiva, a matriz de transformação final seria uma composição dessas 5 transformações básicas.Então, a primeira transformação é a tradução. Traduzindo a linha para que ela passe por origem. Agora, a quantidade de tradução seria menos x, menos y, menos z, menos z desde que estamos caminhando ao longo da direção negativa z onde x, y, z é a coordenada de P2, um dos terminais.Então na etapa 2, alinhamos a linha ao eixo z, mas como eu disse que não precisa ser sempre eixo z, ele pode ser x ou eixo y também. Então, a fim de fazer isso o que precisamos fazer? Precisamos realizar algumas rotações sobre x e eixo y. Por isso, primeiro, vamos supor que primeiro estamos rodando a linha sobre eixo x para colocar o eixo no plano x z e o ângulo de rotação é α. Em seguida, estamos girando-o sobre o eixo y para alinhar o eixo com o eixo z.Então, primeiro gire-lo sobre eixo x para colocá-lo no plano de x z e, em seguida, giramos sobre o eixo y para alinhá-lo com o eixo z. Assim, no primeiro caso o ângulo de rotação nos deixa denotar por α e no segundo caso, vamos denotá-lo por meio de letras, ambos são rodízio anti-horário então ambos são positivos nesta fase.Então no estágio 3, o que fazemos? Agora alinhamos o eixo com o eixo z e depois executamos a rotação sobre o eixo z que é o nosso objetivo original. Então, então, utilizamos a matriz de rotação com relação ao eixo z, portanto, aqui θ é o ângulo de rotação do objeto. Lembre-se que esse ângulo de rotação θ é com respeito ao eixo arbitrário, agora estamos usando ele para girar sobre o eixo z porque nós alinhamos eixo arbitrário com o eixo z. Então, na etapa 4 e 5, invertemos as operações que executamos na etapa 1 e 2. Então, primeiro, levemos a linha para o seu alinhamento original, que envolve rotação reversa sobre y e eixo x para trazer o eixo de rotação de volta à sua orientação original. Enquanto se alinhavamos, giramos com respeito a x primeiro e depois y. Já que agora, estamos revertendo a operação, por isso rodamos com respeito a y primeiro e depois x.E na Etapa 5, o que fazemos? Em seguida, traduzimos de volta para sua posição original, que é o último passo. Então, então qual seria a matriz composta?Podemos obter por multiplicação matricial e seguiremos o direito à regra de esquerda. Então, primeiro realizamos a tradução para tirar a linha passando por origem, depois realizamos um rodízio sobre x eixo por um ângulo α para trazer a linha no plano x z então realizamos uma rotação por um ângulo qualquer ao redor do eixo y para alinhá-lo com o eixo z, em seguida realizamos a rotação real por um ângulo θ com relação ao eixo z. Em seguida, invertemos os passos anteriores que é primeiro realizamos rotação com relação a y, depois rotação com relação a x pelo mesmo valor de ângulo que nos casos anteriores e depois inverso a tradução.Agora, já que estamos rodando em inverso do que fizemos na etapa 2, agora essas rotações inversas podem simplesmente ser representadas por uma mudança de signo do ângulo. Então, mais cedo se o ângulo era mesmo do que vai ser-vem-se aqui e se o ângulo era α, então ele será-α aqui. Assim, quando giramos em torno de eixo x com α, em caso de rotação reversa vamos girar sobre eixo x por-α. Da mesma forma, giramos aqui com a carne, aqui vamos rodar por-uns. Assim, a rotação reversa significa alterar o ângulo de rotação porque do contra no sentido horário estamos agora girando no sentido horário.Então, essas matrizes, multiplicadas na sequência particular mostrada aqui nos darão a matriz composta para rotar um objeto por um ângulo θ sobre qualquer eixo arbitrário de rotação. Então isso está em resumo, o que há na transformação do 3D. Então, é principalmente o mesmo com a transformação de 2D com algumas diferenças. Primeira diferença é que em sistema de coordenadas homogêneas, agora precisamos de 4 matrizes × 4 matrizes em vez de 3 × 3 matrizes para representar cada transformação.Então antes definimos 4 transformações básicas a saber, tradução, rotações, escalas e cisalhamento no contexto da transformação 2D. Agora temos 6 transformações básicas; tradução, rotação sobre eixo x, rotação sobre eixo y, rotação sobre eixo z, escalonamento e cisalhamento. Antes tínhamos definido 2 fatores de cisalamento, agora há 6 fatores de cisalamento, é um pouco mais complicado do que o caso anterior.Agora, em tosse, quando ele realiza shearing ao longo de 2 eixo, 2 princípio eixo, não há tosse ao longo do terceiro eixo princípio que seguimos em 3D shearing. Fora essas diferenças, há outra grande diferença na forma como derivamos matriz de transformação composta para rotação sobre qualquer eixo arbitrário.Então, para fazer isso, seguimos o processo de 5 etapa, primeiro traduzimos a linha para passar por origem, depois alinhamos-a com um do eixo princípio, depois realizamos a rotação pelo ângulo desejado sobre esse eixo, depois, situamos a linha de volta à sua orientação original realizando rotações reversas, e depois traduzimos de volta para sua posição original. E colocamos as matrizes básicas individuais no direito à maneira de esquerda para obter a matriz composta final como mostramos na discussão. Agora, vamos tentar entender a transformação do 3D com respeito a 1 exemplo ilustrativo.Deixe-nos considerar uma situação, há um objeto definido com os vértices definidos com os vértices A B C D aqui nesta figura figura de topo, como é possível vê-lo está no plano x y Esta é a situação inicial, agora queremos utilizar este objeto em particular para construir uma parede de partição definidapelos vértices A ’, B ’, C ’ e D ’ corresponde a A, B ’ corresponde a B, C ’ corresponde ao C e D ’ corresponde ao vértice D.Então, aqui como podemos claramente veja alguma transformação ocorreu, a questão é tentar calcular a matriz de transformação composta que possibilita que esse objeto seja posicionado como uma parede de partição nesta cena. Vejamos como podemos fazer isso.Então, inicialmente a praça está no plano x y e cada lado tinha 2 unidades de comprimento e o centro é dado como (2, 2, 0). A praça final fica no avião y-z com cada lado igual a 4 unidades e o centro está agora em (0, 2, 2). Agora, esses comprimentos e centros podem ser encontrados pelas coordenadas dos vértices.Então, então o que precisamos fazer? Assim, neste caso, precisamos de um rodízio de plano x y para o plano y-z, mas o eixo de rotação não é eixo z, ele é paralelo ao eixo z assim seguiremos esta abordagem de criação de transformação de matriz composta. Assim, primeiro traduzimos o centro de origem, centro desse objeto original então o montante da tradução será -2, -2 e 0.Então, se estamos traduzindo o centro para origem então o eixo de rotação que era paralelo ao eixo z agora será automaticamente alinhado com o eixo z. Então, então executamos a rotação em 90 graus anti no sentido horário em torno do eixo z. Sendo assim, utilizaremos a matriz de rotação definida para rotação sobre o eixo z com o ângulo de rotação 90. Uma vez que a rotação é anti-horário, portanto, será ângulo positivo.Então rodamos por 90 graus anti no sentido horário em torno de y. Assim, novamente utilizaremos o Ry (90) onde Ry θ é a matriz de rotação básica sobre o eixo y.Depois executamos escalonamento porque o tamanho aumentou em 2 em y e a direção z, assim, direção x terá um fator de escala 1, não há alteração e a direção de z e y terá o fator de escala 2, o tamanho dobrará. E então traduzimos o centro para o novo centro de objetos utilizando a matriz de tradução.Então, então a matriz de transformação composta pode ser obtida multiplicando essas matrizes de transformação básica individual em conjunto onde seguimos o direito à regra de esquerda que é, primeiro é a tradução para a origem, depois rotação sobre eixo z, depois rotação sobre eixo y, então escalando até 2 ao longo da direção y e z, em seguida, a tradução para a nova origem. Assim, se multiplicarmos, obteremos a nova matriz de transformação composta.E depois de obtermos essa matriz, só para recapitularmos o procedimento, o que precisamos fazer? Precisamos multiplicar cada vértice com esta matriz de transformação composta. Então, se o vértice é representado por vetor de coluna P e esta matriz de transformação composta é M, então executamos isso (M.P) para cada vértice para obter a nova posição de vértice em coordenada homogênea. Assim, eventualmente para obter a coordenada física, realizamos esta operação, dividimos a coordenada x por fator homogêneo, y coordenada por fator homogêneo e coordenada z pelo fator homogêneo.Então no nosso caso de curso, h=1. Então, realmente não importa, a coordenada x, x e z permanecerá a mesma. Mas mais adiante, como mencionei anteriormente, veremos que há situações em que h ≠ 1. Por isso, nesse caso, essa divisão é muito importante que veremos em palestras subsequentes.Então, com isso, chegamos a uma conclusão de nossa discussão sobre a transformação do 3D. E também, chegamos a uma conclusão de nossa discussão sobre a segunda etapa que é a transformação modeladora. Então, iniciamos nossa discussão com as transformações do 2D, lá introduzimos a ideia básica de transformação de modelagem que é montar objetos que são definidos em seus próprios sistemas de coordenadas ou locais em uma cena de coordenadas mundiais. Para fazer isso, realizamos transformações geométricas, qualquer transformação pode ser considerada como uma sequência de transformações básicas em transformações de 2D.Já discutimos 4 transformações básicas, aquelas são tradução, rotação, escalonamento e tosse. Discutimos também por que é importante representar transformações em termos de matrizes, por causa da modularidade e compatibilidade com estágios subsequentes quando estamos implementamos um pacote na forma de funções de biblioteca ou APIs ou funções padrão. Agora, para representação matricial discutimos a importância e o significado de sistema de coordenadas homogêneas e vimos como utilizar o sistema de coordenadas homogêneas para representar transformações básicas ou qualquer transformação composta.Então, em resumo, na transformação de modelagem, realizamos transformação considerando-se individualmente ou em sequência transformações básicas, essas transformações são representadas na forma de matrizes, onde as matrizes são elas mesmas representações em sistema de coordenadas homogêneas. E na transformação 2D, temos 4 transformações básicas. Em transformações de modelagem 3D, temos 6 transformadores básicos. E qualquer transformação com relação a qualquer ponto arbitrário ou eixo de rotação pode ser derivada usando uma sequência de transformação básica. Por isso, na próxima palestra, iniciaremos nossa discussão sobre a terceira etapa do pipeline gráfico que está designando cor ou a iluminação.