TA159

Notas, resueltos y trabajos practicos de la materia Sistemas Gráficos
Index Commits Files Refs Submodules README LICENSE
commit 7b68f1d41ca980f4d73015997d4b56f621890919
parent 31a0a5c456602f148d834fcb649b4aeb62b60a13
Author: Martin Klöckner <mjkloeckner@gmail.com>
Date:   Tue, 25 Jun 2024 19:07:47 -0300

update `README.md`

Diffstat:
Mtp/README.md | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 69 insertions(+), 10 deletions(-)
diff --git a/tp/README.md b/tp/README.md
@@ -1,17 +1,62 @@
 # Trabajo Practico Sistemas Gráficos
 
-El trabajo practico consiste en implementar una escena en 3D utilizando WebGL,
-en particular la libreria [Three.js]()
+El trabajo practico consiste en implementar una escena en 3D en
+[WebGL](https://www.khronos.org/webgl/) utilizando la librería de JavaScript
+[Three.js](https://threejs.org/)
+
+## Inicio Rápido
+
+Clone el repositorio con el siguiente comando:
+
+```console
+$ git clone https://github.com/mjkloeckner/86.43.git
+```
+
+Navegue al directorio del repositorio clonado y posteriormente a la carpeta del
+trabajo práctico
+
+```console
+$ cd 86.43/tp/
+```
+
+Instale las dependencias
+
+```console
+$ npm i
+```
+
+Finalmente inicialice un servidor Web en el directorio del trabajo práctico y
+abra su navegador de internet preferido en la `url` especificada por `vite`
+
+```console
+$ vite
+```
+
+## Dependencias
+
+* Un navegador que soporte [WebGL](https://get.webgl.org/)
+* [Node.js](https://nodejs.org/)
+* [npm](https://www.npmjs.com/)
+* [vite](https://www.npmjs.com/package/vite)
 
 ## Elementos de la escena
 
 * [X] Terreno
 * [X] Arboles
-* [ ] Vias de Tren
-* [ ] Locomotora
+* [X] Vias de Tren
+    - [X] Crear el terraplen
+    - [X] Crear las vias
+    - [ ] Aplicar textura difusa
+* [X] Locomotora
 * [ ] Puente
 * [ ] Túnel
-* [ ] Camaras
+* [ ] Cámaras
+    - [X] Orbital general
+    - [ ] Fija, locomotora frontal (desde la cabina hacia adelante)
+    - [ ] Fija, locomotora trasera (desde la cabina hacia atrás)
+    - [ ] Fija, con vistas al interior del túnel
+    - [ ] Fija, con vistas al interior del puente
+    - [ ] Primera persona (debe poder moverse sobre el terreno con el teclado y el mouse)
 * [X] Texturas
 * [ ] Iluminación
 
@@ -29,23 +74,37 @@ se utiliza la función Ruido de Perlin para obtener valores pseudo-aleatorios.
 
 Los arboles se generan de manera aleatoria en todo el mapa, y se utiliza el mapa
 de elevación para verificar que no caiga en un punto muy bajo o muy alto, como
-puede ser montaña o rio, de acuerdo a un parametro fijo
+puede ser montaña o rió, de acuerdo a un parámetro fijo
+
+### Terraplén y Vías de Tren
 
-### Vias de Tren
+Para dibujar las vías del tren se utiliza la función
+[`ParametricGeometry`](https://threejs.org/docs/index.html?q=param#examples/en/geometries/ParametricGeometry)
+de `three.js`, la cual genera una geometría a partir de una función paramétrica
+que recibe tres parámetros: `u`, `v` y un vector en espacio 3D.
 
 ### Locomotora
 
-A continuacion se muestra el arbol de dependencias de los objetos que componen
+A continuación se muestra el árbol de dependencias de los objetos que componen
 la locomotora
 
-![Objeto tren: arbol de dependencia](https://github.com/mjkloeckner/86.43-tp/assets/64109770/a4f8ea14-83f1-4180-bbad-696f4ee5dadf)
+![Objeto tren: árbol de dependencia](./train-tree.png)
+
+Para realizar cada objeto de la locomotora se utilizan funciones primitivas de `three.js` tales como
+[`BoxGeometry`](https://threejs.org/docs/index.html?q=box#api/en/geometries/BoxGeometry) o
+[`CylinderGeometry`](https://threejs.org/docs/index.html?q=cylin#api/en/geometries/CylinderGeometry),
+las cuales generan cubos y cilindros, respectivamente.
 
 ### Puente
 
 ### Túnel
 
-### Camaras
+### Cámaras
 
 ### Texturas
 
 ### Iluminación
+
+## Recursos Consultados
+
+* [Documentación de Three.js](https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene)