Difference between revisions of "IC Python API:RLPy RTime"

From Reallusion Wiki!
Jump to: navigation, search
m
m
Line 6: Line 6:
  
 
This class represents the midst unit (a.k.a unit of time) in animation.  Currently, it provides two states: milliseconds and 60FPS (frames per second).  When you create an animation key, you'll need to set the value according to the incoming time.  This class also provides different unit conversions such as [[#GetFrameIndex ( self, kTime, nFps )|GetFrameIndex]], [[#IndexedFrameTime ( self, nFrameIndex, nFps )|IndexedFrameTime]], and [[#GetFrameTime ( self, kTime, nFps )|GetFrameTime]] to ensure that the time retrieved is alined with animation frames.
 
This class represents the midst unit (a.k.a unit of time) in animation.  Currently, it provides two states: milliseconds and 60FPS (frames per second).  When you create an animation key, you'll need to set the value according to the incoming time.  This class also provides different unit conversions such as [[#GetFrameIndex ( self, kTime, nFps )|GetFrameIndex]], [[#IndexedFrameTime ( self, nFrameIndex, nFps )|IndexedFrameTime]], and [[#GetFrameTime ( self, kTime, nFps )|GetFrameTime]] to ensure that the time retrieved is alined with animation frames.
 
<syntaxhighlight lang="python">
 
# Get current time
 
time = RLPy.RGlobal.GetTime()
 
 
# Compare time
 
if time == RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
 
  print("equal")
 
elif time > RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
 
  print("greater")
 
elif time < RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
 
  print("less")
 
 
# Operator 
 
time += RLPy.RTime(1000)
 
time -= RLPy.RTime(1000)
 
time *= 2
 
time /= 2
 
 
# Convert between frame
 
time = RLPy.RTime(3000)
 
frame_index = RLPy.RTime.GetFrameIndex(time, RLPy.RGlobal.GetFps())
 
print(frame_index)            # 180
 
 
time = RLPy.RTime.IndexedFrameTime(180, RLPy.RGlobal.GetFps())
 
print(time.GetValue())        # 3000
 
 
time = RLPy.RTime(3005)
 
frame_time = RLPy.RTime.GetFrameTime(time, RLPy.RGlobal.GetFps())
 
print(frame_time.GetValue())  # 3000
 
</syntaxhighlight>
 
  
 
== Operators ==
 
== Operators ==
Line 49: Line 18:
 
See Also: [[#!=|!=]]
 
See Also: [[#!=|!=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Equivalence operator
 
# Equivalence operator
 
time1 = RLPy.RTime(3000)
 
time1 = RLPy.RTime(3000)
 
time2 = RLPy.RTime(3000)
 
time2 = RLPy.RTime(3000)
 
print(time1 == time2)
 
print(time1 == time2)
 +
 +
# Compare current time
 +
time = RLPy.RGlobal.GetTime()
 +
 +
if time == RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
 +
  print("equal")
 +
elif time > RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
 +
  print("greater")
 +
elif time < RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
 +
  print("less")
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 65: Line 44:
 
See Also: [[#==|==]]
 
See Also: [[#==|==]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Not equal operator
 
# Not equal operator
 
time1 = RLPy.RTime(3000)
 
time1 = RLPy.RTime(3000)
Line 81: Line 60:
 
See Also: [[#<=|<=]]
 
See Also: [[#<=|<=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Less equal operator
 
# Less equal operator
 
time1 = RLPy.RTime(1000)
 
time1 = RLPy.RTime(1000)
Line 97: Line 76:
 
See Also: [[#>|>]]
 
See Also: [[#>|>]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Less equal operator
 
# Less equal operator
 
time1 = RLPy.RTime(2000)
 
time1 = RLPy.RTime(2000)
Line 111: Line 90:
 
:'''True''' if this [[IC_Python_API:RLPy_RTime|RTime]]value is less than another [[IC_Python_API:RLPy_RTime|RTime]]value, else '''False'''.
 
:'''True''' if this [[IC_Python_API:RLPy_RTime|RTime]]value is less than another [[IC_Python_API:RLPy_RTime|RTime]]value, else '''False'''.
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Less than operator
 
# Less than operator
 
time1 = RLPy.RTime(1000)
 
time1 = RLPy.RTime(1000)
Line 127: Line 106:
 
See Also: [[#>=|>=]]
 
See Also: [[#>=|>=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Greater than operator
 
# Greater than operator
 
time1 = RLPy.RTime(3000)
 
time1 = RLPy.RTime(3000)
Line 143: Line 122:
 
See Also: [[#+=|+=]]
 
See Also: [[#+=|+=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Addition operator
 
# Addition operator
 
time1 = RLPy.RTime(1000)
 
time1 = RLPy.RTime(1000)
Line 160: Line 139:
 
See Also: [[#+|+]]
 
See Also: [[#+|+]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Addition assignment operator
 
# Addition assignment operator
 
time1 = RLPy.RTime(1000)
 
time1 = RLPy.RTime(1000)
Line 177: Line 156:
 
See Also: [[#-=|-=]]
 
See Also: [[#-=|-=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Subtraction operator
 
# Subtraction operator
 
time1 = RLPy.RTime(1000)
 
time1 = RLPy.RTime(1000)
Line 194: Line 173:
 
See Also: [[#-|-]]
 
See Also: [[#-|-]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Subtraction assignment operator
 
# Subtraction assignment operator
 
time1 = RLPy.RTime(1000)
 
time1 = RLPy.RTime(1000)
Line 211: Line 190:
 
See Also: [[#*=|*=]]
 
See Also: [[#*=|*=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Multiplication operator
 
# Multiplication operator
 
time1 = RLPy.RTime(100.0)
 
time1 = RLPy.RTime(100.0)
Line 227: Line 206:
 
See Also: [[#*|*]]
 
See Also: [[#*|*]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Multiplication assignment operator
 
# Multiplication assignment operator
 
time1 = RLPy.RTime(200.0)
 
time1 = RLPy.RTime(200.0)
Line 243: Line 222:
 
See Also: [[#/=|/=]]
 
See Also: [[#/=|/=]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Division operator
 
# Division operator
 
time1 = RLPy.RTime(3000)
 
time1 = RLPy.RTime(3000)
Line 259: Line 238:
 
See Also: [[#/|/]]
 
See Also: [[#/|/]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Division assignment operator
 
# Division assignment operator
 
time1 = RLPy.RTime(3000.0)
 
time1 = RLPy.RTime(3000.0)
Line 303: Line 282:
 
|}
 
|}
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Constructor RTime object
 
# Constructor RTime object
 
time1 = RLPy.RTime()
 
time1 = RLPy.RTime()
Line 323: Line 302:
 
:Midst unit of a given time object - RLPy.Unit
 
:Midst unit of a given time object - RLPy.Unit
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Get time unit
 
# Get time unit
 
time = RLPy.RTime(0, RLPy.kMilliseconds)
 
time = RLPy.RTime(0, RLPy.kMilliseconds)
Line 339: Line 318:
 
:Time value of the time object - float
 
:Time value of the time object - float
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Get time value
 
# Get time value
 
time = RLPy.RTime(3000)
 
time = RLPy.RTime(3000)
Line 355: Line 334:
 
:'''eUnit''' [IN] Midst unit - RLPy.Unit
 
:'''eUnit''' [IN] Midst unit - RLPy.Unit
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Set time unit
 
# Set time unit
 
time = RLPy.RTime(0)
 
time = RLPy.RTime(0)
Line 370: Line 349:
 
:'''fValue''' [IN] Time value - float
 
:'''fValue''' [IN] Time value - float
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Set time value
 
# Set time value
 
time = RLPy.RTime(0)
 
time = RLPy.RTime(0)
Line 383: Line 362:
 
:The converted time value of the time object in the specified midst unit - float
 
:The converted time value of the time object in the specified midst unit - float
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# As units milliseconds
 
# As units milliseconds
 
time = RLPy.RTime(2000)
 
time = RLPy.RTime(2000)
Line 400: Line 379:
 
:The corresponding frame index - int
 
:The corresponding frame index - int
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Get frame index
 
# Get frame index
 
frame_index = RLPy.RTime.GetFrameIndex(RLPy.RTime(3000.0), 60)
 
frame_index = RLPy.RTime.GetFrameIndex(RLPy.RTime(3000.0), 60)
Line 417: Line 396:
 
:The corresponding time - [[IC_Python_API:RLPy_RTime|RTime]]
 
:The corresponding time - [[IC_Python_API:RLPy_RTime|RTime]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Get indexed frame time
 
# Get indexed frame time
 
frame_time = RLPy.RTime.IndexedFrameTime(180, 60)
 
frame_time = RLPy.RTime.IndexedFrameTime(180, 60)
Line 434: Line 413:
 
:The corresponding time - [[IC_Python_API:RLPy_RTime|RTime]]
 
:The corresponding time - [[IC_Python_API:RLPy_RTime|RTime]]
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="python" line='line'>
 
# Get frame time
 
# Get frame time
 
frame_time = RLPy.RTime.GetFrameTime(RLPy.RTime(3002), 60)
 
frame_time = RLPy.RTime.GetFrameTime(RLPy.RTime(3002), 60)
 
print(time2)
 
print(time2)
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 00:35, 14 April 2020

Main article: Modules.
Last modified: 04/14/2020

Description

This class represents the midst unit (a.k.a unit of time) in animation. Currently, it provides two states: milliseconds and 60FPS (frames per second). When you create an animation key, you'll need to set the value according to the incoming time. This class also provides different unit conversions such as GetFrameIndex, IndexedFrameTime, and GetFrameTime to ensure that the time retrieved is alined with animation frames.

Operators

==

The "equal to" operator. Check if two time objects are equal.

Returns

True if the values of the two time objects are equal, else False.

See Also: !=

 1 # Equivalence operator
 2 time1 = RLPy.RTime(3000)
 3 time2 = RLPy.RTime(3000)
 4 print(time1 == time2)
 5 
 6 # Compare current time
 7 time = RLPy.RGlobal.GetTime()
 8 
 9 if time == RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
10    print("equal")
11 elif time > RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
12    print("greater")
13 elif time < RLPy.RGlobal.SetTime(RLPy.RTime(1000)):
14    print("less")

!=

The "not equal to" operator. Check if two time object are not equal.

Returns

True if the values of the two time objects are not equal, otherwise return False.

See Also: ==

1 # Not equal operator
2 time1 = RLPy.RTime(3000)
3 time2 = RLPy.RTime(3000, RLPy.k60FPS)
4 print(time1 != time2)

<

The "less than" operator. Check if a time object is less than another.

Returns

True if this value is less than or equal to another RTimevalue, else False.

See Also: <=

1 # Less equal operator
2 time1 = RLPy.RTime(1000)
3 time2 = RLPy.RTime(2000)
4 print(time1 <= time2)

>=

The "greater than or equal" operator. Check if a time object is greater than or equal to another.

Returns

True if this RTimevalue is greater than or equal to another RTimevalue, else False.

See Also: >

1 # Less equal operator
2 time1 = RLPy.RTime(2000)
3 time2 = RLPy.RTime(1000)
4 print(time1 >= time2)

<

The "less than" operator. Check if a time object is less than another.

Returns

True if this RTimevalue is less than another RTimevalue, else False.
1 # Less than operator
2 time1 = RLPy.RTime(1000)
3 time2 = RLPy.RTime(3000)
4 print(time1 < time2)

>

The "greater than" operator. Check if a time object is greater than another.

Returns

True if this RTimevalue is greater than another RTimevalue, else False.

See Also: >=

1 # Greater than operator
2 time1 = RLPy.RTime(3000)
3 time2 = RLPy.RTime(1000)
4 print(time1 > time2)

+

The addition operator. Add two time objects together.

Returns

Sum of the two time objects - RTime

See Also: +=

1 # Addition operator
2 time1 = RLPy.RTime(1000)
3 time2 = RLPy.RTime(2000)
4 time3 = time1 + time2
5 print(time3)

+=

The "addition assignment" operator. Add a time object to this time object.

Returns

Sum of the two time objects.

See Also: +

1 # Addition assignment operator
2 time1 = RLPy.RTime(1000)
3 time2 = RLPy.RTime(3000)
4 time1 += time2
5 print(time1)

-

The 'subtraction' operator. Minus a time object from another.

Returns

Difference of the two time objects - RTime

See Also: -=

1 # Subtraction operator
2 time1 = RLPy.RTime(1000)
3 time2 = RLPy.RTime(2000)
4 time3 = time2 - time1
5 print(time3)

-=

The "subtraction assignment" operator. Subtract a time object from this time object.

Returns

Difference of the two time objects - RTime

See Also: -

1 # Subtraction assignment operator
2 time1 = RLPy.RTime(1000)
3 time2 = RLPy.RTime(3000)
4 time2 -= time1
5 print(time2)

*

The "multiplication" operator. Multiply two time objects.

Returns

Time object with the multiplied value - RTime

See Also: *=

1 # Multiplication operator
2 time1 = RLPy.RTime(100.0)
3 time2 = time1 * 0.5
4 print(time2)

*=

The "multiplication assignment" operator. Mutliply a time object to this time object.

Returns

Time object with the product value - RTime

See Also: *

1 # Multiplication assignment operator
2 time1 = RLPy.RTime(200.0)
3 time1 *= 1.5
4 print(time1)

/

The "division" operator. Divide two time objects.

Returns

Time object with the quotient value - RTime

See Also: /=

1 # Division operator
2 time1 = RLPy.RTime(3000)
3 time2 = time1 / 150
4 print(time2)

/=

The "division assignment" operator. Divide a time object from this time object.

Returns

Time object with the quotient value - RTime

See Also: /

1 # Division assignment operator
2 time1 = RLPy.RTime(3000.0)
3 time1 /= 15
4 print(time1)

Member Functions

__init__ ( self, args )

This operation creates a time object instance.

Currently provided units of time (RLPy.Unit):

Unit Description
RLPy.kInvalid Invalid value
RLPy.kHours Not supported
RLPy.kMinutes Not supported
RLPy.kSeconds Not supported
RLPy.kMilliseconds 1000 units per second
RLPy.k30FPS Not supported
RLPy.k60FPS 1 second equals 60 frames
RLPy.kUserDef Not supported
1 # Constructor RTime object
2 time1 = RLPy.RTime()
3 
4 # Constructor RTime object with RTime object
5 time2 = RLPy.RTime(time1)
6 
7 # Constructor RTime object with float value and unit
8 time3 = RLPy.RTime(0, RLPy.kMilliseconds)

GetUnit ( self )

Get the midst unit for the time object.

See Also: SetUnit( self, eUnit )

Returns

Midst unit of a given time object - RLPy.Unit
1 # Get time unit
2 time = RLPy.RTime(0, RLPy.kMilliseconds)
3 time_unit = time.GetUnit()
4 print(time_unit)

GetValue ( self )

Get the time value of the time object.

See Also: SetValue( self, fValue )

Returns

Time value of the time object - float
1 # Get time value
2 time = RLPy.RTime(3000)
3 time_value = time.GetValue()
4 print(time_value)

SetUnit ( self, eUnit )

Set the midst unit for the time object.

See Also: GetUnit( self )

Parameters

eUnit [IN] Midst unit - RLPy.Unit
1 # Set time unit
2 time = RLPy.RTime(0)
3 time.SetUnit(RLPy.k60FPS)

SetValue ( self, fValue )

Set the time value for the time object.

See Also: GetValue( self )

Parameters

fValue [IN] Time value - float
1 # Set time value
2 time = RLPy.RTime(0)
3 time.SetValue(3000)

AsUnits ( self, eUnit )

Convert the time value to a specified midst unit without changing it for the time object.

Returns

The converted time value of the time object in the specified midst unit - float
1 # As units milliseconds
2 time = RLPy.RTime(2000)
3 time_value = time.AsUnits(RLPy.kMilliseconds)

GetFrameIndex ( self, kTime, nFps )

Get the frame index of a given time based on a specified FPS.

Parameters

kTime [IN] animation time - RTime
nFps [IN] frames per second - int

Returns

The corresponding frame index - int
1 # Get frame index
2 frame_index = RLPy.RTime.GetFrameIndex(RLPy.RTime(3000.0), 60)
3 print(frame_index)

IndexedFrameTime ( self, nFrameIndex, nFps )

Get the time of a given frame index based on a specified FPS.

Parameters

nFrameIndex [IN] input frame index - int
nFps [IN] frames per second - int

Returns

The corresponding time - RTime
1 # Get indexed frame time
2 frame_time = RLPy.RTime.IndexedFrameTime(180, 60)
3 print(frame_time)

GetFrameTime ( self, kTime, nFps )

Checks if the input time falls on a specific frame based on the input FPS. If the time does not match up correctly with any frame, then return the time of the nearest frame. This ensures that the return value will always align to a specific animation frame.

Parameters

kTime [IN] animation time - RTime
nFps [IN] frames per second - int

Returns

The corresponding time - RTime
1 # Get frame time
2 frame_time = RLPy.RTime.GetFrameTime(RLPy.RTime(3002), 60)
3 print(time2)