Problemas con animación de movimiento y seguimiento de la cámara en una aplicación con direct3D




 Muy buenas,  
tengo una cuestión: estamos trabajando en una aplicación en 3D con directx, y el problema surge en el movimiento.  
La escena se ve desde una cámara que sigue al avatar o personaje (a lo chase cam de cualquier juego de coches), y la idea esta en que pinchando con el ratón en algún lugar de la escena, el avatar se debe dirigir hacia ese punto.  
Y no se como resolverlo.   



 
 

 Primeramente no se me ocurre como hacer para que las coordenadas por e y de la pantalla (donde se pincha) se conviertan en una posición (x, y, z) del mundo virtual. Se me ocurrió la idea de lanzar un rayo desde el device del direct3D desde la coordenada del ratón hacia el fondo, y ver con que choca, peor no se si funcionaria bien.  
También se me ocurre que luego habría problemas de Inteligencia para la búsqueda de una ruta hacia el destino, pero esto ya son problemas menores (al menos por el momento).  
Pues nada más, muchas gracias por lo que me puedas contar  
BlackMiG
Tengo un articulo que explica muy bien el   
Object Picking, y trata de esto, de  
Como seleccionar un objecto de la escena   
con el ratón. Y explica como pasar las  
coordenadas 2d a 3d del Mundo.  
Aquí tienes la función que transforma las  
coordenadas del ratón a las del mundo, y  
lo que hace es trazar una linea.  
D3DVECTOR makeray(float FOV, float aspectRatio, WORD mouseX, WORD mouseY, float range)  
{  
 D3DVECTOR lineend,CameraSpacePos;  
 float NMouseX,NMouseY;  
 D3DMATRIX matView;  
 FOV = GRAD2RAD(FOV);  
 /*   
pasamos las coordenadas del ratón  
a coordendas de viewport que van del -1.0 al 1.0  
1.0 - 2.0*mouseX, es por que el centro del viewport  
es el centro de la ventana o pantalla y el centro  
de las coordendas del ratón es la esquina superior  
izquierda, y de esta manera lo transladamos  
*/  
 NMouseX =(1.0 - ((float)2.0*mouseX/VIEWPORTWIDTH));  
 NMouseY =(1.0 - ((float)2.0*mouseY/VIEWPORTHEIGHT));  
/*  
Calculamos la posición del punto NMouseX,NMouseY   
con respecto a la camara  
*/  
 CameraSpacePos.y=(NMouseY*tan(FOV/2));  
 CameraSpacePos.x=(-NMouseX/aspectRatio)*tan(FOV/2);  
/*  
hallamos el punto final del rayo  
*/  
 lineend.x=range*CameraSpacePos.y;  
 lineend.y=range*CameraSpacePos.y;  
 lineend.z=range;  
/*  
Pasamos el vector lineend que esta con respecto a las coordenadas  
de la cámara, a las del mundo.  
*/  
 gd3d.pd3dDevice->GetTransform(D3DTRANSFORMSTATE\_VIEW ,&matView);  
 D3DMath\_MatrixInvert(matView,matView); // hallamos la inversa  
 // transformamos el vector al mundo 3d  
 D3DMath\_VectorMatrixMultiply(lineend,lineend,matView);  
// gvLine, variable global D3DVERTEX  
 gvLine[0].x = gCamera.vPosition.x;  
 gvLine[0].y = gCamera.vPosition.y;  
 gvLine[0].z = gCamera.vPosition.z;  
 gvLine[1].x = lineend.x;  
 gvLine[1].y = lineend.y;  
 gvLine[1].z = lineend.z;  
 return lineend;  
}  
Espero que esto te sirva o te de alguna pista, pero mejor que busques  
este articulo:  
"Object Picking ( Selecting 3D Objects with the Mouse)"  
Escrito por Gary Simmons  
Lo ha estado buscando por la red y no le encontrado, haber si tú tienes  
más suerte.
si estas en el arma 3 del server (es decir abierto desde el launcher) vete a opciones y luego a perfiles, te debería de salir la opción de crear perfil, sinó manda captura, a ver si te podemos ayudar. hola el problema que mencionas sobre la camara digital panasonic .  
internamente en el objetivo lleva un sensor de enfoque ,que se daña no necesariamente por un golpe sino por el uso de la maquina, eso hace que cuando lo enciendas entra y sale sin control hasta que sale el aviso de vuelva a encender .eso al quedar dañado ya no puedes hacer tomas ,pero si ver las tomas existentes en este caso deverías de llevar a un centro de servicio técnico para que lo puedan reparar, espero te te sirva de algo ..  
ha me olvidaba en que lugar o ciudad vives creo que se puede volver un vicio, en ocasiones es difil separarse del monitor, si creo que soy cazadora de preguntas por que cazo la de mis amigos para responder.

=) Hola Isra.  

Regúlelo a 50 metros perfecto y luego compruebe a 100 metros, corrigiendo para que los impactos toquen en un circulo de aproximadamte 5 cm de radio. De esta forma podrá tirar sin correcciones hasta unos 200 metros. El problema no vendrá de la caída, el problema será lo difícil que se vuelve adelantar lo adecuado sin contar con aumentos.  

Cuidese.  

Salduos y viva la caza. cómo jugar el juego? canon o ... adaptación de la película ... o una inteligente mezcla? mi respuesta es: ir a donde tu los jugadores guiarán a la historia y desarrollar su pc, y como gm usted encuentra que usted necesita para desafiar a la pc. estoy de acuerdo en que los términos de referencia de los diseñadores fueron muy diligentes a la hora de jrrt del mundo, como deberían haber sido. su profundo estudio de jrrt los escritos fuera de la obra publicada viene pesar de que en el producto final. he leído la trilogía de el hobbit tan recientemente como el año pasado y me sería muy difícil decirle lo de la armadura fue o no fue retratado en los libros. yo también diría que la mayoría de los lectores sería difícil decirle que jrrt del mundo del diseño. por otra parte, creo que la mayoría de los jugadores, aunque tal vez no el tuyo, va a estar influenciada por los efectos visuales de las películas de la mente-ojo. sospecho que la mayoría de los jugadores, y que su mayor reto como gm, explicando jrrt canon para el jugador(s) preguntándose por qué su doble espada de empuñadura, la mitad de la raza goblin, que abandonó su warren para unirse a gondor la ciudadela de los guardias, no puede tener su acondicionados de la mitad de la placa. :) mi recomendación es seguir el consejo de @joshua-drake y refinar según sea necesario. es tentador para obtener 'en la maleza' de canon, sin embargo me gustaría errar en el lado de la 'diversión' en su lugar. necesit&aacute;s tener una <strong>tarjeta aceleradora</strong> para que d&eacute; esos efectos.<br/>despu&eacute;s ejecut&aacute;s:<br/>[code:1]$ sudo aptitude install 3ddesktop[/code:1] <br/><br/>para iniciar el efecto de varias formas, prueba la que m&aacute;s te guste:<br/>[code:1]<br/>$ 3ddesk --mode=flip<br/>$ 3ddesk --mode=linear<br/>$ 3ddesk --mode=cylinder<br/>$ 3ddesk --mode=priceisright<br/>$ 3ddesk --mode=carousel<br/>$ 3ddesk --mode=viewmaster[/code:1]<br/><br/>&iquest;c&oacute;mo llenar tu fondo de escritorio de agua?<br/>[code:1]$ sudo aptitude install xdesktopwaves[/code:1] buenas tiene pinta de grafica fria...y hasta que no calienta no arranca deberías de hacerle un reflow.....por que si no llegara un momento. juegos originales o truchos?<br/>cuando cambiaste el laser cambiaste el motor que gira el disco? sacalo,lubricalo bien,hacelo andar para que ablande..<br/>el flex lo revisaste? Bájate el Driver Pack Solution y utilízalo para resolver tu problema por ahora , no puedo ver bien la imagen del actuador shifter, pues estoy conectado v&iacute;a celular .<br/>en un par de horas, la veo en la computadora.<br/><br/>y pues, s&iacute;, es una l&aacute;stima que a veces el clienteno la repare luego de invertir tiempo y esfuerzo en la intenci&oacute;n de repararla..<br/>saludos!!