Un PlaneSensor que gira

En QuiXo3D estoy intentando crear un editor de X3D que se base en objetos del propio X3D para manipular objetos tridimensionales. Para poder mover los objetos directamente, sobre ellos hay que colocar alguna especie de sensor que permita detectar cuando el usuario elige un objeto y lo mueve.

Dado que trabajaremos en una proyección en dos dimensiones, moviendo un ratón por la pantalla podremos alterar la posición del objeto en dos dimensiones, o sea, en un plano. Para detectar movimientos en un plano X3D dispone del nodo PlaneSensor, que se dedica precisamente a eso.

Pero PlaneSensor presenta un problema: por defecto, sólo traduce los movimientos del ratón en un plano paralelo al plano Z=0, por lo que sólo permite movimientos en X e Y. ¿Cómo podemos hacer que los movimientos se detectaran y tradujeran en un plano distinto, por ejemplo el XZ? La solución es algún mecanismo que nos permita rotar el sensor.

Las versiones recientes de la especificación X3D incluyen para el nodo PlaneSensor un campo llamado AxisRotation, que permite girar el sensor en el espacio y llevar a cabo movimientos en cualquier dimensión. No obstante, las versiones más recientes de Xj3D todavía no lo implementan, por lo que haremos uso de la solución que ha sido clásica hasta ahora: envolver el PlaneSensor en un nodo Transform con la rotación deseada para girarlo, y los posibles hijos que pudiera tener el PlaneSensor envolverlos en otro nodo Transform con la rotación inversa a la anterior, para que recuperen su posición original.

Todo este mecanismo, envuelto en un prototipo, está disponible en el archivo AxisRotationPlaneSensor.x3d del SVN del proyecto. Un ejemplo de uso, que aplica este sensor a un cubo y a un cono es AxisRotationPlaneSensorTest.x3d.

Más adelante veremos cómo usar estos objetos para construir nuestro envoltorio autodesplazable y escalable…

No comments yet

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: