create premake/cmake file for Bullet/Extras/obj2sdf

add missing 1.sdf for Bullet/data/kitchens/1.sdf
add support for getting keyboard events (pybullet.getKeyboardEvents and b3RobotSimulatorClientAPI::getKeyboardEvents)
This commit is contained in:
Erwin Coumans
2017-03-02 12:33:22 -08:00
parent 255b21a776
commit 34fc2fb589
29 changed files with 7317 additions and 40 deletions

View File

@@ -1,4 +1,4 @@
SUBDIRS( Serialize ConvexDecomposition HACD GIMPACTUtils )
SUBDIRS( obj2sdf Serialize ConvexDecomposition HACD GIMPACTUtils )
IF(BUILD_BULLET3)
SUBDIRS( InverseDynamics)

View File

@@ -0,0 +1,20 @@
SET(includes
.
${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs
${BULLET_PHYSICS_SOURCE_DIR}/src
)
LINK_LIBRARIES(
Bullet3Common
)
INCLUDE_DIRECTORIES(${includes})
ADD_EXECUTABLE(App_obj2sdf
obj2sdf.cpp
../../examples/Utils/b3ResourcePath.cpp
../../examples/Utils/b3ResourcePath.h
../../examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp
)

View File

@@ -8,19 +8,29 @@
#include <stdio.h>
#include <assert.h>
#define ASSERT_EQ(a,b) assert((a)==(b));
#include "MinitaurSetup.h"
#include"../../ThirdPartyLibs/Wavefront/tiny_obj_loader.h"
#include"Wavefront/tiny_obj_loader.h"
#include <vector>
#include "Bullet3Common/b3FileUtils.h"
#include "../Utils/b3ResourcePath.h"
#include "Bullet3Common/b3CommandLineArgs.h"
#define MAX_PATH_LEN 1024
int main(int argc, char* argv[])
{
const char* fileName = "kitchens/kitchen.obj";
b3CommandLineArgs args(argc,argv);
char* fileName;
args.GetCmdLineArgument("fileName",fileName);
printf("fileName = %s\n", fileName);
if (fileName==0)
{
printf("Please use --fileName=\"pathToObj\".");
exit(0);
}
char fileNameWithPath[MAX_PATH_LEN];
bool fileFound = (b3ResourcePath::findResourcePath(fileName,fileNameWithPath,MAX_PATH_LEN))>0;
bool fileFound = (b3ResourcePath::findResourcePath(fileName,fileNameWithPath,MAX_PATH_LEN))>0;
char materialPrefixPath[MAX_PATH_LEN];
b3FileUtils::extractPath(fileNameWithPath,materialPrefixPath,MAX_PATH_LEN);
@@ -32,7 +42,7 @@ int main(int argc, char* argv[])
FILE* sdfFile = fopen(sdfFileName,"w");
if (sdfFile==0)
{
printf("Fatal: cannot create sdf file %s\n",sdfFileName);
printf("Fatal error: cannot create sdf file %s\n",sdfFileName);
exit(0);
}
@@ -52,7 +62,7 @@ int main(int argc, char* argv[])
FILE* f = fopen(objFileName,"w");
if (f==0)
{
printf("Fatal: cannot create part obj file %s\n",objFileName);
printf("Fatal error: cannot create part obj file %s\n",objFileName);
exit(0);
}
fprintf(f,"# Exported using automatic converter by Erwin Coumans\n");
@@ -81,13 +91,16 @@ int main(int argc, char* argv[])
}
fprintf(f,"\n");
for (int vn = 0;vn<shape.mesh.normals.size()/3;vn++)
int numNormals = int(shape.mesh.normals.size());
for (int vn = 0;vn<numNormals/3;vn++)
{
fprintf(f,"vn %f %f %f\n",shape.mesh.normals[vn*3+0],shape.mesh.normals[vn*3+1],shape.mesh.normals[vn*3+2]);
}
fprintf(f,"\n");
for (int vt = 0;vt<shape.mesh.texcoords.size()/2;vt++)
int numTexCoords = int(shape.mesh.texcoords.size());
for (int vt = 0;vt<numTexCoords/2;vt++)
{
fprintf(f,"vt %f %f\n",shape.mesh.texcoords[vt*2+0],shape.mesh.texcoords[vt*2+1]);
}

View File

@@ -0,0 +1,18 @@
project ("App_obj2sdf")
language "C++"
kind "ConsoleApp"
includedirs {"../../src",
"../../examples/ThirdPartyLibs"}
links{"Bullet3Common"}
files {
"obj2sdf.cpp",
"../../examples/Utils/b3ResourcePath.cpp",
"../../examples/Utils/b3ResourcePath.h",
"../../examples/ThirdPartyLibs/Wavefront/tiny_obj_loader.cpp",
}

View File

@@ -6,4 +6,4 @@ include "InverseDynamics"
include "Serialize/BulletFileLoader"
include "Serialize/BulletWorldImporter"
include "Serialize/BulletXmlWorldImporter"
include "obj2sdf"