2025-12-01
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
from bpy.types import Scene, Object
|
||||
from bpy.props import IntProperty, StringProperty, EnumProperty, BoolProperty, FloatProperty, CollectionProperty, PointerProperty
|
||||
|
||||
from .core import animation_lists, state_manager, recorder, retargeting
|
||||
from .panels import retargeting as retargeting_ui
|
||||
|
||||
|
||||
def register():
|
||||
# Receiver
|
||||
Scene.rsl_receiver_port = IntProperty(
|
||||
name='Streaming Port',
|
||||
description="The port defined in Rokoko Studio",
|
||||
default=14043,
|
||||
min=1,
|
||||
max=65535
|
||||
)
|
||||
Scene.rsl_receiver_fps = IntProperty(
|
||||
name='FPS',
|
||||
description="How often is the data received",
|
||||
default=60,
|
||||
min=1,
|
||||
max=100
|
||||
)
|
||||
Scene.rsl_scene_scaling = FloatProperty(
|
||||
name='Scene Scaling',
|
||||
description="This allows you to scale the position of props and trackers."
|
||||
"\nUseful to align their positions with armatures",
|
||||
default=1,
|
||||
precision=3,
|
||||
step=1
|
||||
)
|
||||
Scene.rsl_reset_scene_on_stop = BoolProperty(
|
||||
name='Reset Scene on Stop',
|
||||
description='This will reset the location and position of animated objects to the state of before starting the receiver',
|
||||
default=True
|
||||
)
|
||||
Scene.rsl_hide_mesh_during_play = BoolProperty(
|
||||
name='Hide Meshes during Play',
|
||||
description='This will hide all meshes that are animated by armatures'
|
||||
'\nto greatly reduce lag and increase performance.'
|
||||
'\nThis will not hide animated faces',
|
||||
default=False,
|
||||
update=state_manager.update_hidden_meshes
|
||||
)
|
||||
Scene.rsl_recording = BoolProperty(
|
||||
name='Toggle Recording',
|
||||
description='Start and stop recording of the data from Rokoko Studio',
|
||||
default=False,
|
||||
update=recorder.toggle_recording
|
||||
)
|
||||
|
||||
# Command API
|
||||
Scene.rsl_command_ip_address = StringProperty(
|
||||
name='IP Address',
|
||||
description='Input the IP address of Rokoko Studio',
|
||||
default='127.0.0.1',
|
||||
maxlen=15
|
||||
)
|
||||
Scene.rsl_command_ip_port = IntProperty(
|
||||
name='Command API Port',
|
||||
description="The port defined in Rokoko Studio",
|
||||
default=14053,
|
||||
min=1,
|
||||
max=65535
|
||||
)
|
||||
Scene.rsl_command_api_key = StringProperty(
|
||||
name='API Key',
|
||||
description='Input the API key displayed in Rokoko Studio',
|
||||
default='1234',
|
||||
maxlen=15
|
||||
)
|
||||
|
||||
# Retargeting
|
||||
Scene.rsl_retargeting_armature_source = PointerProperty(
|
||||
name='Source',
|
||||
description='Select the armature with the animation that you want to retarget',
|
||||
type=Object,
|
||||
poll=retargeting.poll_source_armatures,
|
||||
update=retargeting.clear_bone_list
|
||||
)
|
||||
Scene.rsl_retargeting_armature_target = PointerProperty(
|
||||
name='Target',
|
||||
description='Select the armature that should receive the animation',
|
||||
type=Object,
|
||||
poll=retargeting.poll_target_armatures,
|
||||
update=retargeting.clear_bone_list
|
||||
)
|
||||
Scene.rsl_retargeting_auto_scaling = BoolProperty(
|
||||
name='Auto Scale',
|
||||
description='This will scale the source armature to fit the height of the target armature.'
|
||||
'\nBoth armatures have to be in T-pose for this to work correctly',
|
||||
default=True
|
||||
)
|
||||
Scene.rsl_retargeting_use_pose = EnumProperty(
|
||||
name="Use Pose",
|
||||
description='Select which pose of the source and target armature to use to retarget the animation.'
|
||||
'\nBoth armatures should be in the same pose before retargeting',
|
||||
items=[
|
||||
("REST", "Rest", "Select this to use the rest pose during retargeting."),
|
||||
("CURRENT", "Current", "Select this to use the current pose during retargeting.")
|
||||
]
|
||||
)
|
||||
Scene.rsl_retargeting_bone_list = CollectionProperty(
|
||||
type=retargeting_ui.BoneListItem
|
||||
)
|
||||
Scene.rsl_retargeting_bone_list_index = IntProperty(
|
||||
name="Index for the retargeting bone list",
|
||||
default=0
|
||||
)
|
||||
|
||||
# Objects
|
||||
Object.rsl_animations_props_trackers = EnumProperty(
|
||||
name='Tracker or Prop',
|
||||
description='Select the prop or tracker that you want to attach this object to',
|
||||
items=animation_lists.get_props_trackers,
|
||||
update=state_manager.update_object
|
||||
)
|
||||
Object.rsl_animations_faces = EnumProperty(
|
||||
name='Face',
|
||||
description='Select the face that you want to attach this mesh to',
|
||||
items=animation_lists.get_faces,
|
||||
update=state_manager.update_face
|
||||
)
|
||||
Object.rsl_animations_actors = EnumProperty(
|
||||
name='Actor',
|
||||
description='Select the actor that you want to attach this armature to',
|
||||
items=animation_lists.get_actors,
|
||||
update=state_manager.update_actor
|
||||
)
|
||||
Object.rsl_use_custom_scale = BoolProperty(
|
||||
name='Use Custom Scale',
|
||||
description='Select this if the objects scene scaling should be overwritten',
|
||||
default=False,
|
||||
)
|
||||
Object.rsl_custom_scene_scale = FloatProperty(
|
||||
name='Custom Scene Scaling',
|
||||
description="This allows you to scale the position independently from the scene scale.",
|
||||
default=1,
|
||||
precision=3,
|
||||
step=1
|
||||
)
|
||||
|
||||
# Face shapekeys
|
||||
for shape in animation_lists.face_shapes:
|
||||
setattr(Object, 'rsl_face_' + shape, StringProperty(
|
||||
name=shape,
|
||||
description='Select the shapekey that should be animated by this shape'
|
||||
))
|
||||
|
||||
# Actor bones
|
||||
for bone in animation_lists.get_bones().keys():
|
||||
setattr(Object, 'rsl_actor_' + bone, StringProperty(
|
||||
name=bone,
|
||||
description='Select the bone that corresponds to the actors bone'
|
||||
))
|
||||
Reference in New Issue
Block a user