|   | 
| Om det här är ditt första besök, se till att gå till vår FAQ (finns även länk till FAQ i navigeringsmenyn ovan). Du kan behöva att registrera dig innan du kan posta (finns även en länk till registrering i navigeringsmenyn ovan). För att titta på inlägg, välj det forum som du vill besöka från de som är listade nedan. | 
| 
 | |||||||
| Registrera | Members Area | FAQ | Medlemslista | Community-ware/Modell-shop | Sök | Dagens inlägg | Markera forum som lästa | 
|  | 
|  | Ämnesverktyg | Visningsalternativ | 
|  | 
|  2018-12-11, 00:27 | #1 | 
| Medlem Reg.datum: Sep 2009 Ort: Stockholm, Norrort 
					Inlägg: 265
				 |  Texture-replacement funkar inte. 
			
			Hej! Jag har problem med Texture-replacement. Jag har skrivit rätt config och gjort en texturegroup. Men den finns inte på vagnen. När man klickar på vagnen och ska bytta texture, så saknas den rutan "Texture-replacement" Jag vet inte vad som är fel. Kod: mesh-table
{
  default
  {
    mesh                                "c22_x2000_ub2x_body/c22_x2000_ub2x_body.im"
    auto-create                         1
    
    effects
    {
      textures
      {
        kind                            "texture-replacement"
        texture                         "main_steering.texture"
      }
    }
  }
}
				__________________ Mvh RobertE. | 
|   |   | 
|  2018-12-11, 04:05 | #2 | 
| Medlem Reg.datum: Jul 2011 Ort: Vingåker 
					Inlägg: 355
				 |   
			
			Hej Robert! Ett enkelt svar är att det inte räcker att endast definiera texture-replacement i configen, utan det krävs en del scriptande också, men det kanske du redan vet? Om du inte vet det så visar jag ett par exempel nedan. Koden nedan är en del av configen för en vägkur som har två stycken manöverlådor. De använder samma modell men med olika texturer. Kod:     effects
    {
      fk
      {
        kind                            "texture-replacement"
        texture                         "varning.texture"
      }
    }Screen vsk.jpg Här kan man se "fk.tga" och "fk.texture.txt". Texture filen är den som ska användas vid byte av texturer, ett vanligt misstag som görs är att man använder bildfilen istället för texture filen. Om man bara behöver, som i det här fallet, byta ut en textur som inte finns i en texture-group, används denna funktion: SetFXTextureReplacementTexture(string effect, string texture); Kod:     public void Init(Asset ass)
    {
        inherited(ass);
        
        SetFXTextureReplacementTexture("fk", "fk.texture");
    }Om man däremot behöver skapa valmöjligheter och/eller vill använda sig av textur-grupper så blir det genaste lite mer komplicerat och framförallt en massa mer kodande! Men jag tänkte ge ett ganska kort(!) exempel med lite config- och kod-utdrag. I HB T Systemgränstavlor kan man välja på lite olika typer av tavlor, bl.a. dessa tre: System H.jpgSystem M.jpgSystem S.jpg För att åstadkomma detta är texturerna inlagda i en textur-grupp som det finns en referens till i configens kuid-tabell. Den referensen används till att hämta textur-gruppens texturer. För att byta ut texturen används en annan version av samma funktion som tidigare: SetFXTextureReplacement(string effect, Asset texture_asset, int texture_index); Lite utdrag från Systemtavlans configfil: Kod: mesh-table
{
  default_effectsmesh
  {
    mesh-asset                          <kuid2:609407:100125:1>
    mesh                                "645x645 romb texture.trainzmesh"
    auto-create                         0
    
    effects
    {
      texture_645r
      {
        kind                            "texture-replacement"
        texture                         "baseyellow.texture"
      }
    }
  }
// Flera mesher finns i mesh-tabellen
}
kuid-table
{
  hb_signalscriptlibrary                <kuid2:609407:100055:1>
  meshlibrary                           <kuid:609407:100125>
  infotavla645syst                      <kuid:609407:100089>
  infotavla510                          <kuid:609407:100086>
}Kod: // Först lite defineringar av variabler.
    Asset       mTextureAsset;                                          // Textutgruppens asset
    string[]    mTextureList                = new string[0];            // Systemgränstavlans texturval hämtade från configen
    int         mTextureIndex               = 0;                        // Vald tavla
    string[]    mChoices                    = new string[0];            // Systemtavlans val hämtade från configenKod: // Detta är en del av den kod som hämtar textur-gruppen och skapar dess listor
            
            Soup kuidSoup = ass.GetConfigSoup().GetNamedSoup("kuid-table");
            string[] kuidString = new string[0];
            for (i = 0; i < kuidSoup.CountTags(); i++)
            {
                kuidString[kuidString.size()] = kuidSoup.GetIndexedTagName(i);
            }
            
            // Hämtar systemtavlans texturer
            if (kuidString and TrainUtil.AlreadyThereStr(kuidString, "infotavla645syst"))
                mTextureAsset = ass.FindAsset("infotavla645syst");
            else
                mTextureAsset = null;
            
            if (mTextureAsset )
            {
                Soup speedSoup = mTextureAsset.GetConfigSoup().GetNamedSoup("textures");
                
                for (i = 0; i < speedSoup.CountTags(); i++)
                {
                    mTextureList[mTextureList.size()] = Str.Tokens(speedSoup.GetNamedTag(i),".")[0];
                }
                
                for (i = 0; i < mTextureList.size(); i++)
                {
                    fattarnoll = mStrings.GetString("infotavla645syst_" + i);
                    
                    if (fattarnoll != "")
                        mTextureList[i] = fattarnoll;
                }
            }Kod: // För att byta texturen används denna kod som är en del i en egen funktion
som används till att uppdatera tavlans utseende, tilläggstavlor, fästen osv.
            
   if (mTextureAsset)
   {
       SetFXTextureReplacement("texture_645r", mTextureAsset, mTextureIndex);
   }Kod: HTMLWindow.MakeLink("live://property/chooseboard", mChoices[mTextureIndex])mChoices[mTextureIndex] talar om vilket val som är gjort, när koden i propertyrutan genereras. mChoices är de facto samma som mTextureList men med tydligare text för användaren. Hoppas detta kan vara till hjälp, det blir lätt mycket kod när man börjar pilla och ännu mera om man vill "göra det snyggt" också... mvh Håkan 
				__________________ Fd. signalreparatör på Banverket. Sjukpensionär bla pga Aspergers syndrom. Använder numera T:ANE på en iMac (Retina, 27", -15), 24GB, OSX Sierra 10.12.6 (25/9-17) Hemsida för nedladdning av mina objekt: https://blomsson4073.se/index.html | 
|   |   | 
|  2018-12-11, 08:33 | #3 | 
| Hjälpsamfotograf & Hedersmedlem Reg.datum: Aug 2001 Ort: Huddinge, Sweden. 
					Inlägg: 6 377
				 |   
			
			Hade också problem med texturegrupp på X2000 Motorvagn/Manövervagn på Vovvens Start och Stopp. Fungerade på dom föregående. Fick samma problem, med en utav vagnarna till Y6-familjen. Som Vovven fick titta närmare på. Det hade blivit ett fel i scriptet, som han fixade till. Misstänker att det är samma problem med X2000 Motorvagn/Manövervagn. 
				__________________ Bengan | 
|   |   | 
|  2018-12-12, 03:22 | #4 | 
| Medlem Reg.datum: Jun 2010 Ort: Yxlan, Norrtälje 
					Inlägg: 1 350
				 |   
			
			Jag har missat att inkludera STL:s Texture behandling i mitt script. Gäller både X2000 motor- och manövervagn. Korrigering kommer senare i denna vecka. | 
|   |   | 
|  | 
| Ämnesverktyg | |
| Visningsalternativ | |
| 
 | 
 |