Raycaster_test
by yi hom
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/u/3587259/Code/Threejs/OrbitControls.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<div id="turn">Raycaster_test
<br/>
<button id="xangleup" style="width:10%">x-angle up</button>
<button id="xangledown" style="width:10%">x-angle down</button>
<br/>
<button id="yangleup" style="width:10%">y-angle up</button>
<button id="yangledown" style="width:10%">y-angle down</button>
<br/>
<button id="siezup" style="width:10%">siezup</button>
<button id="sizedown" style="width:10%">sizedown</button>
</div>
CSS
#turn {
position: absolute;
top: 2%;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
body {
overflow: hidden;
}
JavaScript
var camera, scene, renderer;
var controls;
var raycaster;
var pickables = [];
var intersects;
var sand, SandGeometry, SandMaterial;
var cube;
var xangle = 0;
var yangle = 0;
var geometry,Material,size=10;
var dis = new THREE.Vector3();
var sum = 0;
var col = [];
var row = [];
var raypos = new THREE.Vector3();
var boundary;
var pick = false;
var u, v, vid;
init();
animate();
$("#xangleup").click(function() {
xangle++;
});
$("#yangleup").click(function() {
yangle++;
});
$("#xangledown").click(function() {
xangle--;
});
$("#yangledown").click(function() {
yangle--;
});
$("#siezup").click(function() {
size++;
});
$("#sizedown").click(function() {
size--;
});
function reset(){
for(var i = 0; i<SandGeometry.vertices.length; i++){
SandGeometry.vertices[i].y = 0;
}
}
function ray() {
pick = false;
for (var rayx = -20; rayx < 20; rayx++) {
for (var rayz = -20; rayz < 20; rayz++) {
//console.log("1");
raycaster = new THREE.Raycaster(new THREE.Vector3(rayx, -30, rayz), new THREE.Vector3(0, 1, 0));
intersects = raycaster.intersectObjects(pickables);
if (intersects.length === 0) {
if (pick === true) {
row.push(rayx);
col.push(rayz);
}
pick = false;
}
if (intersects.length > 0) {
dis = intersects[0].point.clone();
sum += dis.y;
if (pick === false) {
row.push(rayx);
col.push(rayz - 1);
}
if(dis.y<0){
u = rayx + 20;
v = rayz + 20;
vid = 40 * v + u;
SandGeometry.vertices[vid].y = dis.y-0.2;
}
pick = true;
}
}
}
// console.log(col);
pick = false;
for (var rayz = -20; rayz < 20; rayz++) {
for (var rayx = -20; rayx < 20; rayx++) {
//console.log("1");
raycaster = new THREE.Raycaster(new THREE.Vector3(rayx, -30, rayz), new THREE.Vector3(0, 1, 0));
intersects = raycaster.intersectObjects(pickables);
if...