Bläddra i källkod

Merge branch 'master' of https://github.com/assimp/assimp

Kim Kulling 9 år sedan
förälder
incheckning
0e7446af83
4 ändrade filer med 15 tillägg och 14 borttagningar
  1. 7 1
      code/BlenderLoader.cpp
  2. 4 1
      code/BlenderScene.cpp
  3. 3 11
      code/BlenderScene.h
  4. 1 1
      code/SplitLargeMeshes.cpp

+ 7 - 1
code/BlenderLoader.cpp

@@ -1011,13 +1011,19 @@ void BlenderImporter::ConvertMesh(const Scene& /*in*/, const Object* /*obj*/, co
 }
 
 // ------------------------------------------------------------------------------------------------
-aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj, const Camera* /*camera*/, ConversionData& /*conv_data*/)
+aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj, const Camera* cam, ConversionData& /*conv_data*/)
 {
     ScopeGuard<aiCamera> out(new aiCamera());
     out->mName = obj->id.name+2;
     out->mPosition = aiVector3D(0.f, 0.f, 0.f);
     out->mUp = aiVector3D(0.f, 1.f, 0.f);
     out->mLookAt = aiVector3D(0.f, 0.f, -1.f);
+    if (cam->sensor_x && cam->lens) {
+        out->mHorizontalFOV = atan2(cam->sensor_x,  2.f * cam->lens);
+    }
+    out->mClipPlaneNear = cam->clipsta;
+    out->mClipPlaneFar = cam->clipend;
+
     return out.dismiss();
 }
 

+ 4 - 1
code/BlenderScene.cpp

@@ -620,7 +620,10 @@ template <> void Structure :: Convert<Camera> (
     ReadField<ErrorPolicy_Fail>(dest.id,"id",db);
     ReadField<ErrorPolicy_Warn>((int&)dest.type,"type",db);
     ReadField<ErrorPolicy_Warn>((int&)dest.flag,"flag",db);
-    ReadField<ErrorPolicy_Warn>(dest.angle,"angle",db);
+    ReadField<ErrorPolicy_Warn>(dest.lens,"lens",db);
+    ReadField<ErrorPolicy_Warn>(dest.sensor_x,"sensor_x",db);
+    ReadField<ErrorPolicy_Igno>(dest.clipsta,"clipsta",db);
+    ReadField<ErrorPolicy_Igno>(dest.clipend,"clipend",db);
 
     db.reader->IncPtr(size);
 }

+ 3 - 11
code/BlenderScene.h

@@ -312,18 +312,10 @@ struct Camera : ElemBase {
 
     ID id FAIL;
 
-    // struct AnimData *adt;
-
     Type type,flag WARN;
-    float angle WARN;
-    //float passepartalpha, angle;
-    //float clipsta, clipend;
-    //float lens, ortho_scale, drawsize;
-    //float shiftx, shifty;
-
-    //float YF_dofdist, YF_aperture;
-    //short YF_bkhtype, YF_bkhbias;
-    //float YF_bkhrot;
+    float lens WARN;
+    float sensor_x WARN;
+    float clipsta, clipend;
 };
 
 

+ 1 - 1
code/SplitLargeMeshes.cpp

@@ -128,7 +128,7 @@ void SplitLargeMeshesProcess_Triangle::UpdateNode(aiNode* pcNode,
     }
 
     // now build the new list
-    delete pcNode->mMeshes;
+    delete[] pcNode->mMeshes;
     pcNode->mNumMeshes = (unsigned int)aiEntries.size();
     pcNode->mMeshes = new unsigned int[pcNode->mNumMeshes];