[Opensim-users] NPC and internal Animations

satguru p srivastava ssatguru at mchsi.com
Fri Mar 9 03:28:28 UTC 2012


Hi Justin,
I have opened an issue (0005924) in Bug tracker and added a patch to it.
Thanks
Sat

On 3/7/2012 6:24 PM, satguru p srivastava wrote:
> 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
>>
>>
> _______________________________________________
> Opensim-users mailing list
> Opensim-users at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-users/attachments/20120308/78336960/attachment.html>


More information about the Opensim-users mailing list