Wollte das eigendlich schon längst machen, habs aber vergessen.
-Was sind ssBumps?
-Self Shadowing Bumpmaps. Bumpmaps die selbst auf sich selbst schatten werfen. Die Schatten daten befinden sich auf der map selbst.
oder noch besser http://developer.valvesoftware.com/wiki/%24ssbump
- -Wow cool, kann ich das benutzen?
- -Natürlich, nur sollte man noch wissen, dass ValvE ssbumps leider nur auf map Objekte, wie z.b. einen Brush, aktiviert hat. Also klar gestellt, Modelle werden keine ssbumps akzeptieren.
- -Toll das ganze, aber wo zum henker wurden die schon genutzt?
- -Ab ep2 wurden die voll eingeführt und genutzt.
Hier in bild dazu
Dazu habe ich in L4D tonnenweise von denen entdeckt.
- -Ok, wie sieht do eine bumpmap aus?
- -Verwirrend am anfang. Hab selbst nicht gedacht, dass das bumpmaps sein sollen.
height map
normal map (hier wurde für source y-kanal invertiert)
ssBump map
- -Wie macht man die selbst?
- -ValvE hat kein tool für das heraus gegeben, also muss man abhilfe schaffen.
Ihr braucht xNormal dafür als einzigstes konvertierungs programm. Und natürlich eine Heightmap.
In xNormal klickt ihr nun auf tool, dann auf Height map to normal map.
Dann stellt ihr alles so ein. Davon dürft ihr ruhig bei smooth und radius abweichen. Radius ist die Länge der Strahlen. Smooth der schärfegrad.
Um eine heightmap zu laden müsst ihr rechtsklick auf das linke bild machen. zu rendern auch rechtsklick, aber aufs rechte bild.
Der rest ist selbst erklärend. Dazu sollte man noch sagen, dass xNormal dualcore support hat, also nicht erschrecken wenn der rechner sehr lahm wird.
Der screen ist noch von einer alten version, aber funktioniert trotzdem in der neuen.
- -Geil! Wie kann ich die nun in meiner map haben?
- -So wie jedes material. Aber man muss vorher noch die vmt umändern/erstellen. Dazu hier eine BSP vmt.
Code:
LightmappedGeneric
{
$basetexture nature/rockwall_cave02a
$surfaceprop concrete
$bumpmap nature/rockwall_cave_02a_height
}
Naja, laut der vmt ist es eine normale Normalmap, die verwendet werden soll, aber wir wollen, dass es eine ssbump benutzt. Man muss nur den parameter "$ssbump 1" einsetzen.
Also wie folgt.
Code:
LightmappedGeneric
{
$basetexture nature/rockwall_cave02a
$surfaceprop concrete
$bumpmap nature/rockwall_cave_02a_height
$ssbump 1
}
Die Engine weis nun, dass eine ssBump benutzt werden soll. Nicht zu vergessen, das neue Material in den richtigen Ordner zu stecken und richtig zu benennen.
- -Auh ja! Ich werd die jetzt über all benutzen.
-Woah halt! Man sollte dazu wissen, dass bei kleinen details sich eher Normalmaps lohnen. Ironischer weise fressen die ssBumps sogar weniger Ressourcen als Normalmaps (!). Also selbst entscheiden, ssBumps rendern, was länger dauert, oder einfach nur Normalmaps machen.
Gute beispiele für ssBmps sind z.b. Fels-, groben Grund- und großflächige Texturen.
Update: placeholder lololol in progress!