Re: [osg-users] Getting System time, milliseconds
Hi Kelly, On Fri, Jul 17, 2009 at 12:35 PM, Kelly Fields wrote: > Yes, sorry - I need millisecond precision. So I need a number to be like > "3.234 seconds" rather than "3 seconds" I'm really surprised that Delta3D code gives an interger time back. The OSG's FrameStamp stores the simulation in doubles so you'll get a 3.234 as you require, but for some reason Delta3D seems to be truncating its own time. Perhaps you could just ignore the Delta3D code and utilize the OSG's osg::Timer to do timing or use osg::FrameStamp that the Viewer maintains updating it for each new frame. The OSG classes work on all platforms. Robert. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
I am working soley in Windows... any help there? -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=15078#15078 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
J.P. Delport wrote: For Linux, play with this: #ifndef WIN32 /// High resolution timers for Linux. #define NSEC_PER_SEC 10LL inline uint64_t timespec_to_ns(const struct timespec *ts) { return ((uint64_t) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; } /// Returns nanoseconds since epoch. inline uint64_t currentTimeNanoSec() { struct timespec timestamp_ts; //clock_gettime(CLOCK_MONOTONIC, ×tamp_ts); clock_gettime(CLOCK_REALTIME, ×tamp_ts); return timespec_to_ns(×tamp_ts); } inline uint64_t clockResNanoSec() { struct timespec timestamp_ts; //clock_getres(CLOCK_MONOTONIC, ×tamp_ts); clock_getres(CLOCK_REALTIME, ×tamp_ts); return timespec_to_ns(×tamp_ts); } #if 0 int main(void) { printf("%lld, %lld\n", currentTimeNanoSec(), clockResNanoSec()); printf("%lld, %lld\n", currentTimeNanoSec(), clockResNanoSec()); } #endif #else Interesting, I had compared different ways of doing timing on Linux some time ago and was certain that clock_gettime() didn't work for me. But now I tested it again it at least seems to provide enough precision. Ah well, I'll probably never figure out what happened :) Thanks, Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
For Linux, play with this: #ifndef WIN32 /// High resolution timers for Linux. #define NSEC_PER_SEC 10LL inline uint64_t timespec_to_ns(const struct timespec *ts) { return ((uint64_t) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; } /// Returns nanoseconds since epoch. inline uint64_t currentTimeNanoSec() { struct timespec timestamp_ts; //clock_gettime(CLOCK_MONOTONIC, ×tamp_ts); clock_gettime(CLOCK_REALTIME, ×tamp_ts); return timespec_to_ns(×tamp_ts); } inline uint64_t clockResNanoSec() { struct timespec timestamp_ts; //clock_getres(CLOCK_MONOTONIC, ×tamp_ts); clock_getres(CLOCK_REALTIME, ×tamp_ts); return timespec_to_ns(×tamp_ts); } #if 0 int main(void) { printf("%lld, %lld\n", currentTimeNanoSec(), clockResNanoSec()); printf("%lld, %lld\n", currentTimeNanoSec(), clockResNanoSec()); } #endif #else Paul Melis wrote: Paul Melis wrote: J.P. Delport wrote: In OSG you could do something like: osg::Timer *globalHighResTimer=osg::Timer::instance(); uint64_t currentTimeNanoSec() { osg::Timer_t timer_t=globalHighResTimer->tick(); return (uint64_t)(timer_t * globalHighResTimer->getSecondsPerTick() * 10);//timerTick * secondsPerTick * secondsToNanoSeconds } This is win32-specific code right? There's no way you're going to get nanosecond precision on e.g. Linux where gettimeofday() is used by osg::Timer. Ok ok, it would give valid results on non-windows, but give a false sense of nanosecond precision. And the OP needed only milliseconds... Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- This message is subject to the CSIR's copyright terms and conditions, e-mail legal notice, and implemented Open Document Format (ODF) standard. The full disclaimer details can be found at http://www.csir.co.za/disclaimer.html. This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. MailScanner thanks Transtec Computers for their support. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
Paul Melis wrote: J.P. Delport wrote: In OSG you could do something like: osg::Timer *globalHighResTimer=osg::Timer::instance(); uint64_t currentTimeNanoSec() { osg::Timer_t timer_t=globalHighResTimer->tick(); return (uint64_t)(timer_t * globalHighResTimer->getSecondsPerTick() * 10);//timerTick * secondsPerTick * secondsToNanoSeconds } This is win32-specific code right? There's no way you're going to get nanosecond precision on e.g. Linux where gettimeofday() is used by osg::Timer. Ok ok, it would give valid results on non-windows, but give a false sense of nanosecond precision. And the OP needed only milliseconds... Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
J.P. Delport wrote: In OSG you could do something like: osg::Timer *globalHighResTimer=osg::Timer::instance(); uint64_t currentTimeNanoSec() { osg::Timer_t timer_t=globalHighResTimer->tick(); return (uint64_t)(timer_t * globalHighResTimer->getSecondsPerTick() * 10);//timerTick * secondsPerTick * secondsToNanoSeconds } This is win32-specific code right? There's no way you're going to get nanosecond precision on e.g. Linux where gettimeofday() is used by osg::Timer. Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
In OSG you could do something like: osg::Timer *globalHighResTimer=osg::Timer::instance(); uint64_t currentTimeNanoSec() { osg::Timer_t timer_t=globalHighResTimer->tick(); return (uint64_t)(timer_t * globalHighResTimer->getSecondsPerTick() * 10);//timerTick * secondsPerTick * secondsToNanoSeconds } I'm not sure what the Delta3D class does under the hood. jp Paul Melis wrote: Kelly Fields wrote: Yes, sorry - I need millisecond precision. So I need a number to be like "3.234 seconds" rather than "3 seconds" But aren't those methods you used from the Delta3D API? Are you sure these methods are in OSG? Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- This message is subject to the CSIR's copyright terms and conditions, e-mail legal notice, and implemented Open Document Format (ODF) standard. The full disclaimer details can be found at http://www.csir.co.za/disclaimer.html. This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. MailScanner thanks Transtec Computers for their support. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
Kelly Fields wrote: Yes, sorry - I need millisecond precision. So I need a number to be like "3.234 seconds" rather than "3 seconds" But aren't those methods you used from the Delta3D API? Are you sure these methods are in OSG? Paul ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
Yes, sorry - I need millisecond precision. So I need a number to be like "3.234 seconds" rather than "3 seconds" -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=15066#15066 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
Robert Osfield wrote: Is it just that you need to multiple the number of seconds my 1000 to get milliseconds? This does seem a bit of trivial answer so I do wonder if your actually after something else. I guess the OP wants millisecond precision? Paul Robert. On Thu, Jul 16, 2009 at 7:05 PM, Kelly Fields wrote: Hi, I am new to Delta3d and have a question about getting system time (or local time - really any form of time). I am accessing time, but even though the "seconds" is a float, it does not contain information for milliseconds. How would I get that? Here is my code... dtUtil::DateTime time; time.SetTimeType(dtUtil::DateTime::TimeType::SIMULATION_TIME); time.SetToLocalTime(); double winTime = time.GetTimeInSeconds(); Please help!! -- Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=15043#15043 ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Getting System time, milliseconds
Hi Kelly, Is it just that you need to multiple the number of seconds my 1000 to get milliseconds? This does seem a bit of trivial answer so I do wonder if your actually after something else. Robert. On Thu, Jul 16, 2009 at 7:05 PM, Kelly Fields wrote: > Hi, > > I am new to Delta3d and have a question about getting system time (or local > time - really any form of time). I am accessing time, but even though the > "seconds" is a float, it does not contain information for milliseconds. How > would I get that? > > Here is my code... > > dtUtil::DateTime time; > time.SetTimeType(dtUtil::DateTime::TimeType::SIMULATION_TIME); > time.SetToLocalTime(); > double winTime = time.GetTimeInSeconds(); > > Please help!! > > -- > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=15043#15043 > > > > > > ___ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org