Простая библиотека C / C ++ для структуры ускорения треугольников - PullRequest
3 голосов
/ 21 июня 2010

Я трассирую лучи и хотел бы ускорить его с помощью некоторой ускоряющей структуры (kd-tree, BVH, что угодно).Я не хочу кодировать это сам.То, что я пробовал до сих пор:

  • Выдергивание kd-дерева из pbrt.Есть так много внутризависимостей, что я не смог бы преуспеть в этом, не потянув весь pbrt в мой код.

  • Дерево AABB CGAL.К сожалению, это, кажется, возвращает только точку пересечения.Не зная, из какого треугольника пришла точка, я не могу эффективно интерполировать цвет по треугольнику.Я хотел бы просто расширить понятие «Точка» цветом, но это кажется невозможным без написания большого количества кода шаблона с нуля.

  • Написание своего собственного.Итак, я написал свой собственный класс ускорения сетки, и он работает, но он противен и неэффективен.

Итак, если кто-нибудь может предложить простую библиотеку, которую я могуиспользовать для этой цели я бы очень признателен!Все, что мне нужно, это дать суп из треугольника и луч, найти ближайшее пересечение и вернуть индекс этого треугольника.

Ответы [ 2 ]

1 голос
/ 13 августа 2010

Джако Биккер написал эту серию уроков: http://www.devmaster.net/articles/raytracing_series/part7.php

Они очень полезны, и в конце он включает код для трассировщика лучей, использующий kd-дерево.

Возможно, вы сможете использовать это.

0 голосов
/ 17 января 2013

Механизм G3D имеет реализацию трассировки лучей.Не уверен, насколько это эффективно, хотя.Не должно быть особых проблем с использованием реализации Tree без остальной библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...