1 Востаннє редагувалося wander (26.05.2023 18:51:32)

Тема: The opening angle of the cone from the direction vector

У мене є набір променів заданих їхніми origins та directions. Це промені з ray tracing'y. Мені потрібні деякі метрики, щоб мати хоча б приблизне уявлення наскільки вони різняться. Це допоможе іншим розробникам зрозуміти, що коїться з їхніми променями в сцені. Так, це все одно буде більше як припущення ніж правдиве уявлення, але тим не менш.

Я так прикинув, що оцінки напрямки променів лише за x, y, z координатами матиме не дуже багато сенсу. Зручніше було б представляти їх у вигляді кутів. Як я розумію, opening angle of the cone - це те, що мені потрібно. От у мене питання, чи можу я отримати цей кут, знаючи лише фактично вектор напрямку променя? Якщо я нормалізую вектор, а потім візьму arccos нормалізованої z-компоненти вектора, то теоретично я б мав отримати цей кут конуса. Проте, я не дуже певен у цьому. Чи вірно я міркую? Мені ще тре підтягувати свої знання у математиці.

Прихований текст

Не певен, як записати назву теми українською, тому залишив її англійською.

2 Востаннє редагувалося leofun01 (27.05.2023 01:21:18)

Re: The opening angle of the cone from the direction vector

Зрозумів тільки назву топіка. До чого тут ray tracing взагалі не ясно.
Опиши якось { детальніше | конкретніше } шо саме треба чи як ..

wander написав:

чи можу я отримати цей кут, знаючи лише фактично вектор напрямку променя?

Ні. Має бути ще щось.
Кут (rad1) можна отримати маючи :

  • 3 точки;

  • 2 вектори [+origin];

тут не зовсім так ..

Конус (круглий) можна задати через :

  • 4 точки;

  • 3 вектори [+origin];

3

Re: The opening angle of the cone from the direction vector

leofun01 написав:

До чого тут ray tracing взагалі не ясно.

Інформація про те, звідки беруться дані. Ймовірно, інформація ця зайва.

leofun01 написав:

Опиши якось { детальніше | конкретніше } шо саме треба чи як ..

Гадаю, я вже докумекав сам.. У мене є набір векторів, я шукаю середній (average) вектор. Потім знаходжу кут між кожним окремим вектором та середнім. Щось типу, як на цій картинці

Прихований текст

https://i.ibb.co/183D6Pd/image.png

зелений - це середній вектор, ну і векторів у мене набагато більше, звісно :)

P.S. - назва теми ймовірно погана

4 Востаннє редагувалося Droid 77 (26.05.2023 18:35:55)

Re: The opening angle of the cone from the direction vector

Викидайте англовний, і зовсім не англомовний суржик з першого повідомлення. І можливо хтось тоді зрозуміє що саме Ви запитуєте.
Які прмені?
Чи варто враховувати спектр проминів?
.... ?

5 Востаннє редагувалося wander (26.05.2023 21:20:47)

Re: The opening angle of the cone from the direction vector

leofun01 написав:
wander написав:

чи можу я отримати цей кут, знаючи лише фактично вектор напрямку променя?

Ні. Має бути ще щось.

Хоча це й не релеванто, але все ж хочу зрозуміти, чи я помиляюсь?
Якщо ми маємо вектор напрямку, який нормалізовано, то його компоненти x, y та z представляють співвідношення напрямків уздовж відповідних осей, вірно? Тоді, якщо ми візьмемо правосторонню систему координат, а вісь z за напрямок центральної осі конуса, то z-компонента вектора напрямку представлятиме проєкцію напрямку на цю вісь z.
Якщо кут розкриття конуса — це кут між центральною віссю та твірною конуса, то нормалізована z-компонента вектора напрямку фактично мала б представляти косинус кута розкриття?
І взявши arccos ми б мали отримати вихідний кут. Типу:

d   = vec3(x: 1, y: 1, z: 1)
D   = normalize(d)
Phi = acos(D.z) // ~0.95 rad or 54.74 deg
Прихований текст

https://i.ibb.co/2ddzPNQ/image.png

Сенс у тому, щоб мати розуміння, наскільки напрямки променів відмінні (divergent) між собою, у рамках одного фрейму сцени. При деяких умовах, маючи такий аналіз, можна було б сказати, які ефекти відбуваються у сцені, наприклад: hard shadows, Gi, AO, reflections, etc. І маючи представлення напрямків у кутах, а не лише x, y та z — було б значно простіше орієнтуватися. Умовно, якщо кути всіх напрямків приблизно 70°, то можна було б припустити, що це відбиття від води, наприклад.

Я поки що зупинився на пошуку середнього вектора та знаходженні кутів відносно нього. Хоча я і розумію, що середнє значення може давати вектор типу avg=vec3(x:0,y:0,z:0) — що робити з цим я ще поки не придумав.

Droid 77 написав:

Викидайте англовний, і зовсім не англомовний суржик з першого повідомлення. І можливо хтось тоді зрозуміє що саме Ви запитуєте.
Які прмені?
Чи варто враховувати спектр проминів?
.... ?

Досить складно у цьому випадку повноцінно описати проблему. Проте, я і не очікував, що хтось зрозуміє, що я хочу зробити, принаймні одразу.
Дивлячись на ваші питання я розумію, що якби детально я не описував проблему, ви б все одно не зрозуміли. То ж дякую за ваш допис, він дуууже важливий.

6

Re: The opening angle of the cone from the direction vector

wander написав:

Якщо ми маємо вектор напрямку, який нормалізовано, то його компоненти x, y та z представляють співвідношення напрямків уздовж відповідних осей, вірно?

Так.

wander написав:

Тоді, якщо ми візьмемо правосторонню систему координат, а вісь z за напрямок центральної осі конуса, то z-компонента вектора напрямку представлятиме проєкцію напрямку на цю вісь z.

Не можу зказати що повністю зрозумів. Я знаю що таке проекція на { пряму | вісь } або проекція на площину.
Строго кажучи: так, z-компонента будь-якого вектора це проекція цього вектора на вісь z (завжди, не залежно від хіральності системи).

wander написав:

Якщо кут розкриття конуса — це кут між центральною віссю та твірною конуса, то нормалізована z-компонента вектора напрямку фактично мала б представляти косинус кута розкриття?

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

wander написав:

І взявши arccos ми б мали отримати вихідний кут. Типу:

d   = vec3(x: 1, y: 1, z: 1)
D   = normalize(d)
Phi = acos(D.z) // ~0.95 rad or 54.74 deg
Прихований текст

https://i.ibb.co/2ddzPNQ/image.png

Так. Це ти взяв кут між 2 векторами: <0, 0, 1> і <1, 1, 1>

wander написав:

Сенс у тому, щоб мати розуміння, наскільки напрямки променів відмінні (divergent) між собою, у рамках одного фрейму сцени. При деяких умовах, маючи такий аналіз, можна було б сказати, які ефекти відбуваються у сцені, наприклад: hard shadows, Gi, AO, reflections, etc. І маючи представлення напрямків у кутах, а не лише x, y та z — було б значно простіше орієнтуватися.

Тут би більше підійшов розподіл по поверхні сфери в межах заданого кута.

wander написав:

Умовно, якщо кути всіх напрямків приблизно 70°, то можна було б припустити, що це відбиття від води, наприклад.

Мені просто цікаво, що ти з мимобіжними робити будеш ?
https://upload.wikimedia.org/wikipedia/commons/5/59/Cylinder_-_hyperboloid_-_cone.gif

Подякували: wander1

7

Re: The opening angle of the cone from the direction vector

leofun01 написав:

Тут би більше підійшов розподіл по поверхні сфери в межах заданого кута.

Це ти про конвертацію векторів у полярні координати? А тоді рахувати кут в цій сфері?

leofun01 написав:

Мені просто цікаво, що ти з мимобіжними робити будеш ?

Ігноруватиму, швидше за все. Врахування мимобіжності буде наступним етапом, який буде більш комплексно аналізувати дані. А не окремі складові промені, як це я роблю зараз. Тут ще є проблемка з тим, що дані в цілому досить скупі. І не так багато можна дізнатися лише з історії променів. З наявних наразі даних, я зі 100% впевненістю не можу сказати навіть те, чи промені є primary, чи secondary (хоча це досить елементарна річ).

Я ще подивлюся, чи можна буде дістати щось з BVH, якщо вдасться отримати реальну геометрію зі сцени, асоційовану з конкретним променем, то це вже буде щось.

8

Re: The opening angle of the cone from the direction vector

wander написав:

Це ти про конвертацію векторів у полярні координати?

Ні. Поки не бачу потреби відходити від прямокутних координат.

wander написав:

А тоді рахувати кут в цій сфері?

Рахувати кут між вектором напрямку (одним) і всіма іншими векторами, потім виводити як графік або як гістограму. Мені як математику було би зручно так. Але хз яку початкову задачу треба порішати.

wander написав:

є проблемка з тим, що дані в цілому досить скупі. І не так багато можна дізнатися лише з історії променів.

Історії.. то там є ще інфо про час ?
Ці дані містять взагалі що ?

wander написав:

набір променів заданих їхніми origins та directions.

і як саме вони задані (origins & directions) ?

9 Востаннє редагувалося wander (29.05.2023 00:26:23)

Re: The opening angle of the cone from the direction vector

leofun01 написав:

Рахувати кут між вектором напрямку (одним) і всіма іншими векторами, потім виводити як графік або як гістограму. Мені як математику було би зручно так. Але хз яку початкову задачу треба порішати.

Так, про графіки/гістограми/heat map я теж думав, але є кілька не зручностей з цим. По перше нема де ці дані візуалізовувати. По друге, якщо виводити це так, як ти кажеш, то це ~2 млн. векторів лише для одного діспатчу. Таких діспатчів у рамках однієї сцени може бути багато. До прикладу Хітман - має два діспатчі (проходи) трасуванням для Gi i тіней окремо. В сумі це ~4 млн. векторів з однієї сцени. Тому я б віддав перевагу чомусь середньому, щоб не виводити всі дані окремо. Або залишити детальний такий вивід, як окрему фічу, але не по дефолту.
І, тоді який вектор напрямку зі всіх вибирати й чому?
Початкова задача: детальний (на скільки можливо) збір статистики. І її вивід типу min, max, arithmetic mean, geometric mean, variance, etc.

leofun01 написав:

Історії.. то там є ще інфо про час ?
Ці дані містять взагалі що ?

Інфо про час може міститися, але не гарантовано, тому я на це не розраховую.

leofun01 написав:

і як саме вони задані (origins & directions) ?

Так origins, directions та extent. Останнє це типу максимальна довжина променя, яку він може подолати в сцені. Не плутати з довжиною влучання в геометрію. Тобто я не знаю чи промінь зустрів на свому шляху якийсь об'єкт, чи вилетів кудись за межі сцени.

Подякували: leofun011

10

Re: The opening angle of the cone from the direction vector

wander написав:

Початкова задача: детальний (на скільки можливо) збір статистики. І її вивід типу min, max, arithmetic mean, geometric mean, variance, etc.

ем.. 2 млн. векторів .. нема де ці дані візуалізовувати..
Вот уяви, позбирав ти ці дані, вони ж кудись виводяться (?)

11 Востаннє редагувалося wander (29.05.2023 13:44:54)

Re: The opening angle of the cone from the direction vector

leofun01 написав:
wander написав:

Початкова задача: детальний (на скільки можливо) збір статистики. І її вивід типу min, max, arithmetic mean, geometric mean, variance, etc.

ем.. 2 млн. векторів .. нема де ці дані візуалізовувати..
Вот уяви, позбирав ти ці дані, вони ж кудись виводяться (?)

В консольку виводяться :)
Так я розумію, що це не найзручніший варіант, я гадаю додам можливість конвертації цих даних у якийсь формат, який, наприклад можна буде всунути в умовний матлаб, щоб побудувати графік.
Тобто перший етап збору/аналізу інформації - це щось просте та умовно швидке. За замовчуванням я не хочу робити зайвих рухів та не хочу по кілька хвилин чекати на аналіз однієї сцени. Але, якщо я вважатиму, що дефолтного аналізу з виводом у консоль мало, то гаразд, ось додаткові параметри для більш детального аналізу чи/та дампу у зрозумілий для матлабу формат. Але це на майбутнє, наразі я хочу ось цю просту версію з виводом у консоль. Як краще це реалізувати? Мого підходу може бути достатньо? Ось мої думки:

  1. напрямок конуса буде середнім з усіх напрямків променів (векторів)

  2. кут розкриття конуса вираховуватиметься з напрямків всіх променів відносно напрямку конуса

    • кут розкриття визначатиметься променем, напрямок якого найбільше відрізняється від напрямку конуса

  3. дисперсія буде визначатися кутами для кожного променя відносно напрямку конуса

З точки зору математики це має сенс? Чи це якийсь булшит?

Прихований текст

До речі сцени у Хітмані - це умовно найпростіші. Якщо візьмемо Кіберпанк, то там від 9 діспатчів (проходів) на сцену. Де кожен діспатч в середньому представляє від пів мільйона до 2 млн. променів. При однаковому резолюшині.

Подякували: leofun011