Ray casting queries for voxel.js
Via npm:
npm install voxel-raycast
Here is how you could use the library to make a ray query:
var traceRay = require("voxel-raycast").bind({}, voxels);
var hit_normal = new Array(3);
var hit_position = new Array(3);
var hit_block = traceRay([0,0,0], [1,0,0], 10.0, hit_positions, hit_normal);
if(hit_block > 0) {
console.log("Hit:", hit_block, hit_position, hit_normal);
} else {
console.log("Miss");
}
Casts a ray against a voxel.js game instance.
voxels
is the main voxel.js instanceorigin
is the origin of the raydirection
is the direction of the raymax_d
is a limit on the distance the ray can travelhit_position
is the point of impact of the ray and the voxel worldhit_normal
is the normal of the ray impactEPSILON
is an optional floating point number giving the relative accuracy of the ray distance (default 1e-8)
Returns the block type of the voxel that the ray cast hit, or if no voxel was encountered returns 0 and hit_position is set to origin + direction * max_d. To get the voxel coordinate, round the hit position down using Math.floor
If the the ray starts in a block or does not hit a voxel, the returned hit normal is [0,0,0]
(c) 2013 Mikola Lysenko. BSD License