Computer Graphics Asked by cemklkn on August 27, 2021

I am working on a small simulation software which has a 3D Renderer that is using OpenGL. I render objects to the screen as triangle meshes. To be able to select the triangles on the screen, I have implemented the Möller–Trumbore ray-triangle intersection algorithm. The algorithm works fine. However, I have another problem. My triangles are not static in the world. When I change the location of the triangle on the screen, I have to change the input vertices of the triangle in the algorithm but I don’t know how to do it mathematically. Is there a way to use this algorithm for dynamic objects?

There are 2 ways to go about intersecting the triangle. Let the vertices of the triangle have positions $v_1, v_2, v_3$. Let the ray have origin $o$ and direction $d$. Let the model (4x4) matrix be $M$.

To find the new vertex coordinates one extends the positions with a 1 (to allow for translations) and multiplies by the model matrix. Let $u_i = (v_{i,x}, v_{i,y}, v_{i,z}, 1)$ then $w_i = Mu_i$. The resulting vertex positions are: $v_i' = (w_{i,x}, w_{i,y}, w_{i,z})$.

The other option is to transform the ray with the inverse matrix $M^{-1}$ and intersect with the non-transformed triangle. To achieve this extend $o$ with a 4th coord of 1 (to account for translation) and extend $d$ with a 4th coord of 0 (to ignore translation) then multiply both with $M^{-1}$: $$o' = M^{-1}(o_x, o_y, o_z, 1)$$ $$d' = M^{-1}(d_x, d_y, d_z, 0)$$ Drop the 4th coordinate of $o'$ and $d'$ then intersect with the triangle formed by $v_1, v_2, v_3$.

Correct answer by lightxbulb on August 27, 2021

2 Asked on August 27, 2021 by b_cass_

1 Asked on August 27, 2021 by gusman

1 Asked on August 27, 2021 by imallett

compute shader deferred rendering fragment shader performance

1 Asked on August 27, 2021 by lightxbulb

1 Asked on August 27, 2021

2 Asked on August 27, 2021

1 Asked on August 27, 2021 by wdc

1 Asked on August 27, 2021

1 Asked on August 27, 2021 by andygeers

1 Asked on August 27, 2021 by calvin-godfrey

0 Asked on August 27, 2021

1 Asked on August 27, 2021 by natew

1 Asked on August 27, 2021 by wduk

1 Asked on August 27, 2021 by lenny-white

0 Asked on August 27, 2021

1 Asked on August 27, 2021

1 Asked on August 27, 2021 by kuba

Get help from others!

Recent Questions

Recent Answers

- Lex on Does Google Analytics track 404 page responses as valid page views?
- Joshua Engel on Why fry rice before boiling?
- haakon.io on Why fry rice before boiling?
- Peter Machado on Why fry rice before boiling?
- Jon Church on Why fry rice before boiling?

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir