PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : S-O Mapping


MadMax1998
2003-10-30, 20:59:26
Ich habe ein Problem beim Mapping. In meinem Editor kan man die Texturkordinaten der Objecte berechnen lassen. Bis jetzt gibt als zwischen Oberfläche eine Kugel oder ein Cylinder. Es funktioniert auch ganz gut nur an einer stelle auf dem Object enstehten meher lang gezogen Striche die wie eine naht aussehen.
Kennt jemand das Problem oder weiß wie man es beheben kan.
Danke.

ethrandil
2003-10-30, 21:31:32
Ehrm, ich hab zwar keine Ahnung, aber einige dinge dürften weiterhin ungeklärt bleiben:

Sprache?
Zeichenfunktion? (OGL, DX, GDI)
Welche 'Stelle'?

Screenshot?

Eth

MadMax1998
2003-10-31, 16:41:21
Sprache: VB
Schnittstelle: DX

Wie kan ich den eine Screenshot einfügen?
D:\Pic.jpg

Gast
2003-10-31, 17:01:30
mit dem [img] tag.

Xmas
2003-10-31, 18:46:17
Original geschrieben von MadMax1998
D:\Pic.jpg
So nicht ;D

Der Img-Tag funktioniert nur für im Internet erreichbare URLs. Wenn du keinen Webspace hast, auf den du das Bild uploaden könntest, benutze die "Datei anhängen" Funktion des Forums. Wenn du einen neuen Beitrag schreibst, hast du unterhalb des Antwortfeldes eine Option "Datei anhängen". Das Bild muss kleiner als 20480 Bytes sein.

MadMax1998
2003-10-31, 19:33:57
So hier nun ein Screenshot


http://www.ystart.de/upload/1067620373.jpg

Xmas
2003-10-31, 20:42:18
Das Problem ist, dass du eine Reihe von Eckpunkten doppelt verwendest (so dass die Kugel geschlossen wird), mit denselben Texturkoordinaten. Das funktioniert nicht. Wenn du dir denkst dass du deine Weltkugel in 10 Streifen unterteilst, dann müssen ja die Texturkoordinaten von 0 bis 1 so aussehen:
0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1

Wie du siehst sind das aber 11 Werte, nicht 10. Was bei dir passiert, ist dass auf dem letzten Abschnitt wieder von 0.9 bis 0 interpoliert wird, was in einer gequetschten, umgekehrten Darstellung der Weltkarte resultiert.
Du musst die doppelt Verwendete Eckpunktreihe einmal mit Texturkoordinate 0 und einmal mit 1 rendern.

MadMax1998
2003-10-31, 21:16:43
Ja das Problem ist wie bekomme ich den raus bei welchen Werten ich Null und bei welchen ich eins anwenden muss ich poste mal meine Code

Case mStructur.CONST_MAPPING.MAPP_BALL
Dim v As VERTEX_NORMAL() = CType(vB.Lock(0, 0), VERTEX_NORMAL())
Dim tu, tv As Single
For i = 0 To v.GetUpperBound(0)
x = v(i).pos.X : y = v(i).pos.y : z = v(i).pos.z
theta = Round(Acos(y), 2)
phi = Round(Atan2(x, z), 2)
tu = phi / (2 * Math.PI)
tv = theta / (1 * Math.PI)
v(i).tex0.X = tu
v(i).tex0.Y = tv
Next
vB.Unlock()

Xmas
2003-11-01, 02:33:36
Könntest du mal Code posten wie du die Kugel renderst, bzw. in welcher Struktur du die Vertices der Kugel speicherst?

MadMax1998
2003-11-01, 11:38:42
Das Problem ist ja das ich ganz verschiedene Forme erstellen kan.Ich brauche also eine Algo der nur über die Angabe der Position tu und tv berechene kan.

Xmas
2003-11-01, 18:34:33
Das ist nicht möglich. Du musst eine Vertexreihe verdoppeln und mit jeweils verschiedenen Texturkoordinaten verwenden.