bullet3/examples/pybullet/unity3d
2018-01-31 09:07:31 -08:00
..
autogen update autogenerated NativeMethods.cs from latest PhysicsClientC_Api.h 2018-01-31 09:07:31 -08:00
examples update unity3d/examples/NewBehaviourScript.cs to load a plane and cube, synchronize the world transform 2017-10-04 12:21:52 -07:00
readme.txt Quick first prototype/test to integrate pybullet into Unity, 2017-09-20 23:18:18 -07:00

Quick prototype to connect Unity 3D to pybullet

Generate C# Native Methods using the Microsoft PInvoke Signature Toolkit:

sigimp.exe  /lang:cs e:\develop\bullet3\examples\SharedMemory\PhysicsClientC_API.h

Add some #define B3_SHARED_API __declspec(dllexport) to the exported methods,
replace [3], [4], [16] by [] to get sigimp.exe working.

This generates autogen/NativeMethods.cs

Then put pybullet.dll in the right location, so Unity finds it.

NewBehaviourScript.cs is a 1 evening prototype that works within Unity 3D:
Create a connection to pybullet, reset the world, load a urdf at startup.
Step the simulation each Update.

Now the real work can start, converting Unity objects to pybullet,
pybullet robots to Unity, synchronizing the transforms each Update.

void Start () {
	IntPtr pybullet = b3ConnectSharedMemory(12347);
	IntPtr cmd = b3InitResetSimulationCommand(pybullet);
	IntPtr status = b3SubmitClientCommandAndWaitStatus(pybullet, cmd);
	cmd = b3LoadUrdfCommandInit(pybullet, "plane.urdf");
	status = b3SubmitClientCommandAndWaitStatus(pybullet, cmd);
}

void Update () 
{
	IntPtr cmd = b3InitStepSimulationCommand(pybullet);
	IntPtr status = b3SubmitClientCommandAndWaitStatus(pybullet, cmd);
}