<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_APICargaModelos3D</id>
	<title>LIBGDX APICargaModelos3D - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cifprodolfoucha.es/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_APICargaModelos3D"/>
	<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_APICargaModelos3D&amp;action=history"/>
	<updated>2026-10-17T03:27:54Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_APICargaModelos3D&amp;diff=617&amp;oldid=prev</id>
		<title>Wiki en 17:41 17 dic 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_APICargaModelos3D&amp;diff=617&amp;oldid=prev"/>
		<updated>2015-12-17T17:41:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 17:41 17 dic 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot; &gt;Línea 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lembrar que é mellor ter o modelo en formato binario que en formato obj.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lembrar que é mellor ter o modelo en formato binario que en formato obj.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tedes [http://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;manuais&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;iessanclemente&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;net&lt;/del&gt;/index.php?title=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;LIBGDX_Carga_Modelos3D&lt;/del&gt;#Conversi.C3.B3n_de_formatos_en_3D neste enlace] como cambiar de formato.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tedes [http://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;cifprodolfoucha&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;es&lt;/ins&gt;/index.php?title=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;LIBGDX_APICargaModelos3D&lt;/ins&gt;#Conversi.C3.B3n_de_formatos_en_3D neste enlace] como cambiar de formato.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tamén imos facer uso da clase AssetManager [http://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_AssetManager explicada anteriormente].&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tamén imos facer uso da clase AssetManager [http://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_AssetManager explicada anteriormente].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_APICargaModelos3D&amp;diff=615&amp;oldid=prev</id>
		<title>Wiki: Página creada con «&lt;span style=&quot;font-size:150%;&quot;&gt;UNIDADE 5: Carga Modelos 3D.&lt;/span&gt;  ===Introdución===  O obxectivo deste punto é amosar como podemos cargar os modelos utilizando a nova AP...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_APICargaModelos3D&amp;diff=615&amp;oldid=prev"/>
		<updated>2015-12-17T17:39:52Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;UNIDADE 5: Carga Modelos 3D.&amp;lt;/span&amp;gt;  ===Introdución===  O obxectivo deste punto é amosar como podemos cargar os modelos utilizando a nova AP...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:150%;&amp;quot;&amp;gt;UNIDADE 5: Carga Modelos 3D.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Introdución===&lt;br /&gt;
&lt;br /&gt;
O obxectivo deste punto é amosar como podemos cargar os modelos utilizando a nova API 3D.&lt;br /&gt;
&lt;br /&gt;
Neste punto podedes cargar calquera modelo que atoparedes por Internet ou un voso.&lt;br /&gt;
&lt;br /&gt;
Lembrar que é mellor ter o modelo en formato binario que en formato obj. &lt;br /&gt;
&lt;br /&gt;
Tedes [http://manuais.iessanclemente.net/index.php?title=LIBGDX_Carga_Modelos3D#Conversi.C3.B3n_de_formatos_en_3D neste enlace] como cambiar de formato.&lt;br /&gt;
&lt;br /&gt;
Tamén imos facer uso da clase AssetManager [http://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_AssetManager explicada anteriormente].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Preparación:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Descomprime o arquivo Ship.zip e copia o seu contido ó cartafol /assets/ da versión Android: [[Media:Ship.zip]]&lt;br /&gt;
* Copia a clase EX_1_DefinicionLuz do [http://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_ModelBuilder punto anterior] e pon de nome EX_2_CargaModelos.&lt;br /&gt;
&lt;br /&gt;
* Crea unha nova clase de nome &amp;#039;&amp;#039;&amp;#039;EX_2_CargaModelos&amp;#039;&amp;#039;&amp;#039; e copia o contido seguinte:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Código da clase EX_2_CargaModelosInicial&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
import com.badlogic.gdx.Gdx;&lt;br /&gt;
import com.badlogic.gdx.Screen;&lt;br /&gt;
import com.badlogic.gdx.graphics.GL20;&lt;br /&gt;
import com.badlogic.gdx.graphics.PerspectiveCamera;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.Environment;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.ModelBatch;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.ModelInstance;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.utils.CameraInputController;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class EX_2_CargaModelos implements Screen {&lt;br /&gt;
&lt;br /&gt;
	private PerspectiveCamera camara3d;&lt;br /&gt;
	private ModelInstance modeloInstancia;&lt;br /&gt;
	private  ModelBatch modelBatch;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	private Environment environment;&lt;br /&gt;
	private CameraInputController camController;&lt;br /&gt;
	&lt;br /&gt;
	public EX_2_CargaModelosInicial(){&lt;br /&gt;
		camara3d = new PerspectiveCamera();&lt;br /&gt;
		camController = new CameraInputController(camara3d);&lt;br /&gt;
		Gdx.input.setInputProcessor(camController);&lt;br /&gt;
		&lt;br /&gt;
		modelBatch = new ModelBatch();&lt;br /&gt;
		environment = new Environment();&lt;br /&gt;
                environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));&lt;br /&gt;
                environment.add(new DirectionalLight().set(1f, 1f, 1f, 1f, 0f, 0f));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void render(float delta) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
		 &lt;br /&gt;
		camController.update();&lt;br /&gt;
		&lt;br /&gt;
        modelBatch.begin(camara3d);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
        modelBatch.end();	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void resize(int width, int height) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
		camara3d.fieldOfView=67;&lt;br /&gt;
		camara3d.viewportWidth=width;&lt;br /&gt;
		camara3d.viewportHeight=height;&lt;br /&gt;
		&lt;br /&gt;
		Gdx.input.setInputProcessor(camController);&lt;br /&gt;
		&lt;br /&gt;
		camara3d.position.set(0f,0f,15f);&lt;br /&gt;
		camara3d.lookAt(0,0,0);&lt;br /&gt;
		camara3d.near=1;&lt;br /&gt;
		camara3d.far=300f;&lt;br /&gt;
		camara3d.update();&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void show() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void hide() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void pause() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void resume() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
		modelBatch.dispose();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Modifica a clase PracticasNovaApi3D para que chame á clase EX_2_CargaModelos&lt;br /&gt;
&lt;br /&gt;
===Carga de Modelos===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Un só modelo====&lt;br /&gt;
&lt;br /&gt;
A carga de modelos utilizando a clase AssetManager non ten moito problema:&lt;br /&gt;
&lt;br /&gt;
* Instanciamos a clase AssetManager.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
        AssetManager assets = new AssetManager();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Chamamos ó método load cargando o modelo obj ou g3db se o convertimos anteriormente.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
        assets.load(&amp;quot;ship.obj&amp;quot;, Model.class);&lt;br /&gt;
        assets.finishLoading();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Obtemos o Model a partires do modelo cargado. A partires de aquí é o mesmo que no [http://wiki.cifprodolfoucha.es/index.php?title=LIBGDX_ModelBuilder explicado no punto anterior].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
        Model model = assets.get(&amp;quot;ship.obj&amp;quot;, Model.class);&lt;br /&gt;
        modeloInstancia = new ModelInstance(model);	&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Renderizamos o ModelInstace (é o que determina a posición do modelo no espazo 3D).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;10&amp;quot; &amp;gt;&lt;br /&gt;
@Override&lt;br /&gt;
public void render(float delta) {&lt;br /&gt;
	// TODO Auto-generated method stub&lt;br /&gt;
	Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
	 &lt;br /&gt;
	camController.update();&lt;br /&gt;
		&lt;br /&gt;
        modelBatch.begin(camara3d);&lt;br /&gt;
&lt;br /&gt;
        modelBatch.render(modeloInstancia,environment);&lt;br /&gt;
        &lt;br /&gt;
        modelBatch.end();	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ó final teremos como resultado isto:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Imagen:LIBGDX_UD5_CargaModelos3D_1.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Múltiples modelos====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Preparación:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Descargade este arquivo e o descomprimides no cartafol /assets/ da versión Android: [[Media:LIBGDX_cubo.zip]]. &lt;br /&gt;
&lt;br /&gt;
Como veredes ven o obj en forma binaria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Agora imos cargar este cubo xunto coa nave.&lt;br /&gt;
Para facelo temos que definir un array de ModelInstance.&lt;br /&gt;
&lt;br /&gt;
Lembrar que a clase ModelInstance vai gardar nunha matriz a posición, rotación e escalado do modelo cargado.&lt;br /&gt;
&lt;br /&gt;
Polo tanto:&lt;br /&gt;
&lt;br /&gt;
* Definimos o array de ModelInstance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
private Array&amp;lt;ModelInstance&amp;gt; instances;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Instanciamos o array, normalmente no constructor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
 instances = new Array&amp;lt;ModelInstance&amp;gt;();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Cargamos os modelos no AssetManager:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
        AssetManager assets = new AssetManager();&lt;br /&gt;
        assets.load(&amp;quot;ship.obj&amp;quot;, Model.class);&lt;br /&gt;
        assets.load(&amp;quot;cube.g3db&amp;quot;, Model.class);&lt;br /&gt;
        assets.finishLoading();&lt;br /&gt;
        &lt;br /&gt;
        Model modelNave = assets.get(&amp;quot;ship.obj&amp;quot;, Model.class);&lt;br /&gt;
        Model modelCubo = assets.get(&amp;quot;cube.g3db&amp;quot;, Model.class);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Unha vez cargados os modelos, os engadimos ó array:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
        instances.add(new ModelInstance(modelNave));&lt;br /&gt;
        instances.add(new ModelInstance(modelCubo));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nota:&amp;lt;/u&amp;gt; Fixarse que agora o array ten dous ModelInstance (na posición 0 está a nave e na 1 o cubo).&lt;br /&gt;
No seguinte punto imos explicar como mover cada un deles, polo de agora só poñemos o código e o explicamos posteriormente.&lt;br /&gt;
&lt;br /&gt;
* Movemos o cubo para que non coincida na mesma posición cá nave.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
        instances.get(0).transform.setToTranslation(2, 2, 2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Renderizamos o array completo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;10&amp;quot; &amp;gt;&lt;br /&gt;
@Override&lt;br /&gt;
public void render(float delta) {&lt;br /&gt;
	// TODO Auto-generated method stub&lt;br /&gt;
	Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
	 &lt;br /&gt;
	camController.update();&lt;br /&gt;
		&lt;br /&gt;
        modelBatch.begin(camara3d);&lt;br /&gt;
&lt;br /&gt;
        modelBatch.render(instances,environment);&lt;br /&gt;
        &lt;br /&gt;
        modelBatch.end();	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Liberamos o array:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;5&amp;quot; &amp;gt;&lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
		modelBatch.dispose();&lt;br /&gt;
		instances.clear();&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Dará como resultado isto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Imagen:LIBGDX_UD5_CargaModelos3D_2.jpg|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Código da clase EX_2_CargaModelos&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Obxectivo:&amp;#039;&amp;#039;&amp;#039; Visualizar varios modelos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot; line enclose=&amp;quot;div&amp;quot; highlight=&amp;quot;&amp;quot; &amp;gt;&lt;br /&gt;
import com.badlogic.gdx.Gdx;&lt;br /&gt;
import com.badlogic.gdx.Screen;&lt;br /&gt;
import com.badlogic.gdx.assets.AssetManager;&lt;br /&gt;
import com.badlogic.gdx.graphics.GL20;&lt;br /&gt;
import com.badlogic.gdx.graphics.PerspectiveCamera;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.Environment;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.Model;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.ModelBatch;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.ModelInstance;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.utils.CameraInputController;&lt;br /&gt;
import com.badlogic.gdx.utils.Array;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class EX_2_CargaModelosInicial implements Screen {&lt;br /&gt;
&lt;br /&gt;
	private PerspectiveCamera camara3d;&lt;br /&gt;
	private  ModelBatch modelBatch;&lt;br /&gt;
&lt;br /&gt;
	private Array&amp;lt;ModelInstance&amp;gt; instances;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	private Environment environment;&lt;br /&gt;
	private CameraInputController camController;&lt;br /&gt;
	&lt;br /&gt;
	public EX_2_CargaModelosInicial(){&lt;br /&gt;
		camara3d = new PerspectiveCamera();&lt;br /&gt;
		camController = new CameraInputController(camara3d);&lt;br /&gt;
		Gdx.input.setInputProcessor(camController);&lt;br /&gt;
		&lt;br /&gt;
		modelBatch = new ModelBatch();&lt;br /&gt;
		environment = new Environment();&lt;br /&gt;
        environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));&lt;br /&gt;
        environment.add(new DirectionalLight().set(1f, 1f, 1f, 1f, 0f, 0f));&lt;br /&gt;
&lt;br /&gt;
        instances = new Array&amp;lt;ModelInstance&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        AssetManager assets = new AssetManager();&lt;br /&gt;
        assets.load(&amp;quot;ship.obj&amp;quot;, Model.class);&lt;br /&gt;
        assets.load(&amp;quot;cube.g3db&amp;quot;, Model.class);&lt;br /&gt;
        assets.finishLoading();&lt;br /&gt;
        &lt;br /&gt;
        Model modelNave = assets.get(&amp;quot;ship.obj&amp;quot;, Model.class);&lt;br /&gt;
        Model modelCubo = assets.get(&amp;quot;cube.g3db&amp;quot;, Model.class);&lt;br /&gt;
&lt;br /&gt;
        instances.add(new ModelInstance(modelNave));&lt;br /&gt;
        instances.add(new ModelInstance(modelCubo));&lt;br /&gt;
&lt;br /&gt;
        instances.get(0).transform.setToTranslation(2, 2, 2);&lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void render(float delta) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
		 &lt;br /&gt;
		camController.update();&lt;br /&gt;
		&lt;br /&gt;
        modelBatch.begin(camara3d);&lt;br /&gt;
&lt;br /&gt;
        modelBatch.render(instances,environment);&lt;br /&gt;
        &lt;br /&gt;
        modelBatch.end();	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void resize(int width, int height) {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
		camara3d.fieldOfView=67;&lt;br /&gt;
		camara3d.viewportWidth=width;&lt;br /&gt;
		camara3d.viewportHeight=height;&lt;br /&gt;
		&lt;br /&gt;
		Gdx.input.setInputProcessor(camController);&lt;br /&gt;
		&lt;br /&gt;
		camara3d.position.set(0f,0f,15f);&lt;br /&gt;
		camara3d.lookAt(0,0,0);&lt;br /&gt;
		camara3d.near=1;&lt;br /&gt;
		camara3d.far=300f;&lt;br /&gt;
		camara3d.update();&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void show() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void hide() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void pause() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void resume() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
		&lt;br /&gt;
		modelBatch.dispose();&lt;br /&gt;
		instances.clear();&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2015).&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
		
	</entry>
</feed>