Como usar recursos vetoriais externos
Carregando um arquivo SVG com loadShape()
arquivo: bot1.svg, uma ilustração de George Brower.
Podemos carregar(load) na memória dados de arquivos vetoriais externos nos formatos SVG e OBJ. Para isso usamos a função load_shape()
, mas é preciso indicar onde está o arquivo(o chamado ‘caminho completo’ do arquivo), ou que ele esteja na pasta / data /
dentro da pasta do seu * sketch * (programa).
sketch_2020_04a(pasta/folder do sketch)
L sketch_2020_04a.pyde(arquivo com o código)
L data(pasta/folder)
L bot1.svg(arquivo svg)
Note que a operação de carregar o arquivo é relativamente demorada e nunca deve ser executada dentro do laço draw()
. Em geral só precisamos carregar uma vez e fazemos isso no setup()
. Também é comum criarmos uma variável global que faz referência aos recurso vetoriais carregados, neste exemplo a variável svg
:
def setup():
size(400, 400)
global svg
svg = load_shape("bot1.svg") # arquivo SVG na pasta /data/
def draw():
# shape(svg, x, y) desenha o arquivo no tamanho original
shape(svg, 100, 100)
# shape(svg, x, y, largura, altura) força um tamanho
# svg.width e svg.height apontam as dimensões do arquivo original
# podemos mostrar o recurso com metade da sua largura e altura originais
# assim:
shape(svg, 0, 0, svg.width / 2, svg.height / 2)
Os objetos Py5Shape
, que armazenam os dados vetoriais, tem uma série de métodos(funções internas desses objetos) que podem ser consultados na referência doProcessing modo Java / Py5Shape. A página da referência do Processing modo Python está incompleta mas os métodos de * Py5Shape * são os mesmos.
Um dos métodos mais úteis é o .disable_syle()
que permite ignorar os atributos grágifos das formas no arquivo SVG, permitinho aplicar o traço e preenchimento por nossa conta. O .enable_style()
devolve o comportamento original.
def setup():
size(400, 200)
bot = load_shape("bot1.svg")
background(102)
bot.disable_style() # Ignore as cores no SVG
fill(0, 102, 153) # preenchimento azul
stroke(255) # traço branco
stroke_weight(2) # traço mais espesso
shape(bot, 5, 5, 190, 190)
bot.enable_style()
shape(bot, 205, 5, 190, 190)
save_frame("disable_style.png")
Assuntos relacionados
- Carregando imagens externas
- Exportando SVG
- Para carregar objetos 3D no formato OBJ, consulte a página sobreP3D