Linux build

Physics APIs, Physics file formats, Maya, Max, XSI, Cinema 4D, Lightwave, Blender, thinkingParticles™ and other simulation tools, exporters and importers
bandoler
Posts: 4
Joined: Thu Jul 07, 2005 8:39 am

Linux build

Post by bandoler »

Hi,

I'm currently modifying some uppercase7lowercase to compile bullet in blender under linux (with scons). Just in case you are interested in a patch or something...

(bandoler)
Erwin

Post by Erwin »

hi Bandoler,

thanks a lot, that would help a lot. I still wanted to go Linux, but unfortunately I'm hunting for a randomly occuring bug during conversion.

Thanks for the upper/lower case changes. So could you also get the Bullet demos to work under linux, with glut ?

Thanks again,
Erwin
bandoler
Posts: 4
Joined: Thu Jul 07, 2005 8:39 am

Post by bandoler »

I've just compiled blender and run the blends that you ship with the win distribution. They seem to work fine. The one with the spheres seems to have a problem because it is terribly slow, and the one with the cubes has a fall-through problem sometimes...

I haven't tried to build standalone demos though.

(b)
bandoler
Posts: 4
Joined: Thu Jul 07, 2005 8:39 am

Valgrinding

Post by bandoler »

I've run blender with bullet in linux using valgrind to catch memory errors.

It plots a lot of messages like the following (many are repeated from these).

Code: Select all

==13435== Use of uninitialised value of size 4
==13435==    at 0x8604A3B: RigidBody::updateInertiaTensor() (SimdQuadWord.h:48)
==13435==    by 0x86042DC: RigidBody::RigidBody(MassProps const&, float, float) (RigidBody.cpp:27)
==13435==    by 0x85F5C69: CcdPhysicsController::CcdPhysicsController(CcdConstructionInfo const&) (CcdPhysicsController.cpp:34)
==13435==    by 0x859B4C6: KX_BulletPhysicsController::KX_BulletPhysicsController(CcdConstructionInfo const&, bool) (KX_BulletPhysicsController.cpp:13)
==13435==    by 0x8593B46: KX_ConvertBulletObject(KX_GameObject*, RAS_MeshObject*, KX_Scene*, PHY_ShapeProps*, PHY_MaterialProps*, KX_ObjectProperties*) (KX_ConvertPhysicsObjects.cpp:1007)
==13435==    by 0x8548954: BL_CreatePhysicsObjectNew(KX_GameObject*, Object*, RAS_MeshObject*, KX_Scene*, int, e_PhysicsEngine, KX_BlenderSceneConverter*) (BL_BlenderDataConversion.cpp:821)
==13435==    by 0x854A2D4: BL_ConvertBlenderObjects(Main*, STR_String const&, KX_Scene*, KX_KetsjiEngine*, e_PhysicsEngine, _object*, SCA_IInputDevice*, RAS_IRenderTools*, RAS_ICanvas*, KX_BlenderSceneConverter*, bool) (BL_BlenderDataConversion.cpp:1309)
==13435==    by 0x8541776: KX_BlenderSceneConverter::ConvertScene(STR_String const&, KX_Scene*, _object*, SCA_IInputDevice*, RAS_IRenderTools*, RAS_ICanvas*) (KX_BlenderSceneConverter.cpp:257)
==13435==    by 0x853A46E: StartKetsjiShell (BL_KetsjiEmbedStart.cpp:282)
==13435==    by 0x826C3E3: start_game (space.c:478)
==13435==    by 0x826EE3D: winqreadview3dspace (space.c:1517)
==13435==    by 0x827B305: scrarea_do_winhandle (spacetypes.c:144)
==13435==
==13435== Conditional jump or move depends on uninitialised value(s)
==13435==    at 0x8607E83: ManifoldResult::AddContactPoint(SimdVector3 const&, SimdVector3 const&, float) (SimdTransform.h:185)
==13435==    by 0x860AAAD: GjkPairDetector::GetClosestPoints(DiscreteCollisionDetectorInterface::ClosestPointInput const&, DiscreteCollisionDetectorInterface::Result&) (GjkPairDetector.cpp:174)
==13435==    by 0x860791F: ConvexConvexAlgorithm::ProcessCollision(BroadphaseProxy*, BroadphaseProxy*, float, int, bool) (ConvexConvexAlgorithm.cpp:182)
==13435==    by 0x85FBD5B: SimpleBroadphase::DispatchAllCollisionPairs(Dispatcher&, DispatcherInfo&) (SimpleBroadphase.cpp:237)
==13435==    by 0x85F7AAD: CcdPhysicsEnvironment::proceedDeltaTime(double, float) (CcdPhysicsEnvironment.cpp:328)
==13435==    by 0x858693D: KX_KetsjiEngine::NextFrame() (KX_KetsjiEngine.cpp:391)
==13435==    by 0x853A50B: StartKetsjiShell (BL_KetsjiEmbedStart.cpp:304)
==13435==    by 0x826C3E3: start_game (space.c:478)
==13435==    by 0x826EE3D: winqreadview3dspace (space.c:1517)
==13435==    by 0x827B305: scrarea_do_winhandle (spacetypes.c:144)
==13435==    by 0x81D78CA: scrarea_dispatch_events (editscreen.c:563)
==13435==    by 0x81D8BA6: screen_dispatch_events (editscreen.c:1122)
==13435==
==13435== Conditional jump or move depends on uninitialised value(s)
==13435==    at 0x8608133: ManifoldResult::AddContactPoint(SimdVector3 const&, SimdVector3 const&, float) (SimdTransform.h:185)
==13435==    by 0x860AAAD: GjkPairDetector::GetClosestPoints(DiscreteCollisionDetectorInterface::ClosestPointInput const&, DiscreteCollisionDetectorInterface::Result&) (GjkPairDetector.cpp:174)
==13435==    by 0x860791F: ConvexConvexAlgorithm::ProcessCollision(BroadphaseProxy*, BroadphaseProxy*, float, int, bool) (ConvexConvexAlgorithm.cpp:182)
==13435==    by 0x85FBD5B: SimpleBroadphase::DispatchAllCollisionPairs(Dispatcher&, DispatcherInfo&) (SimpleBroadphase.cpp:237)
==13435==    by 0x85F7AAD: CcdPhysicsEnvironment::proceedDeltaTime(double, float) (CcdPhysicsEnvironment.cpp:328)
==13435==    by 0x858693D: KX_KetsjiEngine::NextFrame() (KX_KetsjiEngine.cpp:391)
==13435==    by 0x853A50B: StartKetsjiShell (BL_KetsjiEmbedStart.cpp:304)
==13435==    by 0x826C3E3: start_game (space.c:478)
==13435==    by 0x826EE3D: winqreadview3dspace (space.c:1517)
==13435==    by 0x827B305: scrarea_do_winhandle (spacetypes.c:144)
==13435==    by 0x81D78CA: scrarea_dispatch_events (editscreen.c:563)
==13435==    by 0x81D8BA6: screen_dispatch_events (editscreen.c:1122)
==13435==
==13435== Use of uninitialised value of size 4
==13435==    at 0x860CB29: VoronoiSimplexSolver::UpdateClosestVectorAndPoints() (SimdQuadWord.h:62)
==13435==    by 0x860D089: VoronoiSimplexSolver::closest(SimdVector3&) (VoronoiSimplexSolver.cpp:234)
==13435==    by 0x860A82B: GjkPairDetector::GetClosestPoints(DiscreteCollisionDetectorInterface::ClosestPointInput const&, DiscreteCollisionDetectorInterface::Result&) (GjkPairDetector.cpp:92)
==13435==    by 0x860791F: ConvexConvexAlgorithm::ProcessCollision(BroadphaseProxy*, BroadphaseProxy*, float, int, bool) (ConvexConvexAlgorithm.cpp:182)
==13435==    by 0x85FBD5B: SimpleBroadphase::DispatchAllCollisionPairs(Dispatcher&, DispatcherInfo&) (SimpleBroadphase.cpp:237)
==13435==    by 0x85F7AAD: CcdPhysicsEnvironment::proceedDeltaTime(double, float) (CcdPhysicsEnvironment.cpp:328)
==13435==    by 0x858693D: KX_KetsjiEngine::NextFrame() (KX_KetsjiEngine.cpp:391)
==13435==    by 0x853A50B: StartKetsjiShell (BL_KetsjiEmbedStart.cpp:304)
==13435==    by 0x826C3E3: start_game (space.c:478)
==13435==    by 0x826EE3D: winqreadview3dspace (space.c:1517)
==13435==    by 0x827B305: scrarea_do_winhandle (spacetypes.c:144)
==13435==    by 0x81D78CA: scrarea_dispatch_events (editscreen.c:563)
Maybe it helps. I trust valgrind quite a lot...

(bandoler)
Erwin

SimdQuadword default constructor

Post by Erwin »

this seems to be 4th component which is usually not used, and not initialized by the default constructor.
For testing I initialized the values in the constructor,
could you do an update blender/extern/bullet/LinearMath/SimdQuadWord.h
and try it again ?
Hopefully it solves most of the uninitialized value's, and potentially even the random collision problem ?

Erwin