Estoy creando algún tipo de aplicación de arrastrar y soltar en javascript/jquery (basado en DOM, no en lienzo).Traducir las coordenadas del mouse a un plan 3D
La idea es ser capaz de arrastrar divs en una escena en 3D (un div rotado en 3D).
Se trabaja en un plano 2D, el problema es cuando puedo rotar la escena en 3D, la posición de los objetos no refleja la posición actual del ratón, pero las coordenadas traduce en 3D
exemple Ilustrado:
quiero que los objetos en movimiento con respecto a la posición absoluta del ratón.
I calcular la posición del ratón como esto:
document.addEventListener(gestureMove, function (event) {
if (mouseDown == true) {
event.preventDefault();
moveX = (event.pageX - $('#scene').offset().left);
moveY = (event.pageY - $('#scene').offset().top);
}
#scene {
width: 1000px;
height: 1000px;
-webkit-transform-style: preserve-3d;
-webkit-transform: rotateX(35deg);
}
Una solución temprana era para calcular la diferencia entre la posición del ratón y el objeto en base a la posición inicial, y de añadir a la posición del objeto durante el arrastre . Funcionó, pero la animación fue realmente entrecortada y nada suave.
Estoy seguro de que hay una manera más simple de obtener las coordenadas del mouse relativas al plan 3D, pero no fue posible encontrar una solución real en este punto.
La mayoría de los resultados de búsqueda en esta materia apuntan a lenguajes orientados a juegos, o preguntas canvas/webgl.
¿Alguna idea?
Gracias
Creo que Google Sketch-up hizo un buen trabajo al respecto. –
Probablemente termines haciendo lo contrario de la proyección en perspectiva: http://en.wikipedia.org/wiki/3D_projection#Perspective_projection – Blender
¿Puedes destilar tu código lo suficiente como para caber en jsfiddle? – Shmiddty