Naar aanleiding van de komst van het MSTS gamepack voor gMAX, zijn er enkele zaken die je moet weten, omdat ze invloed hebben op de rest van deze FAQ.

Het omzeilen van de vreselijke standaard-gebruikersinterface van het gamepack

Ik vermoed dat de standaard user interface van het MSTS gamepack werd ontwikkeld door 'n éénarmige blinde. Het is werkelijk verschrikkelijk en totaal vormeloos, vooral wanneer je gewend bent aan de interface van 3DSMax. Er is echter een lichtpuntje: je kunt het veranderen. Net als bij 3DSMax, is het in gMAX mogelijk om de interface volledig aan te passen. Ik kan hier niet alle details behandelen, maar de volgende tip levert je tenminste een enigszins 3DSMax-achtige interface op...
Na installatie van het gamepack ga je naar de map (g-maxINSTALLATIEMAP)\gamepacks\TrainSim\Scripts\Startup. Zoek naar het bestand startup.ms. Dit is een gewoon tekstbestand. Open het in je favoriete tekstbewerker. Onderaan vind je een passage die er zo uitziet:

-- Load UI files --
try (
   colorMan.loadColorFile (getdir #maxroot + "\gamepacks\\TrainSim\\UI\\Trainsim.clr")
   actionMan.loadKeyboardFile (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.kbd")
   menuMan.loadMenuFile (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.mnu")
   cui.loadConfig (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.cui")
   quadMenuSettings.loadSettingsFile (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.qmo")

) catch (
   messageBox "An error occured trying to load the TrainSim UI files."
)

Om een Max-achtige interface te verkrijgen, moet je enkele regels tot commentaarregels degraderen met behulp van twee liggende streepjes ('--'). Zie de rood gekleurde regels hieronder:

-- Load UI files --
try (
-- colorMan.loadColorFile (getdir #maxroot + "\gamepacks\\TrainSim\\UI\\Trainsim.clr")
-- actionMan.loadKeyboardFile (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.kbd")
   menuMan.loadMenuFile (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.mnu")
-- cui.loadConfig (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.cui")
   quadMenuSettings.loadSettingsFile (getdir #maxroot + "\gamepacks\\Trainsim\\UI\\Trainsim.qmo")

) catch (
   messageBox "An error occured trying to load the TrainSim UI files."
)

Nu heb je niet langer die mooie coole flitsende interface van het gamepack, maar wel een simpele rechttoe-rechtaan 3DSMax-achtige interface.

gMAX naamgevingsregels

Anders dan bij de conv3ds converter, kent gMAX niet de naamgevingsbeperkingen waarmee velen in 3DSMax problemen hebben. Dat betekent overigens nog niet dat het originele MSTS-manual correct is. Hier zijn de juiste namen van de onderdelen zoals ze moeten worden gebruikt in gMAX:
PantographTop1A, PantographTop1B, PantographMiddle1A, PantographMiddle1B, PantographBottom1A, PantographBottom1B, WiperArmLeft1, WiperArmRight1, enz. enz.

Het gebruik van de LOD-editor

De documentatie voor de LOD editor is niet erg duidelijk over het creëren van LOD's. Ik heb gemerkt dat wanneer je het verkeerd doet, gMAX totaal vastloopt waarbij de data beschadigd raken, zodat je helemaal opnieuw moet beginnen. Daarom volgt hier een stap-voor-stap handleiding - uiteindelijk blijkt het dan toch best eenvoudig te zijn.
  1. Bouw je model met het hoogste detail-level, of importeer je .3DS bestand uit 3DSMax.
  2. Selecteer het MAIN object van je trein of van je scenery item, open de LOD editor en klik op de knop "+" om de LOD toe te voegen. Plaats een laag getal in het veld 'LOD Distance' - bijvoorbeeld 75 (dit is goed voor de hoogste LOD).
  3. Klik dan nogmaals op "+". Hiermee dupliceer je de hele 'current scene' naar een nieuw detail-level. Geef deze een hoger getal - bij voorbeeld 150. Begin nu items te verwijderen uit de scene. Wees niet bang - de hoogste LOD is en blijft veilig. Als je me niet gelooft moet je eens proberen 1 ding te verwijderen (bv. een handrail, of wat dan ook) en klik dan op de knoppen 'up' en 'down' in de gMAX LOD editor. Wanneer je bij de hoogste LOD aankomt, blijkt alles nog steeds aanwezig te zijn.
  4. Ga op deze manier verder - verwijder dingen uit de scene, klik op "+" om een andere LOD toe te voegen en verwijder dan meer zaken.

Als je op een bepaald moment vindt dat je te veel uit de lagere detail-levels hebt verwijderd, klik dan op de "-" om het te verwijderen uit de LOD-structuur. De LOD manager brengt je dan terug naar de LOD die zich een stap hoger bevindt zodat je daar weer verder kunt.
Opmerking: Hoe meer LODs je in een model plaatst, hoe langer het exporteren zal duren. Dit is niet erg, maar wanneer je een trage PC hebt, zit je gedurende langere tijd te wachten. Gelukkig heeft de exportfunctie wel een voortgangsindicator zodat je kunt zien dat het programma nog aan het werk is en dat je computer niet is vastgelopen.

Vage textures, en het probleem van het 3e wiel.

Vage textures kunnen worden vermeden door gebruik te maken van het gMAX trainsim pack - in de materieel-editor is het mogelijk om het MIP-level direct in te stellen. Ik stel de mijne altijd in op een MIP BIAS van -3. Volgens de handleiding zijn waarden van -5 tot +5 toegestaan. Hoe hoger het getal, hoe vager de texture, maar hoe minder er een alias-effect optreedt in de verte (de scherpe zwevende lijnen langs de randen die soms in de verte optreden).
Het probleem van het 3e wiel dat verderop in deze FAQ wordt besproken schijnt opgelost te zijn in de MSTS gamepack plugin voor gmax, dus dit probleem zou je niet meer moeten tegenkomen.

Transparante ramen waardoor je de bomen kunt zien.

Vaak wanneer je gebruik maakt van Alpha maps voor treinramen, is alles OK totdat je naar de scenery wilt kijken vanaf de andere kant van het rijtuig. De bomen en hekken zijn dan opeens verdwenen. Dit komt door de sorteervolgorde van de alpha maps.
gMAX biedt hiervoor een prima oplossing. Wat je moet doen is het opsplitsen van de raambinnenkant en de raambuitenkant van het rijtuig (of van de loc) in hun eigen objecten. Deze twee objecten moeten dan worden gekoppeld aan het MAIN object op dezelfde manier waarop je een draaistel of een pantograaf zou koppelen. Het verschil is dat gMAX het toestaat om deze items weer op te nemen (collapse) in het MAIN object tijdens het exporteren naar het .s shape bestand.
Hiervoor zijn de volgende settings nodig:

inside:: collapse node, SubObject ID=2, 'Sort this subobject' and Sort Priority=15
outside:: collapse node, SubObject ID=1, 'Sort this subobject' and Sort Priority=5

Ik heb dit getest met het voorbeeldbestand dat meegeleverd werd bij gMAX (de Deltic55 - waardeloos model trouwens...) en dit had verschillende subobject-ID's voor de binnen- en de buitenkant van de ramen. Dit lukte goed in bepaalde opzichten maar soms juist niet; in bepaalde gevallen was de raambinnenkant zelfs totaal verdwenen. Door wat te spelen met de instellingen ontdekte ik dat de bovengenoemde oplossing goed werkt voor al mijn treinen en rijtuigen. Ik hoop dat het voor jou ook goed zal werken.



De bestanden wijzigen

Als je de .s shape bestanden gaat wijzigen voor de volgende acties, dan moet je Wordpad gebruiken. Notepad (Kladblok) begrijpt de unicode niet. Je kunt ook een andere tekstverwerker gebruiken zoals Textpad (www.textpad.com). Textpad kan ook omgaan met unicode-bestanden.

How maak ik een consist? / Hoe krijg ik XXX wagens achter de YYY loc? / Waar is de consist editor?

by trainplaza.nl

Het antwoord op deze vraag kan je hier vinden bij trainplaza.net. Dan naar MSTS (boven,links), dan MSTS (links) dan handleidingen->consist editor. Het spijt mij maar met trainplaza kan ik niet hot-linken

3 wielen on mijn draaistel. (bogie)

Ik denk dat dit een van de meest gestelde vragen in de forums is: Ik heb 3 wielen gebouwd aan mijn treinstel, en ik heb ze correcte namen gegeven, maar in MSTS draait de derde niet. Waarom niet?
Ik kan je het antwoord geven. Het gaat om de volgorde van bepaalde regels in het .s shape-bestand. Zelfs als je er zeker van bent dat je alles in 3DSMax goed heb gedaan, zal het derde wiel niet draaien. Er is een probleem met de conv3ds.exe utility van Kuju. Je moet op twee plaatsen het .s shape-bestand controleren:
(Vooraf moet ik zeggen dat als het 'pivot point' (draaipunt) van je wielen in 3DSMax niet goed is geplaatst, je tegen veel problemen zult aanlopen).

Open het .s shape-bestand met je tekstverwerker, en zoek de eerste plek waar de wielen worden genoemd. Zoek naar 'wheels13'. Het is in een blok tekst dat eruit ziet als dit:

	matrix BOGIE1 ( 1 0 0 0 1 0 0 0 1 -0.00100048 0.527461 4.44794 )
	matrix WHEELS11 ( 1 0 1.60131e-024 0 1 0 -1.60131e-024 0 1 -9.35444e-008 0.0638839 2.3928 )
	matrix WHEELS12 ( 1 0 1.60131e-024 0 1 0 -1.60131e-024 0 1 1.63326e-008 0.0638833 -0.120896 )
	matrix WHEELS13 ( 1 0 1.60131e-024 0 1 0 -1.60131e-024 0 1 1.19396e-007 0.0638832 -2.4787 )
	matrix BOGIE2 ( 1 0 0 0 1 0 0 0 1 -0.001 0.527461 -4.48235 )
	matrix WHEELS21 ( 1 0 0 0 1 0 0 0 1 -1.83138e-007 0.0638834 2.46397 )
	matrix WHEELS22 ( 1 0 0 0 1 0 0 0 1 -8.01895e-008 0.0638834 0.108795 )
	matrix WHEELS23 ( 1 0 0 0 1 0 0 0 1 2.98023e-008 0.0638832 -2.40753 )

Bekijk deze tekst nauwkeurig. De draaistellen en wielen moeten in de juiste volgorde staan, bijv. BOGIE1 eerst, dan WHEELS11, dan WHEELS12 enz. Als ze niet in deze volgorde staan, moet je de tekst aanpassen.

Ten tweede moet je uitzoeken waar je WHEELS13 zich bevind. Het is in een blok tekst dat eruit ziet als dit:

	animations ( 1
		animation ( 2 30
			anim_nodes ( 19
				anim_node MAIN (
					controllers ( 0
					)
				)
				anim_node BOGIE1 (
					controllers ( 0
					)
				)
				anim_node WHEELS11 (
					controllers ( 0
					)
				)
				anim_node WHEELS12 (
					controllers ( 0
					)
				)
				anim_node WHEELS13 (
					controllers ( 0
					)
				)
				anim_node BOGIE2 (
					controllers ( 0
					)
				)
				anim_node WHEELS21 (
					controllers ( 0
					)
				)
				anim_node WHEELS22 (
					controllers ( 0
					)
				)
				anim_node WHEELS23 (
					controllers ( 0
					)
				)
				anim_node PantographBottom1A (
					controllers ( 1
						tcb_rot ( 2
							slerp_rot ( 0 0 0 0 1 )
							slerp_rot ( 2 -0.104528 -1.99721e-016 -4.56908e-009 0.994522 )
						)
					)
				)
				anim_node PantographMiddle1A (
					controllers ( 1
						tcb_rot ( 2
enz. enz.

Let op! Vaak als je conv3ds gebruikt, zet het de draaistellen en wielen na al het andere in dat deel van het bestand. Dus, in mijn voorbeeld, zou het eerste onderdeel MAIN worden, het tweede zou PantorgraphBottom1A worden enz. Als je het derde wiel wil zien draaien (en misschien ook wel een vierde of vijfde), dan moet je de draaistellen en wielen direct na het MAIN anim_node gedeelte van de code zetten, zoals je hierboven ziet. Als je dat namelijk niet doet, krijg je van die irritante slepende wielen.

Weetje: Als je geprobeerd hebt het derde wiel met een animatie in 3dsmax te zetten, zul je heel rare dingen zien in MSTS. Als je de animatie verwijderd zal het wel lukken.

Stroomafnemers (Pantographs) als animatie.

In de technische documentatie van Kuju staat dat je aparte namen moet gebruiken voor de onderdelen van de stroomafnemers. Zoals PantoGraphTop1 enz. Maar als je dit doet en je probeert de trein te gebruiken in MSTS zie je helemaal geen animatie. Ik weet nu waarom: conv3ds.exe kort alle namen in het model af naar 10 posities. Dus als je een model met conv3ds gebruikt met de namen PantographTop1 en PantographBottom1, komen ze in het .s shape-bestand te staan als Pantograph en Pantograp0.

Er zijn twee typen stroomafnemers: 'Single-arm' en 'box-type'. Zij hebben een verschillende techniek. De 'single-arm' ziet er uit als in de documentatie van Kuju. De 'box-type' heb ik ontdekt na wat 'reverse-engineering' van de Series7000 van Microsoft.

Het opbouwen van 'single-arm' stroomafnemers 3DSMax:

  1. Je moet de delen voor de stroomafnemer in de 'neer' stand bouwen. Er zijn 2 delen. (Het kunnen er 3 worden als je het bovenste gedeelte ook wilt maken - je kunt hierover meer lezen in het gedeelte over 'box type'-stroomafnemers hieronder.) Zoals in onderstaand voorbeeld noem je ze: PANTOBOT1 en PANTOTOP1. Verbind ze via een zgn boom-structuur:
    MAIN-
    ....+--PANTOBOT1-
    ................+----PANTOTOP1
    Het bovenste deel is aan het onderste deel vast gemaakt, en het onderste deel is aan het 'MAIN'-gedeelte vast gemaakt. (NB: Dit is het tegenovergestelde van wat er in de documentatie van Kuju staat.)
  2. Controleer of de 'pivot points' voor de stroomafnemerobjecten correct zijn geplaatst. Vergelijk met wielen en draaistellen enz.
  3. Zet het aantal frames van de animatie in 3dstudio op 2.
  4. Klik op de 'Animate' button - deze wordt rood.
  5. Zet de animatie-slider naar frame 2 (dus niet frame 1)
  6. Draai nu elk deel van de stroomafnemer totdat alles in de 'op' stand staat.
  7. Klik weer de 'Animate' button - deze wordt weer grijs.
  8. Je hebt nu de 'neer' en 'op' positie van de stroomafnemer gebouwd.
  9. Sla je bestand op en exporteer deze naar het .3ds formaat.
  10. Gebruik conv3ds met het .3ds bestand om een .s shape-bestand te krijgen.
  11. Dit is het lastige gedeelte: Open dit shape-bestand in je tekstverwerker. Zoek alle voorkomens van PANTOBOT1 en vervang deze door PantographBottom1. Doe hetzelfde met PANTOTOP1, vervang deze door PantographTop1.††
  12. Sla je bestand op en sluit af.
  13. Gebruik nu het txt2uni programma zoals gebruikelijk.

††Als je de nieuwe (Feb 2002) versie van conv3ds gebruikt, dan doet hij deze vervang-operatie tijdens het conversie. Ik denk dat MS deze idee van mijn paginas heeft genomen :-)

Dit diagram toont hoe de delen er uit moeten zien in 3DSMax, hoe je ze moet noemen, en welke de namen zijn die je moet vervangen in het shape-bestand:

Het opbouwen van 'box-type' stroomafnemers 3DSMax:

  1. Je moet de delen voor de stroomafnemer in de 'neer' stand bouwen. Er zijn 5 delen. Zoals in onderstaand voorbeeld noem je ze: PANTOBOT1A, PANTOMID1A, PANTOTOP1A, PANTOBOT1B en PANTOMID1B.Verbind ze via een zgn. boom-structuur:
    MAIN-
    +--PANTOBOT1A-
    ............+----PANTOMID1A
    ..........................+------PANTOTOP1A
    +--PANTOBOT1B-
    ............+----PANTOMID1B
    Het bovenste deel (A) is aan het middelste deel (A) vastgemaakt enz. (Nb: Dit is het tegenovergestelde van wat er in de documentatie van Kuju staat.)
  2. Controleer of de 'pivot points' voor de stroomafnemer objecten correct zijn geplaatst. Vergelijk met wielen en draaistellen enz.
  3. Zet het aantal frames van de animatie in 3dstudio op 2.
  4. Klik op de 'Animate' button - deze wordt rood.
  5. Zet de animatie-slider naar frame 2 (dus niet frame 1)
  6. Draai nu elk deel van de stroomafnemer totdat alles in de 'op' (up) stand staat.
  7. Klik weer de 'Animate' button - deze wordt weer grijs.
  8. Je hebt nu de 'neer' en 'op' positie van de stroomafnemer gebouwd.
  9. Sla je bestand op en exporteer deze naar het .3ds formaat.
  10. Gebruik conv3ds met het .3ds bestand om een .s shape-bestand te krijgen.
  11. Dit is het lastige gedeelte: Open dit shape-bestand in je tekstverwerker. Vind allevoorkomens van PANTOBOT1 en vervang deze door PantographBottom1. Doe hetzelfde met PANTOTOP1, vervang deze door PantographTop1, vervolgens PANTOMID1A vervangen door PantographMiddle1A enz. ††
  12. Sla je bestand op en sluit af.
  13. Gebruik nu het txt2uni programma zoals gebruikelijk.

††Als je de nieuwe (Feb 2002) versie van conv3ds gebruikt, dan doet hij deze vervang-operatie tijdens het conversie. Ik denk dat MS deze idee van mijn paginas heeft genomen :-)

Dit diagram laat zien hoe de delen eruit moeten zien in 3DSMax, hoe je ze moet noemen en welke de namen zijn die je moet vervangen in het shape-bestand:

Samenvatting.
Verbind de delen van de stroomafnemer zoals in onderstaand diagram. Controleer of de 'pivot points' correct zijn. NB. bij de 'box-type' stroomafnemers zitten de delen 'A' en 'B' niet aan elkaar vast.

Hoe de stroomafnemers werken.
Alle delen van de stroomafnemer-1, als er geen tweede is, zullen altijd op en neer gaan bij alle dezelfde modellen in een trein-set.
Als je twee stroomafnemers heb, gaat stroomafnemer-1 op en neer als de loc achteraan het treinstel zit. De stroomafnemer-2 zal op en neer gaan als de loc zich vooraan bevindt.

Ruitenwissers (wipers) als animatie.

In de technische documentatie van Kuju staat dat je aparte namen moet gebruiken voor de delen van de ruitenwissers. Zoals WiperArmLeft1 enz. Maar als je dit doet en je probeert je trein te gebruiken in MSTS zie je helemaal geen animatie. Ik weet nu hoe dit komt:
conv3ds.exe kort alle namen in het model af naar 10 posities. Dus als je een model met conv3ds gebruikt, met daarin de namen WiperArmLeft1 en WiperBladeLeft1, komen ze in het .s shape-bestand als WiperArmLe en WiperBlade te staan.

Het bouwen van ruitenwissers in 3DSMax:

  1. Je moet de delen van de ruitenwissers in de 'uit' stand bouwen. Er zijn 2 delen. Noem ze: WIPER_L en BLADE_L voor de linkerkant, en WIPER_R en BLADE_R voor de rechterkant. Verbind ze op de volgende manier:
    MAIN-
    ....+--WIPER_L-
    ................+----BLADE_L
  2. Controleer of de 'pivot points' voor de ruitewisser-objecten correct zijn geplaatst. Vergelijk met wielen en draaistellen enz.
  3. Zet het aantal frames van de animatie in 3dstudio op 2.
  4. Klik op de 'Animate' button - deze wordt rood.
  5. Zet de animatie-slider naar frame 1 (dus niet frame 2)
  6. Draai nu elk deel van de ruitenwissers totdat ze naar de andere kant staan gedraaid.
  7. Zet de animatie-slider naar frame 2
  8. Keer nu elk deel van de ruitenwissers totdat ze weer in de originele stand staan.
  9. Klik weer de 'Animate' button - deze wordt weer grijs.
  10. Je hebt nu beide posities van de ruitenwissers gemaakt.
  11. Sla je bestand op en exporteer deze naar het .3ds formaat.
  12. Gebruik conv3ds met het .3ds bestand om een .s shape-bestand te krijgen.
  13. Dit is het lastige gedeelte: Open dit shape-bestand in je tekstverwerker. Vind alle voorkomens van WIPER_L en vervang deze door WiperArmLeft1. Doe hetzelfde met BLADE_L, vervang deze door WiperBladeLeft1.
  14. Sla je bestand op en sluit af.
  15. Gebruik nu het txt2uni programma zoals gebruikelijk.

Vage Textures

Ik heb een oplossing gevonden voor de 'vage' (mistige) textures - dat wil zeggen, een echte oplossing, niet het gebruik van de 'Point' hack.
Ik bekeek op een avond mijn modellen nadat ik de texture named_filter_mode in het shape-bestand had veranderd. Ik had deze op "Point" gezet in plaats van "MipLinear" en, eerlijk gezegd, zagen mijn textures er niet echt goed uit in MSTS. Inderdaad was die rare mist weg, maar toen ik wat nauwkeuriger keek naar mijn modellen, was er een nog erger gevolg. Van heel dichtbij kon ik alle individuele pixels in mijn texture zien! Er was geen 'smoothing' (soepele overgang) meer van mijn modellen. Niet zo mooi, vond ik. Dus heb ik een beetje 'reverse- engineering' gedaan van het ACELA model - ik had hem weer in een shape bestand veranderd en bekeek hem met mijn tekstverwerker:

  1. Je moet de named_filter_mode op "MipLinear" laten - je moet dit niet veranderen. Dit is hetzelfde als bij alle Kuju/MS modellen.
  2. Zoek naar regels met een texture definitie, die er zo uitzien:
    texture ( 0 0 0 ff000000 )
    Er is een regel voor elke texture die je gebruikt hebt.
  3. Verander het derde cijfer in elke regel, standaard 0, in -3. Het moet nu zo uitzien:
    texture ( 0 0 -3 ff000000 )

Dit negatieve nummer is een zogenaamde "MIP multiplier", en het wordt gebruikt om de texture te vervagen gerelateerd aan de oogafstand:

Het voordeel van werken op deze manier is dat de textures nu heel erg scherp blijven, ook op grotere oogafstand, maar ze hebben nog steeds de 'smoothing' als je ze van heel dichtbij bekijkt.

I.p.v. een negatief getal kun je ook een positief getal gebruiken, maar als je dat doet komen de MIP levels in de texture heel erg naar je toe. Nog iets: je kan ook de named_filter_mode veranderen in LinearMipLinear. Als je een goeie grafische kaart hebt in je PC krijg je dan 'bilinear' of zelfs 'trilinear' smoothing.

Maar je moet wel in de gaten houden dat wat op jouw PC goed werkt misschien op een andere PC niet zo goed werkt. Ik heb nog steeds een aftandse Viper770/TNT2 en deze techniek werkt echt mooi op deze grafische kaart. Als het er zo goed uitziet op dit ding, dan zal een nieuwere en betere grafische kaart vast nog meer recht doen aan mijn modellen :)

Mijn textures worden helemaal wit in de verte!

Met dank aan Steven Weller voor zijn beelden als voorbeeld.
Een grote hoeveelheid modelbouwers bouwen hun locs en wagons met een gewone 512x512 texture. Die enkele texture bevat de afbeeldingen van de beide zijkanten, de voorkant, de achterkant enz. Als ze het model dan voor het eerst in MSTS zien, wordt de trein in de verte steeds witter, en ze begrijpen niet waarom. Ik zal beschrijven wat er gebeurt, waarom dit gebeurt, en hoe je dit kunt voorkomen.

Hierboven een voorbeeld. Als je dichtbij bent, ziet het er goed uit. Maar verder weg zie je dat alle textures witte randen krijgen. De reden waarom dit gebeurt is een combinatie van de manier waarop de texture gemaakt is en van de wijze waarop de 'render-engine' van MSTS hiermee omgaat. Dit is een voorbeeld van een texture:

(Je moet je voorstellen dat dit een 512x512 texture is). Deze texture bevat een deel van de zijkant van de loc, en ook een deel met daarin een raam. Al het overige in deze texture is wit. Het zwarte vierkantje geeft aan waar ik het over ga hebben.
Stel je voor dat je een beeldscherm hebt dat alleen 512x512 pixels kent. Als je een 512x512 texture erop zou plaatsen zou elke pixel van de texture een pixel van het beeldscherm vullen. Als deze verder weg gaat, wordt de texture kleiner dan het beeldscherm. Maar het beeldscherm heeft nog steeds 512x512 pixels. Hoe weet hij dan welke kleur elk pixel moet hebben als de texture kleiner is dan het beeldscherm?
Dit is het zogenaamde "MIP mapping" - Multiple Image Pyramid mapping. Als de texture kleiner en kleiner wordt op het beeldscherm moet de 'render-engine' weten welke kleur elk pixel moet zijn. Om dit te weten te komen, bouwt de 'render-engine' een MIP piramide, dan weet het precies welke deel van deze piramide gebruikt moet worden voor elk pixel op het beeldscherm. Kijk naar dit voorbeeld:

Dit zijn de bovenste drie lagen van een MIP-piramide. Meestal bouwt de 'render-engine' een MIP-piramide zo klein als 4x4 pixels of soms zelfs 2x2 pixels. Je kan hierboven zien dat voor elke laag die kleiner is dan de laag er bovenop, de 'render-engine' kijkt naar een blok van 2x2 (dus 4) pixels om te zien wat voor kleur de nieuwe pixel moet hebben. In dit voorbeeld zie je dat de mooie overgang tussen wit en geel meteen verdwenen is want de middelste kleur is nu gebruikt voor de MIP piramide. Dus, hoe verder weg deze texture gaat, des te minder geel zal er te zien zijn en des te meer wit. In dit voorbeeld heet de 2x2 sampling 'BiLinear' - in het shape-bestand genoemd als 'MipLinear'. Soms kan een 'render-engine' 'TriLinear' MIP levels gebruiken - 3x3 in plaats van 2x2. In MSTS wordt dat 'LinearMipLinear' genoemd.
Dus hoe kun je nu jouw textures maken zodat ze niet wit worden? Simpel - de achtergrond opvullen met dezelfde kleur of met een kleur die er op lijkt:

Originele texture Nieuwe texture

Als de 'render-engine' nu een MIP-piramide opbouwt, blijven de kleuren van jouw texture bewaard verder naar beneden in de MIP-piramide. Vaak is het het beste om de overige tussenliggende delen met een niet te donker grijs op te vullen. Dit is dan het resultaat:

Compressie/de-compressie

Als je de ffeditc_unicode utility gebruikt, kun je je shape-bestanden comprimeren naar een binair bestand.
In onderstaande voorbeelden is 'yourshape_in.s' het shape-bestand dat je krijgt wanneer je de txt2uni utility gebruikt, en is 'yourshape_out.s' de gecomprimeerde binaire versie daarvan.
Om te de-comprimeren:
ffeditc_unicode.exe yourshape_out.s /u /o:yourshape_in.s
Om te comprimeren:
ffeditc_unicode.exe yourshape_in.s /o:yourshape_out.s

Nb: De ffeditc_unicode.exe utility vindt je in de trainsimulator/utils/ffedit folder.

Hoe je de SOUND- en CABVIEW folders van andere locs kan gebruiken

(zonder dat je deze hoeft te kopiëren)

by nelsflightsim.com

Als je elke keer wanneer je een nieuwe loc bouwt, de CABVIEW en SOUND folders van een andere loc moet kopiëren, dan is dat erg vermoeiend. Hieronder staat een manier hoe je dit kunt omzeilen:

MSTS kan de geluiden en cabines van een andere loc of wagen gebruiken voor jouw modellen. In het .eng bestand worden de geluiden op twee plaatsen aangeroepen, een voor binnen-geluiden en een voor buiten-geluiden. Zoek naar de code die er zo uitziet:
Sound ( acelaeng.sms )
Sound ( acelacab.sms )
Om de geluiden te gebruiken van de ACELA (bijvoorbeeld) moet je dit veranderen in:
Sound ( "..\\..\\ACELA\\SOUND\\acelaeng.sms" )
Sound ( "..\\..\\ACELA\\SOUND\\acelacab.sms" )

De CABVIEW is een beetje lastiger. Je moet je eigen CABVIEW-folder hebben, maar je hebt maar 1 bestand nodig, het .cvf bestand - dit is de definitie van de cabine. Je kunt één van deze .cvf bestanden kopieren uit de folder van de loc die je wilt gebruiken, en dan dit bestand in je tekstverwerker opvragen. In dit bestand moet je wel veel aanpassen. Elke besturing en meter heeft een bijbehorend .ace bestand, en al deze verwijzingen moeten aangepast worden. Bijvoorbeeld:
Verander:
CabViewFile ( AcelaFrnt.ace )
Naar:
CabViewFile ( "..\\..\\ACELA\\CABVIEW\\AcelaFrnt.ace" )

Soms heeft een cabine meer dan 20 verwijzingen, en elke verwijzing moet worden aangepast.

Experimenteer met nieuwe features!

Zoek de snelkoppeling naar MSTS en bewerk deze met 1 van onderstaande opties om zo wat nieuwe effecten te zien. Het hangt er wel vanaf of je grafische kaart deze ondersteunt of niet:
bijv. "c:\program files\microsoft games\train simulator\train.exe"
wordt
"c:\program files\microsoft games\train simulator\train.exe" /anisotropic
Opties:

De volgende opties kunnen gebruikt worden om de genoemde problemen op te lossen wanneer die optreden:

Maak je route kleiner voor verspreiding!

Zoals je wellicht weet, komen er veel route's uit die erg groot zijn. Er is nu een manier om de bestandsgrootte en het aantal bestanden dat je nodig hebt te verminderen:
(Ik raad je aan om voordat je dit uitprobeert een backup te maken, 'voor het geval dat...'!)

  1. Zoek backup-files en verwijder ze (zoek naar files met extensie .bk).
  2. In de map 'Tiles' van de route vind je files die eindigen op _n.raw en _e.raw. Dit zijn de terrein-standaards (voor verlichting) en geometrische foutwaarden (voor dynamische terreingeometrie). Selecteer deze bestanden en verwijder ze. LET OP DAT JE GEEN ANDERE BESTANDEN MEE SELECTEERT (zoals _F.RAW bestanden). Als een route wordt geladen, kijkt MSTS naar de _n.raw en _e.raw bestanden. Als die er niet zijn worden ze aangemaakt.

Door deze eenvoudige truc hoef je die bestanden niet met je route mee te sturen!