Hi Elena,

 

The integration with Unity should be fairly straightforward. There are two easy 
ways to do this:

 

1) Run Unity and SmartBody as a separate processes. SmartBody will send 
information over the network to Unity. In Unity, you  create an instance of the 
BoneBusServer, and then implement the following functions in Unity like:

 

                ...

      typedef void (*OnCreateCharacterFunc)( const int characterID, const 
std::string characterType, const std::string characterName, const int 
skeletonType, void * userData );

      typedef void (*OnDeleteCharacterFunc)( const int characterID, void * 
userData );

      typedef void (*OnSetCharacterPositionFunc)( const int characterID, const 
float x, const float y, const float z, void * userData );

      typedef void (*OnSetCharacterRotationFunc)( const int characterID, const 
float w, const float x, const float y, const float z, void * userData );

      typedef void (*OnBoneRotationsFunc)( const BulkBoneRotations * 
bulkBoneRotations, void * userData );

      typedef void (*OnBonePositionsFunc)( const BulkBonePositions * 
bulkBonePositions, void * userData );

      typedef void (*OnSetCharacterVisemeFunc)( const int characterID, const 
int visemeId, const float weight, const float 

                ...

                ...

 

So, SmartBody will send a 'character created' message, and in turn, you create 
a character in Unity. Then it will send a 'character foo has bone arm in 
position x,y,z' message, and you would then alter your Unity character 
according to that message. 

 

2) Alternatively, you can combine Unity and SmartBody into the same process 
uses the smartbody-dll project. To do this, you create an instance of 
Smartbody_dll, then extend the SmartBodylistener class. Then within your Unity 
execution loop, call the  GetNumberOfCharacters() function and then  
GetCharacter() for each one, and update your unity characters with the 
information contained within the SmartbodyCharacter that is returned with that 
last call. Where the SmartbodyCharacter looks like this:

 

class SmartbodyCharacter

{

   public:

      std::string m_name;

      float x;  <-- world position x

      float y;  <--                y 

      float z;  <--                z

      float rw; <-- world quaternion w

      float rx; <--                  x

      float ry; <--                  y

      float rz; <--                  z

 

      std::vector< SmartbodyJoint > m_joints;

};

 

and the SmartbodyJoint looks like this:

 

class SmartbodyJoint

{

   public:

      std::string m_name;

      float x;

      float y;

      float z;

      float rw;

      float rx;

      float ry;

      float rz;

};

 

I think that (1) is a little bit easier, and gives you a few other niceties as 
well (there are a number of viewers and debugging tools that come along for 
free if you use alternative (1) ). I would try that first.

 

I do think that SmartBody is a good choice for an ECA agent. We have a team 
supporting it, we are in active development on it, we've recently added some 
important features (such as locomotion on varying terrain), and we use it in 
many of our internal projects, so it undergoes thorough testing.

 

If you need more help or guidance, please continue to post here, or you can 
contact me directly at shap...@ict.usc.edu.

 

Regards,

 

Ari Shapiro

 

 

 

From: elena [mailto:redara...@gmail.com] 
Sent: Friday, October 22, 2010 9:07 AM
To: smartbody-developer@lists.sourceforge.net
Subject: [SmartBody-dev] Smartbody with Unity

 

Dear Sir/Madam,

 

My name is Elena Kokkinara and I am working for the SPECS 
<http://SPECS.upf.edu>  lab in University of Pompeu Fabra in Barcelona.

 

Getting started with some new E.U projects assigned to the lab, we are required 
to build an ECA engine for virtual environments. After some research I have 
done, it seems that Smartbody is the most complete and appropriate tool for our 
needs. 

 

>From what I have been reading in Smartbody's documentation,  there are already 
>full integrations with renderers such as Unreal. Since our system supports 
>Unity, our idea was to use Smartbody as a separate process and try to 
>integrate it with this game engine. 

My questions arise based on this idea. I was wondering whether Smartbody has 
already been integrated with Unity, and if not, I would truly appreciate your 
opinion on how easy and efficient would be such an effort.  

 

Your experience and your advices would be really valuable and helpful in order 
to proceed with our projects.

 

Best regards,

 

 

Elena Kokkinara

SPECS: 
Synthetic Perceptive, Emotive and Cognitive Systems
Departament de Tecnologies de la InformaciĆ³ i 
les Comunicacions
Universitat Pompeu Fabra

 

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Smartbody-developer mailing list
Smartbody-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/smartbody-developer

Reply via email to