Removed some dead imports

And reformatted
This commit is contained in:
Jamie Hardt
2020-09-20 09:21:31 -07:00
parent 1e8a856ca4
commit ba8f20e0e2
2 changed files with 37 additions and 45 deletions

View File

@@ -1,22 +1,23 @@
import bpy import bpy
import numpy
from numpy.linalg import norm from numpy.linalg import norm
from random import uniform, gauss from random import uniform, gauss
from math import floor from math import floor
from enum import IntFlag, Enum from enum import Enum
from dataclasses import dataclass from dataclasses import dataclass
import sys import sys
from .soundbank import SoundBank from .soundbank import SoundBank
class TriggerMode(str, Enum): class TriggerMode(str, Enum):
START_FRAME = "START_FRAME" START_FRAME = "START_FRAME"
MIN_DISTANCE = "MIN_DISTANCE" MIN_DISTANCE = "MIN_DISTANCE"
RANDOM = "RANDOM" RANDOM = "RANDOM"
RANDOM_GAUSSIAN = "RANDOM_GAUSSIAN" RANDOM_GAUSSIAN = "RANDOM_GAUSSIAN"
@dataclass @dataclass
class SpatialEnvelope: class SpatialEnvelope:
considered_range: float considered_range: float
@@ -25,12 +26,13 @@ class SpatialEnvelope:
min_distance: float min_distance: float
exits_range: int exits_range: int
def sound_camera_spatial_envelope(scene: bpy.types.Scene, speaker_obj, considered_range: float) -> SpatialEnvelope: def sound_camera_spatial_envelope(scene: bpy.types.Scene, speaker_obj, considered_range: float) -> SpatialEnvelope:
min_dist = sys.float_info.max min_dist = sys.float_info.max
min_dist_frame = scene.frame_start min_dist_frame = scene.frame_start
enters_range_frame = None enters_range_frame = None
exits_range_frame = None exits_range_frame = None
in_range = False in_range = False
for frame in range(scene.frame_start, scene.frame_end + 1): for frame in range(scene.frame_start, scene.frame_end + 1):
scene.frame_set(frame) scene.frame_set(frame)
@@ -50,7 +52,7 @@ def sound_camera_spatial_envelope(scene: bpy.types.Scene, speaker_obj, considere
in_range = False in_range = False
break break
return SpatialEnvelope(considered_range=considered_range, return SpatialEnvelope(considered_range=considered_range,
enters_range=enters_range_frame, enters_range=enters_range_frame,
exits_range=exits_range_frame, exits_range=exits_range_frame,
closest_range=min_dist_frame, closest_range=min_dist_frame,
@@ -64,7 +66,7 @@ def closest_approach_to_camera(scene, speaker_object):
scene.frame_set(frame) scene.frame_set(frame)
rel = speaker_object.matrix_world.to_translation() - scene.camera.matrix_world.to_translation() rel = speaker_object.matrix_world.to_translation() - scene.camera.matrix_world.to_translation()
dist = norm(rel) dist = norm(rel)
if dist < max_dist: if dist < max_dist:
max_dist = dist max_dist = dist
at_time = frame at_time = frame
@@ -78,13 +80,8 @@ def track_speaker_to_camera(speaker, camera):
camera_lock.use_target_z = True 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): 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: if trigger_mode == TriggerMode.START_FRAME:
audio_scene_in = context.scene.frame_start 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 audio_scene_in = envelope.closest_range
elif trigger_mode == TriggerMode.RANDOM: 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: elif trigger_mode == TriggerMode.RANDOM_GAUSSIAN:
mean = (context.scene.frame_end - context.scene.frame_start) / 2 mean = (context.scene.frame_end - context.scene.frame_start) / 2
audio_scene_in = floor(gauss(mean, gaussian_stddev)) 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 # we have to do this weird dance because setting a start time
# that happens after the end time has side effects # 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_start = audio_scene_in
target_strip.frame_end = audio_scene_in + sound_length 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): def sync_audio(speaker, sound, context, sync_peak, trigger_mode, gaussian_stddev, sound_bank, envelope):
print("sync_audio entered") print("sync_audio entered")
fps = context.scene.render.fps fps = context.scene.render.fps
audiofile_info = sound_bank.get_audiofile_info(sound, 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, 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) envelope=envelope)
def constrain_speaker_to_mesh(speaker_obj, mesh): def constrain_speaker_to_mesh(speaker_obj, mesh):
speaker_obj.constraints.clear() speaker_obj.constraints.clear()
@@ -134,13 +131,13 @@ def constrain_speaker_to_mesh(speaker_obj, mesh):
def apply_gain_envelope(speaker_obj, envelope): def apply_gain_envelope(speaker_obj, envelope):
pass pass
def add_speakers_to_meshes(meshes, context, sound=None,
sound_name_prefix = None, def add_speakers_to_meshes(meshes, context, sound=None,
sync_peak = False, sound_name_prefix=None,
trigger_mode = TriggerMode.START_FRAME, sync_peak=False,
gaussian_stddev = 1. trigger_mode=TriggerMode.START_FRAME,
gaussian_stddev=1.
): ):
context.scene.frame_set(0) context.scene.frame_set(0)
sound_bank = SoundBank(prefix=sound_name_prefix) sound_bank = SoundBank(prefix=sound_name_prefix)
@@ -148,34 +145,31 @@ def add_speakers_to_meshes(meshes, context, sound=None,
if mesh.type != 'MESH': if mesh.type != 'MESH':
print("object is not mesh") print("object is not mesh")
continue continue
envelope = sound_camera_spatial_envelope(context.scene, mesh, considered_range=5.) envelope = sound_camera_spatial_envelope(context.scene, mesh, considered_range=5.)
speaker_obj = next( (spk for spk in context.scene.objects \ speaker_obj = next((spk for spk in context.scene.objects
if spk.type == 'SPEAKER' and spk.constraints['Copy Location'].target == mesh ), None) if spk.type == 'SPEAKER' and spk.constraints['Copy Location'].target == mesh), None)
if speaker_obj is None: if speaker_obj is None:
bpy.ops.object.speaker_add() bpy.ops.object.speaker_add()
speaker_obj = context.selected_objects[0] speaker_obj = context.selected_objects[0]
constrain_speaker_to_mesh(speaker_obj, mesh) constrain_speaker_to_mesh(speaker_obj, mesh)
track_speaker_to_camera(speaker_obj, context.scene.camera) track_speaker_to_camera(speaker_obj, context.scene.camera)
if sound_name_prefix is not None: if sound_name_prefix is not None:
sound = sound_bank.random_sound() sound = sound_bank.random_sound()
if sound is not None: if sound is not None:
speaker_obj.data.sound = sound speaker_obj.data.sound = sound
sync_audio(speaker_obj, sound, context, sync_audio(speaker_obj, sound, context,
sync_peak=sync_peak, sync_peak=sync_peak,
trigger_mode=trigger_mode, trigger_mode=trigger_mode,
gaussian_stddev=gaussian_stddev, gaussian_stddev=gaussian_stddev,
sound_bank=sound_bank, envelope=envelope) sound_bank=sound_bank, envelope=envelope)
apply_gain_envelope(speaker_obj, envelope) apply_gain_envelope(speaker_obj, envelope)
speaker_obj.data.update_tag() speaker_obj.data.update_tag()

View File

@@ -1,7 +1,7 @@
import bpy import bpy
import os import os
def read_some_data(context, filepath, pack, dir, fake): def read_some_data(filepath, pack, dir, fake):
def import_one(fp): def import_one(fp):
sound = bpy.data.sounds.load(fp, check_existing=False) sound = bpy.data.sounds.load(fp, check_existing=False)
@@ -53,8 +53,6 @@ class ImportWav(Operator, ImportHelper):
default=False, default=False,
) )
def execute(self, context): def execute(self, _):
return read_some_data(context=context, filepath=self.filepath, return read_some_data(filepath=self.filepath, pack=False, dir=self.all_in_directory, fake=self.fake)
dir=self.all_in_directory, fake=self.fake,
pack=False)