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.
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.
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.
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.
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 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. |
| 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. |
![]() |
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.
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
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.
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:
††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:
††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.
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:
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:
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 :)
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:
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.
flightsim.comAls 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.
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:
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...'!)
Door deze eenvoudige truc hoef je die bestanden niet met je route mee te sturen!