Community-Tutorials (Source)

Model Import Tutorial 4 - Lod, Skinfamilies und andere Kleinigkeiten

Model Import Tutorial 4 – Lod´s, Skinfamilies und andere Kleinigkeiten

Lod

Lod bedeutet Level of Detail was übersetzt soviel heißt wie Detailgrad. Dadurch wird die Polygonzahl an weiter entfernten Models drastisch reduziert.

Man bindet es ein, indem man mehrere Models macht, die immer weniger Polygone haben. Wenn der Player dann eine in der .qc festgelegte Entfernung zum Model überschreitet wird das Model ausgetauscht.

In HL2 World.com habe ich gelesen, dass lod 1 = 1meter wäre. Wenn das stimmt tritt Lod 15 bei 547 Hammerunits ein. (Ein Unit = 2,54cm)

Hier mal ein Beispiel für eine .qc

$lod 15 
 {
 	replacemodel "model_reference" "model_lod" 
 	replacematerial "modelmaterial" "modelmaterial_lod"
 }
 
 $lod 25 
 {
 	replacemodel "model_reference" "model_lod2" 
 	replacematerial "modelmaterial" "modelmaterial_lod"
 }

replacemodel ersetzt das Originalmodel (model_reference) durch das Low Poly Model (model_lod)
replacematerial ersetzt dann die Textur durch eine andere. Man kann aber in den meisten fällen die gleiche Textur nehmen. Es ist aber sinnvoll trotzdem ein Lod Material.vmt zu machen, die die gleiche Textur benutzt aber bei der Normal und Specularmaps fehlen um Grafikkartenspeicher zu sparen.

$lod 65
{
removemodel "model_reference"
}

würde das Model dann ganz verschwinden lassen.

WICHTIG

Ihr müsst

$body studio "./modelname"


gegen

$model model "euermodel.smd"


austauschen sonst werdet ihr eine Fehlermeldung beim Kompilieren bekommen.
Diese Zeile muss in der .qc ÜBER dem Lod Befehl stehen.

Lod bei Animierten oder Ragdoll Models

Funktioniert genauso wie bei der Kollisionsbox. Die Bones (müssen am gleichen Platz sein und den gleichen Namen haben) übernehmen und die Vertices den Bones noch mal zuordnen. Dabei solltet ihr die Lowpoly Varianten der Teile, die im reference Model schon animiert wurden, den Bones zuordnen sonst wird etwas anders animiert.

Ragdoll Models

Dafür habe ich jetzt eigentlich kein Tutorial geplant weil es auf HL2 World.com schon ein gutes gibt. Bones setzen und deren Gewicht festlegen habe ich im 3. Model Import Tutorial schon erklärt. Ihr müsst nur was anderes in die .qc schreiben.

Link zum Tutorial auf HL2World.com
http://www.hl2world.com/wiki/index.php/Creating_Complex_Ragdoll_Models_%28Max%29

Skinfamilies

Um mehrere Skins für 1 Model zu benutzen, wie das zum Beispiel bei den Fass Models aus HL2 ist, schreibt man folgendes in die .qc Damit legt ihr nur fest, wie die .vmt also der Shader heißen muss. Somit könnt ihr mehrere Shader auf eine „basetexture“ zugreifen lassen.

$texturegroup skinfamilies
{
	{ "Orignialtextur.vmt" "Originaltextur2.vmt"}
	{ "2 Skin.vmt"  "2 Skin Textur 2.vmt"  }
	{ "3 Skin.vmt" "3 Skin Textur 2.vmt"  }
	{ "4 Skin.vmt" "4 Skin Textur 2.vmt"  }
}

Dabei sind die rechten Texturangaben nur nötig, wenn das Model auch 2 Texturen hat.

UVW Unwrap

Ihr habt euch eine schöne Textur mit UVW Unwrap erstellt. Jetzt wollt ihr ein Lod Model machen doch immer wenn ihr ein paar Poly´s löscht ist euer ganzes Skinmesh kaputt.

Wenn die Textur fertig ist müsst ihr das Model einfach noch mal zu einem editable poly machen und ihr könnt Poly´s löschen ohne das das ganze Skinmesh kaputt geht.

Surfaceprops

Bei prop_physic Model müsst ihr ja immer die Prop Data angeben. Also ob eure Model sich wie Holz oder wie Stein verhalten soll.
In diesem Tutorial erfahrt ihr noch mal den nutzen:
http://www.mapping-tutorials.de/forum/showthread.php?t=1706

Alle Prop Datas stehen in der propdata.txt die sich in der source engine.gcf im Unterordner hl2\scripts befindet. Einfach exportieren.

Hollow Man und Geister

Ihr könnt in der .vmt schöne Sachen einfügen um eure Models zu verändern.

Mit "$additive" 1 in der .vmt sehen eure Models wie geister aus.
Ein Screen von Gosuke:

colo042.jpg

Mit dem Refract Shader könnt ihr Models im Hollow Man Style machen. Ein Beispiel dafür ist der Charakter im Video Stress Test von CSS

colo043.jpg

So könnte eine .vmt für diese Textur aussehen

"Refract"
       {
	"$model" "1"
	"$bluramount" "1.5"
	"$refractamount" ".1"
	"$refracttint" "{100 100 100}"
	"$scale" "[1 1]"
	"$dudvmap" "folder/ice_dudv"
	"$normalmap" "folder/ice_normal"
	"$basetexture" "folder/ice"
	"$envmap" "env_cubemap"
	"$envmaptint" "[.5 .5 .5]"
       }

Das Tutorial für den Refract Shader gibt es unter diesem Link
http://www.hl2world.com/wiki/index.php/Refract_Shader

Explosives Model

wie oildrum001_explosive. Wenn man drauf schießt brennt es kurz und explodiert danach.
Das in die .qc einfügen:

$keyvalues  { prop_data { "dmg.bullets" "1.0" "dmg.club" "1.0" "dmg.explosive" "1.0" "health" "20" "explosive_damage" "120" "explosive_radius" "256"  } physgun_interactions { "onfirstimpact" "break"  } fire_interactions { "flammable" "yes" "explosive_resist" "yes" "ignite" "halfhealth"  } }

Anfänger verändern am besten nur die Zahlen. Hier deren Bedeutung:
1.0 x Schaden mit Waffen
1.0 x Schaden mit Messer, Energiekeule
1.0 x Schaden durch Explosionen
Fass hat 20 Leben
Explosion verursacht 120 Schaden
in einem Radius von 256 Units

...und Profis müssen dieses Tutorial nicht lesen *g*

Wenn ihr ein breakable Model machen wollt, dass bei Beschuss explodiert könnt ihr den Parameter burst anhängen, damit die Gibs in alle Richtungen fliegen.

$collisiontext {
	break { "model" "props_c17/oildrumchunk01a" "health" "10" "fadetime" "10" "burst" "100"}
	break { "model" "props_c17/oildrumchunk01b" "health" "10" "fadetime" "10" "burst" "100"}
	break { "model" "props_c17/oildrumchunk01c" "health" "10" "fadetime" "10" "burst" "100"}
	break { "model" "props_c17/oildrumchunk01d" "health" "10" "fadetime" "10" "burst" "100"}
	break { "model" "props_c17/oildrumchunk01e" "health" "10" "fadetime" "10" "burst" "100"}
}

Weitere .qc Commands

$attachment wird benutzt um Models an ein anderes "anzuhängen"

$attachment "light" "Scanner.Body" 7.41 9.90 0.04 rotate 0.00 0.00 -90.00


übersetzt

$attachment (name) (bone name) (X) (Y) (Z) [“rotate” pitch yaw roll]

Man kann auch [“absolute”] dazuschreiben um das Attachment keinem Bone zuzuweisen.

Wie bekomme ich die Koordinaten heraus ?

1. Möglichkeit -> Mit adjust Pivot den Pivot genau auf 0 0 0 schieben und dann kann man bei x y z immer 0 0 0 eingeben.

2. Möglichkeit -> Das Attachment in Max in die Szene einfügen und in den Move Mode gehen. Unten im Fenster sehen dann die Koordinaten des neuen Models. Merken und in die .qc eintragen.