¿Cómo escribir un motor de gráficos 3D que se pueda usar en JavaScript? [cerrado]

StackOverflow https://stackoverflow.com/questions/1651145

  •  22-07-2019
  •  | 
  •  

Pregunta

Recientemente me he centrado en dibujar algunas formas geniales en un lienzo HTML 5.0. Y quiero escribir un motor de gráficos en 3D que se pueda usar en JavaScript. Ya he terminado un cubo giratorio. Y quiero terminar las formas como este ejemplo: http://gyu.que.jp/jscloth /touch.html .

¿Quién lo ha intentado en este campo?

¿Fue útil?

Solución

Editar: Esta pregunta se hizo hace muchos años. Desde entonces, todos los navegadores, excepto IE ( por ahora? ) ha agregado soporte para webgl. Puede ver muchas muestras aquí: http://www.chromeexperiments.com/webgl/

Realmente no quiero desanimarte, pero para escribir un 3D motor en JavaScript, debes ser extremadamente versado e íntimo en las matemáticas / lógica detrás del renderizado 3D.

Dado que no mencionó su experiencia actual, asumo que no ... en cuyo caso le sugiero que comience en otro lugar. Por ejemplo, XNA Game Studio . Escribe el código en C #, y ya hay muchas API bien escritas que resumen la mayoría (pero definitivamente no todas) de las partes difíciles. Pero es una excelente manera de aprender muchos de los conceptos y las matemáticas detrás del renderizado 3D.

Sin embargo, si está empezado a comenzar con JavaScript, ya hay muchos recursos en Internet sobre esto. Por ejemplo este :-)
http://dev.opera.com / artículos / ver / 3d-games-with-canvas-and-raycasting-part /

¡Buena suerte!

Otros consejos

Escribí un motor 3D Javascript hace aproximadamente un año, más o menos cuando Google lanzó su navegador Chrome con el súper rápido motor Javascript V8. Desafortunadamente, dado que ningún navegador expone una API de gráficos 3D (como OpenGL o Direct3D), este motor deforma las imágenes de mapa de bits en la página web para lograr triángulos mapeados con textura afinada (que son inferiores a los triángulos mapeados con textura correctos en perspectiva), que es bastante lento.

Utilicé mi motor 3D Javascript para construir una biblioteca de modelos 3D . (Sugerencia: no vea el primer modelo, ¡es el más grande y más lento para ver!). El rendimiento es de alrededor de 10 cuadros por segundo para un modelo 3D con alrededor de 1000 triángulos en Google Chrome en mi PC.

He considerado el código fuente abierto para este motor, pero nunca pude hacerlo. Si hay suficiente interés, pondré el código fuente en Google Code.

Mi proyecto favorito actual es un Motor y visor de modelos Silverlight 3D , que es un software Motor 3D (es decir, mi código C # tiene control sobre el color de cada píxel). Silverlight 3 es mucho más rápido que Javascript, pero no es estándar, es un complemento del navegador y aún no admite gráficos acelerados por hardware 3D (sin demasiados gastos generales).

Actualización: en el tiempo desde que escribí originalmente esta publicación, actualicé el visor de modelos Silverlight mencionado anteriormente para usar Silverlight 5 y 3D acelerado por hardware.

¿Qué tal vincular una biblioteca 3D preexistente a JavaScript? Como OpenGL.

V8-GL expone el 80% de la API OpenGL a JavaScript:

texto alternativo ??

No sé cómo sería escribir uno. Pero aquí hay algunos que existen.

Para escribir uno, primero deberá decidir si admitirá Excanvas, para que IE pueda usarlo o no.

Eso establecerá algunos límites sobre lo que puede hacer si admite IE.

Su mejor opción es comenzar creando algunas formas primarias, y lo más probable es que desee tener ciertas primitivas a partir de las cuales se pueda construir todo lo demás, por lo tanto, es posible que desee ver OpenGL o DirectX, en sus primitivas.

Una vez que tenga eso, y pueda moverlos en el espacio 3D, entonces querrá comenzar a agregar cámaras, pero eso será relativamente fácil en comparación con el paso 1.

Desafortunadamente, todo esto es muy pesado en matemáticas, por lo que tendrá un gran éxito de rendimiento si crea varios objetos 3D que tienen que moverse con frecuencia.

Creo que la mejor opción es esperar, ya que a finales de 2007 había blogs para que Firefox y Opera tuvieran soporte 3D en el lienzo: http://starkravingfinkle.org/blog/2007/11/animating-with-canvas/

La razón es que si se integrará en el navegador, se realizará la mayor parte del trabajo pesado, especialmente si admite algún sabor de OpenGL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top