2016-02-15 2 views
-3

Моя программа генерирует .obj во время выполнения (сохраняется как строка), и теперь я хочу загрузить его с помощью функции load() в файле three.js (OBJLoader).
Внутри load() он использует HTTP-запрос для извлечения файла .obj, который уже существует в каталоге сервера.Загрузка .obj хранения в строке с использованием three.js

Есть ли какой-либо другой метод, который мне не нужен, чтобы сгенерировать новый .obj-файл в каталоге сервера и загрузить его снова?

Если это невозможно, как я могу автоматически создать файл .obj в каталоге сервера?

спасибо.

ответ

0

Функция OBJLoader.load вызывает функцию parse после завершения загрузки. Вы можете позвонить этой функции самостоятельно, отправив текст, который обычно находится в файле .obj.

var myObj = THREE.OBJLoader.parse(text); 

Источник можно увидеть here

0

Я сделал это с помощью переопределения функции загрузки, чтобы обойти проверку URL-адрес, как это:

 var objstring: string = "...." // This is your obj file 
     var loader = new THREE.OBJLoader(); 

     // Add a localtext parameter and an if check if url == "" 
     loader.load = function load(url, localtext, onLoad, onProgress, onError) { 
      var scope = this; 
      var loader = new THREE.XHRLoader(scope.manager); 
      loader.setPath(this.path); 
      loader.load(url, function (text) { 
       if (url==""){ 
        text = localtext; 
       } 
       onLoad(scope.parse(text)); 
      }, onProgress, onError); 
     }, 

     // Now you can use either url or directly string input. 
     loader.load('', objstring, function (object) { 
      object.traverse(function (child) { 
       if (child instanceof THREE.Mesh) { 
        child.material = new THREE.MeshBasicMaterial(); 
       } 
      }); 
      scene.add(object); 
     });