CHIPMUNK en bennu

Started by Prg, January 12, 2011, 04:27:44 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

peterpollito

impresionante la libreria cada vez avanza más.

Karma!

Prg

Quote from: josebita on October 18, 2011, 10:08:14 PM
Prg, estaba intentando compilar la nueva versión de tu módulo para mi PPA pero me he encontrado con problemas porque el binario compilado me suelta constantes violaciones de segmento, pero la versión .so que incluyes en el paquete me funciona bien....
¿Cómo compilas tú? ¿Hace falta algún flag de compilado en particular?.


PD: Es que el proyecto de codeblocks no me va, tampoco...

¿Estás compilando con la nueva versión de chipmunk?

Por otro lado he añadido una nueva función, aunque aún no está terminada (deja muchísimos puntos extras y no se ha optimizado nada en cuento a coste computacional). Reconocimiento de cuerpos convexos de manera automática... Espero pronto poder subir una nueva versión.

Gracias peterpollito.

Saludos.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

Hola.

Nueva versión, compilada con la versión 6.0.2 de chipmunk.

Cambios:
-Generación automática de cuerpos convexos.
-obtención de los vértices del cuerpo convexo de un gráfico test16.
-Funciones para manejo de árbitros test12-test14
-Actualizada a la versión Chipmunk-6.0.2
-Corrección de un bug en la generación de arreglos dinámicos.
-Descripción de los test completada.
-Nuevos ejemplos.

Descripción de los test

Quotetest00        Pelota rebotando
                    addInanimateShape
                    lphysics.mass
                        lphysics.ELASTICITY
                        lphysics.friction
                        lphysics.ShapeType
                        forceCreateBody()
                        lphysics.inertia
                        GETOPTIMALINERTIA()
                        INTERSECTSBB(id2)       --> colisión
                        muerte de procesos con física


test01        Cuerpos sin gravedad estilo bomberman, Empujar objetos, Movimiento de personaje y Traspasar objetos.
                        gphysics.bias_coef
                        gphysics.damping
                        lphysics.static
                        lphysics.group
                        TYPE_CONVEX_POLYGON
                        cpMomentForCircle()
                        TYPE_CIRCLE
                        CP_NO_GROUP
                        TYPE_box

test02        Slew, cuerpos estáticos y Pirámide de dominós.
                        gphysics.iterations
                        gphysics.collision_slop
                        gphysics.sleepTimeThreshold
                        cpvadd()
                        Slew()

test03        Polígonos definidos por arreglo y lphysics.group
                  lphysics.params
                  TYPE_CONVEX_POLYGON

test04        Movimiento con el ratón, Joint, Colisión puntual, gphysics.interval, y uso de boundingbox (intersecciones y envoltura).
                  gphysics.SLEEPTIMETHRESHOLD
                  infinityf()
                  cpBBIntersects
                  cpBBmerge
                  DefConstraintF
                  CP_C_MAXFORCE
                  CP_C_BIASCOEF
                  RemoveConstraint
                  ShapeCacheBB
                  cpBB

test05        Varias pelotas que se pueden mover, piso formado por línea y función para obtener los shapes y constraints de un proceso, gphysics.bias_coef.
                  COLLISIONHANDLERNEW
                  SpaceSegmentQueryFirst
                  SegmentQueryHitPoint
                  SegmentQueryHitDist
                  GETCOLLISIONINFO
                  GETCONSTRAINTS
                  GETSHAPES

test06        phresolution, pin, joint, motor y resortes.
                  addPivotJoint
                  addSimpleMotor
                  addPinJoint
                  addDampedRotarySpring
                  infinityf

test07        Física de juego tipo plataformas, péndulos, objetos con centro distinto del (0,0), Movimiento por fuerzas
                  cpContactPointSet
                  cpvperp
                  cpvmult
                  cpvadd
                  DEFBODYP
                  CP_C_V
                  GETCOLLISIONINFO
                  cpfclamp

test08        Eliminar zona y eliminar todos los cuerpos físicos. Constraints
                  cleanSpace
                  WORLD2LOCAL
                  RemoveConstraint
                  cpMomentForPoly
                  addPinJoint
                  addSlideJoint
                  addPivotJoint
                  addGrooveJoint
                  addDampedSpring
                  addDampedRotarySpring
                  addRotaryLimitJoint
                  addRatchetJoint
                  addSimpleMotor
                  DefShapeI
                  CP_C_LAYERS
                  NOT_GRABABLE_MASK
                  addInanimateShape
                  COLLISIONHANDLERNEW
                 
test09        Uso de constraints, Modificación de propiedades de constraints, Procesos con más de un shape, Simulación de máquina TheoJansen.
                  cpMomentForSegment
                  ADDPIVOTJOINT2
                  ADDCIRCLESHAPE
                  defShapef
                  ADDPINJOINT
                  SETPINJOINTPROPERTIES
                  CP_C_DIST
                  DefShapeI
                  CP_C_LAYERS
                  NOT_GRABABLE_MASK
                  CP_C_E
                  CP_C_U
                  DefShapeF
                  cpvforangle
                  CM_PI
                  ADDSIMPLEMOTOR
                  SETSIMPLEMOTORPROPERTIES
                  DEFCONSTRAINTF
                  CP_C_MAXFORCE

test10        Generación de terrenos mediante .cpt
                  COLLISIONHANDLERNEW
                  addInanimateShape
                  cpMomentForCircle
                  cpvperp
                  cpvmult
                  cpvadd
                  GETCOLLISIONINFO
                  cpBodyActivate
                  cpContactPointSet

test11          Handlers de collision.  Omitir respuesta de cuerpos al colisionar (Útil para juegos de plataformas donde el personaje colisiona con el piso sólo cuando desciende y no cuando asciende (aquí revisaríamos la dirección de la normal de colisión para filtrar las colisiones)).
                  SPACEADDCOLLISIONHANDLER
                  SPACEREMOVECOLLISIONHANDLER
                  Ejemplo de handler presolve, postsolve, separate e inicia.

test12          Simulando objeto que cae en un líquido
                  addInanimateShape
                  SPACEADDCOLLISIONHANDLER
                  GETARBITERPOINT
                  MODARBITERPROCESSA
                  ResetForces
                  ApplyForce
                  DefBodyP
                  cpfclamp
                  lphysics.collisionType
                  updateVelocity

test13          Lisa de cuerpos colgados y destrucción de constraints al superar un umbral en la fuerza aplicada (Destrucción de uniones y resortes)
                  ADDSLIDEJOINT
                  DEFCONSTRAINTF
                  CONSTRAINTSETPOSTSOLVEFUNC
                  RemoveConstraint
                  getConstraintFatherA
                  getConstraintFatherB
                  CP_C_MAXFORCE
                  GETCONSTRAINTF
                  SpaceGetCurrentTimeStep
                  constraintGetImpulse

test14          Mover un cuerpo y hacer que se vaya frenando con el tiempo
                  APPLYIMPULSE
                  gphysics.damping

test15        Simulando una soga
                  APPLYIMPULSE
                  addPivotJoint2
                  WORLD2LOCAL

test16        Creación automática de cuerpos convexos
                         CALCULATECONVEXBODY

Link de descarga en el primer post.

Saludos.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

peterpollito

ya no va el link de la primera página Prg



Prg

Hola!!

mmm... ¡cuánto tiempo desde la última visita?

Estuve un poco ocupado en mi último semestre de materias pero durante estas vacaciones escribí un poco de código para la librería y quiero mostrar un poco lo que he estado haciendo:

-Corregida la generación de convexHull, ahora se usa un algoritmo que viene en la nueva versión de Chipmunk...
-Se hacen pruebas de algoritmos que buscan una representación poligonal... El que estoy usando para esta versión (INESTABLE quizás) no es muy bueno, si alquien me puede aconsejar algún algoritmo que funcione mejor se le agradecería y si lo programa más (Estoy en tesis y comenzaré las prácticas en una semana, no me queda tanto tiempo).
-Se hacen pruebas de algoritmos de simulación de líquidos...  (regalo para Peter pollo, pero no se si le guste o si era lo que pedía)... El problema está en el algoritmo de pintado... estoy ahorita haciéndolo por fuerza bruta usando la función de metaballs, sin embargo es muy lento y no se hasta cuándo podré hacerlo de otra forma...

Entre los test se encuentran lo siguiente:

test17         simulación de soga.

test16        Creación automática de cuerpos convexos
                         CALCULATECONVEXBODY

test18        Creación de cuerpos a partir de gráfico  (Le pasas un gráfico y te devuelve una serie de puntos que formarán lineas para generar el terreno). El algoritmo usado no me gusta, se aceptan sugerencias. Si alguien quiere ver cómo funciona el algoritmo y le da flojera leerse el automGenTerr.c puede leer el código en matlab de la carpeta reduccion de bordes.

test19        Simulación y pintado de agua...  Ok, si alguien quiere ayudar a mejorar el algoritmo de pintado se aceptan sugerencias y ayuda en codificación. Hay código de matlab en la carpeta agua y código C en agua.c.  El link que me gustó para realizar el pintado es: http://www.niksula.hut.fi/~hkankaan/Homepages/metaballs.html y hay un código en pyton para entender el algoritmo...

link de descarga de la versión QUIZÁ INESTABLE de la librería con todos los cambios actuales y los ejemplos:

http://www.mediafire.com/?y32pmav2icp2202
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

KeoH

Estupendo trabajo Prg, estoy deseando meterle mano a esta libreria xDD me gustaria empezar a practicar con ella pronto :)

JaViS

Buenisimo


ya tengo muchas ganas de hacer un plataformas con esta libreria!
Working on Anarkade. A couch multiplayer 2D shooter.

Prg

Quote from: JaViS on August 13, 2012, 02:54:47 AM
Buenisimo


ya tengo muchas ganas de hacer un plataformas con esta libreria!

Si vas a hacer plataformas te recomiendo que antes revises los callback (test 11).

En los plataformas es común que puedas acceder a pisos que están sobre tí solo saltando pero cuando ya estás en el piso no puedes bajar, o lo haces mediante la combinación de algunas teclas. Estos filatrados de colisiones se pueden realizar mediante el uso de callbacks de forma muy sencilla.

Saludos
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

FreeYourMind

Hola Prg.

Me gustaria saber como has creado el .cpt del ejemplo 10, o sea, como has mapeado/obtenido las coordenadas de las durezas del mapa ?

La libreria no puede funcionar por ejemplo pasando un mapa de durezas para crear una superficie y que ella detecte el color y a partir de ahí ya haga las colisiones entre objetos con esta superficie ? O es necessario tener un fichero .cpt con puntos de control ?

muchas gracias

Erkosone

Hola, he estado probando todos los ejemplos que trae la librería y me han encantado, pienso que estaría muy muy bien mantener este modulo como oficial, da mucho de si para un lenguaje como BennuGD simplificando al máximo muchas cosas.


Muchas gracias al autor por compartirla, está siendo uno de mis entretenimientos principales estos días, mola mucho.


kim-elet-o

Hola, estoy por aqui de nuevo a las andadas.

Quiero probar Chipmunk para Bennugd,  mi sistema operativo es Ubuntu 12.04, estoy intentando compilar los ejemplos en prg con el compilador de BennuGD, y al hacerlo me salta el error de que no encuentra la libreria mod_chipmunk a pesar que esta en el directorio donde se encuentran dichos ejemplos, he probado de ponerle rutas relativas y absolutas, en version windows y linux, y sigue dando error.

Hay que poner la libreria en algun lugar determinado? se puede esta instalar mediante el ppa que mantiene Josebita?, si es asi como se hace?. Gracias de antemano.


|/
|\im-elet-o el yayo programador.

SplinterGU

dependencias y/o nombre de la .so no puede ser cambiado.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: kim-elet-o on January 13, 2013, 07:28:54 PM
Hola, estoy por aqui de nuevo a las andadas.

Quiero probar Chipmunk para Bennugd,  mi sistema operativo es Ubuntu 12.04, estoy intentando compilar los ejemplos en prg con el compilador de BennuGD, y al hacerlo me salta el error de que no encuentra la libreria mod_chipmunk a pesar que esta en el directorio donde se encuentran dichos ejemplos, he probado de ponerle rutas relativas y absolutas, en version windows y linux, y sigue dando error.

Hay que poner la libreria en algun lugar determinado? se puede esta instalar mediante el ppa que mantiene Josebita?, si es asi como se hace?. Gracias de antemano.
De momento la chipmunk no está en mi PPA, aunque estoy en ello.
Hasta entonces, para que en Linux te funcione con la librería en el mismo directorio, prueba a establecer la variable de entorno LD_LIBRARY_PATH al directorio donde tengas la ".so", a ver si funciona.