Panda3D/Manual/Instancing: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
Sem resumo de edição
Linha 32:
[[Ficheiro:Instancing3.jpg]]
 
Em outras palavras, o render visita o Actor "inimigo" 50 vezes. Ele nem percebe que esta visitando mesmo o Actor 50 vezes, ao inves de visitar 50 diferentes Actors. É tudo o mesmo para o render.
In other words, the renderer visits the dancer actor 50 times. It doesn't even notice that it's visiting the same actor 50 times, rather than visiting 50 different actors. It's all the same to the renderer.
 
TEmos 50 nodes para armazenar a localização das copias do inimigo( placeholder ) alinhados pelo palco. Esses são chamados de nodes vazios. Eles não contem nenhum poligono, eles são objetos minusculos usados principalmente para organização. Nesse caso, eu estou usando cada placeholder como uma plataforma onde o inimigo pode se apoiar.
There are 50 placeholder nodes, lined up across the stage. These are called dummy nodes. They don't contain any polygons, they're little tiny objects used mainly for organization. In this case, I'm using each placeholder as a platform on which a dancer can stand.
 
TheA positionposição ofdo theinimigo dancer isé ( 0, 0, 0 ). ButPorém that'sessa relativeé toa theposição positionrelativa ofdo the parentparente. WhenQuando theo rendererrender isestá traversingdando placeholdertraverse 1'sna subtreeprimeira sub-árvore do placeholder, thea dancer'sposição positiondo isinimigo treatedé astratada relativecomo torelativa ao placeholder 1. WhenQuando theo rendererrender isestá traversingdando placeholdertraverse 2'sna subtreesegunda sub-arvore do placeholder, thea posição dancer'sdo positioninimigo isé treatedtratada ascomo relativerelativa toao placeholder 2. So although the positionEntão, ofapesar thedo dancerinimigo isestar fixedfixado atem ( 0, 0, 0 ), itele appearsaparece inem multiplemultiplas locationslocações inna themesma scenecena (on topno oftopo eachde cada placeholder ).
 
Dessa forma, é possivel renderizar o modelo varias vezes sem armazenar e animar o mesmo varias vezes.
In this way, it is possible to render a model multiple times without storing and animating it multiple times.
Advanced Instancing
 
Instancionamento Avançado:
Now, let's go a step further:
 
Agora, vamos um passo além:
dancer = Actor.Actor("chorus-line-dancer.egg", {"kick":"kick.egg"})
 
dancer.loop("kick")
dancerinimigo = Actor.Actor("chorus-line-dancerinimigo.egg", {"kickataque":"kickataque.egg"})
dancer.setPos(0,0,0)
dancerinimigo.loop("kick")
chorusline = NodePath('chorusline')
dancerinimigo.setPos(0,0,0)
inimigolinha = NodePath('inimigo linha')
for i in range(50):
placeholder = choruslineinimigolinha.attachNewNode("Dancerinimigo-Placeholder")
placeholder.setPos(i*5,0,0)
dancerinimigo.instanceTo(placeholder)
 
ThisEsse isé theo exactmesmo samecodigo codede as beforeantes, exceptporém thatao insteadinves ofde putting theusar 50 placeholders beneathdebaixo do render, Ieu putos themcoloco beneathembaixo ade dummyum node calledvazio choruslinechamado inimigo linha. SoEntão myminha linelinha ofde dancersinimigos isnão noté partparte ofdo thegráfico scenede graphcena yetainda. Now,Agora Ieu canposso dofazer thisisso:
 
for i in range(3):