|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ambiente 2d, simulare il 3d
Ciao, senza tirare in ballo nessun linguaggio specifico, come ci si comporta per simulare il 3d avendo solo il 2d? Mi spiego meglio.
Avrei la necessità di creare un cubo che ruota stile 3d, ma senza avere nessuna libreria specifica x il 3d(solo 2d). Quindi posso ruotare e traslare a piacere le faccie del cubo, ma in che modo per simulare la rotazione 3d? cioè che le facciè che stan dietro scompaione e poi ricompaiono quando si trovano davanti...non so se mi sono spiegato bene. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
Vai di trigonometria
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
mynos79 ha sintetizzato con un certa efficacia
A meno che tu non appartenga alla categoria di chi fa colazione con pane e angoli, puoi prendere un bel librone di "matematica 3d" per computer graphic (ce ne sono a valanghe), butti l'occhio e metti insieme il tutto. Ecco, magari tra buttar l'occhio e mettere insieme passa un po' di sudore ma per fare si fa. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Va bene
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Su quel bel libro che è Developing Games in Java c'è un prontuario che ti spiega precisamente ciò che stai cercando di fare, e la matematica che ci sta dietro (anche se a dir la verità, la parte matematica è piuttosto tralasciata).
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Riuppo questo post perchè ora mi serve veramente sapere come fare.
Ho cercato un po' in giro, ho anche avuto modo di vedere il libro "Developing Games" ma la parte dove spiega come trasformare le coordinate è davvero striminzita. Da quel che ho capito la coordinata Z serve per saclare le altre in modo da dare una senzazione di profondità, ma non ho capito bene come... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Io ho letto Developing Game in Java e non credo sia il libro giusto. Mi pare risponda alle domande: "sapendo già come si deva fare in generale, come lo farei in Java" e anche "sapendo già come..., come lo farei in un modo un po' più orientato agli oggetti".
"Non sapendo già", ti tocca scendere di un gradino. Io ho letto Dunn Parbeyy, "3D Math Primer for Graphics and Game Development", Wordware. Costa 50 dollarozzi e tutto sommato si lascia leggere (l'argomento non è certo un'educanda a caccia d'avventure Per 50$ puoi prendere anche "Mathematics for 3D Game Programming & Computer Graphics", che è francamente digeribile quanto un basello di granito però dice molte cose molto interessanti. A prescindere dal titolo, credo che un libro di questa specie ti serva se hai intenzioni di avventurarti nel mondo del 3D perchè ammettendo di risolvere la cosa con una domanda sul forum, poi tra tre giorni ne salta fuori un'altra e ti tocca aspettare due settimane per venirne a capo. Avere un riferimento a portata di mano non può che agevolarti. |
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
piccola spiegazione teorica per disegnare un vertice in prospettiva: tu per prima cosa nel tuo programma memorizzi il vertice come una struct contenente 3 float, le coordinate; poi avrai il tuo array di vertici da disegnare. poi devi stabilire un riferimento cartesiano; ti conviene mettere l'origine al centro (per semplificare i calcoli) e l'asse delle ordinate (quello verticale) orientato verso il basso (per semplificare la conversione al riferimento finale della finestra, che solitamente ha l'origine in alto a sinistra e l'asse delle ordinate verso il basso). poi devi anche stabilire un riferimento cartesiano a tre dimensioni, e sempre per semplificare i calcoli è meglio adattarlo a quello 2d: stessa dimensione dell'unità orizzontale, stessa verticale, asse delle ordinate verso il basso, e in più aggiungi l'asse della profondità (coordinata Z) orientato come ti pare. inoltre supponiamo che l'origine corrisponda al PoV (Point-of-View). le 3 coordinate di ciasun vertice sono riferite a questo riferimento 3d; il tuo scopo è convertirle in coppie di coordinate 2d riferite al riferimento 2d; ed infine devi convertirle al riferimento 2d della finestra, ma grazie allo stesso orientamento dell'asse Y per quest'ultima operazione sarà sufficiente una traslaione d'origine. detto questo, per effettuare la conversione da 3d a 2d assumendo che il PoV sia collocato all'origine del riferimento 3d, è sufficiente risolvere due proporzioni, una per la X del punto e una per la Y: X_2D : X_3D = w : Z X_2D = coordinata X da trovare X_3D = coordinata X del punto rispetto al riferimento 3d Z = distanza tra il punto e l'origine (che sarebbe il PoV) w = valore costante scelto a piacere; valore consigliato = metà della larghezza della finestra per la Y fai la stessa cosa: Y_2D : Y_3D = h : Z qui il valore consigliato di h diventa metà dell'altezza piuttosto che della larghezza. proverei a spiegartelo meglio se potessi fare un disegno, così ti farei capire come mai consiglio di prendere le dimensioni dimezzate della finestra come valori costanti nella proporzione. Ultima modifica di 71104 : 14-05-2006 alle 15:58. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Grazie mille, sto guardando forse riesco a fare qualcosa di carino
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:12.



















