1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /*jshint esversion: 6 */
- let blender_texture_cache = {};
- module.exports = function createThreeJSTexture(image) {
- let base64 = require("base64-js");
- let parsed_blend_file = image.__blender_file__;
- let texture = null;
- let name = image.aname;
- if (image.packedfile) {
- if (blender_texture_cache[name]) {
- texture = blender_texture_cache[name];
- } else {
- //get the extension
- let ext = name.split('.').pop();
- let data = image.packedfile;
- let size = data.size;
- let offset = data.data.__data_address__;
- let raw_data = parsed_blend_file.byte.slice(offset, offset + size);
- let encodedData = base64.fromByteArray(raw_data);
- let dataURI;
- switch (ext) {
- case "png":
- dataURI = "data:image/png;base64," + encodedData;
- break;
- case "jpg":
- dataURI = "data:image/jpeg;base64," + encodedData;
- break;
- }
- let img = new Image();
- img.src = dataURI;
- texture = new THREE.Texture(img);
- img.onload = () => {
- texture.needsUpdate = true;
- };
- blender_texture_cache[name] = texture;
- }
- }
- return texture;
- };
|