Comments (2)
float max(vec3 v) { return max (max(v.x, v.y), v.z); }
// box.rotation = object-to-world, invRayDir unused if oriented
bool ourIntersectBox(
Box box, Ray ray, out float distance, out vec3 normal,
const bool canStartInBox, const in bool oriented, in vec3 _invRayDir
) {
ray.origin = ray.origin - box.center;
if (oriented) {
ray.dir *= box.rot;
ray.origin *= box.rot;
}
float winding = canStartInBox && (max(abs(ray.origin) * box.invRadius)< 1.0) ? -1 : 1;
vec3 sgn = -sign(ray.dir);
// Distance to plane
vec3 d = box.radius * winding * sgn - ray.origin;
if (oriented) {
d /= ray.dir; else d *= _invRayDir;
}
# define TEST(U, VW) (d.U >= 0.0) && \
all(lessThan(abs(ray.origin.VW + ray.dir.VW * d.U), box.radius.VW))
bvec3 test = bvec3(TEST(x, yz), TEST(y, zx), TEST(z, xy));
sgn = test.x ? vec3(sgn.x,0,0) : (test.y ? vec3(0,sgn.y,0) : vec3(0,0,test.z ? sgn.z:0));
# undef TEST
distance = (sgn.x != 0) ? d.x : ((sgn.y != 0) ? d.y : d.z);
normal = oriented ? (box.rot * sgn) : sgn;
return (sgn.x != 0) || (sgn.y != 0) || (sgn.z != 0);
}
from three-mesh-bvh.
It doesn't seem to beat the function currently being used.
from three-mesh-bvh.
Related Issues (20)
- StaticGeometryGenerator: Simplify by using Mesh.getVertexPosition
- Help wanted. HOT 5
- StaticGeometryGenerator: Auto reset if geometry changes are detected
- StaticGeometryGenerator: Make handling of attributes more robust
- StaticGeometryGenerator: Support multimaterial meshes
- Does `MeshBVH.serialize` generate data for saving in `.bvh` file format? HOT 1
- Provide a CompoundMeshBVH class
- You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file HOT 1
- BVH Workers: sometimes the onProgress value is > 1 or never reaches 1
- Different results when intersect identical triangles. HOT 2
- Check the methods that use 'arrayToBox'.
- Add near and far check in intersectRay HOT 2
- Import error with NextJS HOT 3
- InstancedMesh example HOT 1
- Compute bounds tree after adding mesh to group/scene? HOT 4
- This error will occur when creating bvh using the geometry of a relatively large file. HOT 5
- Add it to the tampermonkey
- Does the three-mesh-bvh library have any methods to distinguish between the cases where two meshes are just touching and when they are embedded within each other? HOT 3
- a syntex error in index.js when import from 'three-mesh-bvh' HOT 1
- ./node_modules/three-mesh-bvh/src/index.js Module parse failed: Unexpected token (12:9) HOT 1
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 three-mesh-bvh.