The online racing simulator
Just checking though, you do have LFS Record version 2.0.3? (you can see that in Help -> About)
I thought I had fixed that mpr wrong mode bug in that version.
omg i feel like a fool i have 2.0.2 how i make this mistake i'm really really sorry. i think updates coming fast i missed that

2.0.3 working fine with mpr
Hi there;

I run into this problem with 2.03
Sorry, I don't have the technical language to describe the problem better.


While working with an mpr, after doing do some work, setting up keyframes, animations, etc, I un-animate (wrong term?) a property, then move the time line around, and the program will crash.

I can attach or forward a screen captured video if you like.

Jonathan

Event log attached
Quote :Log Name: Application
Source: .NET Runtime
Date: 19/12/2010 2:56:14 PM
Event ID: 1026
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: Jonathan-PC
Description:
Application: LFSRecord2.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Reflection.TargetInvocationException
Stack:
at System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
at System.RuntimeMethodHandle.InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.Signature, System.Reflection.MethodAttributes, System.RuntimeType)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
at System.Threading.ExecutionContext.runTryCode(System.Object)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window)
at System.Windows.Application.Run(System.Windows.Window)
at LFSRecord2.App.Main()

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name=".NET Runtime" />
<EventID Qualifiers="0">1026</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2010-12-19T18:56:14.000Z" />
<EventRecordID>65034</EventRecordID>
<Channel>Application</Channel>
<Computer>Jonathan-PC</Computer>
<Security />
</System>
<EventData>
<Data>Application: LFSRecord2.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Reflection.TargetInvocationException
Stack:
at System.RuntimeMethodHandle._InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeType)
at System.RuntimeMethodHandle.InvokeMethodFast(System.IRuntimeMethodInfo, System.Object, System.Object[], System.Signature, System.Reflection.MethodAttributes, System.RuntimeType)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo, Boolean)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
at System.Threading.ExecutionContext.runTryCode(System.Object)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window)
at System.Windows.Application.Run(System.Windows.Window)
at LFSRecord2.App.Main()
</Data>
</EventData>
</Event>

This tool looks really good

But, if I'm not mistaking, it's not possible to record a race, like Fraps would do ?

Wouldn't there be any way to use the same recording process (frame per frame screenshot) with ingame track cams ? So we wouldn't need to use Fraps or any other software of this genre ?

Thanks for this addition anyway
Quote from Mullog :This tool looks really good

But, if I'm not mistaking, it's not possible to record a race, like Fraps would do ?

Wouldn't there be any way to use the same recording process (frame per frame screenshot) with ingame track cams ? So we wouldn't need to use Fraps or any other software of this genre ?

Thanks for this addition anyway

You cannot record a race live with this program, that's true. To use this method of recording a race (saving huge number a screenshots) you would surely need one bad-assed computer. Even recording a fairly high quality 15 second clip at 25 frames/second takes a lot of space on a hard drive, I shudder when I think about the numbers when talking about a 1 hour race.

The utility of this program will be limited to short(ish) clips that you'll take and manipulate to make movies, or recaps of races. It's the bee's knees for that.
Sorry, I didn't express myself correctly

I meant what you explained in your answer like recording replays to make recaps and things like that (like those I used to make (well 4 ) for OWRL F1 this year). I know this tool isn't useful for streaming live races
Quote from Mullog :Sorry, I didn't express myself correctly

I meant what you explained in your answer like recording replays to make recaps and things like that (like those I used to make (well 4 ) for OWRL F1 this year). I know this tool isn't useful for streaming live races

Ah. Sorry, I didn't want to make the assumption that you weren't talking about live recording.

You can definitely make movies with LFSRecord. It does take a little work, and another program.

If you're asking how, you take a program like 'vdub' load the first bitmap in your recording, vdub then 'dubs' it, and you can save it as an avi or some other format.

An example, with little artistic merit. http://www.youtube.com/watch?v=CisGWupBQkY
Quote from JayEyeBee :Hi there;

I run into this problem with 2.03
Sorry, I don't have the technical language to describe the problem better.


While working with an mpr, after doing do some work, setting up keyframes, animations, etc, I un-animate (wrong term?) a property, then move the time line around, and the program will crash.

I can attach or forward a screen captured video if you like.

Jonathan

Event log attached

Thank you for your report. I've tried to reproduce something similar, but I can't really get it to crash.
It would be very helpful if you could provide some more information on which property of which type of layer you were "un-animating" (i assume you meant clicking the stopwatch, clearing a properties animation). Or the proposed video would be most ideal, because then I can reproduce exactly what you did, allowing me to quickly pin point the problem.
video deleted

Hope you don't mind the use of youtube. I'll delete it once I've seen that you've . . .er, seen it.

It was the position property of a follow camera (which was active).
Could it be related to the orientation of the camera? I had crashes when I keyframed the orientation on a LookCamera around 360°/0°.
LFS can crash if you look straight down or up. This bug has been fixed in Scawen's version a while ago, so that'll be in the next LFS patch.
But Jay means lfs record crashes.
(or did you mean lfs record crashed as well?)
Quote from JayEyeBee :http://www.youtube.com/watch?v=ZdgGfyF3tlM

Hope you don't mind the use of youtube. I'll delete it once I've seen that you've . . .er, seen it.

It was the position property of a follow camera (which was active).

ok many thanks for that. I found the bug. It was related to the Replay Name keyframe that wasn't at frame 0. So to fix the problem in your project for now, either delete that keyframe if you're just using one replay, or move it to frame 0.
Quote from Victor :ok many thanks for that. I found the bug. It was related to the Replay Name keyframe that wasn't at frame 0. So to fix the problem in your project for now, either delete that keyframe if you're just using one replay, or move it to frame 0.

Ok, thanks. I'll delete that video.

Jonathan (vs Jay)
I meant LFS Record crashed, but that was in an early version and I don't know how to reproduce it, so no worries.
I can crash LFSRecord (2.0.3.0) when clicking on "Stop Watch" of LookCamera's property LookAt, which is bound to property Position of Null Layer made from car data.

My improvment suggestions for LFSRecord are:
- Make it able to start designed animation while being in LFS (some kind of hotkey maybe).
It will allow to start Fraps recording together with animation start (by assigning same hotkey for both programs).

- Add an option in LFSRecord to define camera animation playback speed (0.5x, 0.25x).
Then we will be able to record animation live with Fraps. By recording it in half speed we can reduce probability of shuttering, because LFS will have double the time to generate the frame. I'm using this mode to record fluid LFS movies. 15fps recording in 0.5x LFS playback speed. Then doubling its audio and video speed in VDub, making 30fps movie.
thanks. I've fixed that bug and fixed another bug related to properties with a binding.

As for fraps, I'm not sure you understand how LFS Record works. The point is that you don't need fraps anymore, because LFS Record will do the recording for you, albeit without sound for now. LFS Record does the recording in such a way that it allows you to set a certain FPS you want to record at and that _will always work_, as opposed to fraps where you must choose a resolution and quality that your computer allows to record realtime. LFS Record recording is not realtime.
That means you don't need to slow down the replay anymore. You can just keep it at 1x.
If you want slomo, just record at 100fps and you get all the slow motion resolution LFS has to offer.

Also I think I have to write a clear article about FPS because it appears unclear to many people that you cannot record at 30fps. But please see earlier in this thread for the answer to that for the moment, because I'm not going to explain _again_
You might be selling your program short, Victor. Even without the recording of the bmps, the camera animation aspect of LFSRecord alone is valuable and almost unique. If that feature could be polished and made to work flawlessly with a program like fraps, the utility of it would be greater. As of right now, and not knowing the timeline for an audio recording capability, yaper's hotkey idea seems worthwhile.

Of course, there are lots of videos out there with excellent camera work, and I may be unaware of other camera control programs that do what this one does.
Quote from Victor :If you mean recording starts to stutter after 8-10 seconds, but it continues nevertheless, then that's ok. The final recording will be smooth. Your computer can't keep up, but LFS Record will just wait upon each frame until LFS is ready before proceeding to the next frame.
If you mean the recording really stops and does not continue, then that's a problem. So please let me know which it is.

well it was doing like one-two frames per second and then stopped...I thought it was stuck because it was on the same frame for about half a minute but when I tried it today...it resumes after a while...patience is the key

and just a small problem...pictures are saved from 0 to X but if I open them in sony vegas they are like 0,1,10,100,101-109,11,110,111 etc...wouldnt there be a possibility to save them always for example as 5 digit number? 00001, 00002 etc? it will help a lot...thx
edit: although I ve just found a way to rename them in other software but still it would be fine to it as I explained
LFS Record 2.0.4
I have uploaded LFS Record version 2.0.4 which has a fair number of changes, which is the reason why there is only a full download available and no patch (see first post in this thread).

*Data contents folder structure changed. You can delete your 'content' folder.
*Now using InSim.NET, the successor of Spark. You can delete your Spark.dll file. (DarkTimes)
*Added Recent Projects menu item (DarkTimes).
*Fixed all reported crashes and bugs (and a range of unreported ones).
*Added 8-digit frame number in screenshots for easy sorting
*Prepared for project to become Open Source

If this is a good version it can be bumped to v2.1 Release, after which we'll start looking into new features.

Many (i mean several hundreds) big and tiny internal changes have been made, so this version definitely needs another good test. But I'm feeling confident that it's quite good now.
As usual, if you find anything off or buggy, let me know and I'll have a look.
I just had a thought. If LFS Record is dumping frames to your hard drive as images, wouldn't it be possible to have LFS Record output a video file instead?

It could render it out like an animation program, frame by frame as it does now, but it could even compress it as it goes, at any resolution/compression level you want.

I don't think you have the time to do that yourself, or you probably would have, but if you plan on going open source I'd wonder just how much work it'd be for someone else to do that.
Quote from DragonCommando :I just had a thought. If LFS Record is dumping frames to your hard drive as images, wouldn't it be possible to have LFS Record output a video file instead?

It could render it out like an animation program, frame by frame as it does now, but it could even compress it as it goes, at any resolution/compression level you want.

I don't think you have the time to do that yourself, or you probably would have, but if you plan on going open source I'd wonder just how much work it'd be for someone else to do that.

LFS Record does nothing of what you describe, it instructs LFS to make a screenshot. LFS Record would have to request the screenshot (write to disk), load the bmp into memory again (read from disk), do whatever processing it's set up to do and stream it to disk again.
Quote from Victor :As for fraps, I'm not sure you understand how LFS Record works. The point is that you don't need fraps anymore, because LFS Record will do the recording for you, albeit without sound for now. LFS Record does the recording in such a way that it allows you to set a certain FPS you want to record at and that _will always work_, as opposed to fraps where you must choose a resolution and quality that your computer allows to record realtime. LFS Record recording is not realtime.
That means you don't need to slow down the replay anymore. You can just keep it at 1x.

I know how it works. Just wanted to give possibility to record it with sound.
Quote from yaper :I know how it works. Just wanted to give possibility to record it with sound.

Again, that's not possible the way LFS Record runs the replay. It doesn't matter whether you actually use LFS Record to dump the still frames or Fraps. LFS Record pauses the replay and advances it frame by frame, setting the camera to the exact parameters it has calculated. Real time playback would mean a loss of precision, eliminating one of LFS Record's biggest advantages; Pixel perfect reproduction (with the exception of wind I mentioned before).
Quote from morpha :LFS Record does nothing of what you describe, it instructs LFS to make a screenshot. LFS Record would have to request the screenshot (write to disk), load the bmp into memory again (read from disk), do whatever processing it's set up to do and stream it to disk again.

Ah, I thought it was LFS Record itself that was producing the screens, if LFS is producing the screens then yeah, that's not going to work.

Though now that I think about it that way, it would be interesting to integrate LFS Record into LFS, then you could have the functionality I described.
Quote from morpha :Pixel perfect reproduction (with the exception of wind I mentioned before).

How wind could be random on every replay load, considering it affects car physics? Wouldn't that cause OOS?

FGED GREDG RDFGDR GSFDG