1. #1

    WeakAuras models not showing

    So I'm having an issue with some models in WeakAuras not showing, probably because they're too far outside of the little box that you can see them through. Is there any way to fix this?

    Tried adjusting the x, y, and z positions of course but I couldn't find them.

    Specifically I want the Eclipse auras: SPELLS\druid_eclipse.m2 and SPELLS\druid_eclipse_orange.m2
    But it would be really helpful if somebody knows a way to find all models with this problem.

  2. #2
    Was hoping atleast evn had an answer for this. Nonetheless I guess I'll have to improvise!

  3. #3
    I aint used weakauras for alooong time, If there somthing special you want to use these spell effects for? I could give it a try and see if it works for me. if it does maybe i can export it and see if it works for you like that. Maybe you have alittle somthing wrong and just cant notice it.

  4. #4
    Well the effects are the same animations for when balance druids gain their eclipse states. So I'm just looking to have that shown on a bigger scale above my Unitframes. Nothing I think would be different for you though, but thanks anyway!

  5. #5
    Birg, I figured where the problem lies.

    If you open the spell model in WMV, you'll see the following offsets:

    X: 0
    Y: -2.x
    Z: 8.y

    WeakAuras allow offsets in range of [-2,2] and the Z offset of 8.y is fucking that up.

    If any1 is skilled enough to somehow center those models and save them in their original .m2 format, that would do wonders

    EDIT: I found a way (partially)

    So, here's what you need to do to make this work:

    1. Navigate to your WeakAurasOptions folder (<WoW Folder>/Interface/AddOns/WeakAurasOptions)
    2. Open WeakAurasOptions.lua file in Notepad ++ or any other cool text editor.
    3. Navigate to line containign this text:
    local modelPickZ = AceGUI:Create("Slider");
    4. Change the min-max slider values for modelPickX, modelPickY and modelPickZ to range [-16, 16]
    5. Save the file and start WoW
    6. Open WeakAuras UI in game and select SPELLS/Druid_Eclipse.m2 model
    7. Set the following offsets: Z: -1.15, Y: 0.85, Y: 11.25
    8. For SPELLS/Druid_Eclipse_orange.m2 the offsets are: Z: -1.15, Y: 0.62, Y: 11.27

    I am still unable to determine how to make the animation not loop after it's finished 1st animation loop.
    Last edited by Lopina; 2014-07-05 at 10:10 AM.

  6. #6
    Oh wow, that is amazing! Thank you very much Lopina! If you want it to stay static just check the "Animate" box and keep it at >1

    How did you find this??

  7. #7
    Well, I knew the model was definitely there, so I turned up my old dusty WoW Model Viewer to see if anything can be done

    BTW, regarding animation, here is how it looks so far:
    1. Moon and blue/orange light slide from the left to the center
    2. They stay there for a moment or 2
    3. Just before the animation loop is done, there is a frame that looks absolutely awesome to me, with moon and radiant-ish light.
    4. Animation start from 1. again.

    I'd like to limit it in a way so it always stays on 3.

    Here's the pic of those frames:

    I'm guessing I'd need to extract certain range of animation frames. For example, the part of the animation that I want displayed is being displayed from 40th to 64th frame, I need to export that animation model, but only in that frame range. I don't know how to do that, so any help is appreciated
    Last edited by Lopina; 2014-07-05 at 06:26 PM.

  8. #8
    Psh...You guys are doing it the hard way. The -2/+2 limits are merely suggestions (in my book). You can simply bypass the limits by manually inputting your own values. The models come in several size categories. 1) Ones that show on default settings 2) ones that show up with a y-value of +5 3) A value of 15 4) wtf models that only show with crazy ass x, y, z values from 25-1000. Good day, gentlemen.

  9. #9
    A couple of WoW API functions look promising: SetSequence() and SetSequenceTime(). Unfortunately those methods aren't documented which means the links I provided are useless to everybody (how thoughtful!); but I wanted you to know I'm just taking a guess and hoping that somebody who has used those methods will be able to fill in some gaps in our knowledge.

    Begin Guesswork
    When I use the word frame I'm referring to the 'thing that has the 3d model inside of it", not "a single time-slice of animation". Wows animations arent' stored as discrete cells of animation like a video or gif file, but rather a few keyframes and then you interpolate between those values: if 2 keyframes are 3 seconds apart, and 1.7 seconds of time has passed since the last keyframe then you take the difference between those two keyframes and multiply by (1.7/3.0) to calculate what a frame at that point would look like.

    Looking at regionstypes/model.lua in the WeakAuras source we get this at line 100:
    	-- Enable model animation
        if(data.advance) then
            local elapsed = 0;
            model:SetScript("OnUpdate", function(self, elaps)
                elapsed = elapsed + (elaps * 1000);
                model:SetSequenceTime(data.sequence, elapsed);
            model:SetScript("OnUpdate", nil);
    So it looks like weakauras is driving the model animations all by itself. In principle you could just do the same thing. Setup your aura usuing the standard interface. Modify the aura to have it's "advance" property to false—can you do that with the standard interface? I don't recall, but if not, just edit the table that stores it's values—and you'll have disable weak aura's standard animations.

    The next portion would be to work out where the portion of your animation starts and stop: I'd look into wow model viewer for that - it's easier to experiment that way. You should end up with a start and stop time when you're done.

    Next up we're going to have to drive our animation instead of weak auras: we can do that using any of the standard animation functions. Just set a custom function and ignore what's normally there. Instead we'll access the weakaura's region that holds our 3D model (weakauras.regions['foo'] -> see the video I posted about storing custom variables between reloads for an example), grab it's frame and call SetSequence() to update the animation on every frame.

    Looking at the weak auras source posted above (like 103 in the file for those playing along at home); weak auras starts with the elapsed time at "0" (see line 103) so that's our first point of interest. Instead of starting at 0, we'd start at whatever we want the start point of our animation to be: say 2 seconds or something.

    Next, inside the update function we see that weak auras is just doing a simple increment and setting the sequence (I guess setsequence probably just 'loops' animations). Instead of doing a "dumb" assign, we'd check if our running total (elapsed, on line 105) is larger than our 'finish time') after we increment it. If it is bigger, then reset elapsed back to our starting value of 2 seconds. Finally call setSeequence() and hope it worked.

    I haven't tested it, but it certainly seems possible.
    Last edited by evn; 2014-07-05 at 11:58 PM.
    A new UI series for 5.2Steal my old UILearn about WeakAuras • Nobody to raid with right now so no PVE videos.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts