Задача оказалась неожиданно сложной, но интересной. Во-первых, я сначала примерил иллюзию лица сестренки к Карине и с огорчением понял, что есть много нестыковок. У Карины глаза скорее миндалевидные и чуть шире расставлены. У сестренки носик курносый, а у Карины прямой. И еще много мелочей, препятствующих простому наложению маски. Дело в том, что личина, дабы выглядеть натуральной и естественной, должна как можно плотнее прилегать к лицу, не говоря уж о том, чтобы повторять его мельчайшие мимические движения. В результате то, что получилось, уже лишь отдаленно напоминало лицо моей сестрицы, но, слава богу, от этого не стало выглядеть хуже. Просто по-другому. Еще нужно было добиться, чтобы накладка фиксировалась в нужном месте и не смещалась при движении головы. Но это решалось довольно просто: специальные фиксирующие плетения, внедренные в кожу лица, четко удерживали маску. А вот сделать так, чтобы наложенное лицо повторяло мимику (это во-вторых), сложнее было на порядок. Я даже примерно не представлял, как это реализовать.
Мною были испытаны несколько вариантов, вплоть до реагирования на эмоциональные проявления в ауре, но все оказалось не то. И вот тут мне помогли уже частично подключившиеся вычислительные мощности Компа. В первую очередь хочется заметить, что я испытал некоторый шок от того, как он работает. Ну сами посудите – нужных алгоритмов у него нет, но зато когда я с достаточно большой деталировкой представил, что мне необходимо получить, как это вычислять (алгоритм «на пальцах») и в каком виде выдавать результаты, то нужные действия он выполнил очень оперативно.
То есть на основе представленного мной алгоритма он выстроил самоподстраивающуюся и улучшающуюся по ходу дела программу расчетов, сделал привязку к моей виртуальной модели магии, что крутилась у меня в голове, и выдал необходимые расчеты по формированию плетений (естественно, на основе моих знаний, ибо именно ими он оперировал). По сути, у меня в голове сидит мечта любого программиста: не влезая в нудные мелочи, продумать всю структуру, архитектуру, алгоритмы. Но при этом не нужно ручками все это кодить, закапываясь в отвлекающие внимание детали, всплывающие проблемы технологического характера и прочие скучные и неприятные вещи. А после этого на выходе получаешь готовый результат. Ну… почти готовый, но все равно чувствуешь себя эдаким богом… Единственное «но» – ты сам должен знать и уметь то, чем оперирует Комп. Это не палочка-выручалочка, которая заменяет знания. Комп не может за тебя придумать алгоритм, а вот облегчить по максимуму работу – тут он оставляет все известные мне компьютеры и способы оптимизации далеко позади.
В результате я все же решил эту задачу, и вот каким образом. Сначала в поверхностный слой кожи лица внедряется мелкоячеистая сетка из инфонитей, являющихся своего рода геометрическими датчиками. На пересечении нитей ставятся логические блоки привязки (тут пригодилось мое воспоминание об использовании демонами татуировок-плетений). Такая же сетка формируется на некотором расстоянии от лица. Где-то она соприкасается с кожей, где-то чуть отходит – все зависит от маски, ее формы и формы лица человека, который натягивает маску. Дальше она стыкуется нужными связями между точками пересечения нитей в сетке на маске и на лице. Все изменения геометрических параметров поверхности лица с нужными коэффициентами передаются на сеть иллюзии, а отдельный модуль меняет изображение согласно новым условиям поверхностной привязки.
Получилось довольно прилично. Правда, для каждого нового человека и для каждой маски-иллюзии надо проводить новые расчеты, но все же результат того стоит. Даже мельчайшие изменения в выражении лица точно передаются личине, нет никакого ощущения скульптурности или «неживого лица». В общем, я доволен результатом. Карина тоже. Еще где-то с полчаса она корчила рожи своим конструктам, играющим роль зеркала.
Следом встала проблема использования всей этой конструкции. Для себя или для Карины я мог накладывать личину ручками, но велика вероятность, что это надо будет сделать очень быстро или что Карине придется самой включить или выключить личину. Поэтому все это надо засунуть в амулеты, да еще точно спозиционировать точки привязки на лице для сетки детекторов…
Сначала потренировался на себе. Пальцем дотрагиваюсь до своих висков, носа, подбородка, расставляя маркеры, потом формирую сеть и внедряю в лицо, потом остальное. Небольшие неточности такой примерной привязки особо не влияют на результат. Проверил несколько вариантов, пока не добился при максимальном упрощении минимального снижения качества, и принялся упаковывать все это в амулет. В случае с Кариной проще всего использовать уже имеющийся у нее амулет плеера: все равно она его постоянно таскает и не снимает, часто погружаясь в фантазии, навеваемые музыкой.
Сделав, дал попробовать Карине. Невольно улыбнулся: выглядело это так, будто чародейка крестилась. Активировала амулет, коснулась им точки между глазами, кончика носа, подбородка, внешних кончиков глаз у висков, потом активация второго шага и… Оп! Совсем другой человек. Единственный недостаток моей системы в том, что глаза и губы оставались оригинальные, то есть того человека, на которого накладывалась маска. Слишком выразительные элементы декора, чтобы подменять их. Кроме того, через иллюзию ничего не видно, а если делать, чтобы было видно, то такие полупрозрачные глаза сразу привлекают внимание своей необычностью, а то и неестественностью.
Убедившись, что все в порядке, принялся делать личину и для себя. Выпендриваться сильно не стал. Прошерстив свою память, выбрал из когда-то виденных людей незапоминающееся лицо второстепенного персонажа из второсортного фильма. Карина, взглянув, фыркнула:
– Никогда бы не обратила на тебя внимания. Совершенно ничем не примечательная личность.
– На то и расчет, – довольно улыбнулся я.
А пока до города оставалось время, я стал оптимизировать эту технологию и для преобразования одежды.
До окончательного разворачивания вычислителя осталось около суток, плюс-минус некая погрешность. Но вроде бы неприятных неожиданностей в виде плавающего сознания и восприятия, а также их выключения, больше не предвиделось. По крайней мере, Комп с определенной долей вероятности это гарантировал. Потом еще прогон тестов, но это все недолго будет.
Я решил не плыть до самого города, где можно было бы воспользоваться пирсом, а сойти примерно за километр и дальше топать пешочком. Не хочется привлекать внимание к своему кораблику. Несмотря на его невидимость, я каждый раз напрягался, когда мимо нас проплывал местный водоплавающий транспорт. Вытащил на свет мысль о мотоцикле, о котором давно мечтал, но, обдумав эту мысль, снова задвинул обратно. Его использование никак не стыкуется с принципами незаметного передвижения в текущих условиях. Хотя на будущее все же запустил процесс обдумывания вариантов реализации в третьем потоке сознания и отодвинул его на задний фон.
Возникла некоторая пауза. Серьезно работать не хотелось. Чтобы не сидеть тупо, я стал рассматривать структуру инфомагического вычислителя, который вскорости заработает на всю катушку. Автоматически начала появляться некоторая информация частично настроившегося на мои предпочтения Компа, но я мысленным усилием убрал проявления его заботы. Сложность вычислителя была чрезмерной для быстрого и не особо вдумчивого анализа, поэтому я просто смотрел на него, любуясь четкими линиями и абстрактными фигурами, модулями, нитями. Потом вздохнул. Этим надо заниматься серьезно. Я перевел внутренний взгляд на другие прикрученные мною фичи.