GD + PHP + Grafica 3d semplificata

Salve a tutti,

sono alle prese con la creazione di una forma 3d con le GD.

Esiste già un software PEAR chiamato Image3d, lo conosco già ma non fa al caso mio.

Volevo chiedervi se siete mai riusciti a creare una forma tridimensionale come un cubo o un parallelepipedo.

L'idea è questa:

oppure questa:

Buon Natale e felice anno nuovo a tutti!!

 :bye:

inviato 8 anni fa
ulisse
X 0 X

Dovresti lavorare in 3d in modo contettuale e poi, tramite opportune formule di conversione, renderizzare in 2d.

Tutto questo a meno che GD non supporti le 3 dimensioni.

Altrimenti buon divertimento :) perchè dovrai lavorare su un po di cose:determinazione delle facce visibili, gestione delle ombre (in modo da far sembrare 3d anche un'immagine 2d, non so se mi sono spiegato) e tante altre cosucce molto appassionanti.

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
modificato 8 anni fa
X 0 X

Non conosco motori di rendering 3d per PHP ma, avendo tempo, potresti fare il porting di un motore scritto per qualche altro linguaggio. Non so quanto sia fattibile, visto che PHP usa le GD mentre un motore di rendering usa le OpenGL o le DirectX che hanno già il supporto alla terza dimensione.

Sembra che comunque esistano le OpenGL per PHP:

http://sourceforge.net/projects/phpopengl/

ma il progetto mi semra piuttosto datato, magari facendo una ricerca si trova qualcos'altro.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Dovresti lavorare in 3d in modo contettuale e poi, tramite opportune formule di conversione, renderizzare in 2d.

Tutto questo a meno che GD non supporti le 3 dimensioni.

Altrimenti buon divertimento :) perchè dovrai lavorare su un po di cose:determinazione delle facce visibili, gestione delle ombre (in modo da far sembrare 3d anche un'immagine 2d, non so se mi sono spiegato) e tante altre cosucce molto appassionanti.

:bye:

Ciao trashofmasters,

non si può giocare con le linee e le formule di geometriche ?

Grazie

risposto 8 anni fa
ulisse
X 0 X

Non conosco motori di rendering 3d per PHP ma, avendo tempo, potresti fare il porting di un motore scritto per qualche altro linguaggio. Non so quanto sia fattibile, visto che PHP usa le GD mentre un motore di rendering usa le OpenGL o le DirectX che hanno già il supporto alla terza dimensione.

Sembra che comunque esistano le OpenGL per PHP:

http://sourceforge.net/projects/phpopengl/

ma il progetto mi semra piuttosto datato, magari facendo una ricerca si trova qualcos'altro.

 :bye:

Ciao Gianni,

non ho trovato niente al di fuori di Image_3d delle librerie PEAR.

Non possiamo trovare una scorciatoia per creare questi moduli in uno spazio?

Grazie

risposto 8 anni fa
ulisse
X 0 X

scorciatoia? non saprei da dove cominciare  :dunno:

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Si devi disegnare in 2d il 3d, questo puoi farlo attraverso delle formule che ti permettono di determinare le facce visibili dei poligoni in modo da nasconodere o ombrare le parti nascoste.

In questo modo avrai un fake 3d credibile :D.

Purtroppo non mi sono mai dedicato, a parte qualche esercizio, alla grafica 3d realizzata in 2d,ma credo che dovresti lavorare di più sul renderer in modo da prendere un oggetto 3d (perchè tu lavori in 3d ma poi per disegnare hai bisogno di disegnare in 2d) e il renderer deve "appiattirlo", determinare le facce visibili, colorarle se serve, e metterle nell'immagine.

devi cercare le formule di conversione 3d->2d non rircordo quale, ma c'era un sito che le aveva...d'oh

 :bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
modificato 8 anni fa
X 0 X

Grazie ragazzi,

non so da dove iniziare! Sto cercando le formule ma niente da fare!

 :o

 :bye:

risposto 8 anni fa
ulisse
X 0 X

Qui usano le formule di conversione, anche se ho letto abbastanza approssimativamente.

http://membres.lycos.fr/amycoders/tutorials/3dbasics.html

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ammazza che complicato!!!  :o

risposto 8 anni fa
ulisse
X 0 X

Fino a qua ci sono arrivato:

   function CreateCube($size = 200)
   {
      $constant = 0.866;
      $cube = imagecreatetruecolor($w = ceil($size * $constant), $size);
      imageantialias($this->image, true); 
      $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127);
      
      $face_1 = array(0, floor($size/4), floor($w/2)-1, 0, $w-1, floor($size/4), floor($w/2)-1, floor($size/2)-1);
      $face_2 = array($face_1[0], $face_1[1], $face_1[6], $face_1[7], $face_1[6], $size-1, 0, $face_1[1]+floor($size/2));
      $face_3 = array($face_1[6], $face_1[7], $face_1[4], $face_1[5], $face_1[4], $face_1[5]+floor($size/2), $face_2[4], $face_2[5]);

      imageline($this->image, $face_1[0], $face_1[1], $face_1[2], $face_1[3], $this->black);
      imageline($this->image, $face_1[2], $face_1[3], $face_1[4], $face_1[5], $this->black);
      imageline($this->image, $face_1[4], $face_1[5], $face_1[6], $face_1[7], $this->black);
      imageline($this->image, $face_1[0], $face_1[1], $face_1[6], $face_1[7], $this->black);
      imageline($this->image, $face_1[0], $face_1[1], $face_2[6], $face_2[7], $this->black);
      imageline($this->image, $face_1[6], $face_1[7], $face_2[4], $face_2[5], $this->black);
      imageline($this->image, $face_1[4], $face_1[5], $face_3[4], $face_3[5], $this->black);
      imageline($this->image, $face_2[6], $face_2[7], $face_2[4], $face_2[5], $this->black);
      imageline($this->image, $face_2[4], $face_2[5], $face_3[4], $face_3[5], $this->black);
   }

Ma che fatica!!!

Ora vorrei passare altri valori come la grandezza, l'altezza e la profondità, ma non so come continuare.

 :bye:

risposto 8 anni fa
ulisse
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda