From ba8f20e0e257c1a00764b0d3d30e02dc18c2db3d Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sun, 20 Sep 2020 09:21:31 -0700 Subject: [PATCH] Removed some dead imports And reformatted --- sound_objects/intern/add_sound_to_meshes.py | 74 ++++++++++----------- sound_objects/operator_wav_import.py | 8 +-- 2 files changed, 37 insertions(+), 45 deletions(-) diff --git a/sound_objects/intern/add_sound_to_meshes.py b/sound_objects/intern/add_sound_to_meshes.py index cb25eeb..b14192f 100644 --- a/sound_objects/intern/add_sound_to_meshes.py +++ b/sound_objects/intern/add_sound_to_meshes.py @@ -1,22 +1,23 @@ import bpy -import numpy from numpy.linalg import norm from random import uniform, gauss from math import floor -from enum import IntFlag, Enum +from enum import Enum from dataclasses import dataclass import sys - + from .soundbank import SoundBank + class TriggerMode(str, Enum): START_FRAME = "START_FRAME" MIN_DISTANCE = "MIN_DISTANCE" RANDOM = "RANDOM" RANDOM_GAUSSIAN = "RANDOM_GAUSSIAN" + @dataclass class SpatialEnvelope: considered_range: float @@ -25,12 +26,13 @@ class SpatialEnvelope: min_distance: float exits_range: int + def sound_camera_spatial_envelope(scene: bpy.types.Scene, speaker_obj, considered_range: float) -> SpatialEnvelope: min_dist = sys.float_info.max min_dist_frame = scene.frame_start enters_range_frame = None exits_range_frame = None - + in_range = False for frame in range(scene.frame_start, scene.frame_end + 1): scene.frame_set(frame) @@ -50,7 +52,7 @@ def sound_camera_spatial_envelope(scene: bpy.types.Scene, speaker_obj, considere in_range = False break - return SpatialEnvelope(considered_range=considered_range, + return SpatialEnvelope(considered_range=considered_range, enters_range=enters_range_frame, exits_range=exits_range_frame, closest_range=min_dist_frame, @@ -64,7 +66,7 @@ def closest_approach_to_camera(scene, speaker_object): scene.frame_set(frame) rel = speaker_object.matrix_world.to_translation() - scene.camera.matrix_world.to_translation() dist = norm(rel) - + if dist < max_dist: max_dist = dist at_time = frame @@ -78,13 +80,8 @@ def track_speaker_to_camera(speaker, camera): camera_lock.use_target_z = True -def random_sound_startswith(prefix): - sounds = [sound for sound in bpy.data.sounds if sound.name.startswith(prefix)] - return choice(sounds) - - def spot_audio(context, speaker, trigger_mode, sync_peak, sound_peak, sound_length, gaussian_stddev, envelope): - + audio_scene_in = context.scene.frame_start if trigger_mode == TriggerMode.START_FRAME: audio_scene_in = context.scene.frame_start @@ -92,7 +89,7 @@ def spot_audio(context, speaker, trigger_mode, sync_peak, sound_peak, sound_leng audio_scene_in = envelope.closest_range elif trigger_mode == TriggerMode.RANDOM: - audio_scene_in = floor(uniform(context.scene.frame_start, context.scene.frame_end)) + audio_scene_in = floor(uniform(context.scene.frame_start, context.scene.frame_end)) elif trigger_mode == TriggerMode.RANDOM_GAUSSIAN: mean = (context.scene.frame_end - context.scene.frame_start) / 2 audio_scene_in = floor(gauss(mean, gaussian_stddev)) @@ -107,7 +104,7 @@ def spot_audio(context, speaker, trigger_mode, sync_peak, sound_peak, sound_leng # we have to do this weird dance because setting a start time # that happens after the end time has side effects - target_strip.frame_end = context.scene.frame_end + target_strip.frame_end = context.scene.frame_end target_strip.frame_start = audio_scene_in target_strip.frame_end = audio_scene_in + sound_length @@ -115,14 +112,14 @@ def spot_audio(context, speaker, trigger_mode, sync_peak, sound_peak, sound_leng def sync_audio(speaker, sound, context, sync_peak, trigger_mode, gaussian_stddev, sound_bank, envelope): print("sync_audio entered") fps = context.scene.render.fps - + audiofile_info = sound_bank.get_audiofile_info(sound, fps) - spot_audio(context=context, speaker=speaker, trigger_mode=trigger_mode, + spot_audio(context=context, speaker=speaker, trigger_mode=trigger_mode, gaussian_stddev=gaussian_stddev, sync_peak=sync_peak, - sound_peak= audiofile_info[0], sound_length=audiofile_info[1], + sound_peak=audiofile_info[0], sound_length=audiofile_info[1], envelope=envelope) - + def constrain_speaker_to_mesh(speaker_obj, mesh): speaker_obj.constraints.clear() @@ -134,13 +131,13 @@ def constrain_speaker_to_mesh(speaker_obj, mesh): def apply_gain_envelope(speaker_obj, envelope): pass -def add_speakers_to_meshes(meshes, context, sound=None, - sound_name_prefix = None, - sync_peak = False, - trigger_mode = TriggerMode.START_FRAME, - gaussian_stddev = 1. + +def add_speakers_to_meshes(meshes, context, sound=None, + sound_name_prefix=None, + sync_peak=False, + trigger_mode=TriggerMode.START_FRAME, + gaussian_stddev=1. ): - context.scene.frame_set(0) sound_bank = SoundBank(prefix=sound_name_prefix) @@ -148,34 +145,31 @@ def add_speakers_to_meshes(meshes, context, sound=None, if mesh.type != 'MESH': print("object is not mesh") continue - + envelope = sound_camera_spatial_envelope(context.scene, mesh, considered_range=5.) - speaker_obj = next( (spk for spk in context.scene.objects \ - if spk.type == 'SPEAKER' and spk.constraints['Copy Location'].target == mesh ), None) - + speaker_obj = next((spk for spk in context.scene.objects + if spk.type == 'SPEAKER' and spk.constraints['Copy Location'].target == mesh), None) + if speaker_obj is None: bpy.ops.object.speaker_add() speaker_obj = context.selected_objects[0] - + constrain_speaker_to_mesh(speaker_obj, mesh) track_speaker_to_camera(speaker_obj, context.scene.camera) if sound_name_prefix is not None: sound = sound_bank.random_sound() - + if sound is not None: speaker_obj.data.sound = sound - - sync_audio(speaker_obj, sound, context, - sync_peak=sync_peak, - trigger_mode=trigger_mode, - gaussian_stddev=gaussian_stddev, - sound_bank=sound_bank, envelope=envelope) - + + sync_audio(speaker_obj, sound, context, + sync_peak=sync_peak, + trigger_mode=trigger_mode, + gaussian_stddev=gaussian_stddev, + sound_bank=sound_bank, envelope=envelope) + apply_gain_envelope(speaker_obj, envelope) speaker_obj.data.update_tag() - - - \ No newline at end of file diff --git a/sound_objects/operator_wav_import.py b/sound_objects/operator_wav_import.py index 6eec175..b22a3b2 100644 --- a/sound_objects/operator_wav_import.py +++ b/sound_objects/operator_wav_import.py @@ -1,7 +1,7 @@ import bpy import os -def read_some_data(context, filepath, pack, dir, fake): +def read_some_data(filepath, pack, dir, fake): def import_one(fp): sound = bpy.data.sounds.load(fp, check_existing=False) @@ -53,8 +53,6 @@ class ImportWav(Operator, ImportHelper): default=False, ) - def execute(self, context): - return read_some_data(context=context, filepath=self.filepath, - dir=self.all_in_directory, fake=self.fake, - pack=False) + def execute(self, _): + return read_some_data(filepath=self.filepath, pack=False, dir=self.all_in_directory, fake=self.fake)