Comments (2)
Great to here it! And that's not a bad idea.
THREE does do frustum culling as it renders but doesn't use any type of acceleration structure for that (it just checks every mesh) so you'll start to run into different performance bottlenecks as you add more meshes. If we were to break up a large mesh into smaller ones you might run into issues with the number of draw calls needed or becoming vertex bound because the broken up meshes can no longer share vertices that they could when rendering a single mesh.
There may be some others ways to use this structure to do some per-triangle culling, though. In #77 I'm adding a few functions to perform some shape casting (spheres, boxes) and gather up all the triangles that intersect with the object. You could imagine using a frustum and only rendering the triangles that are in the view by either creating a new index array or using geometry groups to limit what's rendered. Something like MultiDrawArrays would be useful here, but unfortunately that's not available in WebGL. There'd be some work in making it as fast as possible and you'd want to do some benchmarking to ensure the performance penalty of checking the frustum is worth it, though. I'd have to think about it more but maybe there'd be a way to do occlusion culling, as well?
Do you have an example of what you'd like to use it for?
As an aside I was working on a dynamic scene-based oct tree hierarchy awhile ago which I may pick it back up after what I've learned with this project.
from three-mesh-bvh.
Closing in favor of #144
from three-mesh-bvh.
Related Issues (20)
- Triangle Painting - How does it work? HOT 1
- Some examples throwing an exception (Failed to construct 'URL') HOT 1
- StaticSceneGenerator: Fail gracefully when there's no geometry HOT 1
- StaticGeometryGenerator: Invert triangles if the scale is negative
- 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 2
- InstancedMesh example HOT 1
- Compute bounds tree after adding mesh to group/scene? HOT 3
- This error will occur when creating bvh using the geometry of a relatively large file. HOT 5
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.