Blender Kitsu: Refactor Shot Builder #183
@ -6,8 +6,15 @@ from ..types import (
|
|||||||
Shot,
|
Shot,
|
||||||
TaskType,
|
TaskType,
|
||||||
)
|
)
|
||||||
|
|
||||||
from blender_kitsu import prefs
|
from blender_kitsu import prefs
|
||||||
|
|
||||||
|
#################
|
||||||
|
# Constants
|
||||||
|
#################
|
||||||
|
CAMERA_NAME = 'CAM-camera'
|
||||||
|
|
||||||
|
|
||||||
def get_project_root_path() -> Path:
|
def get_project_root_path() -> Path:
|
||||||
addon_prefs = prefs.addon_prefs_get(bpy.context)
|
addon_prefs = prefs.addon_prefs_get(bpy.context)
|
||||||
return Path(addon_prefs.project_root_dir).resolve()
|
return Path(addon_prefs.project_root_dir).resolve()
|
||||||
@ -39,6 +46,51 @@ def set_render_engine(scene: bpy.types.Scene, engine='CYCLES'):
|
|||||||
"""
|
"""
|
||||||
scene.render.engine = engine
|
scene.render.engine = engine
|
||||||
|
|
||||||
|
|
||||||
|
def link_camera_rig(
|
||||||
|
scene: bpy.types.Scene,
|
||||||
|
output_collection: bpy.types.Collection,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Function to load the camera rig. The rig will be added to the output collection
|
||||||
|
of the shot and the camera will be set as active camera.
|
||||||
|
"""
|
||||||
|
# Load camera rig.
|
||||||
|
project_path = get_project_root_path()
|
||||||
|
path = f"{project_path}/pro/assets/cam/camera_rig.blend"
|
||||||
|
|
||||||
|
if not Path(path).exists():
|
||||||
|
camera_data = bpy.data.cameras.new(name=CAMERA_NAME)
|
||||||
|
camera_object = bpy.data.objects.new(name=CAMERA_NAME, object_data=camera_data)
|
||||||
|
scene.collection.objects.link(camera_object)
|
||||||
|
output_collection.objects.link(camera_object)
|
||||||
|
return
|
||||||
|
|
||||||
|
collection_name = (
|
||||||
|
"CA-camera_rig" # TODO Rename the asset itself, this breaks convention
|
||||||
|
)
|
||||||
|
bpy.ops.wm.link(
|
||||||
|
filepath=path,
|
||||||
|
directory=path + "/Collection",
|
||||||
|
filename=collection_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
# bpy.ops.object.make_override_library()
|
||||||
|
|
||||||
|
camera_col = bpy.data.collections.get(collection_name)
|
||||||
|
override_camera_col = camera_col.override_hierarchy_create(
|
||||||
|
bpy.context.scene, bpy.context.view_layer, do_fully_editable=True
|
||||||
|
)
|
||||||
|
|
||||||
|
# Make library override.
|
||||||
|
output_collection.children.link(override_camera_col)
|
||||||
|
# scene.collection.children.link(override_camera_col)
|
||||||
|
|
||||||
|
# Set the camera of the camera rig as active scene camera.
|
||||||
|
camera = override_camera_col.objects.get(CAMERA_NAME)
|
||||||
|
scene.camera = camera
|
||||||
|
|
||||||
|
|
||||||
def task_type_anim_output_collection(
|
def task_type_anim_output_collection(
|
||||||
scene: bpy.types.Scene, shot: Shot, task_type: TaskType
|
scene: bpy.types.Scene, shot: Shot, task_type: TaskType
|
||||||
) -> bpy.types.Collection:
|
) -> bpy.types.Collection:
|
||||||
|
@ -2,7 +2,12 @@ import bpy
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List, Any, Tuple, Set, cast
|
from typing import List, Any, Tuple, Set, cast
|
||||||
from .. import prefs, cache
|
from .. import prefs, cache
|
||||||
from .core import get_shot_task_name, get_file_dir
|
from .core import (
|
||||||
|
get_file_dir,
|
||||||
|
set_render_engine,
|
||||||
|
link_camera_rig,
|
||||||
|
task_type_anim_output_collection,
|
||||||
|
)
|
||||||
|
|
||||||
active_project = None
|
active_project = None
|
||||||
|
|
||||||
@ -143,6 +148,8 @@ class KITSU_OT_build_new_shot(bpy.types.Operator):
|
|||||||
set_render_engine(context.scene)
|
set_render_engine(context.scene)
|
||||||
|
|
||||||
output_col = task_type_anim_output_collection(context.scene, shot, task_type)
|
output_col = task_type_anim_output_collection(context.scene, shot, task_type)
|
||||||
|
link_camera_rig(context.scene, output_col)
|
||||||
|
|
||||||
print("Create shot with the following details") # TODO Remove
|
print("Create shot with the following details") # TODO Remove
|
||||||
print(f"Seq Name: '{seq.name}' Seq ID: '{self.seq_id}'")
|
print(f"Seq Name: '{seq.name}' Seq ID: '{self.seq_id}'")
|
||||||
print(f"Shot Name: '{shot.name}' Shot ID: '{self.shot_id}'")
|
print(f"Shot Name: '{shot.name}' Shot ID: '{self.shot_id}'")
|
||||||
|
Loading…
Reference in New Issue
Block a user