Página 1 de 1

plano de proyección de la camara

Publicado: Mar Ene 24, 2012 6:48 pm
por kevek
Hola,

¿Alguien sabe como puedo obtener, en python, el plano de proyección de la cámara?

Es decir, el plano en el que se proyectan todos los objetos que la camara vé.

Lo que quiero hacer es lo siguiente:

Tengo 2 objetos en el espacio, y tengo la camara apuntando a estos dos objetos. Pues lo que quiero hacer es hallar la distancia de estos dos objetos en la proyección del plano de la camara. Para hallar su punto medio en el plano, y dirigir la camara con un TrackTo a este punto medio.

Espero haberme explicado bien...

Para comenzar con esta idea que tengo primero necesito hallar el plano de la camara... que no sé como obtenerlo en python.

A ver si me pueden dar una ayudita...


Saludos,

kevek

Re: plano de proyección de la camara

Publicado: Mié Ene 25, 2012 8:30 am
por JhLocke
Si lo que quieres es centrar el punto de gravedad entre los dos objetos, selecciona los dos objetos, pulsa CNTRL + J. Después se leccionalo y pulsa ALT + CONTRL + SHIFT + C y clica en Origin to Geometry. Entre ambos objetos veras un punto naranja que representa su punto de gravedad.

Re: plano de proyección de la camara

Publicado: Vie Ene 27, 2012 6:00 pm
por kevek
Mmmm... no, eso no es lo que estoy buscando.

Lo que estoy buscando es el punto medio entre los dos objetos en la vista de la camara, que no es lo mismo que el punto medio entre los dos objetos.

Visto desde la cámara... el resultado es diferente, ya lo comprobé.

Desde el punto de vista de la camara, si un objeto está mas alejado que el otro, el punto medio entre ellos no queda centrado en el centro de la pantalla (aunque tenga la camara dirigida a ese punto con un trackto).

Por eso, lo que busco es el punto medio en la proyección de la camara. No en el espacio.

Gracias de todas formas.

Re: plano de proyección de la camara

Publicado: Dom Ene 29, 2012 5:43 am
por YahelCB
Suena interesante, no se casi nada de phyton, pero se me ocurre que buscando en las referencias de las funciones de la camara talvez encuentres alguna para desplegar la vista de camara. Me puse a buscar y encontre este libro y en la pagina 58 usan codigo para crear una camara y configurarla, talvez ahi encuentres algo.

http://blenderartists.org/forum/showthr ... ender-2.5x

El libro lo encontre aquí: http://wiki.blender.org/index.php/Doc:2.6/Books

Salu2

Re: plano de proyección de la camara

Publicado: Vie Mar 23, 2012 7:05 pm
por kevek
Encontré la solución.

El punto medio de los dos objetos lo calculo a partir de las posiciones en la pantalla 2D, es decir, con las posiciones de cada uno de los dos objetos que me devuelve el método getScreePosition().

Luego, encontré por internet un código ya hecho que consistía en seguir con la cámara el puntero del ratón. Pues... lo modifiqué para que, en lugar de seguir el puntero del ratón, siguiera el punto medio que calculé anteriormente.

En fin, este el código python:

Código: Seleccionar todo

import GameLogic as g
import math as m

cont  = g.getCurrentController()
owner = cont.owner
scene = g.getCurrentScene()
cam = scene.active_camera
cube_cam = scene.objects[\"Cube_cam\"]
player = scene.objects[\"Cube1\"]
enemy = scene.objects[\"Cube2\"]

posPlayer = cam.getScreenPosition(player)
posEnemy  = cam.getScreenPosition(enemy)

sensitivity = 1.0

# Cálculo del punto medio en la pantalla
posX = ( posPlayer[0] + posEnemy[0] ) / 2
posY = ( posPlayer[1] + posEnemy[1] ) / 2

x = round(0.5 - posX, 2)
y = round(0.5 - posY, 2)

x *= sensitivity
y *= sensitivity

if \"oldX\" not in owner:
	owner[\"oldX\"] = 0.0
	owner[\"oldY\"] = 0.0

else:
    # Smooth movement
    owner[\'oldX\'] = (owner[\'oldX\']*0.1 + x*0.1)
    owner[\'oldY\'] = (owner[\'oldY\']*0.1 + y*0.1)
    x = owner[\'oldX\']
    y = owner[\'oldY\']
 
    # set the values
    owner.applyRotation([0, 0, x], False)
    owner.applyRotation([y, 0, 0], True)