José Eduardo Ayres

Doctoral Student at

Visgraf

/

IMPA
Pirâmide de Sierpinski
Sierpinski

Figura 1: Pirâmide de base quadrada a partir de um cubo.

O triângulo de Sierpiski é um fractal baseado em um triângulo equilátero subdividido recursivamente em triângulos equiláteros menores. Para cada triângulo da iteração atual, são gerados três triângulos menores e posicionados cada um em uma extremidade do triângulo maior da itereção anterior, e, após isto, deletado o triângulo maior. O objetivo é gerar um triângulo de Sierpiski tridimensional e, para tal, foi utilizada como primitiva inicial uma pirâmide de base quadrada tal que o lado da base $l$ é igual a altura da pirâmide $h$.

A pirâmide foi gerada com base em um cubo de lado igual a 2 b.u. (blender units). Para tal, foi selecionada a face superior da pirâmide e fundidos seus quatro vértices ao centro da face. O resultado é visualizado na Figura 1.

Sierpinski

Figura 2: Primeira iteração da pirâmide de Sierpinski renderizada pela câmera do Blender.

A pirâmide de Sierpinski foi obtida com base em um algoritmo recursivo. Dada a profundidade desejada, o algoritmo irá criar as pirâmides filhas com $l_{n+1} = \frac{l_n}{2}$ e ápos isso remover a mãe a cada iteração. Diferente do triângulo bidimensional, aqui temos uma pirâmide de base quadrada, logo, para cada pirâmide presente na iteração atual, serão geradas 5 pirâmides filhas e posicionadas em suas 5 extremidades. Isto pode ser visto na Figura 2, que exibe a primeira iteração do algoritmo.

Visto que se trata de uma pirâmide de base quadrada, a visão frontal ortográfica da pirâmide de Sierpinski é igual ao triângulo de Sierpinski de mesma ordem. Isso pode ser visualizado nas Figuras 3, 4 e 5.

Sierpinski

Figura 3: Visão ortográfica frontal da primeira iteração da pirâmide de Sierpinski.

Sierpinski

Figura 4: Visão ortográfica frontal da terceira iteração da pirâmide de Sierpinski.

Sierpinski

Figura 5: Visão ortográfica frontal da quinta iteração da pirâmide de Sierpinski.

Sierpinski

Figura 6: Terceira iteração da pirâmide de Sierpinski renderizada pela câmera do Blender.

O triângulo de Sierpiski perde $\frac{1}{4}$ da área da iteração anterior a cada iteração, fazendo com que sua área tenda a zero conforme o número de iterações tende a infinito, o mesmo comportamento ocorre na pirâmide obtida como segue. O volume de uma pirâmide de base retangular arbitrária é dado por

\[ V_0 = \frac{A_b h}{3} \]

onde, $A_b = l^2$ é a área da base quadrada, e $h$ determina a altura da pirâmide.

Visto que, $l = h$, temos a equação reduzida a

\[ V_0 = \frac{l^3}{3} \]

Note que, a cada passo da recursividade, o fractal gerado reduz cada uma das pirâmides a 5 pirâmides menores, com metade do lado da mãe cada. Logo, a sequência que define as iterações da geração do fractal é dada por

\[ V_0 = 5^0 \frac{\left(\frac{l}{2^0}\right)^3}{3} = \frac{l^3 . 5^0}{3 . 2^0} \] \[ V_1 = \frac{l^3 . 5^1}{3 . 2^{(3 . 1)}} \] \[ V_2 = \frac{l^3 . 5^2}{3 . 2^{(3 . 2)}} \] \[ \vdots \] \[ V_n = \frac{l^3 . 5^n}{3 . 2^{3n}} \]

Passando-se o limite com $n \rightarrow \infty$, temos que $\lim_{n \rightarrow \infty} V_n = 0$. Logo, o volume da pirâmide de Sierpinski tende assintoticamente a zero, conforme o número de iterações $n$ no algoritmo recursivo tende a infinito. Pode-se observar este comportamento nas Figuras 2, 6 e 7.

Sierpinski

Figura 7: Quinta iteração da pirâmide de Sierpinski renderizada pela câmera do Blender.

Cogumelo 1UP do Super Mario Bros.
Sierpinski

Figura 8: Cilindro com uma seccção circular nova de arestas.

Super Mario Bros é uma franquia de jogos eletrônicos icônica da Nintendo, onde o personagem principal, o Mario, é o mascote oficial da empresa. Para se tornar maior e ganhar vidas extras, o Mario consome cogumelos característicos da série, neste caso, o cogumelo verde que será modelado, concede uma vida extra.

Começando de um cilindro, o objetivo é aplicar deformações e transformá-lo no modelo do cogumelo. O primeiro passo foi gerar novas arestas na malha do cilindro usando a função loop cut and slide do Blender, como pode ser visto na Figura 8.

Sierpinski

Figura 9: Cilindro deformado.

Sierpinski

Figura 10: Processo de extrusão.

Sierpinski

Figura 11: Modelo 3D do cogumelo.

Visando deformar a primitiva original, foram criadas três novas secções circulares de arestas no cilindro. Após a deformação usando transformações de escala nas seccções circulares de arestas, a primitiva parece um corpo frutífero de um cogumelo, que pode ser visto na Figura 9. Falta, então, a base do cogumelo, e, para isso, foram selecionadas apenas as faces na parte inferior do corpo. Após isto, usado o processo de extrusão desta parte, gerando o objeto da Figura 10. Por último, foram realizadas algumas mudanças pequenas e foi gerado o modelo 3D do cogumelo do Mario, que pode ser visto na Figura 11.

Sierpinski

Figura 12: Criação da textura para o cogumelo usando o UV unwrap do Blender.

Para a pintura do cogumelo foi crada uma textura simples no Blender. Para isto, foi utilizado o UV unwrap, como pode ser visto na Figura 12. Basicamente, o UV unwrap cria uma projeção da forma selecionada em um plano bidimensional, ou seja, projeta a casca da forma pertencente a $\mathbb{R}^3$ nas faces coladas no $\mathbb{R}^2$. Foi utilizado o simples smart UV unwrap que faz a projeção automaticamente.

A cor base escolhida foi o verde do corpo frutífero. Após, foram feitas as pintas brancas usando o brush diretamente no desenho tridimensional. A pintura marrom da base e os olhos foram desenhados sobre a projeção UV, alterando diretamente a textura no objeto tridimensional. O resultado final renderizado pode ser visto na Figura 13.

Sierpinski

Figura 12: Cogumelo 1UP renderizado pela câmera do Blender.

Bola de futebol
Sierpinski

Figura 13: Icosaedro truncado.

Uma bola de futebol tem uma geometria muito parecida a de uma esfera, que pode ser usada como primitiva para sua modelagem no Blender. Porém, uma geometria mais natural para uma bola de futebol, composta por gomos hexagonais e pentagonais, é um icosaedro truncado, que pode ser visto na Figura 13.

O icosaedro truncado é obtido a partir de um icosaedro regular com 12 vértices e 20 faces triângulares. Para gerar o icosaedro truncado, cada um dos 12 vértices é cortado do icosaedro regular, esse corte acontece na terça parte de cada aresta. Visto que cada um dos vértices tem grau 5, ao cortar um vértice, geram-se cinco novos vértices e uma nova face pentagonal. As 20 faces originais triangulares tornam-se hexagonais após os cortes dos vértices. A primitiva gerada possui então 60 vértices, 90 arestas e 32 faces (12 pentagonais e 20 hexagonais).

Sierpinski

Figura 14: Processo de extrusão das faces no icosaedro truncado.

O processo de pintura da bola de futebol é relativamente simples. Basicamente, pinta-se a bola inteiramente de branco. Um recurso útil no Blender é o Select Similar, podendo-se usar diversas propriedades, como número de lados do polígono, normais, material usado, área, etc. As faces que serão pretas possuem a mesma área, são as 12 faces pentagonais, logo, só é necessário selecionar-se uma delas e aplicar o Select Similar. Os shaders usados foram Diffuse mixado com Glossy, para dar um aspecto brilhante a bola.

O comando subdivide foi usado para deixar a malha mais densa e conseguir melhorar a suavidade da bola no futuro. Cada uma das faces do icosaedro recebeu uma extrusão individual para dar um aspecto dos retalhos de couro da bola de futebol, além disso, os vértices foram suavizados. O processo pode ser visto na Figura 14.

Sierpinski

Figura 15: Bola de futebol com os retalhos de couro "murchos".

Após usar suavização no objeto, a forma se parece com uma bola de futebol, como pode ser visto na Figura 15, porém os retalhos ainda precisam ser inflados. Foi usado um modificador chamado Cast no objeto, que muda o formato de uma malha para uma forma pré-especificada. Como dito anteriormente, a bola de futebol é esférica, logo, foi usada esta forma. Foi ajustado o fator no eixo x até que o icosaedro com extrusão ficasse parecido com uma esfera formada por retalhos.

O resultado já esta muito parecido com uma bola fotorealista (Figura 16), o que falta são as costuras nos retalhos de couro. Isto será feito usando uma técnica construtiva com uma segunda primitiva, que é um icosaedro truncado igual ao da bola. Primeiramente, foram deletadas todas as faces do icosaedro, e, após isto, subdivididas todas as arestas em pequenas partes e excluídas as arestas originais, sobrando só o tracejado, visto na Figura 16.

Sierpinski

Figura 16: Estuturas que serão usadas de forma construtiva na bola de futebol.

Sierpinski

Figura 17: Costuras da bola de futebol.

Cada parte do tracejado em forma de icosaedro truncado foi truncado por uma pequena esfera marrom, dando uma aparência de costura. Isto é possivel usando-se uma circunferência auxiliar como padrão no Bevel Object da geometria do icosaedro truncado tracejado. Após, foi apicado o mesmo modificador Cast esférico que foi usado na bola. O resultado final é visto na Figura 17.

Sierpinski

Figura 18: União dos objetos.

Uma transformação a fim de translação muito útil do Blender é a Align objects, que, ao ser usada na bola e na costura para os três eixos, gerou o resultado da Figura 18. Após isto, foi aplicada uma escala na costura para que ficasse de um tamanho correto com relação a bola, e, por fim, unidas as duas formas.

Sierpinski

Figura 19: Plano abaixo da bola de futebol.

Sierpinski

Figura 20: Plano acima da bola de futebol.

Primeiramente, foi adicionado um plano verde abaixo da bola de futebol, para servir de gramado, visto na Figura 19. Um segundo plano foi adicionado acima da bola de futebol, ele foi rotacionado - 45° e foi usada uma superfície de emissão para que funcionasse como um sol na parte superior direita da bola, criando iluminação e sombra, o que pode ser visto na Figura 20. Por fim, a Figura 21 exibe a bola renderizada pela câmera do Blender.

Sierpinski

Figura 21: Bola de futebol renderizada pela câmera do Blender.