Terrain-Größen Problem[erledigt]

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Penthouse Pauper

Betreff: Terrain-Größen Problem[erledigt]

BeitragFr, Aug 11, 2006 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Spezis,
ich habe ein kleines Problem mit einem Terrain.
Das erste Mal trat das Problem auf, als ich versucht habe, eine HUD-Karte von dem Terrain zu basteln: Der Kartenmaßstab stimmte nicht mit dem des Terrains überein. War der Player am rand der HUD-Karte, stand jedoch nicht am Rand des Terrains.
Ich dachte, es würde an meinen mathematischen Fähigkeiten liegen und darum lies ich die Geschichte ruhen...
Beim Multitexturing benutzte ich nun eine Maske für die Wasserteile und die ließ sich nicht ordentlich rüberziehen... also wieder das gleiche Problem.

Hier mal ein wenig Source-Code(Auszüge). Die Karte ist 4096px groß, die Maske auch. Das Terrain soll 2:1 (breit,hoch)sein. Y auf 200 gescalet, damit die Höhe herauskommt.
Code: [AUSKLAPPEN]

land=LoadTerrain( "terrain_alpha2.bmp" )
ScaleEntity land,2,200,1 ;<----
PositionEntity land,-2048,-98,-1024
EntityType land,TYPE_TERRAIN
TerrainDetail land,6000,False
TerrainShading land,True

[...]

ScaleTexture mask, 2, 1

[...]

map_HUD=LoadImage( terrain_map$ )
ScaleImage map_HUD, (2.0/25), (1.0/25)

mapx# = 1000-(ImageWidth(map_HUD)/2)
mapy# = 200+(ImageHeight(map_HUD)/2)

[...]

DrawImage map_HUD,(1000-ImageWidth(map_HUD)),(200)

[...]
Function DrawHUD_mapitem( item.Player )
   xCord# = EntityX(item\entity, 1)
   yCord# = EntityZ(item\entity, 1)

   Oval mapx#+(xCord#*(2.0/75)), mapy-(yCord#*(1.0/75)), 2, 2
End Function


Ich habe zum Test sogar schon eine Variable für die Scale-Werte eingesetzt und versucht dann sozusagen Realtime-Scaling per Tastaturbefehle zu bewerkstelligen... nach einem Wert von 8000, 4000 war ich nahe dran, leider aber keine Übereinstimmung...

Hier die Bilder
http://www.1kor13.de/Galerie/I...ater01.jpg
http://www.1kor13.de/Galerie/I...alpha2.jpg

Hoffe das sind genug Infos.
Danke für eure Hilfe!!!
  • Zuletzt bearbeitet von Penthouse Pauper am Sa, Aug 12, 2006 16:00, insgesamt einmal bearbeitet

StepTiger

BeitragFr, Aug 11, 2006 1:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hab da nicht so ganz überblick aber wenn es ein 4096² Bild ist, dann solltest du auch das terrain auf die richtige position setzen.

(scale * 2 also x=-4096) (y ist mir egal ^^) (scale * 1 also z=-2048)
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragFr, Aug 11, 2006 7:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Terrain wäre bei einer 4096x4096 und scaling 2,1 danach 8192,4096 gross, da 1 Pixel zu 1 Unit Länge führt. (sprich normalerweise nimmt man kleinere Heightmap, da sonst garnichtsmehr wie eine Farbe erkennbar ist Smile )

Allerdings kannste das net als Textur laden um es drauf zu pappen, da nur die neueste Grafikkartengeneration mit solch grossen Texturen überhaupt umgehen kann.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Penthouse Pauper

BeitragFr, Aug 11, 2006 8:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, ehrlich nicht? Das ist ja blöd. Wie soll ich denn dann ordentliche Texturen raufziehen? Mein Plan war es Gewässerboden- und Detailstruktur draufzukleben, dann die Maske draufzumoppeln und danach die Sandtextur rauf.

Wenn er natürlich bei der Maske Probleme macht fällt das ganze Texturing in den Bach...
 

Penthouse Pauper

BeitragFr, Aug 11, 2006 8:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab jetzt mal die Textur verkleinert und damit wirds schon besser.
Neue Maße sind 512x256.
Meine Frage nun aber ist, wieviel Pixel eine Unit LE darstellen. Gibts da ne pauschale Regel?

Vielen Dank für eure Hilfe

Mr.Keks

BeitragFr, Aug 11, 2006 9:59
Antworten mit Zitat
Benutzer-Profile anzeigen
kommt natürlich drauf an, wie nah du dran bist Wink. kannste machen, wie du willst. am ende kommt es nur auf die größenverhältnisse zwischen all den dingen an. du kannst zum beispiel 1LE als einen meter oder halt auch als einen zentimeter oder einen dezimeter definieren. wie es dir gerade passt. solange alle objekte dieser definition folgen, wird's ordentlich aussehen.
MrKeks.net
 

Dreamora

BeitragFr, Aug 11, 2006 10:15
Antworten mit Zitat
Benutzer-Profile anzeigen
1 Pixel wird beim Terrain einer 3D Einheit entsprechen wenn ich mich recht erinner.

Für Realworld -> 3D gibts keine Regel, da das vom CameraZoom abhängt (wie es dann aussieht). musst du also selbst festlegen, was wieviel entspricht Smile

Texturieren mit solchen Tricks geht übrigens schon, nur wirds dann ein wenig komplizierter
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Penthouse Pauper

BeitragFr, Aug 11, 2006 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Inarie hat Folgendes geschrieben:
kommt natürlich drauf an, wie nah du dran bist Wink


*Nöööt* falsch.

Hast du z.B. schonmal einen Baum gesehen, der wächst wenn du nahe rangehst? Texturen sind i.d. Regel konstant. Die Maserung im Holz ist immer die gleiche... was du meinst ist wohl eher das, was man 3.Dimension nennt Wink

Zu Dreamora:
Wenn ich mit einem 1:1 (Pixel:LE) Verhältnis rechne, dann sieht das so aus:
Textur 512x256, Terrain 8192x4096
---> 8192:512 = ScalingFaktor

Setze ich das jedoch um, dann liegt die Textur nicht 1:1 auf meinem Terrain. Daher muss es eine andere Übersetzung sein. Größer...


Was ich mir noch überlegt habe, war, ob es nicht noch eine Möglichkeit gäbe mit Blitz eine UV-Map über das Terrain zu legen, dann würde die Textur automatisch passen, wenn ich ein Plane nehme, oder?

Mr.Keks

BeitragFr, Aug 11, 2006 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
*Nöööt* falsch.
nicht so vorlaut bitte Wink

hatte deine frage wohl offensichtlich missverstanden. dachte, du wolltest wissen, wie viele pixel auf dem bildschirm eine LE ausfüllt...

so, dann tippe ich mal, du willst was anderes wissen in zusammenhang mit texturen und terrains. dann zeugt deine frage allerdings auch irgendwie von technischem unverständnis ^^. also, die pixel deiner ausgangsbilder verlieren in 3d größtenteils ihre bedeutung. da für texturen in 3d uvkoordinaten von 0 bis 1 gelten, ist es egal, welche maße die textur hat. sie wird immer dieselbe fläche ausfüllen.

du lädst also ein terrain. seine seitenlänge wird der des ausgangsimages entsprechen. (es sind nur quadratische terrains möglich) hat deine terrain-ausgangsdatei also 256x256 pixel (und das wird eigentlich immer ausreichen es sei denn du willst wirklich ein riesiges terrain), dann hat dein terrain am anfang 256x256 LE. daran wirst du vermutlich noch rumskalieren müssen, damits in deinen spielmaßstab passt. für die texturierung ist es aber ganz egal, wie du da das terrain rumskalierst. wenn du nix an der texturskalierung änderst, wird b3d (wenn ich das richtig in erinnerung habe) die textur 256x256 mal auf das terrain pappen, also für jede lade-LE enmal. soll deine textur also das ganze terrain füllen, musst du ScaleTexture deine_textur,256,256 schreiben. bzw. allgemeiner formuliert heißt das dann: ScaleTexture deine_textur,TerrainSize(dein_terrain),TerrainSize(dein_terrain)
so wird jede textur, unabhängig von ihrer größe, jedes terrain immer ganz ausfüllen ^^.
MrKeks.net
 

Penthouse Pauper

BeitragFr, Aug 11, 2006 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, okay, das wird dann schon eher etwas.
Vielen Dank! Wink Ah, und sorry, wenn das oben etwas herablassend wirkte

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group