Svenska 3D-Tåg - Forum

Svenska 3D-Tåg - Forum (http://www.e-buzz.se/forum/index.php)
-   3D-design - DTG - Train Simulator (http://www.e-buzz.se/forum/forumdisplay.php?f=48)
-   -   Plåtstins (http://www.e-buzz.se/forum/showthread.php?t=32912)

Andreas13 2012-07-22 16:52

Plåtstins
 
1 bifogad(e) fil(er)
Jag har gjort en plåtstins, modellen är klar men den är inte animerad. Hur ska jag göra? jag har läst railsimulator wiki men jag förstår inte så mycket av det.
Hur gör man med blueprints?

Bifogad fil 54775

Mawkish 2012-07-22 19:10

Snyggt! Om du ska ha den att reagera(vridas) när tåget är på gång in(länk0) och vridas tillbaka då den(länk1) passerats så behöver du någon av blueprints för signaler(animated signal blueprint kanske) med två länkar för detta. Animationen är du så vitt jag vet tvungen att styra via skriptning(AddTime funktioner). Är så pass osäker på detta med skriptning av signaler att jag inte vet om jag är till någon hjälp med detta...men kolla lite på hur någon av de enklaste befintliga signalerna är skriptade och utgå från detta.

Några nyckeldelar i skriptet för plåtstinsen är troligtvis funktionerna OnConsistPass och Update. OnConsistPass anropas på då tåget passerar någon av länkarna i signalen dvs det ställe då animationen antingen ska vridas(passerar länk 0) eller vridas tillbaka(passerar länk 1). I Update kommer sedan själva animationen att utföras med hjälp av AddTime anrop som får din animation att stega sig fram eller tillbaka beroende på vad som händer i OnConsistPass ovan.

Vet inte om detta är till någon hjälp alls... :vetej:

Andreas13 2012-07-22 21:55

Det här var krångligt:confused:

Hur exporterar man , ska man länka animation delen eller ska man exportera i två olika filer?

Basse 2012-07-22 22:02

Det bör vara som vanligt, exportera modellen som IGS och animationen som IA.

Mawkish 2012-07-22 23:07

Citat:

Ursprungligen postat av Andreas13 (Inlägg 264691)
Det här var krångligt:confused:

Hur exporterar man , ska man länka animation delen eller ska man exportera i två olika filer?

Som Basse sa så borde det fungera somvanligt med en IGS på allt och IA med bara det animerade.

Jag har försökt kratta ihop något slags skript som troligtvis(högst sannolikt) inte fungerar alls :Fnissa: men kanske kan vara någon slags grund för dig att pilla vidare på.

Kod:

AnimationName="platstins_turn" --name of animation in Anim Set section of signalblueprint
AnimationFrames=20  --20 frames in animiation from 3dsmax
AnimationDuration=3 --3 seconds

dt=0 --Update time
aniState=0 --Animation state 0=turned from locodriver 1= turn towards locodriver
aniDone=0

function Initialise()
       
end

function Setup()
 
end

function OnSignalMessage( message, parameter, direction, linkIndex)
        -- pass on
        Call( "SendSignalMessage", message, parameter, -direction, 1, linkIndex )
end

function OnConsistPass ( prevFrontDist, prevBackDist, frontDist, backDist, linkIndex )
        if (frontDist>0 and backDist<0) then
                --train in process of passing link forward
                if linkIndex==0 then
                        --process of passing link 0
                        --Animation start for turning plåtstins toward traindriver
                        aniState=1
                        Call("BeginUpdate")
                elseif linkIndex==1 then
                        --process of passing any other link
                        --Animation start for turning plåtstins away from traindriver
                        aniState=0
                        Call("BeginUpdate")
                end
        end
end

function Update( lastUpdateTime )
        dt=dt+(AnimationFrames/AnimationDuration)*lastUpdateTime
        if aniState==1 then
                Call("*:Reset",AnimationName)
                aniDone=Call( "*:AddTime", AnimationName,dt )
                if aniDone~=0 then
                        Call("EndUpdate")
                        dt=0
                end
        elseif aniState==0 then
                aniDone=Call( "*:AddTime", AnimationName,AnimationDuration-dt )
                if aniDone~=0 then
                        Call("EndUpdate")
                        dt=0
                end
        end
end


AnimationName, AnimationFrames och AnimationDuration ska justeras så att det stämmer med de värden du har men som sagt med reservationen att detta säkert inte fungerar som det är. Kanske kan någon verkligt skriptkunnig(*host* KMW :grin:) hoppa in och hjälpa till med :)

Andreas13 2012-07-23 00:08

Prosit;)
Det funkar ungefär, den vrider på sig några varv när jag passerar en länk.

Mawkish 2012-07-23 00:35

Citat:

Ursprungligen postat av Andreas13 (Inlägg 264697)
Prosit;)

Hahaha! :grin: Känns rent otroligt att något hände överhuvudtaget :visslar:

Om du testar att ändra raden
if linkIndex==0 then
till
if linkIndex==0 and aniState~=1 then

och raden

elseif linkIndex==1 then
till
elseif linkIndex==1 and aniState~=0 then

så kanske det blir mindre nyseffekt med lite tur! :grin:

Andreas13 2012-07-23 12:58

Jag får den bara att vrida sig ett håll:confused:

Mawkish 2012-07-23 15:00

Är animationen som du har exporterat bara vridningen mot lokföraren och inte tillbaka? Det är i vilket fall den animationen jag har försökt utgå från :)

Inte vet jag hur jag tänkte(om jag tänkte :vetej:) i går men den Update funktionen kommer knappast att fungera som den är så här är ett nytt försök.

Byt ut hela Update funktionen till
Kod:

function Update( lastUpdateTime )
        if aniState==1 then
                dt=dt+(AnimationFrames/AnimationDuration)*lastUpdateTime
                Call("*:Reset",AnimationName)
                aniDone=Call( "*:AddTime", AnimationName,dt )
                if aniDone~=0 then
                        Call("EndUpdate")
                end
        elseif aniState==0 then
                dt=dt-(AnimationFrames/AnimationDuration)*lastUpdateTime
                Call("*:Reset",AnimationName)
                aniDone=Call( "*:AddTime", AnimationName,dt )
                if aniDone~=0 then
                        Call("EndUpdate")
                        dt=0
                end
        end
end


Andreas13 2012-07-23 17:02

Så här har jag gjort animationen
http://www.cellsea.com/video/detail/V500d65f24f89b.htm

Den går bara ett varv egentligen, gjorde två varv så att man ska hinna se.

Mawkish 2012-07-23 18:00

Nu vet jag inte riktigt riktningarna i videon men animationen ska i vilket fall halveras så att säga.

Om du tänker dig att du tittar på plåtstinsen i körriktningen så ska hela animationen vara
Kod:

Start läge-->några frames senare------>Slut läge
 
  *                    **                            * * *
  *                    *  *                        *          *
  *                    *  *                      *            *
  *                    *  *                      *            *
  *                    *  *                        *          *
  *                    **                            * * *
Ser bara                                          Ser hela skylten
kanten


Basse 2012-07-23 18:37

Om jag får lägga mig i med både en fråga och en utveckling av Mawkish's svar. Den ska endast animeras från vridet läge till sebart läge, RW spelar sedan animationen baklänges för att ta tillbaka stinsen (?).

Mawkish 2012-07-23 18:57

Citat:

Ursprungligen postat av Basse (Inlägg 264711)
Om jag får lägga mig i med både en fråga och en utveckling av Mawkish's svar. Den ska endast animeras från vridet läge till sebart läge, RW spelar sedan animationen baklänges för att ta tillbaka stinsen (?).

Egentligen kan man väl animera hur man vill när animationen ska skriptstyras men just i detta fallet så är skriptet tänkt(betoning på detta :)) att fungera så att animationen spelas baklänges då länk1 passeras(iom att tid dras ifrån i addtime anropet i detta fallet).


Alla tider är GMT +2. Klockan är nu 02:09.

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