2015-08-11 2 views
0

Я пытаюсь экспортировать некоторые сетки, созданные в Away3D (с Extrude Path), в файл .obj, который я могу использовать в Three.js. Мне удалось экспортировать геометрию, но можно определить UV-отображение. Вот что я получил до сих пор:Сохранение сетки Away3D для Wavefront .obj

 private static function getObjFile(geometry:Geometry):String { 
        var objFile:String = "" ; 
        var i:int = 0; 
        var pri:int = 0; 
        var sg:SubGeometry; 
        var b:uint = 0; 

        for each(sg in geometry.subGeometries){ 
          objFile += "\no"; 
          i = 0; 
          for each(var v:Number in sg.vertexData){ 
          if(i%3 == 0) objFile += "\nv"; 
          i++; 
          objFile += " " + setPrecision(v, 1000); 
          } 

          i=0; 
          for each(var v:Number in sg.UVData){ 
           if(i%2 == 0) objFile += "\nvt"; 
           i++; 
           objFile += " " + setPrecision(v, 1000); 
          } 


          b = 0; 
          for each(var ind:uint in sg.indexData){ 
           if(b%3 == 0) objFile += "\nf"; 
           b++; 
           objFile += " " + String(ind + 1 + pri)+"/"+String(ind + 1 + pri); 
          } 


          b = 0; 


          for each(var n:Number in sg.vertexNormalData) { 

           if (b % 3 == 0) objFile += "\nvn"; 
           objFile += " " + setPrecision(n, 1000); 
           b++; 

          } 





          pri = i /3; 
        } 


       return objFile; 
    } 

Что я делаю неправильно? Мне нужна геометрия и UVs ... пока я сохраняю только первые две петли, я получаю действительные объекты с геометрией и без UV. Если добавить UV-фильтр ... Ультрафиолетовый буфер по какой-то причине недействителен.

ответ

0

Попробуйте это:

private static function getObjFile(geometry:Geometry):String { 
    var objFile:String = "" ; 
    var i:int = 0; 
    var pri:int = 0; 
    var sg:SubGeometry; 
    var b:uint = 0; 

    for each(sg in geometry.subGeometries){ 
     objFile += "\no"; 
     i = 0; 
     for each(var v:Number in sg.vertexData){ 
      if(i%3 == 0) objFile += "\nv"; 
      i++; 
      objFile += " " + setPrecision(v, 1000); 
     } 

     i=0; 
     for each(v in sg.vertexNormalData){ 
      if(i%3 == 0) objFile += "\nvn"; 
      i++; 
      objFile += " " + setPrecision(v, 1000); 
     } 

     i=0; 
     for each(v in sg.UVData){ 
      if(i%2 == 0) objFile += "\nvt"; 
      i++; 
      objFile += " " + setPrecision(v, 1000); 
     } 


     b = 0; 
     for each(var ind:uint in sg.indexData){ 
      if(b%3 == 0) objFile += "\nf"; 
      b++; 
      var indexString:String = String(ind + 1 + pri); 
      objFile += " " + indexString + '/' + indexString + '/' + indexString; 
     } 

     pri = i /3; 
    } 


    return objFile; 
} 
+0

Та же ошибка: один или несколько нормалей буферы были либо пустыми, либо недействительно (1). – Iansen

Смежные вопросы