Ir al contenido

publicidad
publicidad

Foto

Ayuda para programar gráficos 3D en Lazarus (Freepascal)


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
24 respuestas en este tema

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#1

Escrito 22 mayo 2010 - 15:37

Hola a todos!

No sé muy bien si este tema va a este foro ya que no se trata especificamente de un videojuego, pero espero que me ayudeis con un problema.

Por cuestiones de trabajo he desarrollado un programa utilizando Lazarus (Freepascal) en entorno Linux (Ubuntu). El Hecho es que tengo todo un mallado de puntos (X,Y,Z) que representan una superficie (Estoy hablando de una matriz de 2000x2000 puntos donde cada uno tiene una altura diferente).

He estado investigando bastante por la red, pero no encuentro ninguna forma de representar esta superficie en mi programa. Tengo que graficar la superficie en 3D, cada punto tiene que tener un color que dependa de la altura (una especie de mapa topográfico) y tengo que poder cambiar la orientación de la superficie.

He encontrado formas de hacerlo en python y C, pero como he dicho el programa está hecho en Pascal y tampoco tengo conocimientos avanzados de programación.

Estaria muy agradecido a quien me diese alguna idea, alguna biblioteca de aplicaciones o algo así...

Muchas gracias a todos!

  • vanche

  • Methuselah

  • vida restante: 100%
  • Registrado: 01 feb 2009
  • Mensajes: 196
#2

Escrito 22 mayo 2010 - 19:14

Mmmm no tengo mucho conocimiento en pascal, pero para representar graficos, tienes que cargarlo, la verdad no entendi muy bien que quieres hacer...

Si quieres hacer que se vea un figura 3d con distintos niveles, que representen puntos de color, puedes ubircarlos y los creas en X,Y,Z pero no entiendo....

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#3

Escrito 22 mayo 2010 - 22:09

Mmmm no tengo mucho conocimiento en pascal, pero para representar graficos, tienes que cargarlo, la verdad no entendi muy bien que quieres hacer...

Si quieres hacer que se vea un figura 3d con distintos niveles, que representen puntos de color, puedes ubircarlos y los creas en X,Y,Z pero no entiendo....


Se trata de representar una superficie en 3D conociendo los puntos XYZ de la superficie y poderlo mover.

En cuanto a lo de los colores me refiero a que en lugar de que la superficie sea toda del mismo color, que los puntos tengan un color en función de la altura, solo es para que se vea mejor.

He estado mirando y recomiendan utilizar OpenGL, lo único es que tendría que programar TODO usando OpenGL y me gustaria encontrar alguna biblioteca para Pascal que me permite hacer esto de forma más sencilla (sino renuncio por falta de tiempo).

Gracias por contestar! ;)

#4

Escrito 23 mayo 2010 - 15:34

Lo tienes muy muy fácil, utiliza GLScene, es una librería que por debajo utiliza OpenGL y es muy fácil de usar, en 5 minutos puedes hacer eso que dices.

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#5

Escrito 23 mayo 2010 - 18:41

Lo tienes muy muy fácil, utiliza GLScene, es una librería que por debajo utiliza OpenGL y es muy fácil de usar, en 5 minutos puedes hacer eso que dices.


GLScene? Ostras... Tiene muy buena pinta!!! Mira que he buscado... Para C y Python habia encontrado mucha cosa, pero no para FPC. Además por lo que veo tambien se pueden hacer animaciones.

Espero que funcione!

Muchas muchas gracias!!

Ya te contaré...

#6

Escrito 26 mayo 2010 - 09:18

GLScene? Ostras... Tiene muy buena pinta!!! Mira que he buscado... Para C y Python habia encontrado mucha cosa, pero no para FPC. Además por lo que veo tambien se pueden hacer animaciones.

Espero que funcione!

Muchas muchas gracias!!

Ya te contaré...


Funciona y muy bien, todo bajo el paradigma de la orientación a objetos y también está para C++ si usas Borland C++ Builder. Puedes hacer de todo con esa librería, como por ejemplo cargar modelos en formato md2 (Quake II) y md3 (Quake III) y si quieres meter física puedes usar oxNewton. Si tienes alguna duda pregunta.

De nada.

PD: Unos vídeos de GLScene:

[media][/video]

[media][/video]

[media]http://www.youtube.com/watch?v=Yb0XA1NxU34[/video]

[media]http://www.youtube.com/watch?v=mrIsC6TLwfU[/video]

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#7

Escrito 26 mayo 2010 - 11:57

Si que se vé con posibilidades, si...

Por ahora solo necesito representar una superficie compleja mediante puntos y poderla rotar mediante controles.

Lo que no he encontrado ningún tutorial o manual para poderlo usar... Si sabes alguno te estaria muy agradecido.

Me gusta la potencia de estas librerias, más adelante quiero crear un simulador para mi trabajo y me iria genial.

No es por peloteo, pero muchísimas gracias!

#8

Escrito 26 mayo 2010 - 13:25

Si que se vé con posibilidades, si...

Por ahora solo necesito representar una superficie compleja mediante puntos y poderla rotar mediante controles.


Eso está tirado, ya verás.

Lo que no he encontrado ningún tutorial o manual para poderlo usar... Si sabes alguno te estaria muy agradecido.


Empieza con este tutorial:

http://mural.uv.es/d...cene/manual.PDF

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#9

Escrito 26 mayo 2010 - 20:58

Me pongo con ello! Ya te explicaré!

#10

Escrito 29 mayo 2010 - 21:01

¿Cómo va eso? ¿Todo bien?

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#11

Escrito 31 mayo 2010 - 12:27

Hola! Pues la verdad es que todavía no he conseguido instalarlo, ya que la información que he encontrado es para la instalación bajo windows y yo uso Ubuntu. De todas formas no creo que sea demasiado complicado y me tendría que poner (la semana pasada estuve bastante atareado con otros temas).

¿Conoces las instrucciones para representar la superficie mediante puntos? ¿Es posible ajustar la resolución de los puntos de la superficie en función del zoom?

Otra cosa, el manual que me pasaste está bien como inicio del entorno de glscene, pero no encuentro ningún manual más tipo "paso a paso", si sabes de alguno te lo agradecería.

De verdad me estás ayudando mucho, en cuanto tenga la primera imagen te la posteo!

Gracias

#12

Escrito 31 mayo 2010 - 22:01

Yo lo he instalado siempre bajo Windows, existe una lista de correo y un foro en el que te pueden ayudar a instalarlo, ya sabes como son estas cosas que hay que darles mil vueltas hasta que lo consigues.

En GLScene se representa una superficie mediate un plano o mediante un prisma rectangular, por ejemplo, no mediante puntos aunque supongo que todo es posible.

Si quieres manuales que profundicen más tendrás que ir ya a manuales en inglés. http://www.skinhat.c...tml/GLScene.php
http://glscene.pbworks.com/
http://glscene.pbworks.com/FAQ
http://glscene.pbworks.com/Reference

Cuando lo instales dame un toque y te digo como representar un plano a mi modo, que no se si te servirá.

Saludos.

  • mcgyver_75

  • Antediluvian

  • vida restante: 100%
  • Registrado: 29 abr 2010
  • Mensajes: 258
#13

Escrito 01 junio 2010 - 13:52

Por fin he conseguido instalar GLScene en Lazarus 0.9.28 para Ubuntu 10.04 LTS!!!

Ha sido todo un suplicio, bastantes horas...

Un pequeño esquema de la instalación:

1.- Bajar el archivo ZIP con el GLScene y descomprimir en usr/lib/lazarus/version/components/ o
Alternativa recomendada: ejecutar en esa carpeta "sudo svn co http://svn.freepasca...s/glscene/trunk glscene"
2.- Copiar "lazarus/components/glscene/globallinks/*.lpl" en "usr/lib/lazarus/version/packager/globallinks/"
"sudo cp -R *.lpl usr/lib/lazarus/version/packager/globallinks/"
3.- Iniciar lazarus > Paquete > Configurar paquetes instalados
4.- Seleccionar glscenelazarus, instalar y "guardar y reconstruir IDE".

Si con estos pasos se instala GLScene considérate un ser afortunado.

Problemas posibles (o probables, yo los tuve todos):

- No compila y "jpegforlazarus is not found"

Solución 1: En Paquete>Abrir Paquete Cargado Seleccionar glscenelazarus y eliminar la dependencia a "jpegfromlazarus". Editar /lazarus/components/glscene/Source/base/jpeg.pas con "sudo gedit ..." y modificar "LazJPEG" por "LazJPG". Guardar, compilar e instalar.

Solución 2: Si no ha funcionado la solución 1, prueba a volver al inicio y descargar glscene de nuevo con "sudo svn co http://svn.freepasca...s/glscene/trunk glscene".

- Compila, pero error "Cannont find -IGL"

Solución: sudo apt-get install libglul-mesa-dev

- Compila, pero error "Cannont find -IXxf86vm"

Solución: sudo apt-get install libXxf86vm-dev

Con esto he conseguido instalar glscenelazarus.

5.- Instalar paquete glscenecgshader (no está muy claro si solo se utiliza en tarjetas Nvidia)

- Error: "cannot install -lCg",

Solución: sudo apt-get install nvidia-cg-toolkit

6.- Instalar paquete glsceneode

- Error "cannot install -lode"

Solución: sudo apt-get install libODE-dev


Con todo esto ya tiene que estar operativo GLScene en la última versión de Lazarus.

Espero que sea de ayuda!

Ahora me pongo con los manuales a ver como funciona todo esto!

#14

Escrito 01 junio 2010 - 22:54

Muchas gracias por tomarte el tiempo y compartirlo con nosotros.

Para los que no quieran sufrir instalándo el entorno y la librería GLScene y quieran trabajar bajo Windows les paso la dirección donde encontrarán un instalador con todo incluído: http://www.skinhat.com/lazarus/
http://llodra.es/200...us-glscene.html

Saludos!

  • vanche

  • Methuselah

  • vida restante: 100%
  • Registrado: 01 feb 2009
  • Mensajes: 196
#15

Escrito 02 junio 2010 - 00:22

Esta bueno Cprogrammer pero una pregunta rapida...Para que sirve y en que compilador se instala?


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad