Page **1** of **1**

### “Importance Sampling of Many Lights” - paper: participating media

Posted: **Tue Sep 29, 2020 6:37 am**

by **b_old**

I'm reading and implementing a paper about Importance Sampling of Many Lights with Adaptive Tree Splitting.

http://aconty.com/pdf/many-lights-hpg2018.pdf

In section 5.2 on cluster importance for participating media, there is a part that I don't understand: How do they compute the vectors o1, o2? I don't understand the paragraph explaining how to obtain this basis from v1, v2. Can anyone explain it?

### Re: “Importance Sampling of Many Lights” - paper: participating media

Posted: **Wed Sep 30, 2020 8:24 pm**

by **graphicsMan**

Okay, I haven't read through the paper, but my understanding from the surrounding context is that you are already given \(v_0\) and \(v_1\). You use those to compute an orthonormal basis. \(o_0\) and \(o_1\) will be orthogonal unit vectors in the same plane as \(v_0\) and \(v_1\). \(o_0 = v_0/||v_0||\) and \(o_1\) will be an orthogonal unit vector. Essentially, you can use the normalized cross product of \(v_0\) and \(v_1\) to have an ortho vector to both of \(v_0, v_1\), call it \(v_2\). Finally you could take another cross product of \(o_0\) and \(v_2\) to get \(o_1\).

You could also use Gram-Schmidt orthonormalization.

Again, didn't read the paper, so I may be off somewhere, but judging based on that section, I think \(o_0, o_1\) is just a pair of basis vectors in the same plane as \(v_0, v_1\).

### Re: “Importance Sampling of Many Lights” - paper: participating media

Posted: **Thu Oct 01, 2020 7:35 am**

by **b_old**

Thanks for your explanation, I think I understand the section better now!

I had also started a conversation on [computer graphics stack exchange, which might be helpful:

https://computergraphics.stackexchange.com/questions/10269/importance-sampling-of-many-lights-with-adaptive-tree-splitting-paper-parti/10276?noredirect=1#comment16095_10276