From dcab0e2b1f4c370680c6bdb7b3e8fec0f5f2c8a4 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Thu, 6 Aug 2015 00:35:03 -0700 Subject: [PATCH] use multibody by default when using FILE/Open URDF (instead of maximal coordinate rigid body+typed constraints) --- data/slope.bullet | Bin 77316 -> 79960 bytes .../ExampleBrowser/OpenGLExampleBrowser.cpp | 3 +-- .../Importers/ImportURDFDemo/UrdfParser.cpp | 4 ++-- examples/OpenGLWindow/stb_image_write.h | 5 ++++- examples/Tutorial/Tutorial.cpp | 20 +++++++----------- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/data/slope.bullet b/data/slope.bullet index 035cc6a6b00e8479e3a8ddcbcfb1cf3266352c01..ef8d1340865ca3cd370cf0ee9697b822a7c49a79 100644 GIT binary patch delta 8335 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 delta 7738 zcmb7}3s6*57{||r-DO#J5d~I6Ob|2_HANyaUu;|-iBA+Y@qwa|PeLP8OGG41w1G29 zk11bM&NPlwWav25s5MSA=~Px&lTCw8W;0IXSVK+YG=1lO2VK7IJ%@JZu#ak1Na1dkS^*GVO&nG&>>&}lV=7J2w zjg#Y#Ovwo+=|>PlPKDO_5d!dB9M8)l?Pt~R1hh&3`n!xxoG}&Je<~!nGS-Sx;X@J{ zh=mp(28dY}$K9V8F-g{Kym-I!2Jcv}XNL+F+=Oa9;EgP3orNR$IoF?->Ucw7AU_lc zT5WG|Fh3aReeZR3bPvAElbR?_5l2qp;_ZXS^4O>||L-(C$!Xl&s4)4U=w>`kTx@2e zKLG}i%zY67KEpqZukn>w1L#Fa58pn{OESN~JXc%UQFYoywen2NINH8ByYsu%8 z@hxhsH^E{63-KL^vRXxQCa*{q3mVV&1z)#jB#9t?t5RccS!rhQKJwN_i1Z;yz(S7n zk;u}dEIuQtXO~sGm5j5POwd?BP2SR1&SG`S5PrfGvzWjaw_&xu1ab4jwI;vNPa+D5 zq!7}>(~3;q)?bni66r^%D1L62$#0|~rIN@4g!J#$$wvvi$J;61^-$ zRu5k&a11ct%cUAwj3pRsDBz;kmrM0JsR^=lmuf!CN$;%CR1=9ae30N6V55=cvYOqd zGJzm|%R_^!6w=5i2y7~=yCIDb!N4`ZJagA6r13aGL?qQqqkvEtM~f@f(l7}n;waWq zxy3|6VHB;ZlC_-HcM`!citgB?k;PX^ICkTR3wE0C@$!;^5 zN)U{q=c^^6+E5A!icz$!Mj?%91QAhGFOBJh!Wi07rS z&?I$hx0%c%2u9GF*JL%thBBX!7(w|PvY5k$vVc$`g6gI5B%v^Vwj9(f*g}Gd_^FXb z2|+M=wjI?}T0}4rJ>iGf+X`tcCJ4sQj$;zBbBrYf5%Cj#ZM`cIm18U=C`Qou;|gh% z5(FdYfD?LYEF&aF&{6NHrLmk)7(qkLSWmU7lo1jm=}!dr9AqOwF^(30D^WX%JWCL~ zLb~#bL=+OKA|yuAs_!M~Ad%+?g;z-Hen3j)Ae#t@vGl-?vYyjgKTj}>rAL3#NMtj? zFqSsAYb3ITU>Hk3xvr4NR)SzGz5KJRWG9gq2!gTn+Ak7ON#sR>Vl3_WRnDTFM79wG zuaJ6fNkk!$YC>W(4gMxc2Z?Ma6kZ`6bQ>v^L~00$@ih02tmh<=9R$NGq!a(pV6_Cp zh+5pC!FCc1BkIb(BxdI#bp*kPTKTs^A}tlrpae8cXti$;mDF`_o& rr0XJEW0bIZI7b=O$$-BlaE7z2#BY?d<3?-58l#n!oq9jZIOhKsv0^2r diff --git a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp index 8ff0a7bf3..37a602c93 100644 --- a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp +++ b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp @@ -266,9 +266,8 @@ void openFileDemo(const char* filename) s_parameterInterface->removeAllParameters(); - CommonExampleOptions options(s_guiHelper,0); + CommonExampleOptions options(s_guiHelper,1); options.m_fileName = filename; - char fullPath[1024]; sprintf(fullPath, "%s", filename); b3FileUtils::toLower(fullPath); diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.cpp b/examples/Importers/ImportURDFDemo/UrdfParser.cpp index 2e42525d5..cb3ed0816 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.cpp +++ b/examples/Importers/ImportURDFDemo/UrdfParser.cpp @@ -794,8 +794,8 @@ bool UrdfParser::loadUrdf(const char* urdfText, ErrorLogger* logger, bool forceF vis.m_localMaterial = **mat; } else { - logger->reportError("Cannot find material with name:"); - logger->reportError(vis.m_materialName.c_str()); + //logger->reportError("Cannot find material with name:"); + //logger->reportError(vis.m_materialName.c_str()); } } } diff --git a/examples/OpenGLWindow/stb_image_write.h b/examples/OpenGLWindow/stb_image_write.h index 41b703388..1a51a939f 100644 --- a/examples/OpenGLWindow/stb_image_write.h +++ b/examples/OpenGLWindow/stb_image_write.h @@ -493,7 +493,10 @@ int stbi_write_png(char const *filename, int x, int y, int comp, const void *dat unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); if (!png) return 0; f = fopen(filename, "wb"); - if (!f) { free(png); return 0; } + if (!f) { + free(png); + return 0; + } fwrite(png, 1, len, f); fclose(f); free(png); diff --git a/examples/Tutorial/Tutorial.cpp b/examples/Tutorial/Tutorial.cpp index b924f682a..946139fa6 100644 --- a/examples/Tutorial/Tutorial.cpp +++ b/examples/Tutorial/Tutorial.cpp @@ -61,6 +61,9 @@ struct LWRightBody //Exponential map //google for "Practical Parameterization of Rotations Using the Exponential Map", F. Sebastian Grassia + //btQuaternion q_w = [ sin(|w|*dt/2) * w/|w| , cos(|w|*dt/2)] + //btQuaternion q_new = q_w * q_old; + btVector3 axis; btScalar fAngle = m_angularVelocity.length(); //limit the angular motion @@ -88,6 +91,7 @@ struct LWRightBody predictedOrn.normalize(); m_worldPose.m_worldOrientation = predictedOrn; } + } @@ -99,13 +103,9 @@ struct LWRightBody -///quick demo showing the right-handed coordinate system and positive rotations around each axis class Tutorial : public CommonExampleInterface { CommonGraphicsApp* m_app; - float m_x; - float m_y; - float m_z; int m_tutorialIndex; LWRightBody* m_body; @@ -114,14 +114,14 @@ public: Tutorial(CommonGraphicsApp* app, int tutorialIndex) :m_app(app), - m_x(0), - m_y(0), - m_z(0), m_tutorialIndex(tutorialIndex) { m_app->setUpAxis(2); - + switch (m_tutorialIndex) + { + + } { int boxId = m_app->registerCubeShape(100,100,1); @@ -186,10 +186,6 @@ public: } virtual void stepSimulation(float deltaTime) { - m_x+=0.01f; - m_y+=0.01f; - m_z+=0.01f; - //m_body->m_worldPose.m_worldPosition+= btVector3(0,0.01,0); //m_body->m_linearVelocity=btVector3(0,0.1,0); m_body->m_angularVelocity =btVector3(0,0.1,0); m_body->integrateTransform(deltaTime);