Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35

Discussione: programmare il 3D...

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101

    programmare il 3D...

    Salve a tutti, purtroppo, per me, sono nuovo di questo forum e in generale riguardo al mondo della programmazzione,.. oddio conosco le basi della programmazione ad oggetti..ma non ve ne pò fregar di meno..dunque, la spiegazione del titolo del thread è questa..è possibile attraverso qualsiasi linguaggio di programmazione dotato di semplici funzioni di disegno..che ne sò, line, fill,..creare un semplice motore 3d che disegna le forme da noi descritte tramite punti (x,y,z) attraverso un processo di suddiviione a triangoli delle faccie del solido..mesh?? se sì come credo ed ho già sperimentato, come è possibile sapere quali faccie triangolari sono davnti alle altre più indietro?? la somma delle 'z' dei punti può dare questa informazione..la risposta secondo me è quasi..perchè funziona così e così..grazie a tutti coloro che mi spiegaranno il dilemma o che mi aiuteranno a capire meglio..ciao, Zorz

  2. #2
    E' possibile capire se un triangolo si trova di fronta ad un altro. Tutto quello che desideri sapere era spiegato in alcuni numeri degli ultimi mesi di ioProgrammo.
    Un modo per nascondere i triangoli lontani è disegnare la scena partendo dagli oggetti più lontani (in questo modo i più vicini, se disegnati dopo, si sovrapporranno ai più lontani e li copriranno). Però questo sarebbe molto ma molto lento.
    "Meglio un aiuto che 50 consigli"
    (tratto dalle barrette Elah)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101
    Grazie Berello, mi hai aperto una speranza..io ho fatto così.. ho disegnato prima i più lontani e poi i più vicini, utilizzando il valore totale delle 'z' dei punti del triangolo..ma non funzia bene..purtroppo 'IoProgrammo' non lo conosco e non ho la copia che citi tu..quindi se sai qualcosaltro..grazie ancora, Zorz:quipy:

  4. #4
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    413
    in un ambiente come dici tu, la POSIZIONE degli oggetti è data sicuramente dall'asse z.
    Cioè per esempio io ho un cubo che parte da (10,10) ha lato 10 ed è profondo( z ) 10 ok?
    per sapere qualle è la superficie "davanti" non devi fare la somma degli z dei punti di ogni triangolo, sarebbe approssimativo e un triangolo messo in maniera strana ti sfalserebbe tutto.
    Prova a farti una "mappa" del piano che rappresenta la tua vista. Avrai per esempio un semplice piano di 100 x 100. Per ogni punto di questo piano cerchi il punto corrispondente nell'ambiente 3d che abbia la z più alta, e lo disegni. cos' non devi ridisegnare sopra un punto dove lo hai già fatto e dovrebbe essere più veloca.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101
    Grazie Maldito per la collaborazione,. in effetti la somma delle zeta è approssimativa e con triangoli messi in posizione strana non funzia..però non ho capito il tuo esempio del cubo..puoi riprovrare a rispiegarmelo??grazie ancora, Zorz

  6. #6
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    413
    dunque:

    un cubo di 10x10x10
    lo vedi frontale.

    per sapere che devi renderizzare solo la parte frontale, immaginati che prendi le coordinate x ed y di ogni punto e le confronti con quelle memorizzzate sul tuo piano. Ti memorizzi solo le z "visibili" e cioè minori.

    esempio:

    la tua matrice che rappresenta il piano è x ed y e contiene giusto un byte che rappresenta un pixel.
    tu prendi in considerazione OGNI punto che fai disegnare del tuo cubo, e confronti con quello che memorizzi sulla tua matrice. In questo caso, prendi il punto per esempio (5,5,10). è la facciata dietro del cubo. Poi lo confronti con (5,5,0) e dato che i punti si sovrappongono (5,5 tutti e due) visualizzerai solo quello con lo z più basso (0)

    non sono capace a spiegare troppo bene, ma spero di aver reso l'idea approssimativa.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101
    ..sinceramente non capito poco..comunque fortunatamente mi sono imbattutto in uno script che volevo ricreare io, nel quale il programmatore crea un semplice motore 3D per un cubo..nel quale vviene utilizzata la tecnica della mesh..approposito sai cosa significa il termine 'normale' in quest'ambito..grazie ancora Zorz..

  8. #8
    l'argomento non è molto semplice, (soprattutto se non hai una base di geometria). La normale è un vettore perpendicolare a un piano (una faccia di una qualunque mesh) e viene usato (tra le altre cose) per determinare se una faccia deve essere disegnata o meno. La faccia di un solido deve essre renderizzata solo se la normale "punta" verso l'esterno del monitor (...semplificando le cose), e per determinare la direzione della normale bisogna stabilire quale regola usare (mano destra o sinistra) e disegnare i punti della faccia seguendo questa regola.
    Questa è un'ulteriore ottimizzazione, ma non è la risposta alla domanda inziale, per decidere quali oggetti sono visibili o meno la tecnica che stai cercando di usare è nota dovresti trovare molti esempi su internet, poi esistono tecniche + raffuinate come gli alberi BSP che dividono lo spazion in una struttura ad albere che decide quali oggetti disegnare (ma questa è un po' complicata, prima impara bene le basi e poi prova anche questa)

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101
    grazie Richy per la collaborazione..in effetti ho capito cosa è la 'normale'.. diciamo e ho trovato anche un'esempio sul dito di flashMX che usa il calcolo delle normali per determinare appunto quale triangolo sia di fronte all'altro..mi sono messo in contatto con costui e credo di poter avere delle spiegazioni..ho inportato il suo calcolo nel mio script, ma ho dei problemi..spero li risolva, grazie ancora Zorz..

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    101

    motore 3D

    salve a tutti..ho un problema..stò costruendo un motore 3D, molto semplice, e ho paura di aver sbagliato il calcolo delle normali..o di non aver capito niente a questo punto..esempio:
    quando costriusco un parallelepipedo tutto ok, quando ad esempio, cerco di costriure una 'v' nascono i problemi..non riesco a stabilire l'ordine delle faccie laterali (quelle che congiungono la faccia anteriore e quella posteriore)..c'è qualcuno che ne sa qualcosa.. aiuto!!
    ciao e grazie, Zorz

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.