Лучшая вещь для 3D и трассировки лучей - PullRequest
1 голос
/ 23 апреля 2009

Я хочу поиграть с графикой. Простые анимации и прочее. Я тоже хочу дурачиться с трассировкой лучей. Мне нужна помощь в поиске библиотеки, которая поможет мне в этом. У меня есть несколько требований:

  • Должен уметь выполнять трассировку лучей
  • Должно быть для языка высокого уровня (python, .NET и т. Д.). Пожалуйста, не C / C ++
  • Должен иметь хорошую документацию, желательно с примерами.

Кто-нибудь знает хорошую библиотеку, с которой я могу дурачиться?

Ответы [ 5 ]

5 голосов
/ 23 апреля 2009

Взгляните на blender.org - это 3D-проект с открытым исходным кодом и возможностями сценариев Python.

4 голосов
/ 23 апреля 2009

Первое, что приходит мне в голову, это популярный открытый исходный код P.O.V Raytracer (www.povray.org). Сцены POV определяются исключительно с помощью файлов сценариев, и некоторые люди создали код Python для их легкой генерации.

http://code.activestate.com/recipes/205451/

http://jabas -unblog.blogspot.com / 2007/04 / легкий процедурного-графика-питон-и-pov.html

3 голосов
/ 23 апреля 2009

Мне неизвестны какие-либо библиотеки, которые удовлетворяют вашему запросу (по крайней мере, если я не решу опубликовать код для моего собственного трассировщика ...).

На самом деле написание трассировщика не так уж сложно. Я настоятельно рекомендую приобрести копию «Введение в трассировку лучей» Гласснера. В нем довольно легко понять математику, а также есть целый раздел «Как написать трассировщик лучей».

В любом случае, «библиотека» не так уж много полезна сама по себе - почти каждый луч трассировщик имеет свои внутренние библиотеки, но они специфичны для трассировщика. Обычно они включают в себя:

  1. базовый класс для представления трехмерных объектов
  2. подклассов этого для каждого геометрического примитива
  3. векторные и матричные классы (3D и 4D)
  4. текстурирующие функции и / или классы
  5. классы освещения различных типов (точечный свет, прожектор и т. Д.)

Для моего собственного трассировщика я фактически использовал пакеты javax.vecmath для # 3 выше, но должен был написать свой собственный код для # 1 и # 2, основанный на книге Гласснера. Все дело в двух тысячах строк кода, а большинство отдельных классов имеют длину около 40 строк.

1 голос
/ 23 апреля 2009

Хорошо разработанные трассировщики лучей с открытым исходным кодом:

Для 3D в реальном времени (конечно, это зависит от языка) JMonkeyEngine (Java) не уверен, соответствует ли это вашему требованию "языка высокого уровня".

Вы также можете рассмотреть язык сценариев 3D-игр, например GameCore или BlitzBasic

1 голос
/ 23 апреля 2009

Я полагаю, что мало кто собирает трассировщики лучей, используя XNA Game Studio .

Один пример этого с кодом можно увидеть по адресу:

Специальное ПО "Ray Tracing - Материалы"

...