2011-04-30 12 views
7

Estoy en la etapa de planificación de desarrollo de una pequeña aplicación web que realiza visualización interactiva de datos en un espacio tridimensional.Backbone.js y three.js - MVC con canvas

Para una mayor compatibilidad con el navegador, three.js parece ser la mejor opción, ya que puedo renderizar la misma escena usando WebGL, canvas o SVG.

Idealmente, quiero usar backbone.js para proporcionar una buena capa de MVC y evitar la tediosidad de escribir el ajax, pero antes de llegar al final, me preguntaba si alguien tenía alguna experiencia/consejos/palabras de consejos para tratar de hacer que eso funcione.

Asumiendo canvas o WebGL, Parece que backbone.view podría resumirse bastante fácilmente para admitir un modelo three.js. La función de renderización está destinada a ser anulada. Podría adjuntar un simple oyente en el lienzo y luego usar algunos trucos para eliminar el modelo específico para desencadenar eventos (que parece que sería la tarea más difícil). Los modelos y colecciones de Backbone funcionarían bien con mi API (creo). Los Controladores probablemente serían un poco más difíciles, pero podrían incluso usarse al guardar la posición de la cámara o algo similar.

Con la representación de SVG, esto se simplifica obviamente con todos los elementos en el DOM, pero me pregunto si SVG incluso sería una buena opción cuando hay más de 1,000 objetos en la escena. ¿Alguien tiene experiencia con gráficos de escena grandes en SVG?

¿Hay otras bibliotecas, ya sea para renderizado o similares a la red troncal, que serían una mejor ruta para tomar? Estoy abierto a la sugerencia sobre el asunto.

+1

Recomendaría utilizar 'Backbone.Controller' para gestionar las transiciones entre el contenido. Es decir. administrar juegos múltiples o niveles múltiples o cualquier cosa que requiera cargar muchos datos nuevos. El controlador también debe estar vinculado al enrutamiento hashbang para que pueda reservar direcciones URL hashbang para juegos/niveles específicos. – Raynos

+1

Hola. Como cuestión de interés, ¿cómo te fue con esto? He visto muy pocos ejemplos de aplicaciones backbone.js que usan gráficos complejos por computadora y me pregunto si es la mejor solución, ya que no permite vincular modelos para crear "vistas" desde el primer momento. – Binaromong

Respuesta

3

Su estimación de cómo usaría Backbone es bastante acertada, e incluso hay una bonificación adicional, creo. Mencionaste algo sobre el uso de "trucos de tres.js para sacar el modelo específico para desencadenar eventos (que parece que sería la tarea más difícil)" - no estoy seguro si solo estoy confundido por el uso del modelo, pero cuando se activa un renderizado de vista, la colección/modelo al que está vinculado se pasa a ese método de renderización, no habría necesidad de una búsqueda. Y a través de _.bindAll() de Underscore, puede vincular un método de renderizado (o cualquier método en la vista, realmente) a cualquier evento generado por la colección _.bindAll() se ejecuta. Y puede activar todos sus eventos personalizados fuera de dicho modelo/colección. Las posibilidades son bastante ilimitadas debido a esto. Y sí, un método de renderizado podría ser cualquier cosa, por lo que la interacción con three.js en ese espacio debería ser perfecta. ¡Eso es un montón de "y"!

Lo que quieres hacer es definitivamente posible, suena muy divertido, y definitivamente es una gran aplicación para Backbone.