Rather ancient carriages I have made, looking for critiques

Use this forum to show off your hard work to the other visitors of this site.

Re: Rather ancient carriages I have made, looking for critiques

Postby cjbarnes5294 » Sun Nov 27, 2016 12:25 am

What a beauty! :o

Kind regards,
Chris
The Red Queen Hypothesis, applicable to train sim development?

"Here, you see, it takes all of the running you can do, to keep the same place."
cjbarnes5294
Driver
 
Posts: 398
Images: 82
Joined: Mon Mar 31, 2014 12:40 pm
Location: Gloucestershire/North Yorkshire
Has thanked: 551 times
Been thanked: 187 times

Re: Rather ancient carriages I have made, looking for critiques

Postby AndiS » Sun Nov 27, 2016 9:04 am

That's the worst case, I guess. You make a fine model based on the information you have. After that, someone comes up with first-class information that shows that your best guess was a bit off (which lies in the nature of guesses).
AndiS
Top Link Driver!
 
Posts: 736
Joined: Wed Apr 09, 2014 5:48 pm
Has thanked: 268 times
Been thanked: 308 times

Re: Rather ancient carriages I have made, looking for critiques

Postby TrabantDeLuxe » Sun Nov 27, 2016 12:11 pm

...and then it turns out every batch of 30 has their own little quirks. I could write a book about this loco, with the amount of information gathered. By the way, if anyone has a pic of a builders plate of the 'New York Air Brake Co.', I'd be much obliged.

@Chris: The model or the loco. My opinion of the loco is that the cab spoils the clean lines somewhat. At least it's not a 50's version, Nederlandsche Spoorwegen had a habit of hanging everything Knorr GmbH would sell them on the side of these things.
TrabantDeLuxe
Passed Fireman
 
Posts: 247
Images: 7
Joined: Mon Mar 21, 2016 10:10 pm
Location: Delft, NL
Has thanked: 176 times
Been thanked: 263 times

Re: Rather ancient carriages I have made, looking for critiques

Postby briyeo » Wed Nov 30, 2016 3:48 pm

Funny you should ask, I just happen to have a New York Air Brake Company plate handy. Hope it's suitable.

Image


Image


Image
User avatar
briyeo
Driver
 
Posts: 325
Joined: Tue Apr 01, 2014 8:13 am
Has thanked: 291 times
Been thanked: 344 times

Re: Rather ancient carriages I have made, looking for critiques

Postby TrabantDeLuxe » Fri Dec 16, 2016 9:50 pm

Handy as in 'hanging on the wall next to me'? Thanks a lot for those! With surety and swiftness I've started creating the rough outlines, hope to have it finished soon:

Image.

For those wondering, 66 Broadway was demolished in the 60's. Oh, progress...

Also, this has happened: The first 35 engines where delivered in a slightly different configuration. Uses mainly the same textures, but a 1024*2048 map of 'patches' was added.

Image
TrabantDeLuxe
Passed Fireman
 
Posts: 247
Images: 7
Joined: Mon Mar 21, 2016 10:10 pm
Location: Delft, NL
Has thanked: 176 times
Been thanked: 263 times

Re: Rather ancient carriages I have made, looking for critiques

Postby TrabantDeLuxe » Fri Jan 13, 2017 2:11 pm

4347

Had some 'fun' in matlab the other day. Script takes valve events, boiler pressure, R.P.M., and spits out a surface plot of T.E. versus speed and cut-off. I've used this to determine my .csv's.
TrabantDeLuxe
Passed Fireman
 
Posts: 247
Images: 7
Joined: Mon Mar 21, 2016 10:10 pm
Location: Delft, NL
Has thanked: 176 times
Been thanked: 263 times

Re: Rather ancient carriages I have made, looking for critiques

Postby TrabantDeLuxe » Thu Feb 02, 2017 5:28 pm

Image
I'm tempted to do a whitewash livery for these type of shots.

Image
TrabantDeLuxe
Passed Fireman
 
Posts: 247
Images: 7
Joined: Mon Mar 21, 2016 10:10 pm
Location: Delft, NL
Has thanked: 176 times
Been thanked: 263 times

Re: Rather ancient carriages I have made, looking for critiques

Postby TrabantDeLuxe » Sat Feb 18, 2017 5:05 pm

Image

This was much easier than expected.

Edit: To justify me posting this at a dev forum, here's how it's done:

First of all, there's 5 animations in total for the valve gear - full forward, half forward, mid-gear, half back, and full back. In the update function, we set the appropriate time for the animation, much like you'd do with a wheel animation. The wheels themselves, including pistons and connecting rods, have their own animation. Then there's the issue of showing and hiding the correct nodes - done by a seperate function. This function is called each time the reverser changes.

Code: Select all
function SetValveGear(Reverser)
   local ARG = 0
   
   -- Pick the correct setting:
   if Reverser < -0.50 then
      ARG = 1
   elseif Reverser < -0.20 then
      ARG = 2
   elseif Reverser < 0.20 then
      ARG = 3
   elseif Reverser < 0.50 then
      ARG = 4
   else
      ARG = 5
   end

   -- Hide/unhide nodes:
   -- Back-Back
   Call("*:ActivateNode", "EccLF_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "EccRF_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "EccLB_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "EccRB_BB", (ARG == 1) and 1 or 0)

   Call("*:ActivateNode", "LinkL_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "LinkR_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerL_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerR_BB", (ARG == 1) and 1 or 0)

   Call("*:ActivateNode", "ValveStemL_BB", (ARG == 1) and 1 or 0)
   Call("*:ActivateNode", "ValveStemR_BB", (ARG == 1) and 1 or 0)

   Call("*:ActivateNode", "WentelAs_BB", (ARG == 1) and 1 or 0)

   -- Back
   Call("*:ActivateNode", "EccLF_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "EccRF_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "EccLB_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "EccRB_B", (ARG == 2) and 1 or 0)

   Call("*:ActivateNode", "LinkL_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "LinkR_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerL_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerR_B", (ARG == 2) and 1 or 0)

   Call("*:ActivateNode", "ValveStemL_B", (ARG == 2) and 1 or 0)
   Call("*:ActivateNode", "ValveStemR_B", (ARG == 2) and 1 or 0)

   Call("*:ActivateNode", "WentelAs_B", (ARG == 2) and 1 or 0)

   -- Mid-Gear
   Call("*:ActivateNode", "EccLF_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "EccRF_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "EccLB_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "EccRB_C", (ARG == 3) and 1 or 0)

   Call("*:ActivateNode", "LinkL_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "LinkR_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerL_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerR_C", (ARG == 3) and 1 or 0)

   Call("*:ActivateNode", "ValveStemL_C", (ARG == 3) and 1 or 0)
   Call("*:ActivateNode", "ValveStemR_C", (ARG == 3) and 1 or 0)

   Call("*:ActivateNode", "WentelAs_C", (ARG == 3) and 1 or 0)

   -- Forward
   Call("*:ActivateNode", "EccLF_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "EccRF_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "EccLB_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "EccRB_F", (ARG == 4) and 1 or 0)

   Call("*:ActivateNode", "LinkL_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "LinkR_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerL_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerR_F", (ARG == 4) and 1 or 0)

   Call("*:ActivateNode", "ValveStemL_F", (ARG == 4) and 1 or 0)
   Call("*:ActivateNode", "ValveStemR_F", (ARG == 4) and 1 or 0)

   Call("*:ActivateNode", "WentelAs_F", (ARG == 4) and 1 or 0)

   -- Forward-Forward
   Call("*:ActivateNode", "EccLF_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "EccRF_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "EccLB_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "EccRB_FF", (ARG == 5) and 1 or 0)

   Call("*:ActivateNode", "LinkL_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "LinkR_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerL_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "LinkHangerR_FF", (ARG == 5) and 1 or 0)

   Call("*:ActivateNode", "ValveStemL_FF", (ARG == 5) and 1 or 0)
   Call("*:ActivateNode", "ValveStemR_FF", (ARG == 5) and 1 or 0)

   Call("*:ActivateNode", "WentelAs_FF", (ARG == 5) and 1 or 0)




   return ARG -- for debugging
end


The fun bit is that (a == b) and 1 or 0 returns 1 if a = b, and 0 otherwise. In fact, you could place any logical expression in there. It's basically a way of converting boolean (true/false) to 1 and 0.
TrabantDeLuxe
Passed Fireman
 
Posts: 247
Images: 7
Joined: Mon Mar 21, 2016 10:10 pm
Location: Delft, NL
Has thanked: 176 times
Been thanked: 263 times

Re: Rather ancient carriages I have made, looking for critiques

Postby VictoryWorks » Mon Feb 20, 2017 9:41 am

Nicely done. That's how I did it for the Steam Railmotor's power bogey which has external Stephensons gear - 5 groups of nodes in exactly the same positions as yours.
I prefer your show/hide code logic, very neat indeed.
User avatar
VictoryWorks
Driver
 
Posts: 333
Joined: Mon Apr 07, 2014 1:22 pm
Has thanked: 41 times
Been thanked: 224 times

Re: Rather ancient carriages I have made, looking for critiques

Postby TrabantDeLuxe » Mon Feb 20, 2017 7:33 pm

My initial script was a horribly long if-elsif-tree, but this is much more elegant. A possible optimisation would be to figure out a way to, on reverser change, only actively call ActivateNode for the current valve gear shown, and the one that needs showing - although my script is full of calls and removing them doesn't yield any noticable performance increases. There's even a 20-iteration loop for doing physics, which doesn't seem to hurt.
TrabantDeLuxe
Passed Fireman
 
Posts: 247
Images: 7
Joined: Mon Mar 21, 2016 10:10 pm
Location: Delft, NL
Has thanked: 176 times
Been thanked: 263 times

PreviousNext

Return to Showroom

Who is online

Users browsing this forum: No registered users and 2 guests

cron