GDF 26.1a
Game Development Framework - https://gdf.acits.nl
Laden...
Zoeken...
Niets gevonden
GDF.MdlGenerator Class Referentie

Maakt een 3D-model (.mdl) uit eenvoudige basisvormen, zonder Blender. Meer...

Public Typen

enum  Quality { Low , Normal , High }
 Hoe fijn ronde vormen worden opgebouwd. Meer...
enum  OriginMode { AsGiven , Bottom , Center }
 Waar het middelpunt (draaipunt) van het model komt te liggen. Meer...

Public Members

 MdlGenerator (string name)
MdlMaterial AddMaterial (string name, Color color)
 Voeg een materiaal met een kleur toe.
MdlMaterial AddTextureMaterial (string name, string texture)
 Voeg een materiaal met een afbeelding uit Data/Textures toe, bijvoorbeeld AddTextureMaterial("steen", "stones1.jpg").
MdlMaterial AddMaterialFile (string name, string file)
 Gebruik een bestaand Urho-materiaal, bijvoorbeeld AddMaterialFile("water", "Materials/Water.xml").
MdlVariant AddVariant (string name)
 Voeg een variant toe: hetzelfde model met andere kleuren.
MdlShape AddShape (MdlShape.Type type, Vector3 position, Vector3 size, string material)
 Voeg een vorm toe. Materiaal: de naam van een materiaal (zie AddMaterial).
MdlShape AddShape (MdlShape.Type type, Vector3 position, Vector3 size, Color color)
 Voeg een vorm met een kleur toe (er wordt vanzelf een materiaal voor gemaakt).
MdlShape AddBox (Vector3 position, Vector3 size, Color color)
 Blok.
MdlShape AddBox (Vector3 position, Vector3 size, string material)
 Blok.
MdlShape AddSphere (Vector3 position, Vector3 size, Color color)
 Bol (met lengte- en breedtegraden).
MdlShape AddSphere (Vector3 position, Vector3 size, string material)
 Bol (met lengte- en breedtegraden).
MdlShape AddIcoSphere (Vector3 position, Vector3 size, Color color)
 Bol uit gelijke driehoeken; mooi voor stenen en boomkruinen (samen met SetJitter).
MdlShape AddIcoSphere (Vector3 position, Vector3 size, string material)
 Bol uit gelijke driehoeken; mooi voor stenen en boomkruinen (samen met SetJitter).
MdlShape AddHalfSphere (Vector3 position, Vector3 size, Color color)
 Halve bol (koepel), platte kant onder.
MdlShape AddHalfSphere (Vector3 position, Vector3 size, string material)
 Halve bol (koepel), platte kant onder.
MdlShape AddCylinder (Vector3 position, Vector3 size, Color color)
 Cilinder (staand). Met SetTop smaller maken aan de bovenkant.
MdlShape AddCylinder (Vector3 position, Vector3 size, string material)
 Cilinder (staand). Met SetTop smaller maken aan de bovenkant.
MdlShape AddCone (Vector3 position, Vector3 size, Color color)
 Kegel, punt naar boven.
MdlShape AddCone (Vector3 position, Vector3 size, string material)
 Kegel, punt naar boven.
MdlShape AddPyramid (Vector3 position, Vector3 size, Color color)
 Piramide met een vierkante grondvlak, punt naar boven.
MdlShape AddPyramid (Vector3 position, Vector3 size, string material)
 Piramide met een vierkante grondvlak, punt naar boven.
MdlShape AddWedge (Vector3 position, Vector3 size, Color color)
 Wig (helling): laag aan de voorkant (-Z), hoog aan de achterkant (+Z). Ook handig als dak.
MdlShape AddWedge (Vector3 position, Vector3 size, string material)
 Wig (helling): laag aan de voorkant (-Z), hoog aan de achterkant (+Z). Ook handig als dak.
MdlShape AddPrism (Vector3 position, Vector3 size, Color color)
 Driehoekig prisma: punt naar voren (+Z), brede kant achter (-Z). Mooi voor vleugels en vinnen.
MdlShape AddPrism (Vector3 position, Vector3 size, string material)
 Driehoekig prisma: punt naar voren (+Z), brede kant achter (-Z). Mooi voor vleugels en vinnen.
MdlShape AddCapsule (Vector3 position, Vector3 size, Color color)
 Capsule (staande pil); de ronde uiteinden worden niet uitgerekt.
MdlShape AddCapsule (Vector3 position, Vector3 size, string material)
 Capsule (staande pil); de ronde uiteinden worden niet uitgerekt.
MdlShape AddTorus (Vector3 position, Vector3 size, Color color)
 Donut, plat liggend. Size.X en Size.Z zijn de buitenmaat; de dikte van de ring is SetThickness × Size.
MdlShape AddTorus (Vector3 position, Vector3 size, string material)
 Donut, plat liggend. Size.X en Size.Z zijn de buitenmaat; de dikte van de ring is SetThickness × Size.
MdlShape AddPlane (Vector3 position, Vector3 size, Color color)
 Plat vlak (liggend, zichtbaar van boven). Met SetTwoSided van beide kanten zichtbaar, bijvoorbeeld voor bladeren.
MdlShape AddPlane (Vector3 position, Vector3 size, string material)
 Plat vlak (liggend, zichtbaar van boven). Met SetTwoSided van beide kanten zichtbaar, bijvoorbeeld voor bladeren.
MdlShape AddTerrain (Vector3 position, Vector3 size, string heightmap, string material)
 Een landschap uit een hoogtekaart (PNG: zwart is laag, wit is hoog; de bovenkant van de afbeelding is +Z).
int Save (string dataFolder="Data")
 Schrijf het model weg: dataFolder/Models/Naam.mdl, dataFolder/Models/Naam.txt (materialenlijst) en dataFolder/Materials/Naam_*.xml.
MdlMesh Build ()
 Bouw de driehoeken van het model.

Static Public Members

static MdlGenerator GenerateFromFile (string shapesFile)
 Lees een .shapes-bestand en schrijf het model weg in de map Data waar het bestand in staat (Data/Models/Boom.shapes wordt Data/Models/Boom.mdl).
static string FindDataFolder (string file)
 De map Data waar dit bestand in staat (zoekt omhoog naar een map die Data heet).
static MdlGenerator FromFile (string shapesFile)
 Lees een .shapes-bestand.
static MdlGenerator FromText (string text, string name)
 Lees een model uit tekst.

Public Attributen

string Name
 Naam van het model; wordt de bestandsnaam (Naam.mdl, Naam.txt en Naam_*.xml).
Quality DefaultQuality = Quality.Low
 Standaardkwaliteit voor alle ronde vormen (per vorm aan te passen met SetQuality of SetSegments).
OriginMode Origin = OriginMode.AsGiven
 Waar het middelpunt van het model komt (standaard: zoals opgegeven).
string BaseFolder = ""
 Map waar bestanden van vormen (zoals de hoogtekaart van terrain) worden gezocht; FromFile zet hier de map van het .shapes-bestand in.

Properties

IReadOnlyList< MdlVariant > Variants [get]
 De varianten van dit model (zie AddVariant).
IReadOnlyList< MdlShape > Shapes [get]
 De vormen van dit model, in de volgorde waarin ze zijn toegevoegd.
IReadOnlyList< MdlMaterial > Materials [get]
 De materialen die met AddMaterial (en varianten) zijn toegevoegd.
int MaterialCount [get]
 Het aantal materialen van het gemaakte model; geef dit mee aan Model.SetMdl.

Gedetailleerde Beschrijving

Maakt een 3D-model (.mdl) uit eenvoudige basisvormen, zonder Blender.

Elke vorm vult het blok van Position - Size/2 tot Position + Size/2 (Y is omhoog). Het resultaat laad je daarna op de gewone manier:

Model.SetMdl("Boom.mdl", 2);
Model.SetMaterialList("Boom.txt");

In code:

MdlGenerator boom = new MdlGenerator("Boom");
boom.AddCylinder(new Vector3(0, 0.5f, 0), new Vector3(0.25f, 1, 0.25f), Color.FromByteFormat(110, 70, 40, 255)).SetSegments(6);
boom.AddCone(new Vector3(0, 1.6f, 0), new Vector3(1.4f, 1.4f, 1.4f), Color.FromByteFormat(60, 130, 50, 255)).SetJitter(0.05f);
boom.Save(); // schrijft Data/Models/Boom.mdl, Data/Models/Boom.txt en Data/Materials/Boom_*.xml
MdlShape AddCone(Vector3 position, Vector3 size, Color color)
Kegel, punt naar boven.
Definitie MdlGenerator.cs:207
MdlShape AddCylinder(Vector3 position, Vector3 size, Color color)
Cilinder (staand). Met SetTop smaller maken aan de bovenkant.
Definitie MdlGenerator.cs:203
MdlGenerator(string name)
Definitie MdlGenerator.cs:99
int Save(string dataFolder="Data")
Schrijf het model weg: dataFolder/Models/Naam.mdl, dataFolder/Models/Naam.txt (materialenlijst) en da...
Definitie MdlGenerator.cs:261
MdlShape SetSegments(int segments)
Definitie MdlGenerator.cs:805
MdlShape SetJitter(float amount, int seed=1)
Definitie MdlGenerator.cs:814

Of als tekstbestand (bijvoorbeeld Data/Models/Boom.shapes), met MdlGenerator.GenerateFromFile("Data/Models/Boom.shapes") of met tools/maak-model.ps1:

quality low
material stam color=#6e4628
cylinder pos=0,0.5,0 size=0.25,1,0.25 material=stam segments=6
cone pos=0,1.6,0 size=1.4 color=#3c8232 jitter=0.05

Zie de beschrijving van FromText voor alle mogelijkheden van het tekstformaat.

Documentatie van enumeratie members

◆ OriginMode

Waar het middelpunt (draaipunt) van het model komt te liggen.

Enumeratie waarden
AsGiven 

Precies zoals de vormen zijn opgegeven.

Bottom 

Midden onder het model: handig om het op de grond te zetten.

Center 

In het midden van het model.

◆ Quality

Hoe fijn ronde vormen worden opgebouwd.

Low geeft de bekende "low poly"-stijl.

Enumeratie waarden
Low 
Normal 
High 

Constructor & Destructor Documentatie

◆ MdlGenerator()

GDF.MdlGenerator.MdlGenerator ( string name)

Documentatie van functie members

◆ AddBox() [1/2]

MdlShape GDF.MdlGenerator.AddBox ( Vector3 position,
Vector3 size,
Color color )

Blok.

◆ AddBox() [2/2]

MdlShape GDF.MdlGenerator.AddBox ( Vector3 position,
Vector3 size,
string material )

Blok.

◆ AddCapsule() [1/2]

MdlShape GDF.MdlGenerator.AddCapsule ( Vector3 position,
Vector3 size,
Color color )

Capsule (staande pil); de ronde uiteinden worden niet uitgerekt.

◆ AddCapsule() [2/2]

MdlShape GDF.MdlGenerator.AddCapsule ( Vector3 position,
Vector3 size,
string material )

Capsule (staande pil); de ronde uiteinden worden niet uitgerekt.

◆ AddCone() [1/2]

MdlShape GDF.MdlGenerator.AddCone ( Vector3 position,
Vector3 size,
Color color )

Kegel, punt naar boven.

◆ AddCone() [2/2]

MdlShape GDF.MdlGenerator.AddCone ( Vector3 position,
Vector3 size,
string material )

Kegel, punt naar boven.

◆ AddCylinder() [1/2]

MdlShape GDF.MdlGenerator.AddCylinder ( Vector3 position,
Vector3 size,
Color color )

Cilinder (staand). Met SetTop smaller maken aan de bovenkant.

◆ AddCylinder() [2/2]

MdlShape GDF.MdlGenerator.AddCylinder ( Vector3 position,
Vector3 size,
string material )

Cilinder (staand). Met SetTop smaller maken aan de bovenkant.

◆ AddHalfSphere() [1/2]

MdlShape GDF.MdlGenerator.AddHalfSphere ( Vector3 position,
Vector3 size,
Color color )

Halve bol (koepel), platte kant onder.

◆ AddHalfSphere() [2/2]

MdlShape GDF.MdlGenerator.AddHalfSphere ( Vector3 position,
Vector3 size,
string material )

Halve bol (koepel), platte kant onder.

◆ AddIcoSphere() [1/2]

MdlShape GDF.MdlGenerator.AddIcoSphere ( Vector3 position,
Vector3 size,
Color color )

Bol uit gelijke driehoeken; mooi voor stenen en boomkruinen (samen met SetJitter).

◆ AddIcoSphere() [2/2]

MdlShape GDF.MdlGenerator.AddIcoSphere ( Vector3 position,
Vector3 size,
string material )

Bol uit gelijke driehoeken; mooi voor stenen en boomkruinen (samen met SetJitter).

◆ AddMaterial()

MdlMaterial GDF.MdlGenerator.AddMaterial ( string name,
Color color )

Voeg een materiaal met een kleur toe.

Een vorm gebruikt het met material: "naam". Is de kleur doorzichtig (alfa kleiner dan 1), dan wordt het materiaal doorzichtig.

◆ AddMaterialFile()

MdlMaterial GDF.MdlGenerator.AddMaterialFile ( string name,
string file )

Gebruik een bestaand Urho-materiaal, bijvoorbeeld AddMaterialFile("water", "Materials/Water.xml").

Het pad is relatief aan de map Data.

◆ AddPlane() [1/2]

MdlShape GDF.MdlGenerator.AddPlane ( Vector3 position,
Vector3 size,
Color color )

Plat vlak (liggend, zichtbaar van boven). Met SetTwoSided van beide kanten zichtbaar, bijvoorbeeld voor bladeren.

◆ AddPlane() [2/2]

MdlShape GDF.MdlGenerator.AddPlane ( Vector3 position,
Vector3 size,
string material )

Plat vlak (liggend, zichtbaar van boven). Met SetTwoSided van beide kanten zichtbaar, bijvoorbeeld voor bladeren.

◆ AddPrism() [1/2]

MdlShape GDF.MdlGenerator.AddPrism ( Vector3 position,
Vector3 size,
Color color )

Driehoekig prisma: punt naar voren (+Z), brede kant achter (-Z). Mooi voor vleugels en vinnen.

◆ AddPrism() [2/2]

MdlShape GDF.MdlGenerator.AddPrism ( Vector3 position,
Vector3 size,
string material )

Driehoekig prisma: punt naar voren (+Z), brede kant achter (-Z). Mooi voor vleugels en vinnen.

◆ AddPyramid() [1/2]

MdlShape GDF.MdlGenerator.AddPyramid ( Vector3 position,
Vector3 size,
Color color )

Piramide met een vierkante grondvlak, punt naar boven.

◆ AddPyramid() [2/2]

MdlShape GDF.MdlGenerator.AddPyramid ( Vector3 position,
Vector3 size,
string material )

Piramide met een vierkante grondvlak, punt naar boven.

◆ AddShape() [1/2]

MdlShape GDF.MdlGenerator.AddShape ( MdlShape.Type type,
Vector3 position,
Vector3 size,
Color color )

Voeg een vorm met een kleur toe (er wordt vanzelf een materiaal voor gemaakt).

◆ AddShape() [2/2]

MdlShape GDF.MdlGenerator.AddShape ( MdlShape.Type type,
Vector3 position,
Vector3 size,
string material )

Voeg een vorm toe. Materiaal: de naam van een materiaal (zie AddMaterial).

◆ AddSphere() [1/2]

MdlShape GDF.MdlGenerator.AddSphere ( Vector3 position,
Vector3 size,
Color color )

Bol (met lengte- en breedtegraden).

◆ AddSphere() [2/2]

MdlShape GDF.MdlGenerator.AddSphere ( Vector3 position,
Vector3 size,
string material )

Bol (met lengte- en breedtegraden).

◆ AddTerrain()

MdlShape GDF.MdlGenerator.AddTerrain ( Vector3 position,
Vector3 size,
string heightmap,
string material )

Een landschap uit een hoogtekaart (PNG: zwart is laag, wit is hoog; de bovenkant van de afbeelding is +Z).

Het landschap vult het blok position ± size/2: zwart ligt op de onderkant, wit op de bovenkant. Steile en lage stukken kunnen een ander materiaal krijgen met SetSteep en SetLow.

◆ AddTextureMaterial()

MdlMaterial GDF.MdlGenerator.AddTextureMaterial ( string name,
string texture )

Voeg een materiaal met een afbeelding uit Data/Textures toe, bijvoorbeeld AddTextureMaterial("steen", "stones1.jpg").

◆ AddTorus() [1/2]

MdlShape GDF.MdlGenerator.AddTorus ( Vector3 position,
Vector3 size,
Color color )

Donut, plat liggend. Size.X en Size.Z zijn de buitenmaat; de dikte van de ring is SetThickness × Size.

◆ AddTorus() [2/2]

MdlShape GDF.MdlGenerator.AddTorus ( Vector3 position,
Vector3 size,
string material )

Donut, plat liggend. Size.X en Size.Z zijn de buitenmaat; de dikte van de ring is SetThickness × Size.

◆ AddVariant()

MdlVariant GDF.MdlGenerator.AddVariant ( string name)

Voeg een variant toe: hetzelfde model met andere kleuren.

Save schrijft daarvoor een extra materialenlijst Naam_variant.txt, bijvoorbeeld:

boom.AddVariant("herfst").SetColor("blad", Color.FromByteFormat(200, 116, 42, 255));
...
Model.SetMdl("Boom.mdl", 2);
Model.SetMaterialList("Boom_herfst.txt");

◆ AddWedge() [1/2]

MdlShape GDF.MdlGenerator.AddWedge ( Vector3 position,
Vector3 size,
Color color )

Wig (helling): laag aan de voorkant (-Z), hoog aan de achterkant (+Z). Ook handig als dak.

◆ AddWedge() [2/2]

MdlShape GDF.MdlGenerator.AddWedge ( Vector3 position,
Vector3 size,
string material )

Wig (helling): laag aan de voorkant (-Z), hoog aan de achterkant (+Z). Ook handig als dak.

◆ Build()

MdlMesh GDF.MdlGenerator.Build ( )

Bouw de driehoeken van het model.

Wordt gebruikt door Save en door de voorvertoning in tools/maak-model.ps1.

◆ FindDataFolder()

string GDF.MdlGenerator.FindDataFolder ( string file)
static

De map Data waar dit bestand in staat (zoekt omhoog naar een map die Data heet).

Staat het er niet in, dan de map boven de map van het bestand.

◆ FromFile()

MdlGenerator GDF.MdlGenerator.FromFile ( string shapesFile)
static

Lees een .shapes-bestand.

De naam van het model wordt de bestandsnaam (zonder extensie).

◆ FromText()

MdlGenerator GDF.MdlGenerator.FromText ( string text,
string name )
static

Lees een model uit tekst.

Eén opdracht per regel; # of // begint commentaar.

quality low|normal|high kwaliteit van ronde vormen (standaard low)
origin asgiven|bottom|center waar het middelpunt komt (standaard asgiven)
material naam color=#rrggbb kleur (ook #rrggbbaa voor doorzichtig, of r,g,b in 0-255)
texture=bestand.png afbeelding uit Data/Textures (met repeat=x,y)
file=Materials/X.xml bestaand Urho-materiaal
shiny=0..1 glow=1 unlit alpha
normal=bestand_n.png normal map (reliëf) uit Data/Textures
tile=4 afbeelding elke 4 m herhalen (voor grote vloeren en muren)
vorm pos=x,y,z size=x,y,z rot=x,y,z (color=... of material=naam) [opties]
vormen: box sphere icosphere halfsphere cylinder cone pyramid wedge prism capsule torus plane
(wedge: hoog aan de achterkant +Z; prism: driehoek met de punt naar +Z)
size mag ook één getal zijn (size=2 is 2,2,2); rot is in graden
segments=8 aantal zijden van ronde vormen (quality=low|normal|high kan ook)
subdivisions=1 fijnheid van icosphere (0 t/m 4)
top=0.5 cylinder/cone/box/prism: grootte van de bovenkant (0 = punt, 1 = recht)
thickness=0.3 torus: dikte van de ring
smooth / smooth=60 zacht belichten in plaats van vlakjes (hoek in graden waaronder vlakken samen gaan)
twosided van beide kanten zichtbaar
jitter=0.05 seed=1 hoekpunten willekeurig verschuiven (in meters), voor een natuurlijke vorm
repeat=6 step=0,60,0 offset=0,0.1,0 around=x,y,z
6 keer herhalen, elke keer 60° verder gedraaid om punt around (standaard 0,0,0)
en 0.1 hoger
mirror=x gespiegelde kopie aan de andere kant van X = 0 (ook y, z, xz, ...)
terrain pos=0,20,0 size=800,40,800 heightmap=kaart.png material=gras [opties]
landschap uit een PNG (zwart = onderkant van het blok, wit = bovenkant; bovenkant afbeelding = +Z)
cells=128 aantal vakjes per kant (standaard low 64, normal 128, high 256)
steep=rots steepangle=35 steiler dan 35 graden krijgt materiaal rots
low=zand lowheight=1.5 lager dan Y = 1.5 krijgt materiaal zand (oever van een meer)
jitter=1 hoekpunten iets verschuiven, zodat het raster minder opvalt
variant naam materiaal=#kleur [materiaal=ander_materiaal ...]
extra materialenlijst Naam_naam.txt met andere kleuren (of een ander materiaal); zet dit onder de materialen
IReadOnlyList< MdlMaterial > Materials
De materialen die met AddMaterial (en varianten) zijn toegevoegd.
Definitie MdlGenerator.cs:97

◆ GenerateFromFile()

MdlGenerator GDF.MdlGenerator.GenerateFromFile ( string shapesFile)
static

Lees een .shapes-bestand en schrijf het model weg in de map Data waar het bestand in staat (Data/Models/Boom.shapes wordt Data/Models/Boom.mdl).

Geeft de generator terug.

◆ Save()

int GDF.MdlGenerator.Save ( string dataFolder = "Data")

Schrijf het model weg: dataFolder/Models/Naam.mdl, dataFolder/Models/Naam.txt (materialenlijst) en dataFolder/Materials/Naam_*.xml.

Geeft het aantal materialen terug (voor Model.SetMdl). Let op: tijdens het spel is "Data" de map naast het .exe-bestand, niet de map van je project.

Documentatie van data members

◆ BaseFolder

string GDF.MdlGenerator.BaseFolder = ""

Map waar bestanden van vormen (zoals de hoogtekaart van terrain) worden gezocht; FromFile zet hier de map van het .shapes-bestand in.

Leeg: de huidige map.

◆ DefaultQuality

Quality GDF.MdlGenerator.DefaultQuality = Quality.Low

Standaardkwaliteit voor alle ronde vormen (per vorm aan te passen met SetQuality of SetSegments).

◆ Name

string GDF.MdlGenerator.Name

Naam van het model; wordt de bestandsnaam (Naam.mdl, Naam.txt en Naam_*.xml).

◆ Origin

OriginMode GDF.MdlGenerator.Origin = OriginMode.AsGiven

Waar het middelpunt van het model komt (standaard: zoals opgegeven).

Property Documentatie

◆ MaterialCount

int GDF.MdlGenerator.MaterialCount
get

Het aantal materialen van het gemaakte model; geef dit mee aan Model.SetMdl.

◆ Materials

IReadOnlyList<MdlMaterial> GDF.MdlGenerator.Materials
get

De materialen die met AddMaterial (en varianten) zijn toegevoegd.

◆ Shapes

IReadOnlyList<MdlShape> GDF.MdlGenerator.Shapes
get

De vormen van dit model, in de volgorde waarin ze zijn toegevoegd.

◆ Variants

IReadOnlyList<MdlVariant> GDF.MdlGenerator.Variants
get

De varianten van dit model (zie AddVariant).


De documentatie voor deze klasse is gegenereerd op basis van het volgende bestand: