IC Python API:RLPy RTime

From Reallusion Wiki!
Revision as of 23:15, 8 April 2020 by Chuck (RL) (Talk | contribs)

Jump to: navigation, search
Main article: Modules.
Last modified: 04/8/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.

# 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

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: !=

# Equivalence operator
time1 = RLPy.RTime(3000)
time2 = RLPy.RTime(3000)
print(time1 == time2)

!=

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: ==

# Not equal operator
time1 = RLPy.RTime(3000)
time2 = RLPy.RTime(3000, RLPy.k60FPS)
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: <=

# Less equal operator
time1 = RLPy.RTime(1000)
time2 = RLPy.RTime(2000)
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: >

# Less equal operator
time1 = RLPy.RTime(2000)
time2 = RLPy.RTime(1000)
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.
# Less than operator
time1 = RLPy.RTime(1000)
time2 = RLPy.RTime(3000)
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: >=

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

+

The addition operator. Add two time objects together.

Returns

Sum of the two time objects - RTime

See Also: +=

# Addition operator
time1 = RLPy.RTime(1000)
time2 = RLPy.RTime(2000)
time3 = time1 + time2
print(time3)

+=

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

Returns

Sum of the two time objects.

See Also: +

# Addition assignment operator
time1 = RLPy.RTime(1000)
time2 = RLPy.RTime(3000)
time1 += time2
print(time1)

-

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

Returns

Difference of the two time objects - RTime

See Also: -=

# Subtraction operator
time1 = RLPy.RTime(1000)
time2 = RLPy.RTime(2000)
time3 = time2 - time1
print(time3)

-=

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

Returns

Difference of the two time objects - RTime

See Also: -

# Subtraction assignment operator
time1 = RLPy.RTime(1000)
time2 = RLPy.RTime(3000)
time2 -= time1
print(time2)

*

The "multiplication" operator. Multiply two time objects.

Returns

Time object with the multiplied value - RTime

See Also: *=

# Multiplication operator
time1 = RLPy.RTime(100.0)
time2 = time1 * 0.5
print(time2)

*=

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

Returns

Time object with the product value - RTime

See Also: *

# Multiplication assignment operator
time1 = RLPy.RTime(200.0)
time1 *= 1.5
print(time1)

/

The "division" operator. Divide two time objects.

Returns

Time object with the quotient value - RTime

See Also: /=

# Division operator
time1 = RLPy.RTime(3000)
time2 = time1 / 150
print(time2)

/=

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

Returns

Time object with the quotient value - RTime

See Also: /

# Division assignment operator
time1 = RLPy.RTime(3000.0)
time1 /= 15
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
# Constructor RTime object
time1 = RLPy.RTime()

# Constructor RTime object with RTime object
time2 = RLPy.RTime(time1)

# Constructor RTime object with float value and unit
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
# Get time unit
time = RLPy.RTime(0, RLPy.kMilliseconds)
time_unit = time.GetUnit()
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
# Get time value
time = RLPy.RTime(3000)
time_value = time.GetValue()
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
# Set time unit
time = RLPy.RTime(0)
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
# Set time value
time = RLPy.RTime(0)
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
# As units milliseconds
time = RLPy.RTime(2000)
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
# Get frame index
frame_index = RLPy.RTime.GetFrameIndex(RLPy.RTime(3000.0), 60)
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
# Get indexed frame time
frame_time = RLPy.RTime.IndexedFrameTime(180, 60)
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
# Get frame time
frame_time = RLPy.RTime.GetFrameTime(RLPy.RTime(3002), 60)
print(time2)