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 1:
Digamos que você criou um inimigo para o heroi de seu jogo em algum programa de modelagem 3D e você o coloca no seu cenário. Só que uma copia do inimigo não é o suficiente não é? Que tal ter 50 cópias exatas do seu inimigo, realizando as mesmas ações, formando um exercito para dar maisum pouco de medo trabalhono aoseu jogadorheroi? Para fazer algo assim no Panda3D, você precisa disso:
 
 
Linha 16:
A idéia é essa: Ao invés de criar 50 inimigos separados, crie apenas um inimigo, então a engine vai atualizar a animação do inimigo uma vez. A engine renderiza o inimigo 50 vezes, ao inserir ele no grafico de cena em 50 lugares diferentes. Aqui está como isso é feito:
 
dancerinimigo = Actor.Actor("chorus-line-dancerinimigo.egg", {"kickataque":"kickataque.egg"})
dancerinimigo.loop("kickataque")
dancerinimigo.setPos(0,0,0)
for i in range(50):
placeholder = render.attachNewNode("Dancerinimigo-Placeholder")
placeholder.setPos(i*5,0,0)
dancerinimigo.instanceTo(placeholder)
 
Aqui está o diagrama que acabamos de criar:
Here is a diagram of the scene graph we just created:
 
[[Ficheiro:Instancing2.jpg]]
 
It'sNão noté amais treeuma any morearvore, ité isum agráfico directeddirecionado acyclic graphacíclico. ButMas theo rendererrenderizador stillainda dá traverses theno graphgrafico usingusando aum recursive tree-traversal algorithm.de Asarvore recursivo. aComo resultresultado, itele endsacaba updando traversingtraverse the dancerno node de inimigo 50 timesvezes. HereAqui isestá ao diagramdiagrama ofda theprofundidade depth-firstdo primeiro traversal thatque theo renderer takesleva throughpelo the graphgráfico. Note thatque thisesse isdiagrama notnão aé diagramde ofgrafico thede scene graphcena - it'sé aum diagramdiagrama ofdo thecaminho renderer'sdo pathrender throughpelo thegrafico scenede graph:cena.
 
[[Ficheiro:Instancing3.jpg]]