Heightmap mit Colormap als Textur?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Nicdel

Betreff: Heightmap mit Colormap als Textur?

BeitragSo, Jun 22, 2008 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe ein Terrain und als Textur die Colormap der Heightmap fürs Terrain.
Code: [AUSKLAPPEN]

terrain=LoadTerrain("heightmap.png")

text1=LoadTexture ("colormap.png")

ScaleEntity terrain,50,290,50

ScaleTexture text1,50,50

EntityTexture terrain,text1,0,0

So ist die Textur eigentlich so groß, wie das Terrain (beides 512x512 PNG-Bilder), oder irre ich mich? Auf jeden Fall passen Textur und Terrain überhaupt nicht zusammen:
user posted image
Weiß jemand woran das liegt?

MfG Nicdel

ZaP

BeitragSo, Jun 22, 2008 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub es war
Code: [AUSKLAPPEN]
ScaleTexture(text1, TerrainWidth(terrain), TerrainHeight(terrain))
Starfare: Worklog, Website (download)

Nicdel

BeitragSo, Jun 22, 2008 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Function 'terrainwidth' not found

Leider. Funktioniert also nicht.

ToeB

BeitragSo, Jun 22, 2008 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ja auch klar... Terrainwidth gibt es ja auch nicht ... es gibt nur TerrainSize (Probier das mal aus...)


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Nicdel

BeitragSo, Jun 22, 2008 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ScaleTexture(text1, TerrainSize(terrain), TerrainSize(terrain))
funktioniert auch nicht...

hectic

Sieger des IS Talentwettbewerb 2006

Betreff: Re: Heightmap mit Colormap als Textur?

BeitragSo, Jun 22, 2008 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicdel hat Folgendes geschrieben:
Hallo,
...
Code: [AUSKLAPPEN]
...
ScaleTexture text1,50,50
...

...


Mach das weg, und es sollte funktionieren.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Nicdel

BeitragSo, Jun 22, 2008 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, dann ist die Textur in Vielen einzelnen Bildern über das ganze Terrain verteilt. Ich will aber, dass genau ein Bild der Textur über dem ganzen Terrain liegt, sodass bei Bergen die Textur Weiß und bei Wasser die Textur blau ist.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Jun 22, 2008 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Aja, sorry, wenn die Highmap 512x512 groß ist, dann muß die Textur mit ScaleTexture auf 512x512 skalliert werden.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Nicdel

Betreff: Re: Heightmap mit Colormap als Textur?

BeitragSo, Jun 22, 2008 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ja passiert:
Nicdel hat Folgendes geschrieben:

(...)
terrain=LoadTerrain("heightmap.png")

text1=LoadTexture ("colormap.png")

ScaleEntity terrain,50,290,50

ScaleTexture text1,50,50

EntityTexture terrain,text1,0,0
So ist die Textur eigentlich so groß, wie das Terrain (beides 512x512 PNG-Bilder), (...)

ToeB

BeitragSo, Jun 22, 2008 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, jetzt scalest du aber ein 512*512 bild auf (512*50)*(512*50) (oder so änlich)... ich glaub das geht mit
Code: [AUSKLAPPEN]
ScaleTexture Text1,50*512,50*512


Ich glaube das klappt...


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

Betreff: Re: Heightmap mit Colormap als Textur?

BeitragSo, Jun 22, 2008 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicdel hat Folgendes geschrieben:
Was ja passiert:
Nicdel hat Folgendes geschrieben:
...

Vielleicht probierst du es erstmal aus, bevor du sowas schreibst. Denn: Es ist vollkommen egal wie groß ein Entity verzerrt wurde, denn die UV-Koordinaten bleiben gleich. Das heisst: Die Textur wird mit dem Entity mit vergrößert. Wird aber ein 512x512 Terrain erstellt, so bekommt jedes ''Tile'' jeweils einen UV-Koordinatensprung. Somit muß die Textur auf die größe der Highmap vergrößert werden, damit es über das ganze Terrain gezogen wird. In deinem Fall also ScaleTexture 512x512 und nicht 50x50.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Dreamora

BeitragMo, Jun 23, 2008 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach

ScaleTexture texture,texturewidth(texture),textureheight(texture)

Damit wird sie genau auf die grösse aufgeblasen die notwendig ist um das Terrain damit zu füttern.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Silver_Knee

BeitragMo, Jun 23, 2008 0:28
Antworten mit Zitat
Benutzer-Profile anzeigen
da ein terrain von der LOD-Mesh her immer quadratisch ist gibt es nur TerrainSize

Zitat:
ScaleTexture(text1, TerrainSize(terrain), TerrainSize(terrain))
funktioniert auch nicht...


Sollte es aber... wenn dann so und nicht anders
 

Dreamora

BeitragMo, Jun 23, 2008 0:50
Antworten mit Zitat
Benutzer-Profile anzeigen
terrain size interessiert Texture nen dreck.
Das stimmt nur dann wenn du zufälligerweise HM und Texture in gleicher grösse hast (denn das terrain hat by default die grösse der heightmap als grösse). ansonsten wird das elementar falsch raus kommen also gib bitte neulingen nicht noch tipps wofür man schon dich wegen halbwissenheit auf die Suche und Doku verweisen muss.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Silver_Knee

BeitragMo, Jun 23, 2008 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ahhhhhhhhhhhhh kk sry hab ih nicht gewusst.... hmmmm dann müsste aber
Code: [AUSKLAPPEN]

ScaleTexture(text1, TerrainSize(terrain)*TerrainSize(terrain)/TextureWidth(text1), TerrainSize(terrain)*TerrainSize(terrain)/TextureHeight(text1))


zum richtigen ergebnis führen:

Die Texturbreite durch die breite gibt 1 * die Große des terrains führ zur gleichen Größe der textur und des terrains. Das nochmal mal die größe des terrains spannt die Textur Über das komplette terrain. Gleiches ürde dann auch für die Höhe der Textur gelten.

PS das ist mir deshalb nie aufgefallen, weil meine Highmaps immer die gleiche größe wie die texturen haben. ^_^'

Nicdel

BeitragMo, Jun 23, 2008 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Na endlich! Das funktioniert... Vielen Dank!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jun 23, 2008 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry Silver_Knee aber deine Lösung ist leider falsch. Denn, die größe der Colormap-Textur spielt dabei überhaupt keine Rolle. Wichtig ist nur, wie groß die Textur der Highmap ist. Dein Lösungsansatz funktioniert nur, weil Nicdel beide Bilddateien jeweils auf 512x512 abgespeichert hat und sich die 512x512/512 gerade wieder aufheben. Lädt man nun unterschiedlich große Texturen, dann funktioniert die Rechnung nicht mehr.

Ich habe das ganze eben nochmal ausprobiert, um definitiv kein Quatsch zu erzählen. Richtig ist: Die Textur muß um den Faktor vergrößert werden, wie groß die Highmap ist. Das heisst in Nicdel's Fall eben, x512. Also in Klartext:

Code: [AUSKLAPPEN]
Terrain = LoadTerrain ("lulatsch.png")
Texture = LoadTerrain ("lollipop.png")

ScaleTexture Texture, TextureWidth(Terrain), TextureHeight(Terrain)


Das ganze rührt aus folgendem Grund. Da Texturen über UV-Koordinaten abgespielt werden, ist die Größe eines Objektes irrelevant, da die UV-Koordinaten sich ja nicht verändern. Das heisst: Die Textur zieht mit dem Objekt mit. Da jede Textur über UV von 0,0 bis 1,1 geht, spielt es auch keine Rolle ob die Textur nun 64x64, 128x128, 256x256 ... groß ist, denn die UV-Koordinaten enden immer bei 1,1 (rechts unten der Textur). Da ein Blitzterrain aber UV-Koordinaten über jedes ''Tile'' einen Sprung macht, muß eben dieses als Anhaltspunkt genommen werden, wenn man sich als Ziel gesetzt hat, eine Texturkachel über das ganze Terrain zu ziehen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group