| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- importScripts('../libs/threejs/three.min.js', '../libs/threejs/OBJLoader.js' /*,'../libs/threejs/draco/DRACOLoader.js','../libs/threejs/draco/draco_decoder.js'*/ )
- var manager = new THREE.LoadingManager();
- manager.onProgress = function(url, loaded, total) {
- var progress = parseInt(loaded / total * 100)
- self.postMessage({ cmd: 'progress', progress: progress });
- };
- manager.onLoad = function() {
- console.log('done')
- };
- onmessage = function(e) {
- var data = e.data;
- switch (data.cmd) {
- case 'loadParticles':
- loadParticles(data.files);
- break;
- case 'loadModels':
- loadModels(data.files);
- break;
- case 'loadModelsTexture':
- loadModelsTexture(data.files, data.size);
- break;
- }
- }
- function loadTitles(files) {
- var loader = new THREE.FileLoader(manager).setResponseType('arraybuffer').setPath('../titles/')
- files.forEach(function(file) {
- loader.load(file.image + '.png', function(buffer) {
- console.log(buffer)
- self.postMessage({ cmd: 'loadTitles', file: { type: 'image', name: file.name, format: 'png', buffer: buffer } }, [buffer]);
- })
- loader.load(file.mask + '.png', function(buffer) {
- self.postMessage({ cmd: 'loadTitles', file: { type: 'mask', name: file.name, format: 'png', buffer: buffer } }, [buffer]);
- })
- });
- }
- function loadParticles(files) {
- var loader = new THREE.FileLoader(manager).setResponseType('json').setPath('../')
- files.forEach(function(file) {
- loader.load(file, function(data) {
- var positions = new Float32Array(data.aPos);
- var numPoints = positions.length;
- var ranking = new Float32Array(numPoints);
- for (var i = 0; i < numPoints; i++)
- {
- ranking[i] = i / numPoints;
- }
- self.postMessage({ cmd: 'loadParticles', file: { positions: positions.buffer, ranking: ranking.buffer } }, [positions.buffer, ranking.buffer]);
- })
- });
- }
- function loadModelsTexture(files, size) {
- var loader = new THREE.FileLoader(manager).setResponseType('arraybuffer').setPath('../models/')
- files.forEach(function(file) {
- loader.load(file + (size ? '_' + size : '') + '.jpg', function(buffer) {
- self.postMessage({ cmd: 'loadModelsTexture', file: { name: file, buffer: buffer } }, [buffer]);
- })
- })
- }
- function loadModels(files) {
- var loader = new THREE.OBJLoader(manager).setPath('../models/')
- files.forEach(function(file) {
- loader.load(file + '.obj', function(obj) {
- var geometry = obj.children[0]["geometry"]
- var uv = geometry.attributes.uv.array.buffer
- var normal = geometry.attributes.normal.array.buffer
- var position = geometry.attributes.position.array.buffer
- self.postMessage({ cmd: 'loadModels', file: { name: file, uv: uv, normal: normal, position: position } }, [uv, normal, position]);
- })
- })
- }
|