Svenska 3D-Tåg - Forum  
 

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.

Gå tillbaka   Svenska 3D-Tåg - Forum > DTG - Train Simulator > 3D-design - DTG - Train Simulator

Svara
 
Ämnesverktyg Visningsalternativ
Gammal 2014-06-28, 19:10   #1
Hamp3
Medlem
 
Reg.datum: Feb 2013
Ort: Skåne
Inlägg: 134
Standard

Citat:
Ursprungligen postat av Kungsfisk Visa inlägg
Gav TrainGlassWeatherEffect ett försök, råkade få den att bugga ur sig men å andra sidan kanske det nu finns ett material man kan använda för spegling?
Haha, smart!
Kom nyss att tänka på att eftersom det är ganska svårt(omöjligt?) att se backspeglarna inifrån hytten så kanske man kunde fästa "head-out camera"-vyn så den tittar in i backspegeln. Men det är bara en tanke - det kan finnas bättre lösningar.
__________________
//Hamp3

SJ InterCity (X31K)
Hamp3 besöker inte forumet just nu  
Svara med citat
Gammal 2014-06-28, 20:24   #2
Kungsfisk
Medlem
 
Reg.datum: May 2013
Ort: Skåne
Inlägg: 396
Standard

Den där interiören är INTE den som kommer laddas när man sitter och dricker kaffe i Bistron, bara så att ni är med på det. Det är grunden till den interiör man kommer se exteriört

Två frågor:
1: Call(“*:ActivateNode”, “<Node Name>”, "<RN>")

Gör denna funktion en del av geometrin synlig/osynlig?

2: Jag får inte animationerna att hända alls...och jag förstår inte varför. Tycker detta borde vara ett idiotsäkert skript?!

Default value funkar bra, om den är satt till 1 är lamporna påslagna, vice versa med ett default value av 0.
03.jpg

Provade även lite andra idéer men som inte riktigt heller gick vägen.
Denna är överexplicit där jag försökte göra en "push button" som alltid ger reella hela tal och därav skapa en cykel för de olika lamp-lägena.

PHP-kod:
function Initialise()
startup=0
HLA
=1
HLB
=0
HLC
=0
HLD
=0
LV
=1
end

function Setup() 
    
Call("*:SetControlValue""HeadlightsB",0,1);  -- Ger inget resultat
    Call
("*:SetControlValue""HeadlightsC",0,1);  -- Ger inget resultat
    Call
("*:BeginUpdate");
end


function OnControlValueChange nameindexvalue)

    if 
Call"*:ControlExists"nameindex then
        
if (name=="LiveInjectorWater"then  -- "L"
            
LV=LV+1
            
if LV==5 then
            LV
=0
            end
            
if LV==0 then
                HLA
=1
                HLB
=0
                HLC
=0
                HLD
=0
            
elseif LV==1 then
                HLA
=0
                HLB
=0
                HLC
=0
                HLD
=0
            
elseif LV==2 then
                HLA
=0
                HLB
=0
                HLC
=1
                HLD
=0
            
elseif LV==3 then
                HLA
=0
                HLB
=1
                HLC
=1
                HLD
=0
            
elseif LV==4 then
                HLA
=0
                HLB
=1
                HLC
=1
                HLD
=1
            end
        end
    end
    Call
"*:SetControlValue"nameindexvalue);
end

function Update(interval)

    if 
HLA==0 then
        Call
("*:SetControlValue""HeadlightsA",0,0);
    else
        
Call("*:SetControlValue""HeadlightsA",0,1);
    
end
    
    
if HLB==0 then
        Call
("*:SetControlValue""HeadlightsB",0,0);
    else
        
Call("*:SetControlValue""HeadlightsB",0,1);
    
end
    
    
if HLC==0 then
        Call
("*:SetControlValue""HeadlightsC",0,0);
    else
        
Call("*:SetControlValue""HeadlightsC",0,1);
    
end
    
    
if HLD==0 then
        Call
("*:SetControlValue""HeadlightsD",0,0);
    else
        
Call("*:SetControlValue""HeadlightsD",0,1);
    
end
    
end 
__________________
X2000 LATEST BEST 5TH JUNE
Kungsfisk besöker inte forumet just nu   Svara med citat
Gammal 2014-06-29, 12:56   #3
Kungsfisk
Medlem
 
Reg.datum: May 2013
Ort: Skåne
Inlägg: 396
Standard

Sagt det förr och säger det igen, är ingen höjdare på stolar. Håller på att piffa upp kupén och här är en lite bättre stol.

Ny till vänster, gammal till höger. ~2000polys/paret men kommer kunna trimma bort en hel del.
04.jpg
__________________
X2000 LATEST BEST 5TH JUNE
Kungsfisk besöker inte forumet just nu   Svara med citat
Gammal 2014-06-29, 13:00   #4
Mawkish
Medlem
 
Reg.datum: Jul 2010
Ort: Uppsala
Inlägg: 562
Standard

Citat:
Två frågor:
1: Call(“*:ActivateNode”, “<Node Name>”, "<RN>")

Gör denna funktion en del av geometrin synlig/osynlig?

2: Jag får inte animationerna att hända alls...och jag förstår inte varför. Tycker detta borde vara ett idiotsäkert skript?!
1. Jepp den visar/gömmer geometri t.ex. om du har 1_0128_hlA geometrin i din max fil så kommer Call("*:ActivateNode","hlA",0) göra den osynlig.

2. Vad är det för animationer du har för ljuset i strålkastarna? Normalt brukar dessa bara vara oanimerade objekt i 3dsmax med materialet TrainEmissiveGlow(passar bäst för helljus) och/eller addTex(halvljus) som du gömmer/visar beroende på läget av ljusreglaget.

Utan att ha koll på x2:ans alla strålkastarlägen så gör jag ett skriptexempel(ej komplett och troligtvis med en hel del fel eftersom jag inte har möjlighet att testa med trial/errror metoden) som kanske kan ge några ideer.

Halvljus nedre med objekt 1_128_HLHalvNedre
Helljus nedre med objekt 1_128_HLHelNedre
Halvljus övre med objekt 1_128_HLHalvOvre
Helljus övre med objekt 1_128_HLHelOvre
Slutljus med objekt 1_128_Slutljus

Eftersom slutljuset ska slås på i en helt annan vagn så kommer man att behöva skicka ett meddelande från lok->manövervagn och vice versa när dessa ska vara av/på.

Kod:
--GLOBALS
animationTimer=0
animationONTime=0.9 --hur länge lampan lyser i animationcykeln(kan ej exakta värden)
animationOFFTime=1.1 --hur länge lampan är släckt i animationcykeln
animationON=false
slutljus_msg_id=1000
slutljusON=false
gInit=false
--END GLOBALS

function Initialise ()
  Call("BeginUpdate")
end

--Vissa saker går ej att göra i bas Initialse funktionen då tex child-objekt i blueprinten ofta inte är registrerade vid den tidpunkten när skriptet körs.
--Denna funktion körs första gången skriptet kör Update() och då kan man vara säker på att alla objekt/kontroller kan sättas som man vill
function safeInitialise()
  LightsOFF()
end

function LightsOFF()
  Call("*:ActivateNode","HLHalvNedre",0)
  Call("*:ActivateNode","HLHelNedre",0)
  Call("*:ActivateNode","HLHalvOvre",0)
  Call("*:ActivateNode","HLHelOvre",0)
  
  Call("*:ActivateNode","Slutljus",0)
  Call("*:SendConsistMessage",slutljus_msg_id,0,1) --skicka meddelande om slutljus av till manövervagnen
end

function LightsON(hlcontrolpos)
  LightsOFF() --Resetta alla lampor innan den nya konfigurationen slås på
  if hlcontrolpos==1 then
    --halvljus ovre/undre
    Call("*:ActivateNode","HLHalvNedre",1)
    Call("*:ActivateNode","HLHalvOvre",1)
    Call("*:SendConsistMessage",slutljus_msg_id,1,1)
  elseif hlcontrolpos==2 then
    --halvljus övre, helljus nedre
    Call("*:ActivateNode","HLHelNedre",1)
    Call("*:ActivateNode","HLHalvOvre",1)
    Call("*:SendConsistMessage",slutljus_msg_id,1,1)
  elseif hlControlpos==3 then
    --helljus övre, helljus nedre
    Call("*:ActivateNode","HLHelNedre",1)
    Call("*:ActivateNode","HLHelOvre",1)
    Call("*:SendConsistMessage",slutljus_msg_id,1,1)
  --elseif.....för eventuella andra lägen
  end
end

function SlutljusAnimate(dtime)
  if not slutljusON then
    if animationON then
      Call("*:ActivateNode","Slutljus",0)
      animationON=false
      animationTime=0
    end
    return
  end
  animationTimer=animationTimer+dtime
  if not animationON and animationTimer>animationOFFTime then
    Call("*:ActivateNode","Slutljus",1)
    animationON=true
    animationTime=0
  elseif animationON and animationTime>animationONTime then
    Call("*:ActivateNode","Slutljus",0)
    animationON=false
    animationTime=0
  end
end

function OnControlValueChange ( name, index, value)
  if Call( "*:ControlExists", name, index ) then
    if name=="LiveInjectorWater" then
      LightsON(value)
    end
  end
  Call( "*:SetControlValue", name, index, value)
end

function OnConsistMessage(msg,argument,direction)
  --Ta emot meddelande om slutljus i loket skickat från manövervagnen
  --Denna funktion måste även speglas i skriptet för manövervagnen så att slutljuset i tänds när man styr från loket
  if msg==slutljus_msg_id then
    if argument==0 then
      --slutljus av
      slutljusON=false
    else
      --slutljus på
      slutljusON=true
    end
  end
  Call("SendConsistMessage",msg,argument,direction ) --Skicka alla meddelanden vidare
end

function Update(dTime)
  if gInit==false then
    gInit=true
    safeInitialise()
  end
  SlutljusAnimate(dTime)
end
För manövervagnen så krävs väl något liknande skript som ovan med vissa ändringar för att få det hela att fungera med slutljusen.

För att meddelanden ska kunna skickas genom tåget så måste även alla vagnar ett skript. Så i varje vagn behövs minst...

Kod:
function OnConsistMessage(msg,argument,direction)
  Call("SendConsistMessage",msg,argument,direction ) --Skicka alla meddelanden vidare
end
Som sagt, ta detta skript med två nävar salt och använd endast som någon slags inspiration när du gör ditt eget.

P.S. X2:an ser helt grymt ut! Fantastiskt snyggt jobbat! D.S.
__________________
Försöker bygga Älvsjö godsbangård men svär mest över UVW mappning.

Senast redigerad av Mawkish den 2014-06-29 klockan 13:01.
Mawkish besöker inte forumet just nu   Svara med citat
Gammal 2014-06-29, 13:04   #5
Kungsfisk
Medlem
 
Reg.datum: May 2013
Ort: Skåne
Inlägg: 396
Standard

Det gör saken betydligt smidigare! Jag hade två "plattor" som skulle växla plats beroende på läge. Skall testa detta i eftermiddag.
__________________
X2000 LATEST BEST 5TH JUNE
Kungsfisk besöker inte forumet just nu   Svara med citat
Gammal 2014-06-30, 11:38   #6
Kungsfisk
Medlem
 
Reg.datum: May 2013
Ort: Skåne
Inlägg: 396
Standard

Okej, såhär ser det ut nu. Det funkar betydligt bättre! Och trainemessive är verkligen natt och dag för lamporna. Tack för tipset Mawkish

1. Jag kör LogMate, men får inte ut något debugmeddelande från skriptet. Vart går print eller hur får jag meddelandena att dyka upp i LogMate? Försökte göra som i class390.

2.hlcontrolpos == 0 och hlcontrolpos == 1 funkar, hlcontrolpos == 2 eller högre ändrar inget. Lamporna stannar i konfigurationen som ges av lightsOFF().
Jag hade innan 6st konfigurationen men har bantat ner det till 3 för att debugga.

Kontrolvärdet har:
name: Headlights
default value: 0
min value: 0
max value: 2

..och en internal notched lever med 3 notches.

3. Funkar Activate Node på child objekt också, dvs kan jag använda det för att slå av/på ljuset?

Fortsätter testa mig framåt

PHP-kod:
gInit=false
DEBUG 
true

function DebugPrint(msg)
    if 
DEBUG then
        
Print(msg)
    
end
end

function Initialise ()
  
Call("BeginUpdate")
end

function safeInitialise()
  
LightsOFF()
end

function LightsOFF()
  --
Geometri f&#246;r tända lampor
  
Call("*:ActivateNode","hlaon",0) --Geometri nedre:yttre:p&#229;slagen
  
Call("*:ActivateNode","hlbon",0) --Geometri nedre:inre:p&#229;slagen
  
Call("*:ActivateNode","hlcon",0) --Geometri &#246;vre:inre:påslagen
  
Call("*:ActivateNode","hldon",0) --Geometri slutljus:p&#229;slagen
   
--Geometri f&#246;r släkta lampor
  
Call("*:ActivateNode","hlaoff",1) --Geometri nedre:yttre:fr&#229;nslagen
  
Call("*:ActivateNode","hlboff",1) --Geometri nedre:inre:fr&#229;nslagen
  
Call("*:ActivateNode","hlcoff",1) --Geometri &#246;vre:inre:frånslagen
  
Call("*:ActivateNode","hldoff",1) --Geometri slutljus:fr&#229;nslagen
end

function LightsON(hlcontrolpos)
        
LightsOFF()
        Print(
"DEBUG: LightsOn - start")
    if 
hlcontrolpos==0    then
        
Print("DEBUG: hlccontrolpos == 0")
        
Call("*:ActivateNode","hlaon",0)
        
Call("*:ActivateNode","hlbon",0)
        
Call("*:ActivateNode","hlcon",0)
        
Call("*:ActivateNode","hldon",1)
        
        
Call("*:ActivateNode","hlaoff",1)
        
Call("*:ActivateNode","hlboff",1)
        
Call("*:ActivateNode","hlcoff",1)
        
Call("*:ActivateNode","hldoff",0)
    
    elseif 
hlcontrolpos==1    then
        
Print("DEBUG: hlccontrolpos == 1")
        
Call("*:ActivateNode","hlaon",1)
        
Call("*:ActivateNode","hlbon",1)
        
Call("*:ActivateNode","hlcon",0)
        
Call("*:ActivateNode","hldon",0)
        
        
Call("*:ActivateNode","hlaoff",0)
        
Call("*:ActivateNode","hlboff",0)
        
Call("*:ActivateNode","hlcoff",1)
        
Call("*:ActivateNode","hldoff",1)
        
    elseif 
hlControlpos==2    then
        
Print("DEBUG: hlccontrolpos == 2")
        
Call("*:ActivateNode","hlaon",1)
        
Call("*:ActivateNode","hlbon",1)
        
Call("*:ActivateNode","hlcon",1)
        
Call("*:ActivateNode","hldon",0)
        
        
Call("*:ActivateNode","hlaoff",0)
        
Call("*:ActivateNode","hlboff",0)
        
Call("*:ActivateNode","hlcoff",0)
        
Call("*:ActivateNode","hldoff",1)
    
end
    
Print("DEBUG: LightsOn - end")
end

function OnControlValueChange nameindexvalue)
        Print ((
"DEBUG: OnControlValueChange - name = " .. name .. ", index = " .. index .. ",value = " .. value))
        if 
Call"*:ControlExists"nameindex then
            
if name=="Headlights" then
                
Print (("DEBUG: OnControlValueChange - Headlights, value = " .. value))
                
LightsON(value)
            
end
        end
     
    Call
"*:SetControlValue"nameindexvalue)
end

function Update(dTime)
  if 
gInit==false then
    gInit
=true
    safeInitialise
()
  
end
end 
hlcontrolpos 1 och 0. Ingen verklighetsåterkoppling, bara för test. Inte ställt in glow-effekten.
05.jpg
__________________
X2000 LATEST BEST 5TH JUNE

Senast redigerad av Kungsfisk den 2014-06-30 klockan 11:42.
Kungsfisk besöker inte forumet just nu   Svara med citat
Gammal 2014-06-30, 12:32   #7
zaphr89
Medlem
 
Reg.datum: Jul 2011
Ort: Stockholm
Inlägg: 27
Standard

Det ser riktigt, riktigt bra ut.
zaphr89 besöker inte forumet just nu   Svara med citat
Gammal 2014-06-30, 13:53   #8
Mawkish
Medlem
 
Reg.datum: Jul 2010
Ort: Uppsala
Inlägg: 562
Standard

Citat:
Ursprungligen postat av Kungsfisk Visa inlägg
1. Jag kör LogMate, men får inte ut något debugmeddelande från skriptet. Vart går print eller hur får jag meddelandena att dyka upp i LogMate? Försökte göra som i class390.

2.hlcontrolpos == 0 och hlcontrolpos == 1 funkar, hlcontrolpos == 2 eller högre ändrar inget. Lamporna stannar i konfigurationen som ges av lightsOFF().
Jag hade innan 6st konfigurationen men har bantat ner det till 3 för att debugga.

Kontrolvärdet har:
name: Headlights
default value: 0
min value: 0
max value: 2

..och en internal notched lever med 3 notches.

3. Funkar Activate Node på child objekt också, dvs kan jag använda det för att slå av/på ljuset?
1. Kan väldigt lite om logmate själv men det verkar som om man behöver ha -LogMate -SetLogFilters="All" som uppstartsparametrar till TS(sätts i steam tror jag) för att det ska visas debug utskrifter. Jag struntade mest i logmate och körde debugutskrifter till en vanlig textfil istället men då tappar man ju en del av realtime-debuggandet som logmate erbjuder men är i vilket bättre än ingenting om du inte får logmate att fungera.
Kod:
--GLOBALS
--lägg till
logfile=nil
--ENDGLOBALS
function Initialise()
  --lägg till
  logfile = io.open("C:/RW_LOGS/scriptdebug.txt", "w");
end

function DebugPrint(dbgmessage)
  if DEBUGGING then
    if logfile~=nil then
      logfile:write(os.date("%X")..": "..dbgmessage.."\n")
      logfile:flush()
    end
  end
end
OBS! Mappen där debugfilen ska skrivas, c:\rw_logs i detta fall, måste skapas för hand innan du kör.

2. elseif hlControlpos==2 --> elseif hlcontrolpos==2 OBS. stort och litet "c"

Jag skulle dock undvika kontrollnamnet Headlights som är någon slags semi-hårdkodad kontroll i TS med lägen "ljus av"/"ljus på"/"byt riktning" dvs 3 lägen som inte går att ändra vad jag vet.
Gör hellre en egen kontroll med "LiveInjectorWater" med de lägen du behöver och koppla sedan ihop vad som händer i "Headlights" kontrollen och vice versa. Då får ett fungerande knapp i UI:t för grundljuset(av/på/ändra riktning) + trycka "L" för att finlira med ljusen.

3. För att visa/gömma childobjekt så används Call("Childnamn:Activate",1/0) så det går utmärkt att styra lamporna med detta och du kan tom ställa in olika parametrar på lamporna i skriptet med

Call( "Headlight:SetRange", 60) --Headlight är här ett child objekt av typen spotlight
Call( "Headlight:SetUmbraAngle", 25)
Call( "Headlight:SetPenumbraAngle", 15)
__________________
Försöker bygga Älvsjö godsbangård men svär mest över UVW mappning.

Senast redigerad av Mawkish den 2014-06-30 klockan 13:56.
Mawkish besöker inte forumet just nu   Svara med citat
Gammal 2014-06-30, 14:23   #9
Kungsfisk
Medlem
 
Reg.datum: May 2013
Ort: Skåne
Inlägg: 396
Standard

Funkade direkt. Det är inte första gången man gör det misstaget...
LogMate funkar, hade fel filter som du skrev.

Vad gött att man kan ändra delar av childobjekten via lua, då slipper man göra en för varje inställning. Skall definitivt utnyttja det.

Stort tack, detta har fått mig på banan igen. Gött!
__________________
X2000 LATEST BEST 5TH JUNE
Kungsfisk besöker inte forumet just nu   Svara med citat
Gammal 2014-07-01, 16:47   #10
KMW
Medlem
 
Reg.datum: Feb 2005
Ort: Karlstad, Sverige
Inlägg: 988
Standard

För att få igång felmeddelanden i LogMate måste mycket riktigt uppstartsparametrar sättas i Steam.
(eller via genväg om man inte har spelet via Steam)
Nedan är hur det ser ut hos mig och det är ovärderlig hjälp för avlusning.
Höger klicka på 'Train Simulator 2014' i vänstra panelen och välj 'Egenskaper',
sedan knappen 'Ange startalternativ...'

ps har någon sagt att modellen ser fantastisk ut?

Bifogade bilder
Filtyp: jpg TS startalternativ.JPG (41.4 KB, 164 visningar)
KMW besöker inte forumet just nu   Svara med citat
Svara


Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av
Forumhopp



Alla tider är GMT +2. Klockan är nu 08:43.


Powered by vBulletin® Version 3.7.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
© Svenska 3D-Tåg 2001-2009