mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 06:12:19 +01:00
Blender now loads the animation included with the layout
This commit is contained in:
parent
14e2c07be4
commit
38ce006a0e
2 changed files with 27 additions and 0 deletions
|
|
@ -92,6 +92,10 @@ class JsonLayoutLoader(plugin.AssetLoader):
|
|||
'animation_asset': asset
|
||||
}
|
||||
|
||||
if element.get('animation'):
|
||||
options['animation_file'] = str(Path(libpath).with_suffix(
|
||||
'')) + "." + element.get('animation')
|
||||
|
||||
# This should return the loaded asset, but the load call will be
|
||||
# added to the queue to run in the Blender main thread, so
|
||||
# at this time it will not return anything. The assets will be
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from typing import Dict, List, Optional
|
|||
import bpy
|
||||
|
||||
from avalon import api
|
||||
from avalon.blender import lib as avalon_lib
|
||||
from avalon.blender.pipeline import AVALON_CONTAINERS
|
||||
from avalon.blender.pipeline import AVALON_CONTAINER_ID
|
||||
from avalon.blender.pipeline import AVALON_PROPERTY
|
||||
|
|
@ -196,12 +197,14 @@ class BlendRigLoader(plugin.AssetLoader):
|
|||
plugin.deselect_all()
|
||||
|
||||
create_animation = False
|
||||
anim_file = None
|
||||
|
||||
if options is not None:
|
||||
parent = options.get('parent')
|
||||
transform = options.get('transform')
|
||||
action = options.get('action')
|
||||
create_animation = options.get('create_animation')
|
||||
anim_file = options.get('animation_file')
|
||||
|
||||
if parent and transform:
|
||||
location = transform.get('translation')
|
||||
|
|
@ -254,6 +257,26 @@ class BlendRigLoader(plugin.AssetLoader):
|
|||
|
||||
plugin.deselect_all()
|
||||
|
||||
if anim_file:
|
||||
bpy.ops.import_scene.fbx(filepath=anim_file)
|
||||
|
||||
imported = avalon_lib.get_selection()
|
||||
|
||||
armature = [
|
||||
o for o in asset_group.children if o.type == 'ARMATURE'][0]
|
||||
|
||||
imported_group = [
|
||||
o for o in imported if o.type == 'EMPTY'][0]
|
||||
|
||||
for obj in imported:
|
||||
if obj.type == 'ARMATURE':
|
||||
if not armature.animation_data:
|
||||
armature.animation_data_create()
|
||||
armature.animation_data.action = obj.animation_data.action
|
||||
|
||||
self._remove(imported_group)
|
||||
bpy.data.objects.remove(imported_group)
|
||||
|
||||
bpy.context.scene.collection.objects.link(asset_group)
|
||||
|
||||
asset_group[AVALON_PROPERTY] = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue