CORE
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
more code
(~1800 lines)
+
+
=
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
let canvas = document.getElementById("renderCanvas")
let qvc = new quickvoxelcore.QuickvoxelCore( canvas )
Internally:
Jonathan Lurie - MCIN - June 2018
// ...
let qvc = new quickvoxelcore.QuickvoxelCore( canvas )
let volumeCollection = qvc.getVolumeCollection()
Internally:
Jonathan Lurie - MCIN - June 2018
Internally:
Jonathan Lurie - MCIN - June 2018
// ...
let qvc = new quickvoxelcore.QuickvoxelCore( canvas )
let camcrew = qvc.getCameraCrew()
Internally:
Jonathan Lurie - MCIN - June 2018
// ...
let qvc = new quickvoxelcore.QuickvoxelCore( canvas )
let renderEngine = qvc.getRenderEngine()
Internally:
Jonathan Lurie - MCIN - June 2018
TECH POINT
Jonathan Lurie - MCIN - June 2018
Implemented by the RenderEngine,
in sync with GPU
←sync
sync→
Jonathan Lurie - MCIN - June 2018
In addition to perform the voxel lookup for world coordinates
Jonathan Lurie - MCIN - June 2018
TECH POINT
Jonathan Lurie - MCIN - June 2018
Here is the shortest bit of code necessary for Quickvoxel Core integration
let canvas = document.getElementById("renderCanvas")
// the QuickvoxelCore instance is the entry point
let qvc = new quickvoxelcore.QuickvoxelCore( canvas );
// for future access to the volume collection
let volumeCollection = qvc.getVolumeCollection();
// for future access the render engine
let renderEngine = qvc.getRenderEngine();
// we want to load a NIfTI file using its local URL
volumeCollection.addVolumeFromUrl( "../data/structural.nii.gz" );
// mount the volume when it's loaded and ready!
volumeCollection.on("volumeReady", function(volume){
let couldMount = renderEngine.mountVolumeOnFirstEmptySlot( volume )
if( !couldMount ){
console.log("All volume slots are already taken on the render engine.");
}
})
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
DEMO
Jonathan Lurie - MCIN - June 2018
Jonathan Lurie - MCIN - June 2018
I usually give feature updates on twitter @jonathanlurie