Corrected raycaster's problem
This commit is contained in:
		
							parent
							
								
									c760c404a4
								
							
						
					
					
						commit
						8ed2b18d49
					
				@ -9,7 +9,7 @@ let L3D = require('../../static/js/l3d.min.js');
 | 
				
			|||||||
let math = require('mathjs');
 | 
					let math = require('mathjs');
 | 
				
			||||||
let fs = require('fs');
 | 
					let fs = require('fs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let scene = new THREE.Object3D();
 | 
					let scene = new THREE.Scene();
 | 
				
			||||||
let geometry = new THREE.Geometry();
 | 
					let geometry = new THREE.Geometry();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let peach = new THREE.Object3D();
 | 
					let peach = new THREE.Object3D();
 | 
				
			||||||
@ -19,7 +19,8 @@ let mountain = new THREE.Object3D();
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
let loader = new L3D.ProgressiveLoader(
 | 
					let loader = new L3D.ProgressiveLoader(
 | 
				
			||||||
    '/static/data/castle/princess peaches castle (outside).obj',
 | 
					    '/static/data/castle/princess peaches castle (outside).obj',
 | 
				
			||||||
    peach,
 | 
					    // '/static/data/bobomb/bobomb battlefeild.obj',
 | 
				
			||||||
 | 
					    scene,
 | 
				
			||||||
    null
 | 
					    null
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -36,6 +37,14 @@ for (let i = 0; i < 856; i++) {
 | 
				
			|||||||
    ]);
 | 
					    ]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function testDistance(old, newP) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return (
 | 
				
			||||||
 | 
					        L3D.Tools.norm2(L3D.Tools.diff(old.position, newP.position)) +
 | 
				
			||||||
 | 
					        L3D.Tools.norm2(L3D.Tools.diff(old.target, newP.target)) > 0.1
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function main() {
 | 
					function main() {
 | 
				
			||||||
    let xhr = new XMLHttpRequest();
 | 
					    let xhr = new XMLHttpRequest();
 | 
				
			||||||
    xhr.open("GET", "http://localhost:4000/prototype/replay-info/" + id, true);
 | 
					    xhr.open("GET", "http://localhost:4000/prototype/replay-info/" + id, true);
 | 
				
			||||||
@ -57,7 +66,10 @@ var finished = false;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function init(data) {
 | 
					function init(data) {
 | 
				
			||||||
    camera = new L3D.ReplayCamera(50, width / height, 0.01, 100000, [], data, () => finished = true);
 | 
					    camera = new L3D.ReplayCamera(50, width / height, 0.01, 100000, [], data, () => finished = true);
 | 
				
			||||||
 | 
					    scene.add(camera);
 | 
				
			||||||
    camera.resetElements = L3D.resetPeachElements();
 | 
					    camera.resetElements = L3D.resetPeachElements();
 | 
				
			||||||
 | 
					    camera.reset();
 | 
				
			||||||
 | 
					    camera.speed = 0.001;
 | 
				
			||||||
    camera.start();
 | 
					    camera.start();
 | 
				
			||||||
    setTimeout(loop, 0);
 | 
					    setTimeout(loop, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -68,12 +80,29 @@ var finished = false;
 | 
				
			|||||||
let frame = 0;
 | 
					let frame = 0;
 | 
				
			||||||
let raycaster = new THREE.Raycaster();
 | 
					let raycaster = new THREE.Raycaster();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var total = 0;
 | 
				
			||||||
function loop() {
 | 
					function loop() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let old;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    old = {
 | 
				
			||||||
 | 
					        position: new THREE.Vector3().copy(camera.position),
 | 
				
			||||||
 | 
					        target: new THREE.Vector3().copy(camera.target)
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    do {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (let i = 0; i < 10; i++)
 | 
					        for (let i = 0; i < 10; i++)
 | 
				
			||||||
            camera.update(20);
 | 
					            camera.update(20);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        total++;
 | 
				
			||||||
 | 
					        console.log(total);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } while (!testDistance(old, camera) && !finished);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    camera.look();
 | 
					    camera.look();
 | 
				
			||||||
 | 
					    camera.updateMatrixWorld(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // printVector(camera.position);
 | 
					    // printVector(camera.position);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let buf = [];
 | 
					    let buf = [];
 | 
				
			||||||
@ -97,7 +126,7 @@ function loop() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            raycaster.setFromCamera({x:x, y:y}, camera);
 | 
					            raycaster.setFromCamera({x:x, y:y}, camera);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let intersects = raycaster.intersectObjects(peach.children, true);
 | 
					            let intersects = raycaster.intersectObjects(scene.children, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            let grey = 0;
 | 
					            let grey = 0;
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
@ -120,32 +149,33 @@ function loop() {
 | 
				
			|||||||
    //     colorsOccurence[i+1] += colorsOccurence[i];
 | 
					    //     colorsOccurence[i+1] += colorsOccurence[i];
 | 
				
			||||||
    // }
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    var buffer = '';
 | 
					    var buffer = [];
 | 
				
			||||||
    buffer += ('P3\n');
 | 
					    buffer.push('P3\n');
 | 
				
			||||||
    buffer += (width+'\n');
 | 
					    buffer.push(width+'\n');
 | 
				
			||||||
    buffer += (height+'\n');
 | 
					    buffer.push(height+'\n');
 | 
				
			||||||
    buffer += (255+'\n');
 | 
					    buffer.push(255+'\n');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let i = 0; i < height; i++) {
 | 
					    for (let i = 0; i < height; i++) {
 | 
				
			||||||
        for (let j = 0; j < width; j++) {
 | 
					        for (let j = 0; j < width; j++) {
 | 
				
			||||||
            var grey = buf[j][height - i - 1];
 | 
					            var grey = buf[j][height - i - 1];
 | 
				
			||||||
            if (colors[grey] === undefined)
 | 
					            if (colors[grey] === undefined)
 | 
				
			||||||
                buffer += '0 0 0\n';
 | 
					                buffer.push('0 0 0\n');
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                buffer += (colors[grey][0] + ' ' + colors[grey][1] + ' ' + colors[grey][2] + '\n');
 | 
					                buffer.push(colors[grey][0] + ' ' + colors[grey][1] + ' ' + colors[grey][2] + '\n');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fs.writeFileSync(`img/${frame}.ppm`, buffer);
 | 
					    let frameName = "" + frame;
 | 
				
			||||||
 | 
					    var pad = "00000";
 | 
				
			||||||
 | 
					    frameName = pad.substring(0, pad.length - frameName.length) + frameName;
 | 
				
			||||||
 | 
					    fs.writeFileSync(`img/${frameName}.ppm`, buffer.join(''));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Write image buffer to disk
 | 
					    // Write image buffer to disk
 | 
				
			||||||
    frame++;
 | 
					    frame++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log(frame);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!finished)
 | 
					    if (!finished)
 | 
				
			||||||
        setTimeout(loop, 0);
 | 
					        loop();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user