[Opensim-users] NPC and internal Animations

satguru p srivastava ssatguru at mchsi.com
Thu Mar 8 00:24:46 UTC 2012


Hi Justin, I will go ahead a post a patch. I am not familiar enough with 
the code base to take up any kind of  refactoring. I will leave that to 
you :)
Thanks
Sat

On 3/6/2012 8:21 PM, Justin Clark-Casey wrote:
> Hi satguru,  This was not done deliberately.  If you could post a 
> patch to Mantis with the hack that would be much appreciated.  I would 
> probably end up refactoring the code so that both LLClientView and 
> NPCAvatar call a single method but you don't need to do that yourself 
> (unless you want to :).
>
> On 07/03/12 01:10, satguru p srivastava wrote:
>> Ok, I downloaded and checked the source.
>> After some digging around I was able to see what was happening.
>> Made some quick and dirty changes and was able to make the NPC play 
>> internal animations!! How about that !!
>>
>> Before I explain what I found let me first state that I was 
>> pleasantly surprised by how smooth the whole process of
>> setting up and building the project was.
>> I was dreading a complicated setup and a large build time.
>> The setup was simple and the build pretty fast, usually less than a 
>> minute.
>> Thank you developers for making this so easy.
>>
>> Anyway here is what I found.
>> If the animation specified in an animation function does not exist in 
>> the prim then the server checks to see if there is
>> an internal animation with that name.
>> If it finds one then it passes its UUID to the client else it passes 
>> UUID.Zero.
>>
>> For normal avatar this is done, I think, by class 
>> "OpenSim.Region.ClientStack.lindenUDP.LLClientView" method
>> GetDefaultAnimation(string name)
>> This basically checks against the animations listed in the 
>> "data/avataranimations.xml" file
>>
>> For NPC this is done by 
>> "OpenSim.region.OptionalModules.World.NPCAvatar" method 
>> GetDefaultAnimation(string name)
>> For some reason this does not perform any check and always returns 
>> UUID.Zero.
>>
>> I copied the method code from LLClientview to NPCAvatar and was able 
>> to make the NPC Avatar play internal animations.
>>
>> Now I am not sure if the code was intentionally written this way and 
>> if not then if the hack which I did was the proper
>> way to solve this.
>> Hope some developer helps out with this.
>>
>> Thanks
>> Sat
>>
>>
>> On 3/5/2012 9:41 PM, satguru p srivastava wrote:
>>> I think I will download the source code and have a go at it.
>>> Thanks
>>> Sat
>>>
>>>
>>> On 3/5/2012 9:08 PM, Gudule Lapointe wrote:
>>>> I am not quite sure about the detailed protocol between server and 
>>>> client for animation, so I would be happy if
>>>> someone smarter on this field can confirm or correct...
>>>>
>>>> What I am sure is
>>>> - client can play the animation if it's included in the client 
>>>> software or sent by the server
>>>> - script can send the animation only if it's inside the prim where 
>>>> the script resides.
>>>> That is: first steps needed to animate an avatar
>>>>
>>>> After the avatar has confirmed and accepted the animation, there is 
>>>> a protocol, which is certainly more complicate,
>>>> to deploy this animation to other viewers, (exchange of UUID / 
>>>> animations, updates on moves, whatever…). But it would
>>>> occur only once the avatar has confirmed it can handle the animation
>>>>
>>>> So, it sounds logical to me that the avatar can be animated only if 
>>>> it's own client owns the animation.
>>>>
>>>> -- 
>>>> http://www.speculoos.net/
>>>> secondlife://speculoos.net:8002/
>>>> Speculoos, the belgian cookie-flavored metaverse
>>>>
>>>> Le 6 mars 2012 à 03:46, satguru p srivastava a écrit :
>>>>
>>>>> I guess I must be dense :(
>>>>> I still do not get it.
>>>>>
>>>>> Below is how I think the animation system works.
>>>>> Let me know where I am wrong.
>>>>> I have a Avatar or a NPC with an attachment.
>>>>> The attachment has script which plays an animation using an 
>>>>> animation function like llStartAnimation().
>>>>> Now like any other script, the script when triggered, will run on 
>>>>> the server side. (Right ?)
>>>>> When the server encounters the animation function the server will 
>>>>> send a message to the client asking it to play an
>>>>> animation with that UUID
>>>>> If the client has an animation with that UUID it will animate the 
>>>>> Avatar or NPC with that animation else it will ask
>>>>> the server to send the animation and will animate when it receives 
>>>>> it.
>>>>> If the animation is internal animation and if it is, as you say, 
>>>>> part of the client then the client already has it
>>>>> and should be able to animate the Avatar/NPC
>>>>>
>>>>> Sorry to belabor this but it seems I am obviously missing a major 
>>>>> concept and would like to figure out what :))
>>>>>
>>>>> Thanks
>>>>> Sat
>>>>>
>>>>>
>>>>> On 3/5/2012 7:55 PM, Gudule Lapointe wrote:
>>>>>> Obviously, everything runs on client side, that's the point of a 
>>>>>> client ;-)
>>>>>>
>>>>>> I think what was meant is that internal animations are part of 
>>>>>> the client, not loaded from server.
>>>>>>
>>>>>> As your NPC is not controlled by a client, it doesn't have these 
>>>>>> animations at disposal, unless you put them in
>>>>>> your script's prim.
>>>>>>
>>>>>> -- 
>>>>>> http://www.speculoos.net/
>>>>>> secondlife://speculoos.net:8002/
>>>>>> Speculoos, the belgian cookie-flavored metaverse
>>>>>>
>>>>>> Le 6 mars 2012 à 02:48, satguru p srivastava a écrit :
>>>>>>
>>>>>>> Garmin,
>>>>>>>
>>>>>>> Thanks for pointing out the BVH files.
>>>>>>> 121 files!!
>>>>>>> A bit of a pain uploading them :)
>>>>>>> You also loose the per bone priorites which you get with 
>>>>>>> internal/default animations.
>>>>>>> Also I am assuming that user loaded animations are not as 
>>>>>>> efficient as internal ones. Right?
>>>>>>>
>>>>>>> I am still curious why the internal animations do not play.
>>>>>>> As far as I know all animations run on client side.
>>>>>>> The triggers for animation can come from client side (example 
>>>>>>> when a users presses a key to make the avatar walk)
>>>>>>> or from server side (example when if it is being called from 
>>>>>>> script).
>>>>>>> NPCs animations are triggered from scripts.
>>>>>>> How is this different from Avatar animations being triggered 
>>>>>>> from scripts ?
>>>>>>>
>>>>>>> Thanks
>>>>>>> Sat
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 3/5/2012 5:34 AM, Garmin Kawaguichi wrote:
>>>>>>>> True, Trinity! User Playable Internal Animations are 
>>>>>>>> serverside; you cannot use them with NPCs but...
>>>>>>>> ... the BVH files corresponding to the Internal Animation are at :
>>>>>>>> http://static-secondlife-com.s3.amazonaws.com/downloads/avatar/bvh_files.zip 
>>>>>>>>
>>>>>>>> as it is specified in the SL Wiki : 
>>>>>>>> http://wiki.secondlife.com/wiki/Internal_Animations
>>>>>>>> GCI
>>>>>>>>
>>>>>>>>     ----- Original Message -----
>>>>>>>>     *From:* Trinity <mailto:trinity93 at gmail.com>
>>>>>>>>     *Sent:* Monday, March 05, 2012 6:58 AM
>>>>>>>>     *Subject:* Re: [Opensim-users] NPC and internal Animations
>>>>>>>>     Because some animations are built into the viewer and npcs 
>>>>>>>> dont use a viewer and perhaps for security
>>>>>>>>     reasons. Im not really completely sure to be honest.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Opensim-users mailing list
>>>>>>>> Opensim-users at lists.berlios.de
>>>>>>>> https://lists.berlios.de/mailman/listinfo/opensim-users
>>>>>>> _______________________________________________
>>>>>>> Opensim-users mailing list
>>>>>>> Opensim-users at lists.berlios.de 
>>>>>>> <mailto:Opensim-users at lists.berlios.de>
>>>>>>> https://lists.berlios.de/mailman/listinfo/opensim-users
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Opensim-users mailing list
>>>>>> Opensim-users at lists.berlios.de
>>>>>> https://lists.berlios.de/mailman/listinfo/opensim-users
>>>>> _______________________________________________
>>>>> Opensim-users mailing list
>>>>> Opensim-users at lists.berlios.de 
>>>>> <mailto:Opensim-users at lists.berlios.de>
>>>>> https://lists.berlios.de/mailman/listinfo/opensim-users
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Opensim-users mailing list
>>>> Opensim-users at lists.berlios.de
>>>> https://lists.berlios.de/mailman/listinfo/opensim-users
>>>
>>>
>>> _______________________________________________
>>> Opensim-users mailing list
>>> Opensim-users at lists.berlios.de
>>> https://lists.berlios.de/mailman/listinfo/opensim-users
>>
>>
>> _______________________________________________
>> Opensim-users mailing list
>> Opensim-users at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-users
>
>



More information about the Opensim-users mailing list