Программное обеспечение, способное трассировать лучи через неявную поверхность

Вопрос или проблема

Я ищу программное обеспечение, способное выполнять трассировку лучей для неявных поверхностей (определяемых уравнением f(x,y,z)=0 для достаточно гладкой функции f) с симуляцией рассеянного света. Скорость не важна (я делаю высококачественные рендеры для коротких клипов, а не рендеринг в реальном времени).

  • Surfer может это делать, но не поддерживает рассеянный свет.
  • POV-Ray может это делать, но больше не поддерживается, и настройка рассеянного света (они называют это радиосити) довольно сложна, очень медленная, и мне не нравится результат.
  • Blender может рендерить только небольшой набор неявных поверхностей, которые они называют метаболами (они преобразуются в сетки сразу перед рендерингом), но метаболы недостаточно хороши для того, что я хочу отрендерить (представьте себе идеально круглую тора, которая начинает деформироваться асимметрично); его рендер-движок Cycles имеет нужное качество для меня.
  • В настоящее время я работаю с CGAL для создания последовательности сеток и Blender для их рендеринга с плагином Stop Motion OBJ для загрузки последовательности сеток, но рабочий процесс громоздкий и занимает время, CGAL очень сложно использовать, сетки не очень хорошие, мне не удалось исправить их с помощью CGAL, поэтому я исправляю их через Blender, но некоторые исправления нельзя применить пакетно (через то, что они называют модификаторами), и полученные объекты колеблются, а нормали нужно исправить, но я не знаю, как.

Blender может генерировать сетки из любой математической функции, которую вы можете определить на Python.

Встроенный аддон Add Mesh: Extra Objects поддерживает математические функции XYZ, Z и ряд регулярных тел.

Рендеринг и трассировка лучей могут осуществляться с помощью Cycles, как вы уже выяснили.

Графический калькулятор (графический калькулятор) от Pacific Software, похоже, справляется с этой задачей.

Ответ или решение

Существует несколько программных решений, которые могут помочь вам в трассировке лучей для заданных неявных поверхностей, определяемых уравнением f(x, y, z) = 0, с симуляцией диффузного света. Я перечислю несколько вариантов, основываясь на ваших требованиях:

  1. Blender:

    • Несмотря на то, что вы уже упомянули Blender, это наиболее универсальное решение. Blender позволяет создавать 3D-объекты из математических функций с помощью Python. Вы можете использовать встроенные аддоны, такие как "Add Mesh: Extra Objects", которые поддерживают разные виды математических функций, включая функции Z и другие регуляторные формы.
    • После генерации геометрии вы можете использовать движок рендеринга Cycles для получения высококачественных изображений с поддержкой диффузного света. Для создания более сложных форм вам может потребоваться дополнительный скрипт или аддон.
  2. OpenSCAD:

    • OpenSCAD позволяет создавать 3D-объекты с помощью программного кода. Вы можете задать неявные функции через различные конструкции и математические формулы. Однако рендеринг в OpenSCAD не всегда так качественен, как в Blender, так что вам, возможно, придется экспортировать модели для дальнейшей обработки.
  3. Write your own ray tracer:

    • Если у вас есть навыки программирования, вы можете написать свой собственный трассировщик лучей, который будет поддерживать рендеринг неявных поверхностей. Хотя это может потребовать значительных усилий и времени, этот подход даст вам полный контроль над процессом и возможность настройки всех аспектов рендеринга.
  4. POV-Ray:

    • Несмотря на ваши замечания по поводу POV-Ray, стоит отметить, что он по-прежнему может быть полезным для некоторых пользователей, поскольку предлагает возможности для кастомизации через скрипты. Установка диффузных источников света в POV-Ray может потребовать некоторой практики, но если вы будете упорствовать, вы можете получить отличные результаты, хотя и с некоторыми усилиями.
  5. Собственные библиотеки:

    • Если вы работаете с такими библиотеками, как CGAL, рассмотрите возможность улучшения вашего рабочего процесса через создание пользовательских скриптов. Возможно, стоит использовать библиотеки для генерации мешей, которые более просты в использовании и могли бы лучше справляться с задачами, которые вы ставите перед собой.
  6. Графический калькулятор:

    • Как вариант, вы также упоминали графический калькулятор от Pacific Software, который может решить некоторые ваши задачи, хотя в принципе это более ограниченное решение.

Наилучшие результаты вы получите, если сочетаете возможности Blender для рендеринга и генерации геометрии, возможно, с некоторыми пользовательскими скриптами для достижения желаемого качества и параметров ваших неявных поверхностей.

Оцените материал
Добавить комментарий

Капча загружается...