Comments (4)
You could divide the scene into a regular grid. In order to get the mesh of the whole scene you just compute the mesh separately for each block of the grid. Of course you would need to implement the GPU-CPU swapping for entire blocks.
This is also done by Nießner et al. in their Voxel Hashing code: https://github.com/nachtmar/VoxelHashing
from infinitam.
Yeah I know how VoxelHashing does it, but within the swapping architecture of InfiniTAM what would we want to do besides replacing the entire swapping engine with the implementation from VoxelHashing? We could just add a separate swapping engine that uses the Chunk based representation on the CPU and keeps the full AOI (~8m sphere around view frustum) on the GPU. I think this would be the best solution overall but I don't know if that would be something upstream would want.
With the current architecture I believe I can just use the CPU meshing implementation on the GlobalCache that's on the host, which would be a bit slow.
from infinitam.
Why do you need to change the current swapping engine? If you want to get the mesh you swap all the voxel blocks which are currently on GPU out to CPU. Then you copy the first chunk to GPU, compute the mesh, swap the mesh to CPU and delete the chunk on the GPU again. Do the same with all other chunks of the scene. You could add this CPU-GPU chunk copying to the meshing engine. The exsting swapping engine should not be affected at all.
What do you mean that you can use the CPU meshing with GlobalCache? The global cache just stores the actual voxel data (SDF) but the voxel positions are stored only in the hash table on GPU.
from infinitam.
Any more information how to exactly achieve this?
I've been trying to figure out how to at least force all of the cache to be swapped in and so far I can only force new things to remain on the GPU not anything that was scanned in earlier.
To do this I just change ITMSwappingEngine_CUDA.cu buildListToSwapIn_device() function from
bool isNeededId = (swapStates[targetIdx].state == 1);
to
bool isNeededId = true;
Which basically keeps anything that was allocated on the GPU to remain there. But old stuff is not possible to bring back this way. I guess I just need a better understanding of what is going on with the whole swapping. So far I've been tracing various functions, but unable to find where the "magic" happens as of now.
Thanks.
from infinitam.
Related Issues (20)
- from rgb to depth HOT 10
- Show nothing when running InfiniTAM.exe with files in Teddy HOT 5
- Multi-camera Application HOT 1
- FileBasedTracker doesn‘t fuse the scene HOT 2
- How big is the voxel grid? HOT 1
- Saving 3D Reconstruction
- Python bindings HOT 6
- Azure Kinect Support HOT 1
- C1083 Cannot open include file: 'GL/glut.h': No such file or directory HOT 5
- Extracting the current VoxelGrid for an additional processing step HOT 1
- iterations algorithm HOT 1
- Python Buffer access to ITMLocalVBA HOT 1
- Cannot access the voxel blocks on device using Nsight VSE Debugger HOT 1
- ITMLocalVBA alone extractable as 3D Reconstruction? HOT 1
- cannot read images HOT 11
- Which version is the newest HOT 1
- Project doesn't build
- Does InfiniTAM support for MS Azure Kinect (soon)?
- Blensor Scans
- Headless InfiniTAM
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 infinitam.