Introdução
Este laboratório demonstra as diferentes projeções de câmera para gráficos 3D e os efeitos da alteração da distância focal para uma projeção em perspectiva usando Python Matplotlib.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importar Bibliotecas
Primeiramente, importe as bibliotecas necessárias, incluindo Matplotlib e Axes3D de mpl_toolkits.mplot3d.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
Obter Dados
Obtenha os dados de teste para o gráfico 3D.
X, Y, Z = axes3d.get_test_data(0.05)
Criar uma Figura com Subplots
Crie uma figura com três subplots usando plt.subplots.
fig, axs = plt.subplots(1, 3, subplot_kw={'projection': '3d'})
Plotar os Dados
Plote os dados em cada um dos três subplots usando plot_wireframe.
for ax in axs:
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
Definir a Projeção Ortográfica
Defina o primeiro subplot para usar uma projeção ortográfica com um FOV (campo de visão) de 0 graus e um focal_length (distância focal) de infinito.
axs[0].set_proj_type('ortho') ## FOV = 0 deg
axs[0].set_title("'ortho'\nfocal_length = ∞", fontsize=10)
Definir as Projeções de Perspectiva
Defina o segundo subplot para usar uma projeção de perspectiva com o FOV (campo de visão) padrão de 90 graus e um focal_length (distância focal) de 1.
axs[1].set_proj_type('persp') ## FOV = 90 deg
axs[1].set_title("'persp'\nfocal_length = 1 (default)", fontsize=10)
Defina o terceiro subplot para usar uma projeção de perspectiva com um FOV (campo de visão) de 157.4 graus e um focal_length (distância focal) de 0.2.
axs[2].set_proj_type('persp', focal_length=0.2) ## FOV = 157.4 deg
axs[2].set_title("'persp'\nfocal_length = 0.2", fontsize=10)
Mostrar o Gráfico
Exiba o gráfico usando plt.show().
plt.show()
Resumo
Este laboratório demonstrou como criar um gráfico 3D usando Python Matplotlib e como alterar o tipo de projeção e a distância focal (focal length) do gráfico. A projeção ortográfica achata a imagem, enquanto a projeção de perspectiva exagera a perspectiva e dá à imagem uma profundidade mais aparente. A distância focal padrão de 1 corresponde a um Campo de Visão (FOV - Field of View) de 90 graus.