2010-10-17 12 views
6

Sto tentando di creare un gioco 3d usando OpenGL. Ho un mondo molto semplice e sto lavorando a un personaggio. Voglio mappare una trama alla testa che sarà di forma ovale. Come faccio la mappatura? So come mappare sulla superficie piana. Mi chiedo se le normali possano essere utilizzate per aiutare ma non l'ho mai fatto prima e quando cerco Google non ho fortuna.Come mappare la mappa su una superficie curva?

Ho intenzione di fare tutto questo a livello di programmazione e non usare Blender o Maya se questo fa alcuna differenza.

risposta

1

Sto supponendo dal tuo post che stai bene con la geometria?

Per la mappatura automatica nel caso generale, il tuo indovinare è una buona idea - parte da ogni vertice e seguire il suo normale verso l'esterno fino a colpire un esterno primitiva, quindi copiare la posizione trama ben definita verso l'interno da quello.

In questo caso, penso che probabilmente la chiave è nel modo in cui si genera la geometria. Se stai facendo qualcosa come la creazione di 8 anelli di 16 punti, iterando efficacemente attorno a un cerchio in un ciclo esterno e un altro in un ciclo interno, puoi simultaneamente iterare uev per ottenere una mappatura. Si ottengono poligoni di dimensioni irregolari e la mappatura diventa fastidiosa ai poli, ma l'area attorno alla quale la faccia dovrebbe essere funziona abbastanza bene.

Se si desidera una dimensione più equa del poligono e una mappatura affidabile in tutte le aree, iniziare con un cubo over-tesselated (ad es. Una griglia di 8x8 quad per superficie invece di una sola) e mappare le coordinate della trama in qualsiasi modo significativo. Pensa in termini di rete di un cubo. Quindi deformare il cubo in una sfera calcolando il vettore dal centro a ogni punto e spostando il punto in modo che sia il raggio della sfera dal centro. Infine, deforma la sfera nell'ovale ridimensionando gli assi in modo diverso.

Problemi correlati