Tengo el siguiente problema: tengo un modelo 3D de un personaje (en mi caso un md2) y tengo otro modelo 3D de un objeto que interactua con este por ejemplo un arma, una pelota u otro personaje.
Mi pregunta es como hago bien que el personaje agarre el arma y la lleve en el brazo, lleve la pelota en el pie, por ejemplo.
Hasta ahora la idea que estoy usando es defino un pixel del modelo del personaje y pongo el otro modelo en ese pixel, pero no se si es así la mejor forma de hacerlo.
Para mí depende mucho del caso concreto. Hay que ver qué significa que el objeto "interactúa" con el modelo. Por ejemplo, si el personaje siempre va a llevar la misma arma capaz que lo mejor es integrar el arma en el modelo animado mismo. Si te interesa cambiar de armas podés hacer lo que vos decís; definirte un vértice en el modelo del personaje y dibujar el arma siempre centrada en ese vértice (me acuerdo que el Quake 3 hacía algo parecido). El caso de la pelota puede llegar a ser mucho más complejo, capaz que ahí te interesa que el personaje interactúe con el objeto de acuerdo con un modelo físico.
Lo mejor sería estudiar el caso particular; ¿es para algo concreto o una pregunta al aire?
La idea es para un jueguito de futbol. Nos interesa saber donde vamos a poner la pelota cuando el jugador corre. La idea del pixel tb puede ser util a la hora de calcular colisiones entre jugadores (barridas u otros posibles golpes).
No creo que haya soluciones "estándar", supongo que depende del comportamiento particular que quieras obtener. ¿Probaste buscar en GameDev o algún lado de esos?
El tema de dónde colocar la pelota cuando la lleva el jugador me parece que lo podés resolver con una animación prefijada; lo que veo más complicado es cómo pasar la pelota de estar "suelta" a estar "enganchada" en el jugador. Suena bien la idea de manejar un punto en el modelo para indicar dónde iría la bola.
Creo que el problema principal está en hacer que el jugador "lleve" la pelota mientras corre o camina dejando la posibilidad de que otro se la saque. Modelar una animación prefijada para el jugador llevando la pelota no creo que de buenos resultados para modelar robustamente lo anterior.
Yo creo que una mejor solución es tratar todo con colisiones teniendo, además, un buen modelo de una pelota en movimiento (cosa que se debe tener si se está haciendo un juego de pelota). Con esto quiero decir que debería haber alguna forma de describir el movimiento de la pelota como por ejemplo vectores velocidad. Así, el llevar la pelota se traduciría en colisiones contra el pié del modelo md2. Creo que el modelo md2 tiene volúmenes acotantes en sus partes. Ellos podrían usarse para verificar por la colisión entre la esfera y el pie o pierna y, respondiendo adecuadamente a ellas, derivar una nueva velocidad y dirección para la pelota.
Con este modelo, sacarle la pelota a un jugador seria pegarle a la pelota antes que el jugador que la lleva. El tema de como modelar la colisión y la respuesta dentro del modelo md2 puede ser un problema...
El tema es que en un juego de futbol no se puede tratar como si fuera hockey de aire, en el que los jugadores van golpeando la pelota. El jugador (persona) tiene menos control de movimiento que el jugador (macaquito), y lo entendible es que la persona cuyo macaco agarró la pelota aprete para adelante y que el macaco la lleve hacia adelante. Mismo el caso de que el macaco la lleve y quieras que doble a la izquierda, si el macaco la lleva no hay drama, pero si vas empujando la pelota es una transa!
La combinación que encontramos (sí, estoy con el mismo juego que El Granjero) fue que la lleve el jugador, pero a su vez los otros jugadores chequeen si la sacan contra la posición real de la pelota, que siempre se puede obtener. Los resultados quedan bastante lindos.
Ah, si, ahora entiendo los problemas y estoy de acuerdo con sus observaciones. Me imagino que la prueba y observación fueron fundamentales para obtener una solución aceptable mas allá si son físicamente correctas o no. Me gustaría verlo, claro.