LINUX.ORG.RU

3D Movie Maker портирован на Linux

 3dmmex, 3d movie maker, ,

3D Movie Maker портирован на Linux

0

1

Разработчики проекта 3DMMEx добились запуска классического Microsoft 3D Movie Maker в Linux без Wine и виртуальной машины. О проделанной работе рассказал Бен Стоун, автор исходного порта 3DMMEx. По его словам, проект достиг важного рубежа: программу теперь можно собрать и запустить в Linux, что делает 3DMMEx первым известным ответвлением 3D Movie Maker, работающим за пределами Windows. Публикация о переносе датирована 9 мая 2026 года.

Microsoft 3D Movie Maker — детская программа 1995 года для создания простых трёхмерных мультфильмов: пользователь выбирал сцены, расставлял персонажей и объекты, задавал им действия, добавлял реплики, звук и музыку. Долгое время проект оставался закрытым историческим артефактом эпохи Windows 95, но в мае 2022 года Microsoft открыла исходный код 3D Movie Maker под лицензией MIT. Официальный репозиторий Microsoft доступен на GitHub; в описании прямо указано, что это исходный код оригинального проекта 1995 года, опубликованный как открытое ПО по лицензии MIT.

Открытие исходников стало отправной точкой для нескольких попыток оживить программу. Сначала появился проект 3DMMForever, занимавшийся модернизацией сборки и подготовкой к компиляции современными средствами. Позднее, когда работа над ним замедлилась, Бен Стоун создал ответвление 3DMMEx. Цель проекта — сохранить классический опыт работы с 3D Movie Maker, но добавить небольшие улучшения и сделать код переносимым на современные системы.

Перенос оказался не простой перекомпиляцией старого кода. Исходники 3D Movie Maker были написаны под старый диалект C++, Microsoft Visual C++, Win32 API и 32-разрядную модель памяти. Кроме того, во внутренних библиотеках использовались статические зависимости, встроенный x86-ассемблер, старые допущения о размере указателей и привязка к Windows-специфичным подсистемам.

Что пришлось сделать

  • Заменить Win32-слой на SDL. В 3D Movie Maker используется внутренний прикладной каркас Kauai, который изначально абстрагировал часть системных функций, но на практике всё равно опирался на Win32. В 3DMMEx реализация графического интерфейса была переведена на SDL2. Это позволило заменить оконную подсистему, обработку ввода и отрисовку, сохранив при этом старую архитектуру приложения.

  • Переписать отрисовку и ввод. Некоторые операции, которые в Win32 выполнялись одним вызовом, в SDL пришлось реализовывать вручную. Например, для работы со шрифтами в Windows использовались готовые функции перечисления и создания шрифтов, а в переносимой версии эту логику пришлось писать отдельно для платформ. Аналогично была заново реализована система клавиатурных сочетаний, поскольку старая Windows-реализация не могла быть напрямую использована в Linux.

  • Убрать встроенный ассемблер. В Kauai и связанных компонентах использовался вручную оптимизированный ассемблер для x86, в том числе в функциях копирования памяти, обработки изображений и сжатия данных. Для переносимости эти участки заменили на варианты на C/C++. По словам автора, это не только упростило сборку вне Windows, но в ряде случаев даже улучшило производительность за счёт современных реализаций memcpy и memmove в стандартной библиотеке C.

  • Разобраться со статическими библиотеками. У 3D Movie Maker были две важные внешние зависимости: BRender и AudioMan. BRender — трёхмерный движок Argonaut Software, использовавшийся для графики. Его исходный код также был открыт, но он тоже содержал много x86-ассемблера. Для 3DMMEx используется вариант, где ассемблерные части заменены переносимым кодом.

  • Заменить AudioMan для Linux. Библиотека AudioMan отвечала не только за воспроизведение звука, но и за импорт и запись звуков внутри приложения. Поскольку она была тесно связана с Windows-звуком и COM-интерфейсами, разработчики не стали переносить её напрямую. Для не-Windows-систем добавлен новый модуль воспроизведения и записи звука на основе miniaudio.

  • Добавить поддержку MIDI и видеовставок. Для Linux-порта были интегрированы FluidSynth для воспроизведения MIDI и GStreamer для проигрывания видеозаставок. Также пришлось решать типичные проблемы переноса старых Windows-программ в POSIX-среду: чувствительность имён файлов к регистру, обратные косые черты в путях, платформенные функции работы с файлами и другие мелочи, которые в сумме ломают запуск приложения.

  • Подготовить код к 64-разрядным системам. Значительная часть старого кода предполагала 32-разрядную среду. При переносе выявились места, где указатели приводились к 32-разрядным числам, а структуры, сохраняемые на диск, зависели от размера указателя. Чтобы не нарушить совместимость с файлами проектов 3D Movie Maker, в код были добавлены проверки размеров структур и отдельная логика сериализации.

  • Улучшить отладку и тестирование. Часть внутренних тестов Kauai была перенесена на Google Test, а в код добавили дополнительные проверки и журналы выполнения сценариев интерфейса. Это важно, потому что значительная часть логики 3D Movie Maker живёт не в обычном C++-коде, а в собственных сценариях приложения.

Сейчас в репозитории 3DMMEx заявлены поддержка Linux, графика и ввод через SDL2, сборка с Visual Studio 2022, Clang и GCC, 64-разрядные сборки для x64 и ARM64, замена встроенного ассемблера на переносимый C++, модульные тесты, улучшенная работа с мышью, новые клавиатурные сочетания и более качественный импорт звука. Для сборки в Linux нужны CMake, Ninja, GCC и библиотеки разработки SDL2, SDL2_ttf, GStreamer, GTK3, iconv и Fontconfig.

Пока Linux-версию необходимо собирать из исходников. Готовые бинарные сборки автор планирует подготовить позднее для популярных дистрибутивов. При этом сам порт уже функционален: по словам Бена Стоуна, все возможности 3DMMEx работают в SDL/Linux-версии, хотя остаются проблемы с обработкой мыши при перетаскивании актёров по сцене. Также среди возможных будущих направлений названы перенос на macOS и вариант через Emscripten для запуска в браузере.

Таким образом, открытие исходников Microsoft в 2022 году постепенно привело не просто к сохранению старой программы в архивном виде, а к полноценному переносу на современные платформы. 3D Movie Maker теперь можно рассматривать не только как музейный экспонат эпохи Windows 95, но и как пример того, как публикация кода под свободной лицензией позволяет спустя десятилетия вернуть к жизни давно заброшенное приложение.

>>> Источник

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от unclestephen

В Германии например утро. И суббота сегодня, все спят, подожди.

У меня ещё даж десяти нет.

Set440 ★★
()
Последнее исправление: Set440 (всего исправлений: 1)
Ответ на: комментарий от unclestephen

Попробуй поискать как-то видео ну ютубчике — я по какой-то ссылке прошёл несколько лет назад (на опеннете) — тысячи этих видео.

Set440 ★★
()

О, про эту вещь не знал, но у меня в то время был Toon Twister 3-D от Nickelodeon со схожей идеей.

energetix_user ★★
()

А что кроме программы нужно? Или там есть свои стандартные модели какие?

PcheloBiaka
()
Ответ на: комментарий от E17l

Если посадить лягушку в кастрюльку с холодной водой, и медленно греть на малом огне — лягушка не заметит, как сварится.

Или даже, вендекапец — это событие, которое происходит в голове отдельно-взятого индивида. Как «перманентная революция» Троцкого.

Тоесть, это медленно растущее явление, когда в «швабодку», каждый день начинает верить всё больше людей. По десятку в день.

Set440 ★★
()
Ответ на: комментарий от E17l

Ну, остаётся надеяться, что «мы не выпрыгнем»

Set440 ★★
()
Ответ на: комментарий от apt_install_lrzsz

…Закинувшись всем, от чего только можно балдеть…

hobbit ★★★★★
()

Что пришлось сделать

Очуметь можно, вагон работы на самом деле. Респект и уважуха.

sparkie ★★★★★
()
Ответ на: комментарий от Set440

Я лично на нём столько всего переделал, ужс просто. На оффтопеXP ещё.

sparkie ★★★★★
()

Вы меня извините, но ахахахахахах. Кто-то реально на полном серьезе месяцами занимался этим?)

daniyal
()
Ответ на: комментарий от daniyal

Вы меня извините, но ахахахахахах. Кто-то реально на полном серьезе месяцами занимался этим?)

Ты не поверишь!!!

И правда есть люди, которые работают пока другие «ахахах»-ают!.. :)

«На полном серьёзе», да.

Somebody ★★★★
()
Ответ на: комментарий от unclestephen

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

Neyt
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.