Ray Trace програмний пакет, реліз 3.3.

Автор: Сем Басс
Унів. Каліфорнії, Сан-Дієго

Реліз 3.0 був доступний за станом на 28 червня, 2006, з виправленнями довели його до релізу 3.3. Основні нові функції, починаючи з версії 3.0, мають змогу читати .Та фан .Obj-файли, і використовувати KD-дерево прискорення структур. З’явився новий головний проект RayTraceKd, яка використовує нові можливості версії 3.0. За винятком деяких незначних предметів, реліз 3.Х сумісний з версії 2.0.

Цей програмний пакет супроводжує мою книгу 3D комп’ютерної графіки: Математичне Введення в OpenGL (Видавництво Кембриджського університету, 2003). Він реалізує пакет трасування променів на C++ в розширюваний, об’єктно-орієнтованим способом.

Огляд: ця трасування променів програмне забезпечення написано на мові C++. Він містить класи для роботи з геометричними об’єктами, для розрахунку Фонг і Кук-Торранс світло розрахунків, і для трасування променів і визначенні перетинів променів з геометричними об’єктами. Немає приємний користувальницький інтерфейс; замість цього, ви повинні написати код на C++ для взаємодії з ходу променів бібліотеки класів. Геометричне моделювання здійснюється шляхом внесення в C++ виклики функцій для створення об’єктів і настроювання їх властивостей. Є вихідний код для управління високого рівня трасування променів, але ви, ймовірно, потрібно змінити це, щоб відповідати вашій заявці.
Геометричні об’єкти підтримуються: (члени ViewableObject клас): трикутники, Паралелограми, Паралелепіпеди (включає кубиків і прямокутних призм), циліндрів, конусів, сфер, Еліпсоїдів, Торам, і збірники патчів Безьє.
Відображення текстури особливості: певну підтримку структури шахової дошки, текстури для карт растрових файлів, для бамп-мапінгу, і для об’єднання декількох текстурних карт. Також деякі досить загальні методи для роботи з текстурними координатами.
Моделі освітлення: Фонг і Кук-Торранс. Модель освітлення Фонга вже включені всі стандартні OpenGL на матеріал і властивості світла.
Камера: Ортографические і перспективні види підтримується.
OpenGL або ПЕРЕНАСИЧЕННЯ попередній перегляд: сцена проглядається з OpenGL/glut (від до трасування променів починається. Зручність для розміщення об’єктів коректно і вибираючи вид. Це новий для версії 2.0.
Об’єктів розміри: низькорівневих підпрограм обчислення обмежуючих площин для об’єктів. Доступні для майбутнього використання просторових структур даних, таких як BSP дерева або до-д-дерев або octtrees. Це нове у версії 2.0.
Вхідний файл: сцени опису можуть бути зчитані .Фан чи .Obj-файли (для нової версії 3.0.)
KD-дерево структури даних прискорення. Істотно покращує трасування променів раз; для великої сцени трасування променів-це не набагато повільніше, ніж рендеринга OpenGL! (Нове для версії 3.0.)

Програмне забезпечення поширюється з допомогою двох основних програм, які були розроблені в основному для цілей тестування, трасування променя» і RayTrace2 і RayTraceKd. Ці створення таких образів: (не показано: від зображень .Та фан .Obj-файли, що генеруються RayTraceKd.)

Image1Small.gif (11070 bytes) Основна програма трасування променя» створює цей образ. У фоновому режимі, є два трикутника з шахової текстурою карти. В центрі-в основному сірувато-прозора сфера. Над іншими об’єктами, є невелика блакитна сфера, і є кілька маленьких жовтих трикутників, плаваючі в повітрі. Більшу версію зображення також доступна. Велика версія займає приблизно 9 секунд, щоб генерувати на 350 МГц Pentium 3, багато хто кілька років тому. На моєму 2006 система це зовсім небагато швидше.
Image2Small.gif (16120 bytes)     Основна програма RayTraceKd може використовуватися, щоб генерувати це швидше повноцінне друге зображення. Для цього змініть режим змінної в RayTraceKd.cpp рівним 1 і перекомпілюйте. Немає задньої стінки (з накладенням текстур з блакитними і чорними смужками). Бічні стінки мають трикутники і є світловідбиваючими. Розкидані по сцені різних сфер, торів, циліндрів, конусів, паралелепіпедів, еліпсоїдів, і патчі Безьє. В дальньому правому куті, є криві дзеркала, монтується в кут — це формується з Безьє патчі. Щоб краще розглянути, перевірити велику версію зображення. Велика версія зайняла близько 10,5 хвилин до генерації, знову ж таки, на 350 МГц Pentium 3 багато кілька років тому. На моєму 2006 системи, вона займає близько 50 секунд — повільність обумовлена поверхонь Безьє.
Існує також анотований варіант великі зображення доступні, якщо ви намагаєтеся з’ясувати, що всі різні форми.
jacks_5_1_thumb.jpg (9.2K bytes) Основна програма RayTraceKd може використовуватися для створення «Валета-5-1″ зображення показано тут. Для цього в «режимі» змінна повинна бути дорівнює 3. Щоб краще розглянути, перевірити велику версію зображення. Це займає близько 3 секунд, щоб траєкторії променів на моїй 2006 системи.

Законність: Ви можете використовувати це програмне забезпечення без будь-яких обмежень. Якщо ви використовуєте його для великих проектів або комерційних проектів, будь ласка, дайте мені знати (визнання цього типу є одним з шляхів академічних типів отримати нагороду.). Зокрема, її використання має бути визнано в будь-якому виданні і в будь-якому продукті. Крім того, якщо ви знайти або виправити помилки, будь ласка дайте мені знати, так що я можу оновити програмне забезпечення для всіх інших. Програмне забезпечення поширюється за принципом «як є» і не несе будь-яких гарантій.

Програмне забезпечення, доступне. Реліз 3.3. Щоб отримати програмне забезпечення:

  1. Завантажити RayTrace_3.3.zip. Це включає в себе всі вихідні файли, Visual з++ .Net проект і файли робочого простору. В основній робочій області файлу RayTraceKd/RayTraceKd.слн . Щоб запустити, двічі клацніть цей .sln файл.
    Проекти і рішення файли для Visual з++.Чистий 2003. Переконайтеся, що найголовніший проект-RayTraceKd або (краще) або «трасування променя» (застарілий, але простіше). Якщо ви перетворити в чистий 2005 або пізніше, не виключено, що основним проектом або проектом залежностей не будуть коректно перетворені. Якщо у вас виникли проблеми компонування проекту, вам може знадобитися, щоб виправити залежностей вручну.
  2. Для не-ПК і інші укладачі: вам доведеться перебудувати проект самостійно. Код використовує крос-платформний OpenGL команди, тому він повинен скомпілювати і запустити під Unix, Linux і Macintosh систем. (Я міг би звільнити для Unix make-файли, тощо, якщо немає достатнього попиту, але останнім часом майже всі завантаження відображаються для ПК середовищах.

Документації: див. Додаток B у вищезгаданій книзі і впровадження в оновлених версіях. Або вивчіть вихідний код…. (На жаль, це те, що є зараз. Можливо, коли-небудь я створю найкраще документація.)

Запуск програми: Запустіть з проектом RayTraceKd як основна програма. Якщо вікно велике, воно займає пропорційно більше часу зображення, Рей простежив. З новим KD-дерево прискорення (реліз 3.Х) трасування променів виконується досить швидко. Дійсно, для великих файлів, ви можете виявити, що трасування променів працює швидше, ніж нативний код OpenGL!. Настійно рекомендується використовувати оптимізуючий компілятор, таких як Visual з++режимі релізу, коли не відлагодження коду — це поліпшить середовища виконання істотно. При налагодженні коду, тримати вікна дуже малі, щоб отримати гідний пробіг рази.

Паралелізму. Трасування променів-це «соромно розпаралелити» як кажуть. Дейл Ранта повідомив, що він перетвориться в код, щоб бути багатопотоковою з відносно хорошою швидкістю. Для цього йому потрібно було видалити виклики, які збираються statatistics в KdTree::траверс рутини і дав кожному потоку його власні «traverseStack». Ранта звіти по досягненні 3 або 4 рейтрейсинг кадрів в секунду (720 х 480) на квад Macintosh з восьми ниток. Ранта код не доступний на цьому веб-сайті, однак.

Подяки. я завдяки Дейл Ранта, Свен-Бертіль Блум, Роб Graeyer, Роберт Хенсон, і Ганс Дітріх для виправлення включені в релізи 3.1 через 3.3.

Історія змін і документація: 1.0 Реліз був у версії документовані в додатку Б до моєї книзі згадувалося вище. Реліз 2.0 додано кілька нових функцій, включаючи: (а) на OpenGL/glut (від перегляду та (б) у низькому рівні підпрограм для розрахунку экстенты об’єктів. Версія 3.0 додані додаткові функціональні можливості, включаючи читання опису сцени з файлів і KD-Tree для прискорення. Документація по використанню нових можливостей версії 2.0 і 3.0, не описаних в додатку B можна знайти в інтернеті Введення в оновлених версіях.

Докладні Примітки до випуску:
Випуск 3.1-3.1.2.
— Виправлення помилок і краще використовувати стандарти ІСО C++, в тому числі ряд предметів, знайдених Дейл Ранта і Свен-Бертіль Блом.
Реліз 3.2:
— Виправлена помилка в VisiblePoints постраждалим КД-дерева з допомогою текстурних карт, завантажених з растрових файлів (діагностував і виправив: Боб Graeyer)
— Виправлена помилка в экстентах розрахунок ViewableParallelepipeds (тепер має працювати з KD-деревами).
— Чистка коду і видаленням синтаксису, які генеруються попереджувальні повідомлення з с++ GNU повідомив Дейл Ранта.
Реліз 3.2 б:
— Два знаки помилки в Quaternion.cpp, діагностував і виправив: Роберт Хенсон.
Реліз 3.3:
— Призначення методу для масиву фіксованої, за сприяння Ганс Дітріх.

Ссылка на оригинал статьи: http://www.math.ucsd.edu/~sbuss/MathCG/RayTrace/

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>