[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47930] branches/soc-2012-bratwurst/source /blender/assimp: - bf_assimp: convert assimp lights to blender lamps with similar appearance.

Alexander Gessler alexander.gessler at gmx.net
Fri Jun 15 03:06:24 CEST 2012


Revision: 47930
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47930
Author:   aramis_acg
Date:     2012-06-15 01:06:14 +0000 (Fri, 15 Jun 2012)
Log Message:
-----------
- bf_assimp: convert assimp lights to blender lamps with similar appearance.
- bf_assimp: fix error message in mesh converter

Modified Paths:
--------------
    branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp
    branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp

Modified: branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp	2012-06-15 00:46:19 UTC (rev 47929)
+++ branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp	2012-06-15 01:06:14 UTC (rev 47930)
@@ -299,8 +299,7 @@
 		}
 		else {
 			if (m.GetNumUVChannels() != uv_count) {
-				// XXX error
-
+				error("unexpected number of UV channels, ignoring");
 				return;
 			}
 		}

Modified: branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp	2012-06-15 00:46:19 UTC (rev 47929)
+++ branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp	2012-06-15 01:06:14 UTC (rev 47930)
@@ -308,8 +308,46 @@
 		return NULL;
 	}
 
-	// XXX: import light attributes
+	lamp->r = light.mColorDiffuse.r;
+	lamp->g = light.mColorDiffuse.g;
+	lamp->b = light.mColorDiffuse.b;
 
+	if(light.mColorSpecular.r < 1e-4f && light.mColorSpecular.g < 1e-4f && light.mColorSpecular.b < 1e-4f)
+	{
+		lamp->mode |= LA_NO_SPEC;
+	}
+
+	switch(light.mType) 
+	{
+		case aiLightSource_UNDEFINED:
+
+		case aiLightSource_DIRECTIONAL:
+			lamp->type = LA_SUN;
+			break;
+
+		case aiLightSource_POINT:
+			lamp->type = LA_LOCAL;
+			break;
+
+		case aiLightSource_SPOT:
+			lamp->type = LA_SPOT;
+			
+			break;
+	}
+
+	// XXX should also set Att1,Att2?
+	if (light.mAttenuationQuadratic > 0.0f)
+	{
+		lamp->falloff_type = LA_FALLOFF_INVSQUARE;
+	}
+	else if (light.mAttenuationLinear > 0.0f)
+	{
+		lamp->falloff_type = LA_FALLOFF_INVLINEAR;
+	}
+	else {
+		lamp->falloff_type = LA_FALLOFF_CONSTANT;
+	}
+
 	Lamp* const old_lamp = static_cast<Lamp*>(ob->data);
 
 	ob->data = lamp;




More information about the Bf-blender-cvs mailing list