Programmare in 3D con Vb

stellacometa
Tempo fa si era trattato questo argomento ma non ricordo piu in quale topic quindi lo ripropongo visto che mi interessa particolarmente! Come faccio a programmare in 3D con Visual Bsic..che tipo di istruzioni o funzioni devo saper conoscere e utilizzare??

Grazie in anticipo a tutti!!!

Risposte
eugenio.amitrano
Esistono vari modi per programmare la grafica in 3d.
Se intendi quella tipo Editors 3D studio, ti serve molta matematica.

In VB c'e' un oggetto in cui puoi disegnare utilizzando comandi tipo tracciare un punto, oppure tracciare una linea ?

stellacometa
Tu ne sei capace di programmare in 3D?

In qualsiasi modo!

eugenio.amitrano
Ci provo.
Se vuoi possiamo realizzare insieme degli esempi.

Posto qui' un programma in QB che disegna un sfera. Potremo utilizzare questo listato come punto di partenza. Con il tuo aiuto potremmo realizzare una funzione parametrizzabile per tracciare sfere in VB.

'' COSTANTI MATEMATICHE
CONST PI = 3.141592

'' COSTANTI FINESTRA
CONST WSIZE = 1
CONST WTOP = WSIZE
CONST WBOTTOM = -WSIZE
CONST WLEFT = -WSIZE * 1.33
CONST WRIGHT = WSIZE * 1.33

'' COSTANTI SFERA
RADIUS = .7
ANGLE = PI / 4
MERIDIANI = 10
PARALLELI = 10
COLORE = 14

'' INIZIO PROGRAMMA
SCREEN 12
WINDOW (WLEFT, WTOP)-(WRIGHT, WBOTTOM)
CLS

'' PARALLELI
FOR ALFA = 0 TO PI STEP PI / PARALLELI
   FOR BETA = 0 TO 2 * PI STEP PI / 1000
      X = RADIUS * COS(BETA) * SIN(ALFA)
      Y = RADIUS * COS(ALFA)
      Z = RADIUS * SIN(BETA) * SIN(ALFA)
      XV = X
      YV = Y * COS(ANGLE) + Z * SIN(ANGLE)
      PSET (XV, YV), COLORE
   NEXT BETA
NEXT ALFA

'' MERIDIANI
FOR ALFA = 0 TO PI STEP PI / 1000
   FOR BETA = 0 TO 2 * PI STEP PI / MERIDIANI
      X = RADIUS * COS(BETA) * SIN(ALFA)
      Y = RADIUS * COS(ALFA)
      Z = RADIUS * SIN(BETA) * SIN(ALFA)
      XV = X
      YV = Y * COS(ANGLE) + Z * SIN(ANGLE)
      PSET (XV, YV), COLORE
   NEXT BETA
NEXT ALFA

enigmagame
Ciao Stella :-D
si usano delle librerie quali DirectX, OpenGL, Allegro, SDL.
Questo e' il mio campo di interesse, infatti oltre ai corsi universitari (grafica al calcolatore) cerco di imparare da solo. Come linguaggio uso C, il C++ anche, ma lo sto' imparando. Ovviamente si possono uttilizzare anche in VB o Java...

stellacometa
WooooW..Eugenio...non avevi mai pensato che per disegnare una sfera ci volessero tutte quelle istruzioni..

@enigmagame
Anche io sto imparando il C++, pian piano ovviamente, però questa cosa della grafica in 3D con Vb mi ha sempre molto affascinata così vorrei imparare...e sono sicura che ci riuscirò anche grazie ad Eugenio, sempre molto disponibile!
Enigma..come posso iniziare pian piano per fare delle cosette in Vb di questo tipo?

eugenio.amitrano
Sto per mettermi in viaggio. (Tra una mezz'oretta)
Probabilmente non avro' la possibilita' di collegarmi fino a lunedi', se nel frattempo con l'aiuto anche di enigmagame troviamo il modo migliore per tracciare i nostri disegni in VB.

A presto,
Eugenio

stellacometa
Ok..Buon Viaggio prof!!! :D

eugenio.amitrano
Grazie! Dinuovo a presto!
Ciao a Tutti!

carlo232
"eugenio.amitrano":
Esistono vari modi per programmare la grafica in 3d.
Se intendi quella tipo Editors 3D studio, ti serve molta matematica.

In VB c'e' un oggetto in cui puoi disegnare utilizzando comandi tipo tracciare un punto, oppure tracciare una linea ?


Si l'oggetto è la PictureBox, permette di disegnare punti linee e cerchi, comunque si può fare la stessa cosa anche direttamente su un form.

Io ho realizzato alcuni programmi in 3D con VB senza usare librerie particolari ma solo con l'oggetto citato sopra...

Il primo programma è un labirinto 3D dentro il quale si muove un omino, in esso la geometria è cavaliera e per renderizzare le pareti ho usato il metodo della lista, cioè le pareti vengono colorate in ordine dalle più lontane alle più vicine.

Ho poi fatto un programma con visione in prima persona dove ci si può muovere all'interno di un cortile circondato da un recinto blue...l'effetto 3D è notevole però non c'è rendering vengono solo disegnati i bordi delle pareti e il programma comunque non è ancora terminato.

Quello che ho notato è che l'oggetto PictureBox rallenta parecchio il computer quando deve disegnare molte linee e quindi non si presta al rendering.Per questo credo che con VB non sia possibile realizzare un programma 3D con visuale in prima persona in cui siano presenti ambienti complessi, perlomeno solo usando l'oggetto PictureBox.

Fatemi sapere...Ciao Ciao :D

TomSawyer1
"carlo23":

Quello che ho notato è che l'oggetto PictureBox rallenta parecchio il computer quando deve disegnare molte linee e quindi non si presta al rendering.Per questo credo che con VB non sia possibile realizzare un programma 3D con visuale in prima persona in cui siano presenti ambienti complessi, perlomeno solo usando l'oggetto PictureBox.


Hai provato a usare il comando DoEvents?

carlo232
"Crook":
[quote="carlo23"]
Quello che ho notato è che l'oggetto PictureBox rallenta parecchio il computer quando deve disegnare molte linee e quindi non si presta al rendering.Per questo credo che con VB non sia possibile realizzare un programma 3D con visuale in prima persona in cui siano presenti ambienti complessi, perlomeno solo usando l'oggetto PictureBox.


Hai provato a usare il comando DoEvents?[/quote]

No, hai qualche suggerimento? Temo rallenterebbe solo ulteriormente le cose... :roll:

enigmagame
Ciao :-D
ho citato quelle librerie (in particolare DirectX e openGL) in quanto miro al campo videoludico, per queste e altre librerie in rete esistono ottimi tutorial, ovviamente poi ci sono molti libri. Questo se si vuol partire da 0! Altrimenti si possono utilizzate motori 3d opensource o anche quelli con licenza...

Stella, in vb non ho mai provato a fare nulla per quanto riguarda il 3d, ma se vuoi possiamo fare qualcosa. Penso che non sia affatto tempo buttato!!!

stellacometa
Ok... allora aspetto tue istruzioni per sapere come iniziare!!!

Grazie :D

stellacometa
Dopo 1 giorno e 9 ore..... :cry: Nessuna anima viva!

eugenio.amitrano
Buongiorno a tutti!
Rieccomi.

Bene, come vedo sono fioccati utili suggerimenti.
Grazie a tutti per la collaborazione.
Tra i suggerimenti leggo che l'oggetto PictureBox permette di effettuare tali disegni.

Che dici stella ? Partiamo da li ?

Serve pero' sapere quali sono le istruzioni per poterci disegnare. Per esempio in Qbasic ci sono circle, line e pset.

Poi occorre sapere altre 2 cose:
1) Se creo una PictureBox 500x500 e traccio un punto di coordinate (250,250) lo vedro' tracciato al centro dell'oggetto ?
2) Se traccio un punto di coordinate (0,0) sara' posizionato in alto a sinistra ?

A presto,
Eugenio

eugenio.amitrano
Ho trovato un bel pdf che descrive molto sinteticamente alcune gestioni del VisualBasic,
tra cui anche la grafica.
Ho visto che la gestione grafica mediante la PictureBox e' molto simile al qBasic.

Posto il link del pdf:
www.ubertini.it/sistemi/quinta/Laborato ... %20uno.pdf
Direi di leggerlo prima di procedere.

Vorrei chiederti di fornirmi informazioni sulle istruzioni che gestiscono il mouse.
Per esempio quell istruzioni alle quali si effettua una call quando viene effettuato un click oppure un movimento.
Ti chiederai a cosa servono queste cose.

Per esempio per tracciare una sfera nella PictureBox si puo' procedere nel seguente modo:

1) Posizionamento della freccia nella PictureBox
2) Click per confermare il centro della sfera
3) Movimento del mouse per la dimensione del raggio
4) Click per confermare il raggio
5) Movimento del mouse per la rotazione intorno agli assi di riferimento
6) Click per confermare l'angolazione.

Oppure impostando i parametri direttamente nelle caselline di testo
che rappresentano i paramentri.

Fammi sapere.
A presto,
Eugenio

stellacometa
Wooooow..Eugenio mi hai fatto un regalo enorme con questo link..se lo studio un pò potrei anche provare a fare un po di grafica!! C'è proprio tutto!! Grazie mille...

Facciamo che prima provo a leggerlo, specialmente le parti che riguardano la grafica, se riesco allora inizio a postare i codici e li vediamo assieme..altrimenti riprendiamo da dove hai detto tu!!

Grazie moltissimissime!!! :D

eugenio.amitrano
Benissimo.
Allora attendo tue notizie.

A presto,
Eugenio

enigmagame
Ciao...
scusa ma in questi grioni sono occupatissimo con appelli ed in più ero via.

Qui http://www.gameprog.it/?section=4 ci sono info su Visual Basic e DirectX.

Però ho letto che non volte utilizzare librerie, ma componenti in VB. Vedo se riesco a trocre qualcosa.

Ciao!!

stellacometa
Grazie anche a te enigma.. :D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.