Cleanup and modernization
This commit is contained in:
@@ -4,10 +4,12 @@ from contextlib import contextmanager
|
||||
from fractions import Fraction
|
||||
from typing import List
|
||||
|
||||
from ear.fileio.adm.elements import ObjectCartesianPosition, JumpPosition, AudioBlockFormatObjects
|
||||
from ear.fileio.adm.elements import (ObjectCartesianPosition, JumpPosition,
|
||||
AudioBlockFormatObjects)
|
||||
from ear.fileio.bw64 import Bw64Reader
|
||||
|
||||
from .geom_utils import speaker_active_time_range, compute_relative_vector, room_norm_vector
|
||||
from .geom_utils import (speaker_active_time_range, compute_relative_vector,
|
||||
room_norm_vector)
|
||||
from .speaker_utils import solo_speakers, unmute_all_speakers
|
||||
|
||||
|
||||
@@ -89,12 +91,14 @@ class ObjectMix:
|
||||
scene_name = bpy.path.clean_name(scene.name)
|
||||
speaker_name = bpy.path.clean_name(self.object_name)
|
||||
|
||||
self.intermediate_filename = os.path.join(self.base_dir, "%s_%s.wav" % (scene_name, speaker_name))
|
||||
self.intermediate_filename = os.path.join(
|
||||
self.base_dir, "%s_%s.wav" % (scene_name, speaker_name))
|
||||
|
||||
bpy.ops.sound.mixdown(filepath=self.intermediate_filename,
|
||||
container='WAV', codec='PCM', format='S24')
|
||||
|
||||
print("Created mixdown named {}".format(self.intermediate_filename))
|
||||
print("Created mixdown named {}"
|
||||
.format(self.intermediate_filename))
|
||||
|
||||
unmute_all_speakers(scene)
|
||||
|
||||
@@ -104,16 +108,24 @@ class ObjectMix:
|
||||
|
||||
for speaker_obj in self.sources:
|
||||
speaker_interval = speaker_active_time_range(speaker_obj)
|
||||
for frame in range(speaker_interval.start_frame, speaker_interval.end_frame + 1):
|
||||
for frame in range(speaker_interval.start_frame,
|
||||
speaker_interval.end_frame + 1):
|
||||
|
||||
assert self.scene.camera
|
||||
self.scene.frame_set(frame)
|
||||
relative_vector = compute_relative_vector(camera=self.scene.camera, target=speaker_obj)
|
||||
relative_vector = compute_relative_vector(
|
||||
camera=self.scene.camera,
|
||||
target=speaker_obj)
|
||||
|
||||
norm_vec = room_norm_vector(relative_vector, room_size=room_size)
|
||||
norm_vec = room_norm_vector(
|
||||
relative_vector, room_size=room_size)
|
||||
|
||||
pos = ObjectCartesianPosition(X=norm_vec.x, Y=norm_vec.y, Z=norm_vec.z)
|
||||
pos = ObjectCartesianPosition(X=norm_vec.x, Y=norm_vec.y,
|
||||
Z=norm_vec.z)
|
||||
|
||||
if len(block_formats) == 0 or pos != block_formats[-1].position:
|
||||
jp = JumpPosition(flag=True, interpolationLength=Fraction(1, fps * 2))
|
||||
jp = JumpPosition(
|
||||
flag=True, interpolationLength=Fraction(1, fps * 2))
|
||||
block = AudioBlockFormatObjects(position=pos,
|
||||
rtime=Fraction(frame, fps),
|
||||
duration=Fraction(1, fps),
|
||||
@@ -122,7 +134,8 @@ class ObjectMix:
|
||||
|
||||
block_formats.append(block)
|
||||
else:
|
||||
block_formats[-1].duration = block_formats[-1].duration + Fraction(1, fps)
|
||||
block_formats[-1].duration = block_formats[-1].duration + \
|
||||
Fraction(1, fps)
|
||||
|
||||
return block_formats
|
||||
|
||||
@@ -157,7 +170,7 @@ class ObjectMixPool:
|
||||
return min(lengths)
|
||||
|
||||
|
||||
def object_mixes_from_source_groups(groups: List[List[bpy.types.Object]],
|
||||
def object_mixes_from_source_groups(groups: List[List[bpy.types.Object]],
|
||||
scene: bpy.types.Scene, base_dir: str):
|
||||
mixes = []
|
||||
for group in groups:
|
||||
|
||||
Reference in New Issue
Block a user