Come scrivere un motore grafico 3D che può essere utilizzato in JavaScript? [chiuso]

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

  •  22-07-2019
  •  | 
  •  

Domanda

Di recente mi sono concentrato sul disegno di alcune forme interessanti in una tela HTML 5.0. E voglio scrivere un motore grafico 3D che può essere utilizzato in JavaScript. Ho già finito un cubo rotante. E voglio finire le forme come in questo esempio: http://gyu.que.jp/jscloth /touch.html .

Chi ha mai provato in questo campo?

È stato utile?

Soluzione

Modifica: questa domanda è stata posta molti anni fa. Da allora, tutti i browser tranne IE ( per ora? ) ha aggiunto il supporto per webgl. Puoi vedere molti esempi qui: http://www.chromeexperiments.com/webgl/

Non voglio davvero scoraggiarti, ma per scrivere un 3D motore in JavaScript, devi essere estremamente esperto e intimo nella matematica / logica dietro il rendering 3D.

Dato che non hai dichiarato la tua attuale esperienza, presumo che tu non ... nel qual caso ti consiglio vivamente di iniziare da qualche altra parte. Ad esempio, XNA Game Studio . Scrivi il codice in C # e ci sono già molte API ben scritte che astraggono la maggior parte (ma sicuramente non tutte) delle parti difficili. Ma è un ottimo modo per imparare molti concetti e matematica alla base del rendering 3D.

Se, tuttavia, non sei ancora pronto per iniziare con JavaScript, ci sono già molte risorse su Internet al riguardo. Ad esempio questo :-)
http://dev.opera.com / articoli / / 3D-giochi-con-tela-e-raycasting parti /

Buona fortuna!

Altri suggerimenti

Ho scritto un motore Javascript 3D circa un anno fa, all'epoca in cui Google ha rilasciato il suo browser Chrome con il motore Javascript V8 superveloce. Sfortunatamente poiché nessun browser espone un'API grafica 3D (come OpenGL o Direct3D), questo motore deforma le immagini bitmap sulla pagina Web al fine di ottenere triangoli affini mappati alla trama (che sono inferiori ai triangoli mappati alla trama corretti in prospettiva), che è abbastanza lento.

Ho usato il mio motore 3D Javascript per creare una libreria di modelli 3D . (Suggerimento: non visualizzare il primo modello: è il più grande e più lento da visualizzare!). Le prestazioni sono di circa 10 frame al secondo per un modello 3D con circa 1000 triangoli in Google Chrome sul mio PC.

Ho considerato open source il codice sorgente di questo motore, ma non sono mai riuscito a farlo. Se c'è abbastanza interesse, inserirò il codice sorgente in Google Code.

Il mio attuale progetto per animali domestici è un motore Silverlight 3D e visualizzatore di modelli , che è un software Motore 3D (ovvero il mio codice C # ha il controllo sul colore di ogni pixel). Silverlight 3 è molto più veloce di Javascript, ma non è standard, un componente aggiuntivo del browser e non supporta ancora la grafica con accelerazione hardware 3D (senza sovraccarico).

Aggiornamento: da quando ho scritto questo post in origine, ho aggiornato il visualizzatore di modelli Silverlight sopra menzionato per utilizzare Silverlight 5 e 3D con accelerazione hardware.

Che ne dici di associare una libreria 3D preesistente a JavaScript? Come OpenGL.

V8-GL espone l'80% dell'API OpenGL a JavaScript:

alt text

Non so come andrei scrivendone uno. Ma qui ce ne sono alcuni che esistono.

Per scriverne uno dovrai prima decidere se supportare Excanvas, in modo che IE possa usarlo o meno.

Ciò imposterà alcuni limiti su cosa puoi fare se supporti IE.

La tua scommessa migliore è iniziare con la creazione di alcune forme primarie, e molto probabilmente vorrai avere alcune primitive da cui tutto il resto può essere costruito, quindi potresti voler guardare OpenGL o DirectX, alle loro primitive.

Una volta che lo hai, e puoi spostarli nello spazio 3D, allora vorrai iniziare a guardare l'aggiunta di telecamere, ma sarà relativamente facile rispetto al passaggio 1.

Sfortunatamente, tutto ciò è molto pesante in matematica, quindi otterrai un enorme successo in termini di prestazioni se crei diversi oggetti 3D che devono spostarsi frequentemente.

Penso che la scommessa migliore sia aspettare, poiché alla fine del 2007 c'erano blog per Firefox e Opera con supporto 3D nell'area di disegno: http://starkravingfinkle.org/blog/2007/11/animating-with-canvas/

Il motivo è che se verrà incorporato nel browser, la maggior parte del lavoro pesante verrà eseguita, specialmente se supporta un po 'di OpenGL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top