Comments (3)
The normal stored in the triangle is here to speed up the intersection routine. It's just some precomputed data to solve the system of equations coming from the Möller-Trumbore method. It just so happens to be the cross product of two edges, which is the (not unit length) normal of the triangle. It is possible to recompute this all the time during intersections (just like it is possible to store the points on the triangle, instead of storing one vertex and two edges), but that is obviously going to incur a performance penalty. The layout chosen here is exactly the one used in Embree, for performance reasons. If you want to, you can create your own triangle primitive that only stores three points, and just recompute e1
, e2
, and n
everytime, but I am not sure that this is less expensive than computing the real normal by normalizing n
after BVH traversal.
from bvh.
Of course I would not want to recalculate everything every time.
I understand now that n
is used internally by bvh::Triangle for performance reasons, and not supposed to be used externally for other purposes...
Thanks again for your quick reply...
from bvh.
No problem. Closing the issue then.
from bvh.
Related Issues (20)
- Dot Product Elimination in Sphere Intersector HOT 1
- Flags array seems uninitialized in bottom up algorithm. HOT 3
- Height Field Support HOT 2
- Undefined behavior in morton_split HOT 3
- pragma STDC FP_CONTRACT ON in utilities.hpp is not supported in Visual Studio 2022 HOT 5
- Instances HOT 8
- bvh_always_inline inline HOT 3
- Numerical issue at triangle edges? HOT 11
- Two questions: MB and primitive splitting HOT 1
- raw, bvh node data to upload to the gpu HOT 1
- `build()` in debug build of v2 feels slower than v1 HOT 2
- Recovering "split axis" from MiniTreeBuilder HOT 1
- Face culling options? HOT 1
- Your code is building fine on MSYS2 MINGW64 HOT 1
- Two tests need pthread to compile on linux HOT 2
- Library does not handle rays parallel to axes HOT 5
- Identifiers near and far in bvh.h cause issues when precompiled headers are used HOT 3
- config.min_leaf_size > 1 Leads to assertion failure HOT 1
- What is the use case? is it slower than embree? HOT 1
- Cancel build +progress monitor HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bvh.