[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24871] trunk/blender: BGE: replace mesh works for Soft Body ( including reinstantiation of physics soft body mesh).

Benoit Bolsee benoit.bolsee at online.be
Tue Nov 24 23:44:29 CET 2009


Revision: 24871
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24871
Author:   ben2610
Date:     2009-11-24 23:44:29 +0100 (Tue, 24 Nov 2009)

Log Message:
-----------
BGE: replace mesh works for Soft Body (including reinstantiation of physics soft body mesh).

Even a static mesh can be used as replacement: the mesh
will be instantiated with the soft body settings of the
object. The position and orientation of the soft body
is preserved after the replacement.

Known limitation: the velocity of the soft body is reset
aftet the replacement. This is because soft body don't
have a well defined velocity.

Modified Paths:
--------------
    trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
    trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    trunk/blender/source/gameengine/Converter/BL_MeshDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_MeshDeformer.h
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.h
    trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.h
    trunk/blender/source/gameengine/Converter/BL_SkinDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_SkinDeformer.h
    trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
    trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
    trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt
    trunk/blender/source/gameengine/Rasterizer/RAS_MeshObject.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_MeshObject.h
    trunk/blender/source/gameengine/Rasterizer/SConscript

Added Paths:
-----------
    trunk/blender/source/gameengine/Converter/KX_SoftBodyDeformer.cpp
    trunk/blender/source/gameengine/Converter/KX_SoftBodyDeformer.h

Removed Paths:
-------------
    trunk/blender/source/gameengine/Converter/BL_SkinMeshObject.cpp
    trunk/blender/source/gameengine/Converter/BL_SkinMeshObject.h

Modified: trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
===================================================================
--- trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj	2009-11-24 20:15:24 UTC (rev 24870)
+++ trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj	2009-11-24 22:44:29 UTC (rev 24871)
@@ -526,10 +526,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.cpp"
-				>
-			</File>
-			<File
 				RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.cpp"
 				>
 			</File>
@@ -561,6 +557,10 @@
 				RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp"
 				>
 			</File>
+			<File
+				RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.cpp"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Header Files"
@@ -615,10 +615,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.h"
-				>
-			</File>
-			<File
 				RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.h"
 				>
 			</File>
@@ -650,6 +646,10 @@
 				RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.h"
 				>
 			</File>
+			<File
+				RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.h"
+				>
+			</File>
 		</Filter>
 	</Files>
 	<Globals>

Modified: trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
===================================================================
--- trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj	2009-11-24 20:15:24 UTC (rev 24870)
+++ trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj	2009-11-24 22:44:29 UTC (rev 24871)
@@ -43,7 +43,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
 				PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -118,7 +118,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
 				PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
 				StringPooling="true"
 				RuntimeLibrary="2"
@@ -194,7 +194,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="2"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
 				PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
 				StringPooling="true"
 				RuntimeLibrary="0"
@@ -269,7 +269,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
 				PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
@@ -344,7 +344,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
 				PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -419,7 +419,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+				AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
 				PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
 				StringPooling="true"
 				RuntimeLibrary="0"

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2009-11-24 20:15:24 UTC (rev 24870)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp	2009-11-24 22:44:29 UTC (rev 24871)
@@ -89,11 +89,11 @@
 #include "BKE_global.h"
 #include "BKE_object.h"
 #include "BKE_scene.h"
-#include "BL_SkinMeshObject.h"
 #include "BL_ModifierDeformer.h"
 #include "BL_ShapeDeformer.h"
 #include "BL_SkinDeformer.h"
 #include "BL_MeshDeformer.h"
+#include "KX_SoftBodyDeformer.h"
 //#include "BL_ArmatureController.h"
 
 #include "BlenderWorldInfo.h"
@@ -720,7 +720,6 @@
 RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* scene, KX_BlenderSceneConverter *converter)
 {
 	RAS_MeshObject *meshobj;
-	bool skinMesh = false;
 	int lightlayer = blenderobj ? blenderobj->lay:(1<<20)-1; // all layers if no object.
 
 	if ((meshobj = converter->FindGameMesh(mesh/*, ob->lay*/)) != NULL)
@@ -743,14 +742,7 @@
 		tangent = (float(*)[3])dm->getFaceDataArray(dm, CD_TANGENT);
 	}
 
-	// Determine if we need to make a skinned mesh
-	if (blenderobj && (mesh->dvert || mesh->key || ((blenderobj->gameflag & OB_SOFT_BODY) != 0) || BL_ModifierDeformer::HasCompatibleDeformer(blenderobj)))
-	{
-		meshobj = new BL_SkinMeshObject(mesh);
-		skinMesh = true;
-	}
-	else
-		meshobj = new RAS_MeshObject(mesh);
+	meshobj = new RAS_MeshObject(mesh);
 
 	// Extract avaiable layers
 	MTF_localLayer *layers =  new MTF_localLayer[MAX_MTFACE];
@@ -877,7 +869,7 @@
 				if (kx_blmat == NULL)
 					kx_blmat = new KX_BlenderMaterial();
 
-				kx_blmat->Initialize(scene, bl_mat, skinMesh);
+				kx_blmat->Initialize(scene, bl_mat);
 				polymat = static_cast<RAS_IPolyMaterial*>(kx_blmat);
 			}
 			else {
@@ -1736,31 +1728,35 @@
 		bool bHasDvert = mesh->dvert != NULL && ob->defbase.first;
 		bool bHasArmature = (ob->parent && ob->parent->type == OB_ARMATURE && ob->partype==PARSKEL && bHasDvert);
 		bool bHasModifier = BL_ModifierDeformer::HasCompatibleDeformer(ob);
+		bool bHasSoftBody = (!ob->parent && (ob->gameflag & OB_SOFT_BODY));
 
 		if (bHasModifier) {
 			BL_ModifierDeformer *dcont = new BL_ModifierDeformer((BL_DeformableGameObject *)gameobj,
-																kxscene->GetBlenderScene(), ob,	(BL_SkinMeshObject *)meshobj);
+																kxscene->GetBlenderScene(), ob,	meshobj);
 			((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
 			if (bHasShapeKey && bHasArmature)
 				dcont->LoadShapeDrivers(ob->parent);
 		} else if (bHasShapeKey) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list