terrain fehler

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Boris1993

Betreff: terrain fehler

BeitragDi, Apr 06, 2010 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo
immer wenn ich eine heightmap lade und diese auf der y-achse skaliere entsteht an einer seite des terrains eine ungewollte erhöhung
weiss jemand wie ich dieses problem lösen kann? es liegt wahrscheinlich am skalieren aber das ist notwendig weil sonst die berge nicht hoch genug sind

hier ein screenshot damit ihr wisst was ich meine:
user posted image


schonmal danke für eure antworten

mfg
boris

skey-z

BeitragDi, Apr 06, 2010 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Am skalieren liegt es nicht wirklich, man sieht es dann nur besser.

vergleiche mal diese Punkte mit der genau gegenüberliegenden Seite, die sollten die gleiche Höhe haben

Also bei einem Terrain 256² ist X=255 = X=0 von den Höhenkoordinaten her, warum, weiß ich leider nicht.

Am Besten ist immer entweder X/Z=0 und X/Z=max auf den koordinaten 0 zu setzen oder ein Meshterrain zu benutzen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

mpmxyz

BeitragDi, Apr 06, 2010 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses Problem kenne ich auch.
Dort wird dir Höhe von der anderen Seite des Terrains genutzt.
Eine richtige Lösung hatte ich nicht gefunden gehabt.
Man könnte aber den Rand auf eine einheitliche Größe bringen.
Eine Idee fällt mir aber noch spontan ein:
Deine Heightmap ist ein quadratisches Bild mit 2^x Pixeln Seitenlänge?
Die Höheninformationen eines Terrains haben nämlich die Seitenlänge 2^x+1.
Vielleicht musst du die Höhe und die Breite des Bildes um einen Pixel vergrößern.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

ToeB

BeitragDi, Apr 06, 2010 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach einfach bei dem bild ein Schwarzes rechteck (nicht ausgefüllt) ums komplette bild, also so das das bild von einem schwarzen rand umrandet wird. Sollte aber nur 1 Pixel groß sein. Schwupps, das Problem ist weg Wink

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!
 

Boris1993

BeitragSa, Mai 01, 2010 4:46
Antworten mit Zitat
Benutzer-Profile anzeigen
nunja wirklich behoben ist der fehler damit nicht man kann ihn nur nicht mehr sehen.
es muss doch irgendeine möglichkeit geben ihn richtig zu beheben oder?

ToeB

BeitragSa, Mai 01, 2010 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow nein

Ich würde das terrain so aufbauen, das es am rand immer den selben farbwert hat, also z.B. 0,0,0(schwarz). Dann kannst du dort deine Berge oder was auch immer reinmalen, aber so das die Flächen immer am rand zu schwarz werden (ich hoffe du verstehst)...

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!

skey-z

BeitragSa, Mai 01, 2010 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Die nächste Lösung, wenn du das Problem wirklich beheben möchtest, bastel dir ein Meshterrain
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Mai 01, 2010 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist eigendlich kein Bug in dem Sinne, sondern eine Notwendigkeit wenn man es richtig machen möchte.

Bei einem Terrain, das mit einer Textur überzogen ist, erwartet man, dass jedes Quad einem (wenn Highmap und Textur gleich groß sind) Texel entspricht. Ein Quad benötigt aber zwei Vertices, wovon einer dem Nachbarquad gehört.

Mit anderen Worten:

Ein Terrain mit - sagen wir mal - 256er Kantenlänge und einer gleich großen Textur drauf, hat immer genau so viele Quads wie groß die Textur ist. Also in diesem Fall 256x256 Quads wovon - wegen der Handbarkeit - jedes Texturtexel genau auf ein Quad passt. Um so ein Terrain zu realisieren, werden aber 257x257 Vertices benötigt. Es ist nur logisch nun nicht einfach das Terrain am Ende abzuflachen, sondern den Anfang zu benutzen. So hat der Programmierer noch die Möglichkeit das Ende mitzu beinflussen um ggf. ein nächstes Terrain als Tile anzuhängen.

Texturen die großer oder kleiner sind als das Terrain, werden genauso perfekt skalliert. Denn wir wissen ja alle, dass nut Texturen als auch Terrains mit einer 2er Potent Kantenlänge benutzt werden können.

- - -

Die Alternative wäre, man nimmt eine 256er Terraintextur und teil diese dann in 256x256 Vertices, wovon jedoch nur 255x255 Quads (Tiles) von übrig bleiben. Damit wäre zwar Höhenkontrolle einfacher, aber präzise Schadowmaps wiederrum nur erschwert unmöglich. Da es zu interferenzen zwischen der Terrainaufteilung und der drauf gelegten Textur kommen würde.

Edit1: Aber ja, ich bevorzuge auch die zweite Möglichkeit. Auch wenn die Textur dann nicht mehr 1:1 drauf gelegt werden kann.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Boris1993

BeitragSa, Mai 01, 2010 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
gut dann werd ich das demnächst so machen wie ToeB gesagt hat
oder ich mache ein meshterrain^^
aber was genau meinst du mit meshterrain?
einfach ein mesh als landschaft benutzen würde doch das LOD prinzip nicht zulassen

skey-z

BeitragSa, Mai 01, 2010 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein LOD system müsstes du dir dann selber schreiben, oder das Terrain in mehrere Meshes unterteilen und die weiter entfernten dann ausblenden
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Boris1993

BeitragSa, Mai 01, 2010 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
dann versuch ich das mal
aber wie realisiere ich das am besten das entfernte objekte ausgeblendet werden?
fällt mir grad keine lösung ein

the FR3AK

BeitragSa, Mai 01, 2010 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Objekte in Types speichern und kontrollieren ob sie in Sichtweite o.ä. sind.
Oder du benutzt entityFadeOut oder wie der Befehl nochmal hieß.

ToeB

BeitragSo, Mai 02, 2010 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityAutoFade macht aber meines wissens nach nur das Objekt "unsichtbar", es wird aber noch mitberechnet. Du pürfst einfach , ob das Terrain 1. In sichtweite ist mit EntityInView oder du schreibst dir selber ne routine (oder lässt den punkt weg) und 2. prüfst du mit EntityDistance den Abstand zur cam. Dann einfach mit HideEntity verstecken und mit ShowEntity wieder anzeigen wenn es in sichtweite ist.

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!
 

KaozZZ

BeitragSo, Mai 02, 2010 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnte man nicht, wenn man die heightmap als image lädt und dann die eine pixelreihe des image ausliest mit modifterrain das terrain an diesen stellen anpassen??? das wäre doch noch eigentlich ne möglichkeit, wenn mans mit einem normalem terrain machen möchte, oder??
(ich weis nich ob das funktioniert und es wäre natürlich auch umständlich)
 

Boris1993

BeitragSo, Mai 16, 2010 4:34
Antworten mit Zitat
Benutzer-Profile anzeigen
aber ist es bei hide entity nicht auch so dass das objekt noch gerendert wird? in der hilfe steht dass es nur nicht mehr auf collisionen geprüft wird

mpmxyz

BeitragSo, Mai 16, 2010 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
HideEntity hat Folgendes geschrieben:
Die Anweisung HideEntity schaltet ein Objekt aus - es wird dadurch unsichtbar.

Den Satz vorher hast du doch bestimmt auch gelesen, oder? Wink
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group