Я хотел бы написать какое-нибудь программное обеспечение, которое составляет изображения из процедурных текстур. Для максимальной гибкости я хотел бы получить доступ к этим текстурам/создать их через API.
В прошлом я использовал POV-Ray для базовых текстур, я использовал бесплатную версию Genetica и настраивал ее пресеты, а также использовал плагин Re Synthetic GIMP для создания текстур из фотографий или для обработки текстур из других источников. Все эти инструменты замечательны, но ограничивают меня процессом создания библиотеки текстурных изображений, в то время как я предпочитаю создавать «рецепты» текстур с использованием параметров. Теперь я понял, что я хочу делать с этими инструментами, я хочу сделать шаг назад и написать код, который генерирует текстуры, которые мне нужны, и поддерживать библиотеку параметров для этого кода.
Требования:
API/библиотека для C, C++ или Ruby (не стесняйтесь добавлять другие для общего интереса, особенно с открытым исходным кодом, но я не смогу принять их для своих целей).
Поддерживает формат PNG, включая альфа-канал, или может быть связан с библиотекой, которая поддерживает.
Контроль на уровне текстурных примитивов, различных типов шума, цветовых карт, рельефных карт и т. д.
Комбинация текстурных примитивов на основе слоев или узлов.
Предустановки или примеры простых натуралистичных текстур — камень, дерево, вода, грязь, трава.
Полученные текстуры не обязательно должны быть фотореалистичными, но достаточно близкими для использования в простой игровой среде.
Приятно иметь: можно использовать для создания неискаженных мозаичных текстур.
Абсолютно лучший: может конкурировать с Genetica (или аналогичным платным приложением) по разнообразию и качеству, но это библиотека с открытым исходным кодом, а не платное приложение.
Не важно: Скорость. Я буду генерировать текстуры как часть рабочего процесса не в реальном времени и не буду учитывать количество кадров в секунду или затраты на ЦП. Если для создания экрана, заполненного текстурой, требуется 30 секунд, это, вероятно, нормально. Качество и гибкость гораздо важнее скорости.
Обновление: меня спросили о рабочем процессе. Я рассматриваю использование API текстур как часть двухэтапного процесса:
Создавайте/исследуйте текстуры, создавая их вручную или пробуя разные варианты. Я бы с радостью взял уже существующий графический интерфейс с интерфейсом управления, элементами управления, такими как ползунки и т. д. здесь. Точно так же я могу сделать свой собственный менее сложный проводник непосредственно из API. Текстуры, которые мне нравятся, я буду хранить с идентификатором и некоторыми метаданными.
Чтобы использовать библиотеку текстур, я намерен написать программное обеспечение для автоматической генерации и рендеринга содержимого изображения (не трассировщик лучей или игровой движок, но работающее на аналогичном уровне генерации значений пикселей). Это могут быть карты для игр, UV-текстуры для объектов для рендеринга в другом месте или просто абстрактное искусство. Это программное обеспечение выберет подходящие текстуры из библиотеки и отобразит их, в идеале, с уникальными случайными начальными значениями (или векторами смещения шума) перед сопоставлением с правильным местом в сцене или объекте. Проблема с предварительно обработанной библиотекой текстур заключается в том, что одни и те же пиксели будут использоваться снова и снова.
Поскольку я не совсем понимаю ваш рабочий процесс, мое предложение может быть совершенно неверным, но, исходя из установленных вами требований, Blender (хотя и является 3D-программой с открытым исходным кодом) в значительной степени справляется с этим, за некоторыми исключениями.
Он написан на C/C++, но вместо Ruby имеет Python API .
С другой стороны, он имеет мощную систему текстурирования / материалов на основе узлов с множеством процедурных текстур и операторов, поддержкой png и альфа-канала и т. Д. У него нет встроенных натуралистичных текстур (хотя их легко добавить).
Мог говорит восстановить Монику