Jump to content

Tattooshop

Resident
  • Posts

    365
  • Joined

  • Last visited

Posts posted by Tattooshop

  1. 32 minutes ago, Profaitchikenz Haiku said:

    Take the supp[lied message and cast it to a vector. if the supplied string is not a valid vector (ie has full stops instead of a comma) you'll get a silent conversion to ZERO_VECTOR

    
    colour = (vector) msg;	// sensible to use string trim on this)
    
    if( colour != ZERO_VECTOR) 
    {
    	// do stuff
    }

    The thing you'll have to be careful of is extra spaces, <0.5,0.5,0.5> will convert. but <0.5,  0.5,  0.5> will fail because of the spaces after the commas. You will probably end up going through the message copying each non-space character between < and > to a fresh string to guard against such issues

    You could also, assuming you might want <0,0,0> as a valid choice, have pre-defined vectors for red,green, blue, yellow,black, white... so the message is tested for these first and if no match, converted to a vector

    It works! Thank you so much! :D

                vector colour;
                colour = (vector) msg;    // sensible to use string trim on this
                if ( colour != ZERO_VECTOR) 
                {
                    llSetTimerEvent(0);
                    RGB = colour;
                    partSystem();
                }

     

  2. Hello! I am trying to make a color picker for a particle system emitted by the wearable object with a lsl RGB message sent via a textbox invoked via HUD. The message will look like <1,1,1>.

    How to make the listener recognize this message and set the desired value of RGB? Thanks you for any help! 😍

    Here I send message via HUD's textbox:

    touch_start(integer num)
    {
        if (button == "custom")
        {
            integer channel = -321321;
            gListener = llListen(channel, "", "", "");
            llTextBox(llDetectedKey(0), "Input lsl RGB value e.g. <1,1,1>", channel);
        }
    }
              
    listen(integer channel, string name, key id, string msg)
    {
        llListenRemove(gListener);
        llSay(-123123, msg);
    }

    And here is particle object listener:

    listen(integer channel, string name, key id, string msg)
    {
        if (msg == ???) // <---
        {
            RGB = ???; // <---
            partSystem();
        }
    }

     

     

  3. 2 hours ago, Skell Dagger said:

    MajerSoft has softer features around the eyes, nose and cheeks. MajerEdged has more defined cheekbones. The differences are purely visual with regard to the shape of the mesh. Functionality etc is completely the same.

    With regard to Glam Affair skins, they do have the dev kit and we can hopefully expect to see some HDPRO specific skins from them soon. In the meantime you can try demos of any existing BoM skins from them, but be aware that Catwa has changed the way that her UV maps onto the HDPRO heads. This means that skins created on the old Catwa UV won't look the same on the new UV, especially around the eyes and mouth.

    Because the old Catwa UV mapped specific vertices (basically this means how the UV is wrapped around and 'tied/pinned to' the different vertices of the mesh) in a certain way that was different to how the 'standard SL UV' was mapped that is why people who used BoM to try some really old system skins (which, obviously, use the SL UV) on Catwa Bento heads noticed certain oddities, such as white 'dragged down highlights' coming from their inner eyes, etc. Think of the UV mapping as being like a piece of paper: one creator makes an origami crane out of it and the other creator makes an origami stork out of it. It's one piece of paper; just folded differently. (I just realised that - if your username reflects a tattoo business in SL then you probably already know all of that, but for the benefit of anyone else I'm going to leave it in here :))

    The HDPRO UV mapping is much closer to the default SL UV, so - until Glam Affair releases HDPRO specific skins - you may actually have more success with demos of BoM skins for other existing brands that already map close to the standard SL UV. I've seen a couple of vloggers stating that some of their Genus BoM skins mapped reasonably well onto HDPRO. (I've also seen people describing this as "fishy" and "suspicious". Well... no, it's not. The HDPRO UV now maps like that of most other designers' - closer to the SL UV. We've even had feedback from several skin and makeup creators who are glad that it's changed! xD)

    That said, the best UV mapping will still be one that is created exactly to the HDPRO, so I'd give Glam Affair a bit of time. If you have Discord then we're already seeing some lovely new releases of skins and makeup etc in the news channels there. (You can find the Discord link on the bottom tab of the HDPRO HUD. It's on the demo as well as the full version.)

    Thanks a lot!

    By the way, I really liked that the eyes are now attached to the head, as well as new Shapes sliders on the HUD, the materials of the eyebrows and eyelashes are also very interesting! :)

     

     

     

     

  4. On 9/18/2020 at 1:05 AM, Skell Dagger said:

    As I hope has been noted, I never 'shill' for Catwa on this forum while remaining a regular poster and helping out where I can with avatar customisation advice for any brands that I have familiarity with. However, I do want to note that - as a Catwa CSR - I'm happy to answer any questions in this thread that anyone has about this new range of heads, or offer advice if anyone needs it. :)

    Hello! I have few questions. MajerSoft and MajerEdged - what is the difference between them except for external differences? And if i plan to use it with Maitreya built-in Glam Affair skins which version do you recommend or is it worth the wait and do you plan to release a official Glam Affair skin brand version? :D

     

  5. On 9/19/2020 at 10:56 AM, DoteDote Edison said:

    Lists are built on an index system, starting with index 0 (zero). The first item is located at index 0, the second at index one 1, third index 2, and so on. And since you are creating the script and list, you already know what type of data you’ve stored at each index (UUID, integeger, etc).

    To get a set of data, such as texture UUID, framesX integer, framesY integer... use llList2Key(). The index you request is based on the stride of the list (items that are a set).. Remember, computer counting starts at 0 instead of 1, so multiplying gifNumber (0) by the number of items in a set (4) will return the first UUID of the gif. To get the next item in the list - in the same set - add 1 after the  multiplication (The location of the item in the set “plus” the location of next item). The third item would be + 2.

    The next set would be gifNumber (1) times (4), returning the 5th item in the list, which is the first item of the second set of data.
    key uuid;

    integer framesX;

    integer framesY;

    integer frames;

    integer gifNum = 0;

    uuid = llList2Key(textures, (gifNum*4)+0);

    framesX = llList2Integer(textures, (gifNum*4)+1);

    framesY = llList2Integer(textures, (gifNum*4)+2);

    frames = llList2Integer(textures, (gifNum*4)+3);

     

    Thank you so much! It works now! :D

     

  6. 6 minutes ago, Rolig Loon said:

    Study this >>> 

     

     

    Thank you so much! additional two lines

                llSetTexture(llList2Key(texture1, count1-2), HIDDEN_FACE_2);
                llSetTexture(llList2Key(texture1, count1-3), HIDDEN_FACE_3);

    seems does the job! :)

     

    • Like 1
  7. Hello! I'm using this script to animate a texture, but it only preloads one of them on hidden face. how to make it preload 3 textures at once on different faces? :)

    integer count;
    
    default
    {
    
        state_entry()
            {   
            llSetTimerEvent(TIMER); 
            }
            
        timer() 
            {
                    llSetTexture(llList2Key(texture,count), SHOWN_FACE);
                    ++count;
                    count %=llGetListLength(texture);
            llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X, FRAMES_Y, 0.0, ALL_FRAMES, ANIM_RATE);
            llSetTexture(llList2Key(texture,count), HIDDEN_FACE);                           
        }
    }
    

     

  8. 2 hours ago, DoteDote Edison said:

    Maybe I don’t understand what you’re trying to do, but I’m not sure why you need three lists.  If the gifs are built into the textures properly, with all the frames on a single sheet as one texture, then you would only need one list. The frames data can be included in a single, strided, list.  For example, [“UUID”, 4, 2, 8, “UUID”, 2, 2, 4, etc]
     
    For texture animations like that (combined into one texture), the frames X & Y should be the total frames across and down on the texture ..  that’s how the size of each frame is determined by the system.

    if you’re using texture that are a single frame of the animation..  then you could use two lists, one with all texture UUIDs, the other with a series of index pairs indicating which UUID to start and stop on within the texture list.

    Thanks for the answer! Ok I made one list of all textures. But how can I make the script recognize that I need to play the first four textures after pressing button 1, the next 4 textures from the list after pressing button 2, and so on? And how to make it see which number to use as the number of frames horizontally and which one is vertical and what is the total number of frames? And what goes in timer event? :)

     

    integer SHOWN_FACE = 2; // Shown face number (to display)
    integer HIDDEN_FACE = 0; // Hidden face number (to preload)
    
    list texture1 = [
    
        // CONFIGURATION //
    
        // UUID GIF LIST:
    
        "cb7e2af3-8849-8f2d-b210-7abca03e3bca", 4,2,8,
        "6ae33bf3-9217-9046-5827-28774f63253d", 4,2,8,
        "d8a470ec-6856-0603-9a68-94f27248555f", 4,2,8,
        "c2668d35-03e4-03b1-3e09-5cab249cc6aa", 4,2,8,
    
        "e8a6c9ef-b460-7fea-309e-12ceb4888b55", 2,2,4,
        "c153f141-0222-1a9e-e3d2-00694ab5d2cb", 2,2,4,
        "ef59b79c-e586-0158-e6b0-8c86114bd6bf", 2,2,4,
        "1d60bb24-b2b6-3dec-b873-6311392dea16", 2,2,4,
    
        "c3511757-3584-93c5-655a-3cdd68b7f2fb", 5,2,10,
        "8c8bfb5b-42b0-6d22-4c61-6e343a850ebb", 5,2,10,
        "9b784a25-9626-b878-a58f-5c8cf63c01dd", 5,2,10,
        "a1dc904f-06ec-ff9b-0a85-d334b5556589", 5,2,10
    
    ];
    
        state_entry()
        {
            llListen(-54321, "", "", ""); // Listen to anybody saying anything on channel -54321 
        }
    
        listen(integer channel, string name, key id, string msg)
        {
            if (msg == "gif1")
            {
    
            }
            else if (msg == "gif2")
            {
    
            }
            else if (msg == "gif3")
            {
    
            }
        }
    
        timer()
        {
            //llSetTexture(llList2Key(texture,count), SHOWN_FACE);
            //++count;
            //count %=llGetListLength(texture);
            //llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X, FRAMES_Y, 0.0, ALL_FRAMES, ANIM_RATE);
            //llSetTexture(llList2Key(texture,count), HIDDEN_FACE);
        }

     

  9. Hello! I'm trying to make a script for a three buttons HUD and a receiver - the GIF texture animator. I sorted them by 4 textures in 3 lists with the same number of frames in each list. and since it is necessary to change textures, I need to use a timer. but I ran into such a problem that it looks like I need to use 3 timers (?). can this be somehow avoided? I used this script as a basis, but it is only for one list. This is the original script:

    integer count;
    list texture=[
    
    // UUID GIF LIST:
    
    "631a2817-9221-7eb2-912c-9e05732fe690",
    "1285e7d6-f4c9-0110-cda5-3be688765d99",
    "f77a5416-07aa-d3a1-a2cc-cee318ec7dda",
    "0f673d21-16bc-fb53-6014-aea127c71150"
    
    ];
    
    integer FRAMES_X = 4; // Number of frames horizontally
    integer FRAMES_Y = 2; // Number of frames vertically
    integer ALL_FRAMES = 8; // Number of all frames
    integer ANIM_RATE = 10; // Animation rate (speed)
    integer TIMER = 3; // Timer to change texture
    integer SHOWN_FACE = 2; // Shown face number (to display)
    integer HIDDEN_FACE = 0; // Hidden face number (to preload)
    
    default
    {
    
        state_entry()
            {   
            llSetTimerEvent(TIMER); 
            }
            
        timer() 
            {
                    llSetTexture(llList2Key(texture,count), SHOWN_FACE);
                    ++count;
                    count %=llGetListLength(texture);
            llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X, FRAMES_Y, 0.0, ALL_FRAMES, ANIM_RATE);
            llSetTexture(llList2Key(texture,count), HIDDEN_FACE);
                                
        }
    }

    And here is what i got so far :P

    // LISTENER 
    integer count;
    list texture1 = [
    
        // UUID GIF LIST1:
    
        "cb7e2af3-8849-8f2d-b210-7abca03e3bca",
        "6ae33bf3-9217-9046-5827-28774f63253d",
        "d8a470ec-6856-0603-9a68-94f27248555f",
        "c2668d35-03e4-03b1-3e09-5cab249cc6aa"
    
    ];
    
    list texture2 = [
    
        // UUID GIF LIST2:
    
        "e8a6c9ef-b460-7fea-309e-12ceb4888b55",
        "c153f141-0222-1a9e-e3d2-00694ab5d2cb",
        "ef59b79c-e586-0158-e6b0-8c86114bd6bf",
        "1d60bb24-b2b6-3dec-b873-6311392dea16"
    
    ];
    
    list texture3 = [
    
        // UUID GIF LIST3:
    
        "c3511757-3584-93c5-655a-3cdd68b7f2fb",
        "8c8bfb5b-42b0-6d22-4c61-6e343a850ebb",
        "9b784a25-9626-b878-a58f-5c8cf63c01dd",
        "a1dc904f-06ec-ff9b-0a85-d334b5556589"
    
    ];
    
    integer FRAMES_X_1 = 4; // Number of frames horizontally
    integer FRAMES_Y_1 = 2; // Number of frames vertically
    integer ALL_FRAMES_1 = 8; // Number of all frames
    
    integer FRAMES_X_2 = 2; // Number of frames horizontally
    integer FRAMES_Y_2 = 2; // Number of frames vertically
    integer ALL_FRAMES_2 = 4; // Number of all frames
    
    integer FRAMES_X_3 = 5; // Number of frames horizontally
    integer FRAMES_Y_3 = 2; // Number of frames vertically
    integer ALL_FRAMES_3 = 10; // Number of all frames
    
    integer ANIM_RATE = 10; // Animation rate 
    
    integer TIMER = 3; // Timer to change texture
    integer SHOWN_FACE = 2; // Shown face number (to display)
    integer HIDDEN_FACE = 0; // Hidden face number (to preload)
    
    default
    {
        state_entry()
        {
            llListen(-54321, "", "", ""); // Listen to anybody saying anything on channel -54321
        }
        
        listen(integer channel, string name, key id, string msg)
        {
            if (msg == "gif1")
            {
                llSetTexture(llList2Key(texture1, count), SHOWN_FACE);
                ++count;
                count %= llGetListLength(texture1);
                llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X_1, FRAMES_Y_1, 0.0, ALL_FRAMES_1, ANIM_RATE);
                llSetTexture(llList2Key(texture1, count), HIDDEN_FACE);
                llSetTimerEvent(TIMER);
            }
            else if (msg == "gif2")
            {
                llSetTexture(llList2Key(texture2, count), SHOWN_FACE);
                ++count;
                count %= llGetListLength(texture2);
                llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X_2, FRAMES_Y_2, 0.0, ALL_FRAMES_2, ANIM_RATE);
                llSetTexture(llList2Key(texture2, count), HIDDEN_FACE);
                llSetTimerEvent(TIMER);
            }
            else if (msg == "gif3")
            {
                llSetTexture(llList2Key(texture3, count), SHOWN_FACE);
                ++count;
                count %= llGetListLength(texture3);
                llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X_3, FRAMES_Y_3, 0.0, ALL_FRAMES_3, ANIM_RATE);
                llSetTexture(llList2Key(texture3, count), HIDDEN_FACE);
                llSetTimerEvent(TIMER);
            }
        }
    
        timer()
        {
            //???
            //llSetTexture(llList2Key(texture,count), SHOWN_FACE);
            //++count;
            //count %=llGetListLength(texture);
            //llSetTextureAnim(ANIM_ON | LOOP, SHOWN_FACE, FRAMES_X, FRAMES_Y, 0.0, ALL_FRAMES, ANIM_RATE);
            //llSetTexture(llList2Key(texture,count), HIDDEN_FACE);
        }
    }

    Edit: Yep, 3 list with different frame numbers. Textures will loop by timer until i hit next button to loop another list :)

     

     

  10. 25 minutes ago, Rolig Loon said:

    current_link = (integer) llFrand(7) + 2;

    should generate random integers in the range [2, 8], which is what you want, since the root is link 1 and your last link is #8.  You shouldn't have to use any filter to get rid of the others.

    I just tried it on a linkset of 8 cubes ( the root is in the lower left corner), and it works:

    65bb502fab6c7ad6d8498189b4b3a032.gif

    I set my timer faster than yours so I could create this GIF, but it works just fine with the 2 second timer that you designed.  If you don;t want link #8 to blink either, just use 

    current_link = (integer) llFrand(6) + 2;

    Thank you so much! now everything is clear and works perfectly! :D

     

    • Like 2
  11. 18 minutes ago, Rolig Loon said:

    If you want the particle effects to turn on and off randomly, you'll have to do it in a timer event, like ..

    
    timer()
    {
         llLinkParticleSystem(current_link,[]);
         current_link = (integer) llFrand(7) +2;    // Just be sure to make current_link a global integer variable so it is saved
         llLinkParticleSystem(current_link,[  // the rest of your particle definition goes here 
            ]);
    }

    And remember to start the timer in state_entry.

     

    34 minutes ago, Wulfie Reanimator said:

    Change LINK_THIS to LINK_ALL_CHILDREN. Then remove all of the particle scripts except one.

    Or even better, remove all of the particle scripts. The script doesn't need to exist for the particle effect to stay alive.

    Thanks a lot for the answers! I am doing something wrong, it works but for the whole linkset. How to exclude prim 1 and 8 so that particles do not appear there at all? I tried to add if but it still works for the whole linkset. :D

    integer current_link;
    
    default
    {
        state_entry()
        {
            llSetTimerEvent(2);
        }
    
        timer()
        {
            llLinkParticleSystem(current_link, []);
            current_link = (integer) llFrand(7) + 2; // Just be sure to make current_link a global integer variable so it is saved
            if (current_link != 1 | 8)
            {
                llLinkParticleSystem(current_link, [
                    PSYS_PART_MAX_AGE, 0.20,
                    PSYS_PART_FLAGS, 291,
                    PSYS_PART_START_COLOR, < 1.00000, 1.00000, 1.00000 > ,
                    PSYS_PART_END_COLOR, < 1.00000, 1.00000, 1.00000 > ,
                    PSYS_PART_START_SCALE, < 0.04000, 0.25000, 0.00000 > ,
                    PSYS_PART_END_SCALE, < 0.03000, 0.25000, 0.00000 > ,
                    PSYS_SRC_PATTERN, 2,
                    PSYS_SRC_BURST_RATE, 2.0,
                    PSYS_SRC_BURST_PART_COUNT, 5,
                    PSYS_SRC_BURST_RADIUS, 0.00,
                    PSYS_SRC_BURST_SPEED_MIN, 0.10,
                    PSYS_SRC_BURST_SPEED_MAX, 0.10,
                    PSYS_SRC_ANGLE_BEGIN, 1.55,
                    PSYS_SRC_ANGLE_END, 1.54,
                    PSYS_SRC_MAX_AGE, 0.0,
                    PSYS_SRC_TEXTURE, "",
                    PSYS_PART_START_ALPHA, 1.00,
                    PSYS_PART_END_ALPHA, 1.00,
                    PSYS_SRC_OMEGA, < 0.00, 0.00, 0.10 >
                    // the rest of your particle definition goes here 
                ]);
            }
        }
    }

     

  12. Hello! There is a system of bling particles and linkset of 8 objects ( 7 diamonds and root ). I need bling to work in only 7 of them, except root.

    This is a jewel and it is necessary that each time the bling be in a different prim, randomly or in sequence - not very important, the easier way...

     

    How to do it? :)

    default
    {
        state_entry()
        {
            llLinkParticleSystem(LINK_THIS,[PSYS_PART_MAX_AGE, 0.20,
                PSYS_PART_FLAGS, 291,
                PSYS_PART_START_COLOR, < 1.00000, 1.00000, 1.00000 > ,
                PSYS_PART_END_COLOR, < 1.00000, 1.00000, 1.00000 > ,
                PSYS_PART_START_SCALE, < 0.04000, 0.25000, 0.00000 > ,
                PSYS_PART_END_SCALE, < 0.03000, 0.25000, 0.00000 > ,
                PSYS_SRC_PATTERN, 2,
                PSYS_SRC_BURST_RATE, 2.0,
                PSYS_SRC_BURST_PART_COUNT, 5,
                PSYS_SRC_BURST_RADIUS, 0.00,
                PSYS_SRC_BURST_SPEED_MIN, 0.10,
                PSYS_SRC_BURST_SPEED_MAX, 0.10,
                PSYS_SRC_ANGLE_BEGIN, 1.55,
                PSYS_SRC_ANGLE_END, 1.54,
                PSYS_SRC_MAX_AGE, 0.0,
                PSYS_SRC_TEXTURE, "",
                PSYS_PART_START_ALPHA, 1.00,
                PSYS_PART_END_ALPHA, 1.00,
                PSYS_SRC_OMEGA, < 0.00, 0.00, 0.10 >
            ]);
        }
    }

     

     

  13. 2 hours ago, OptimoMaximo said:

    Did you check if the object is patented to a empty object that carries scale and rotation data by any chance? If so, un parent your mesh and apply the teams formations, then try again

    You saved me! I clicked Object > Parent > Clear and Keep Transformation and reapplied rotation and scale. Now everything is correct! Many many many thanks! :D

     

    Untitled.png

    • Like 2
  14. I think the problem is in the blender, I tried to open the exported DAE file in the blender and the model looks exactly the same as when uploaded in the SL - enlarged and with incorrect rotation.

    * I will explain a little. I work with a fbx file and it looks fine in blender, but when I export it in DAE, something breaks in it ...

    😛 

     

  15. 1 hour ago, Aquila Kytori said:

    If you are having to scale by 0.01 to get a Z dimension of 1 in the Mesh uploader then the 1 for the Z dimension in Blender is not 1meter !

    Also Blender is not indicating which units are being used therefore the Units are set to None.

    In Blenders Properties panel, open the Scene > Units menu and change the Length to Metric.

    Then check the Unit Scale, if it is indicating 100 then change to 1.000 .

    Hoping this is the issue  :)

     

     

    Hi! Thanks for the answer, but this is more about the rotation of the model, I agree to change the size manually, but I need to apply local lights ( advanced lighting ) and make the light go in a certain direction. And also the physics of the model does not match. :D

     

  16. Hello! I ran into a strange problem when trying to upload a model in SL. I’ll notice right away that I didn’t make the model and it’s hard to understand what was going on.
    The model in the blender is located as in picture A. Along the Y axis. When uploading the model changes its rotation and size as shown in picture B. Of course, before that I applied rotation and scale first, but it still happens. Also if I put the minimum scale in the viewer the scale of the model matches.

    What can be wrong?

    Pictures A-B a.thumb.png.83bad3fc7c8db5844e478dc082c2e14b.png

    b.png

  17. Question for animation specialists. I wanted to use internal static animation/pose avatar_surf.bvh from here http://wiki.secondlife.com/wiki/Internal_Animations but due to the use of the AVsitter I need to upload it to SL. But an error appears when uploading "Unknown joint neckDummy".

    In the bvh hierarchy file, I see two joints with names JOINT neckDummy and JOINT figureHair that probably cause the error. I tried to remove them but the animation is distorted. Any ideas on how to fix this? I would like to use this particular animation/pose. I post bvh here in the hope it helps. :)

    HIERARCHY
    ROOT hip
    {
    	OFFSET	0.00  0.00  0.00 
    	CHANNELS 6 Xposition Yposition Zposition Xrotation Zrotation Yrotation
    	JOINT abdomen
    	{
    		OFFSET	0.000000 0.000000 0.000000
    		CHANNELS 3 Xrotation Zrotation Yrotation
    		JOINT chest
    		{
    			OFFSET	0.000000 5.018152 -1.882228
    			CHANNELS 3 Xrotation Zrotation Yrotation
    			JOINT neckDummy
    			{
    				OFFSET	0.000000 8.316447 0.784897
    				CHANNELS 3 Xrotation Yrotation Zrotation
    				JOINT neck
    				{
    					OFFSET	0.000000 2.280413 -0.392801
    					CHANNELS 3 Xrotation Zrotation Yrotation
    					JOINT head
    					{
    						OFFSET	0.000000 3.496879 0.529469
    						CHANNELS 3 Xrotation Zrotation Yrotation
    						JOINT figureHair
    						{
    							OFFSET	0.000000 4.699570 0.720622
    							CHANNELS 3 Zrotation Yrotation Xrotation
    							End Site
    							{
    								OFFSET 0.000000 -6.419331 0.000000
    							}
    						}
    					}
    				}
    			}
    			JOINT lCollar
    			{
    				OFFSET	0.599237 8.316447 0.784897
    				CHANNELS 3 Yrotation Zrotation Xrotation
    				JOINT lShldr
    				{
    					OFFSET	6.421198 0.010146 -0.332128
    					CHANNELS 3 Zrotation Yrotation Xrotation
    					JOINT lForeArm
    					{
    						OFFSET	10.552783 0.025574 0.125508
    						CHANNELS 3 Yrotation Zrotation Xrotation
    						JOINT lHand
    						{
    							OFFSET	11.035963 0.319619 0.041520
    							CHANNELS 3 Zrotation Yrotation Xrotation
    							End Site
    							{
    								OFFSET 10.353753 0.000000 0.000000
    							}
    						}
    					}
    				}
    			}
    			JOINT rCollar
    			{
    				OFFSET	-0.599237 8.316447 0.784897
    				CHANNELS 3 Yrotation Zrotation Xrotation
    				JOINT rShldr
    				{
    					OFFSET	-6.421198 0.010146 -0.332128
    					CHANNELS 3 Zrotation Yrotation Xrotation
    					JOINT rForeArm
    					{
    						OFFSET	-10.552783 0.025574 0.125508
    						CHANNELS 3 Yrotation Zrotation Xrotation
    						JOINT rHand
    						{
    							OFFSET	-11.035963 0.319619 0.041520
    							CHANNELS 3 Zrotation Yrotation Xrotation
    							End Site
    							{
    								OFFSET -10.353753 0.000000 0.000000
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	JOINT lThigh
    	{
    		OFFSET	4.500466 -6.400484 -1.832696
    		CHANNELS 3 Xrotation Zrotation Yrotation
    		JOINT lShin
    		{
    			OFFSET	-1.359117 -18.918689 1.179887
    			CHANNELS 3 Xrotation Zrotation Yrotation
    			JOINT lFoot
    			{
    				OFFSET	-0.652380 -17.215186 -0.312137
    				CHANNELS 3 Xrotation Yrotation Zrotation
    				End Site
    				{
    					OFFSET 0.000000 0.000000 10.353752
    				}
    			}
    		}
    	}
    	JOINT rThigh
    	{
    		OFFSET	-4.500466 -6.400484 -1.832696
    		CHANNELS 3 Xrotation Zrotation Yrotation
    		JOINT rShin
    		{
    			OFFSET	1.359117 -18.918689 1.179887
    			CHANNELS 3 Xrotation Zrotation Yrotation
    			JOINT rFoot
    			{
    				OFFSET	0.652380 -17.215186 -0.312137
    				CHANNELS 3 Xrotation Yrotation Zrotation
    				End Site
    				{
    					OFFSET 0.000000 0.000000 10.353752
    				}
    			}
    		}
    	}
    }
    MOTION
    Frames:     1
    Frame Time: 0.033333
    4.239725 34.856594 1.300791 4.989834 0.625088 -43.068520 65.000000 0.000000 0.000000 8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -25.000000 1.000000 41.000000 -27.000000 -20.000000 0.000000 0.000000 0.000000 0.000000 2.021920 -5.690310 -0.063351 -9.100700 -40.021229 15.991600 -23.515602 7.696260 -42.852264 -5.030510 -0.173112 0.175734 -2.021920 5.690310 -0.063351 26.100700 21.021229 15.991600 33.515602 9.303740 -10.852264 -15.969490 15.173111 18.175735 -48.890175 -2.465950 -29.012543 58.472328 -2.408427 -36.881523 -18.543835 23.632442 -2.116663 -27.555395 -12.397776 -7.503807 67.718994 3.836573 8.126284 -41.822742 -9.347204 3.200089 

     

×
×
  • Create New...