КГ: вопрос — ответ

Недавно состоялась довольно веселая переписка-диалог с читателем, который изначально спросил: «… У меня руль марки… При игре в Need For Speed машина все время кивается вправо… невозможно играть. С клавиатурой нормально». Ну, я возьми и пошути: «Эти вопросы решить может только технический отдел изготовителя». Ответ: «Там все на английском, попробую написать, а как лучше перевести «кивается»?». В принципе, если долго поворачивать направо, можно приехать налево.

Впрочем, это еще ничего по сравнению с тем, как ваш покорный слуга встретился с программистами-игроделами (кстати, ответ на их первое письмо также есть в этой подборке) и попросил их объяснить код. Не тут-то было. Разговорный язык вырос из языка жестов примерно 500 тыс. лет назад, языки программирования появились во второй половине XX века, а потом, судя по моим визави, все опять возвращается к жестам. Впрочем, мы немного отвлеклись от темы. Итак, поехали!

«… может, вы подскажете, что можно сделать? Создал на VST-синтезаторе интересный пэтч, но одна гармоника явно мешает, и убрать ее не знаю как. В синтезаторе это сделать нельзя. Фильтры ухудшают весь звук… помню, когда-то давно вы описывали эквалайзер на 1024 полосы…».

Да, был такой эквалайзер, но широкого распространения он не получил. В принципе, проблема ваша понятна, причем не вы один боретесь с такими артефактами, учитывая то, что современные аранжировки обычно минималистичны, но каждому отдельному инструменту уделяется огромное внимание. Не так давно, а именно весной, я списывался со своим немецким коллегой, который рассказал, что занимается «чисткой» инструментальных треков с помощью программы SPEAR. Оказалось, что я знал такую, даже описывал ее, но в реальности использовал крайне редко, а зря. Тем более, я ее не сильно ассоциировал с «чисткой». Программа анализирует звуковой файл по спектру и отображает все гармоники в виде линий с различной степенью интенсивности закраски, наиболее сильные всплески на частотах показываются темными линиями. Каждую из таких линий можно выделять мышью, после чего на выбор: удалять, транспонировать вверх/вниз, уменьшать или увеличивать по уровню. Мой коллега в этой программе «чистил» треки, то есть удалял все ненужные гармоники, а также в некоторых случаях с вокальными треками — просто снижал амплитуды на «вылазящих» звуках, чтобы не использовать активно де-ессер. На самом деле, программа очень хороша и удобна. Ее название, SPEAR, является аббревиатурой от Sinusoidal Partial Editing Analysis and Resynthesis, то есть, любая сложная по форме звуковая волна разбивается на ряд простых, с которыми и идет работа, после чего программа делает не сохранение в обычном понимании, а ресинтез, то есть собирает сложную форму наново.

Может показаться, что нечто подобное реализовано в последних версиях WaveLab и Adobe Audition, а конкретнее, в вариантах сонограммного представления звуковой волны, но там несколько другая реализация, близкая к использованию фильтров.

SPEAR должна вам помочь.

«Создаю модель инопланетного существа в hi-poly в 3ds max, возникли трудности с текстурированием… хочется, чтобы на одних участках кожа была чешуйчатой, на других более гладкой. Понятно, что это прорисовка bump-карт. Но слишком муторно это все в фотошопе вырисовывать… неужели нет нормального и понятного инструментария? …забыл сказать, что работаю с hi-poly».

Про 3ds max ничего сказать не могу, потому как работаю с этим пакетом очень редко, в Cinema4D есть BodyPaint, хотя и этот вариант не самый удобный. Довольно часто в таких случаях пользователи различных 3D-приложений перебрасывают свои модели в ZBrush, где их можно более четко детализировать (если это нужно), а также рисовать разными кистями прямо в 3D-области. Это удобнее и быстрее. Причем кистями вы можете рисовать не только определенными цветами, но и bump- или displacement-фактурами. А сами материалы являются многослойными. После всего этого готовую текстуру/материал можно экспортировать из ZBrush обратно в вашу программу, если не ошибаюсь, в последней версии поддерживаются уже фактически все существующие.

«Тестируем игровое приложение… основной код на C#... иногда появляются просто глюки…».

И так далее. В общем, при переписке выяснилось, что в рамках программы реализовано много потоков, которые обращаются к одному и тому же объекту. Проблема, кстати, довольно часто встречаемая. В таких случаях нужно делать синхронизацию, что для C# в самом простом случае возможно с использованием оператора lock(а в скобках указывается маркер), то есть смотрите документацию по этому поводу. При этом lock является сокращенным вариантом типа класса System.Threading.Monitor, используя который вы получите чуть большую степень управления по сравнению с первым из предложенного, хотя и более громоздкую. Также можно задействовать для синхронизации класс System.Threading.Interlocked, что будет эргономичнее для программирования. Помимо этого есть и еще один вариант, а именно, атрибут [Synchronization], определенный в пространстве имен System.Runtime.Remoting.Contexts. То есть, тут все на ваше усмотрение. Думается, что четырех вариантов хватит, хотя их может быть гораздо больше, важна также и специфика выполняемых в рамках этих потоков задач.

«Существуют ли какие-нибудь потери в цвете при переходе от RGB к CMYK?»

Да, потери имеются в силу различного цветового охвата, хотя если вы говорите о программной конвертации, то в большинстве случаев используются самые лучшие алгоритмы. Причем RGB в CMYK переводится менее проблематично, чем CMYK в RGB (в этом случае нужна дополнительная корректировка черного цвета).

Кристофер http://itcs.3dn.ru


Компьютерная газета. Статья была опубликована в номере 33 за 2011 год в рубрике soft

©1997-2024 Компьютерная газета