<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_Carga_Modelos3D</id>
	<title>LIBGDX Carga Modelos3D - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=LIBGDX_Carga_Modelos3D"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=LIBGDX_Carga_Modelos3D&amp;action=history"/>
	<updated>2026-10-24T09:49:26Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=LIBGDX_Carga_Modelos3D&amp;diff=49161&amp;oldid=prev</id>
		<title>Angelfg: /* Conversión de formatos en 3D */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=LIBGDX_Carga_Modelos3D&amp;diff=49161&amp;oldid=prev"/>
		<updated>2014-10-12T08:43:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Conversión de formatos en 3D&lt;/span&gt;&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 4: Carga de Modelos 3D&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Deseñando os nosos modelos 3D===&lt;br /&gt;
&lt;br /&gt;
Loxicamente os nosos modelos 3D non vai ser creados &amp;#039;manualmente&amp;#039;, se non utilizando programas gráficos.&lt;br /&gt;
&lt;br /&gt;
Algún deles:&lt;br /&gt;
* Blender: http://www.blender.org/&lt;br /&gt;
::Moi completo pero tamén bastante complexo.&lt;br /&gt;
* Wings3D: http://www.wings3d.com&lt;br /&gt;
::Bastante máis sinxelo.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nos imos usar o wings3d&amp;#039;&amp;#039;&amp;#039; aínda que os alumnos podedes utilizar calquera que manexedes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación tedes un enlace con tres vídeos (e o códec de vídeo por se non o visualizades) de como se manexa o Wings3D e como podemos crear un obxecto 3D e asinarlle unha textura.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; [https://drive.google.com/folderview?id=0BwlI3fEeprlpZ2traGU2bmRaUVU&amp;amp;usp=sharing Enlace a vídeos explicativos Wings3D]&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conversión de formatos en 3D===&lt;br /&gt;
&lt;br /&gt;
En canto os formatos gráficos que podemos cargar están, entre outros:&lt;br /&gt;
* obj: https://en.wikipedia.org/wiki/Wavefront_.obj_file&lt;br /&gt;
* md2: https://en.wikipedia.org/wiki/MD2_%28file_format%29&lt;br /&gt;
* fbx: http://en.wikipedia.org/wiki/FBX&lt;br /&gt;
* g3dj: Formato g3d en mode texto Json (se pode editar).&lt;br /&gt;
* g3db: Formato g3d en binario. É o mais rápido de cargar e o que menos ocupa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para pasar dun formato a outro podemos utilizar unha ferramenta: &amp;#039;&amp;#039;&amp;#039;fbx-conv&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos ver o código fonte en: https://github.com/libgdx/fbx-conv&lt;br /&gt;
&lt;br /&gt;
Podemos descargar a versión compilada en: http://libgdx.badlogicgames.com/fbx-conv/&lt;br /&gt;
&lt;br /&gt;
Información na wiki: https://github.com/libgdx/fbx-conv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O proceso para pasar dun obj a un g3db sería:&lt;br /&gt;
&lt;br /&gt;
* Descargar a versión compilada do enlace anterior. &lt;br /&gt;
* Descomprimide e abride unha consola. &lt;br /&gt;
** Se estades en Linux hai que copiar a librería &amp;#039;&amp;#039;&amp;#039;libfbxsdk.so&amp;#039;&amp;#039;&amp;#039; a /usr/lib.&lt;br /&gt;
** Se estades en Windows debedes ter instalado o [http://www.microsoft.com/en-us/download/confirmation.aspx?id=5555 paquete  VC 2010 Redistributable Package].&lt;br /&gt;
&lt;br /&gt;
* Vos situades onde se atopan os executables e escolledes a versión correspondente ó voso S.O.:&lt;br /&gt;
** fbx-conv-win32.exe: Windows&lt;br /&gt;
** fbx-conv-lin64: Linux&lt;br /&gt;
** fbx-conv-mac: Mac&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;
&lt;br /&gt;
* A orde para pasar por exemplo de obj a g3db seria:&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;
fbx-conv-win32.exe modelo_entrada.obj modelo_saida.g3db&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;NOTA:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; Sempre que queiramos acelerar a carga dos modelos deberemos de pasalos a binario.&lt;br /&gt;
&lt;br /&gt;
===Carga de Modelos 3D===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Carga Modelos obj====&lt;br /&gt;
&lt;br /&gt;
Para cargar un modelo obj temos que facer uso da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/ModelLoader.html clase ModelLoader].&lt;br /&gt;
&lt;br /&gt;
O proceso sería:&lt;br /&gt;
&lt;br /&gt;
* Crear unha instancia de dita clase:&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;
		ModelLoader loader = new ObjLoader();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Chamar ó [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/ModelLoader.html#loadModel-com.badlogic.gdx.files.FileHandle- método loadModel]:&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 = loader.loadModel(Gdx.files.internal(&amp;quot;modelos/ship.obj&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dito método espera recibir como parámetro o arquivo obj.&lt;br /&gt;
&lt;br /&gt;
Este método devolve un obxecto da [http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/Model.html clase Model].&lt;br /&gt;
&lt;br /&gt;
Para nos un Model ven ser como un Mesh, o que sucede é que nun model poden ser cargados moitos Mesh de vez, polo que para ter unha referencia a un concreto faremos o seguinte:&lt;br /&gt;
&lt;br /&gt;
* Cargamos o Mesh:&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 Mesh meshNave;&lt;br /&gt;
        .............&lt;br /&gt;
        meshNave = model.meshes.get(0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
No noso caso só temos un Mesh no obj.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemplo:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Imos ver un exemplo completo, engadindo un modelo dunha nave e movéndoa cara a cámara, facendo que a cámara siga a nave cando a pase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Preparación:&amp;#039;&amp;#039;&amp;#039; Crear unha clase de nome UD4_6_CargaModelos3D, que derive da clase Game e sexa chamada pola clase principal das diferentes versións (desktop, android,...).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crea un cartafol de nome &amp;#039;&amp;#039;&amp;#039;modelos&amp;#039;&amp;#039;&amp;#039; dentro do cartafol assets da versión Android.&lt;br /&gt;
&lt;br /&gt;
Leva ó cartafol &amp;#039;&amp;#039;&amp;#039;assets/modelos&amp;#039;&amp;#039;&amp;#039; os arquivos ship.mtl, ship.obj e ship.png que se atopan no seguinte arquivo comprimido:&lt;br /&gt;
&lt;br /&gt;
[[Media:Ship.zip]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creamos unha clase Elementos3D que garde a información de calquera elemento 3D. É igual á clase Cubo que utilizamos no exercicio anterior:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Código da clase Elementos3D &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; Definir unha clase que garde o que necesitamos dun obxecto 3d.&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.math.Matrix4;&lt;br /&gt;
import com.badlogic.gdx.math.Vector3;&lt;br /&gt;
&lt;br /&gt;
public class Elemento3D {&lt;br /&gt;
	&lt;br /&gt;
	public Matrix4 matriz;&lt;br /&gt;
	public Vector3 posicion;&lt;br /&gt;
	public float escala;&lt;br /&gt;
	public Vector3 velocidade;&lt;br /&gt;
	private Vector3 temp;&lt;br /&gt;
	&lt;br /&gt;
	public Elemento3D(Vector3 pos, float escala,Vector3 velocidade){&lt;br /&gt;
		matriz = new Matrix4();&lt;br /&gt;
		posicion = pos;&lt;br /&gt;
		this.escala=escala;&lt;br /&gt;
		this.velocidade = velocidade;&lt;br /&gt;
		&lt;br /&gt;
		temp = new Vector3();&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public void update(float delta){&lt;br /&gt;
		&lt;br /&gt;
		temp.set(velocidade);&lt;br /&gt;
		posicion.add(temp.scl(delta));&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
		matriz.idt();&lt;br /&gt;
		matriz.translate(posicion);&lt;br /&gt;
		matriz.scl(escala);&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;
Agora imos ver o código de carga da nave.&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;21,41-43,49,64-65,71,97&amp;quot; &amp;gt;&lt;br /&gt;
import com.badlogic.gdx.Game;&lt;br /&gt;
import com.badlogic.gdx.Gdx;&lt;br /&gt;
import com.badlogic.gdx.assets.loaders.ModelLoader;&lt;br /&gt;
import com.badlogic.gdx.files.FileHandle;&lt;br /&gt;
import com.badlogic.gdx.graphics.GL20;&lt;br /&gt;
import com.badlogic.gdx.graphics.Mesh;&lt;br /&gt;
import com.badlogic.gdx.graphics.PerspectiveCamera;&lt;br /&gt;
import com.badlogic.gdx.graphics.Texture;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.Model;&lt;br /&gt;
import com.badlogic.gdx.graphics.g3d.loader.ObjLoader;&lt;br /&gt;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;&lt;br /&gt;
import com.badlogic.gdx.math.Vector3;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Cargando modelos 3D&lt;br /&gt;
 * @author ANGEL&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class UD4_6_CargaModelos3D extends Game {&lt;br /&gt;
&lt;br /&gt;
	private Mesh meshNave;&lt;br /&gt;
	private Elemento3D nave;&lt;br /&gt;
	private ShaderProgram shaderProgram;&lt;br /&gt;
&lt;br /&gt;
	private Texture textura;&lt;br /&gt;
	private PerspectiveCamera camara3d;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void create() {&lt;br /&gt;
		// TODO Auto-generated method stub&lt;br /&gt;
&lt;br /&gt;
		shaderProgram = new ShaderProgram(Gdx.files.internal(&amp;quot;vertex.vert&amp;quot;), Gdx.files.internal(&amp;quot;fragment.frag&amp;quot;));&lt;br /&gt;
		if (shaderProgram.isCompiled() == false) {&lt;br /&gt;
			Gdx.app.log(&amp;quot;ShaderError&amp;quot;, shaderProgram.getLog());&lt;br /&gt;
			System.exit(0);&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
		ModelLoader loader = new ObjLoader();&lt;br /&gt;
        Model model = loader.loadModel(Gdx.files.internal(&amp;quot;modelos/ship.obj&amp;quot;));&lt;br /&gt;
        meshNave = model.meshes.get(0);&lt;br /&gt;
        &lt;br /&gt;
		FileHandle imageFileHandle = Gdx.files.internal(&amp;quot;modelos/ship.png&amp;quot;);&lt;br /&gt;
		textura = new Texture(imageFileHandle);&lt;br /&gt;
		&lt;br /&gt;
		camara3d = new PerspectiveCamera();&lt;br /&gt;
		nave = new Elemento3D(new Vector3(0,-1f,-20f), 2f, new Vector3(0.1f,0.1f,2f));&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void render() {&lt;br /&gt;
&lt;br /&gt;
		Gdx.gl20.glClearColor(0f, 0f, 0f, 1f);&lt;br /&gt;
		Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT|GL20.GL_DEPTH_BUFFER_BIT);&lt;br /&gt;
&lt;br /&gt;
		Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST);&lt;br /&gt;
		&lt;br /&gt;
		nave.update(Gdx.graphics.getDeltaTime());&lt;br /&gt;
		&lt;br /&gt;
		camara3d.lookAt(nave.posicion);&lt;br /&gt;
		camara3d.update();&lt;br /&gt;
		&lt;br /&gt;
		shaderProgram.begin();&lt;br /&gt;
		textura.bind(0);&lt;br /&gt;
		shaderProgram.setUniformi(&amp;quot;u_texture&amp;quot;, 0);&lt;br /&gt;
		shaderProgram.setUniformMatrix(&amp;quot;u_worldView&amp;quot;, camara3d.combined.cpy().mul(nave.matriz));&lt;br /&gt;
		meshNave.render(shaderProgram, GL20.GL_TRIANGLES);&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
&lt;br /&gt;
		shaderProgram.end();&lt;br /&gt;
		&lt;br /&gt;
		Gdx.gl20.glDisable(GL20.GL_DEPTH_TEST);&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void resize (int width,int height){&lt;br /&gt;
		// Definimos os parámetros da cámara&lt;br /&gt;
		float aspectRatio = (float) width / (float) height; &lt;br /&gt;
		camara3d.viewportWidth=aspectRatio*1f;&lt;br /&gt;
		camara3d.viewportHeight=1f;&lt;br /&gt;
		camara3d.far=1000f;&lt;br /&gt;
		camara3d.near=0.1f;&lt;br /&gt;
		camara3d.lookAt(0,0,0);&lt;br /&gt;
		camara3d.position.set(0f,0f,5f);&lt;br /&gt;
		camara3d.update();&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	@Override&lt;br /&gt;
	public void dispose(){&lt;br /&gt;
		shaderProgram.dispose();&lt;br /&gt;
		meshNave.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;
* Liña 21: Definimos o obxecto Mesh que vai representar a nave.&lt;br /&gt;
* Liñas 41-43: Cargamos o obj utilizando a clase ModelLoader.&lt;br /&gt;
* Liña 49: Instanciamos a nave pasándolle uns datos concretos.&lt;br /&gt;
* Liñas 64-65: Facemos que a cámara mire cara a nave. LEMBRAR CHAMAR Ó UPDATE.&lt;br /&gt;
* Liña 71: Renderizamos a nave.&lt;br /&gt;
* Liña 97: Liberamos a memoria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TAREFA 4.5 A FACER:&amp;#039;&amp;#039;&amp;#039; Esta parte está asociada á realización dunha tarefa.  &lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====Carga Modelos g3db====&lt;br /&gt;
&lt;br /&gt;
Para cargar estes modelos debemos facer uso da [http://manuais.iessanclemente.net/index.php?title=LIBGDX_AssetManager clase AssetManager].&lt;br /&gt;
&lt;br /&gt;
Como isto é optativo na parte 2D non fai falla que o provedes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para cargar un modelo g3db previamente obtido coa ferramenta fbx-conv debemos facer o seguinte:&lt;br /&gt;
&lt;br /&gt;
* Crear un obxecto da clase AssetManager (que xa podemos ter creado se utilizamos esta forma de carga dos gráficos do xogo):&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 assetManager = new AssetManager();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Chamamos ó método load para cargar o modelo e esperamos a que remate de cargar.&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.load(&amp;quot;modelos/ship.g3db&amp;quot;, Model.class);&lt;br /&gt;
        &lt;br /&gt;
        assetManager.finishLoading();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Obtemos o obxecto da clase Model como fixemos no caso 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 = assetManager.get(&amp;quot;modelos/ship.g3db&amp;quot;, Model.class);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Cargamos o Mesh que se atopa no Model (só temos un).&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;
        meshNave = model.meshes.get(0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
O código completo:&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 assetManager = new AssetManager();&lt;br /&gt;
        assetManager.load(&amp;quot;modelos/ship.g3db&amp;quot;, Model.class);&lt;br /&gt;
        &lt;br /&gt;
        assetManager.finishLoading();&lt;br /&gt;
        &lt;br /&gt;
        Model model = assetManager.get(&amp;quot;modelos/ship.g3db&amp;quot;, Model.class);&lt;br /&gt;
        meshNave = model.meshes.get(0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Modelos 3D xa feitos===&lt;br /&gt;
&lt;br /&gt;
Temos diferentes sitios web onde obter modelos 3D.&lt;br /&gt;
&lt;br /&gt;
* http://opengameart.org/&lt;br /&gt;
* http://tf3dm.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2014).&lt;/div&gt;</summary>
		<author><name>Angelfg</name></author>
	</entry>
</feed>