Search Unity

[Released] Mega-Fiers. A mesh deformation system - RELEASE

Discussion in 'Assets and Asset Store' started by SpookyCat, May 18, 2011.

  1. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    The update seems to fix the slow morph sliders when initially setting up the morphs on a game object. Very glad for that!

    Unfortunately, I've still run into a couple issues in testing it in a newly made project just now (4.5.2, Win 8.1 desktop):

    - When I select my game object and go to "GameObject --> Create Mega Prefab" in the editor menu, a clone of the original game object is created in the scene. A MegaPrefab folder appears in my Asset hierarchy as well, but the newly created object is not in it. (I'm wondering if my steps are wrong here? I never can seem to get the prefab function to work.)

    - Morph sliders for the newly created game object ("prefab") are slow/delayed like before the update. Additionally, the original game object (from which the prefab was made) does not appear to change when morph sliders on that original object are modified.

    - All instances of the prefab, as well as the original object from which it was created, are affected by morph slider changes in one prefab instance. (Similar to the situation before the update today.)

    If you need me to respond to that ticket, submit a new one, and/or send you a link to the project I'm testing with, let me know.

    Thanks!
     
    Last edited: Jul 16, 2014
  2. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Hi All! I remember being wowed by Megafiers when it first released, and now I have a project that might really benefit from this tool - but it requires collision to be modified too.

    What's the current status of collision being modified by animated Megafiers?

    I'd like to set up animated bending / twisting courses akin to minigolf courses, where physics objects will need to have fine reactions on the course surface. Looking at the videos and megafiers website, I can't tell how well Megafires works with collision and colliders.

    If I have a box mesh, and bend it so there is a hump in the middle, does its collider update, too? There's reference from ~2012-13 about a "Collision Deformer" but it isn't mentioned anywhere on the website. Was it abandoned?

    Anyway, the visual results of Megafires look super awesome, I just need that collision support for it to work in my game.

    Thanks for the help!
     
  3. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Welp - sorry for the ignorant post.

    "The system also updates any mesh colliders attached to the object and will recreate tangent space if required by shaders."

    So sounds like if I use a mesh collider instead of other primitive colliders, Megafiers will work great for what I want to do.
     
  4. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    Another small update available, this adds an option for a frame delay to the Point Cache modifier which allows for perfect syncing if you need to play the point cache animation along with other animating objects, sometimes you may need to have a frame delay depending on processing order of objects. Also added a new method to the MegaModifyObject component which allows you to tell the system that the mesh has totally changed, ie new vertex counts, tri order, normals etc. Calling MeshChanged(Mesh newmesh) with the new mesh state will update all the internals of the system so the new mesh changes will work.

    Changes in v2.78
    • Added option of a Frame Delay for Point Cache to improve syncing with Unity animations.
    • Added a new method to MegaModifyObject MeshChanged(Mesh newmesh) which you can call if the orginal mesh has been changed, ie dynamic text objects.
     
  5. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    @ninjaboyjohn Sorry didn't get a notification of your post. You can ask the system to update the mesh collider for an object with the deformed mesh, though that can be quite slow if you have a complex mesh and plan on doing it every frame. I did do a simple little video many moons ago showing the collider system updating.
     
  6. Play_Edu

    Play_Edu

    Joined:
    Jun 10, 2012
    Posts:
    722
  7. Hamesh81

    Hamesh81

    Joined:
    Mar 9, 2012
    Posts:
    405
    Hi SpookyCat, could you please make a tutorial video showing how Megafiers can be used in conjunction with a facial mocap system such as Brekel Pro Face or Mixamo FacePlus. I have seen this video showing FaceShift and Megafiers, but it does not explain the setup.

    Say for example I have recorded 3 facial animation clips using my facial mocap system of choice, each clip represents a single character's talking in 3 separate cutscenes. How do I go about having these 3 separate animations drive the Megafiers blendshapes of the character? I have seen in this video that you export a single animation from 3DS Max and play it in Unity, however if I have multiple animation clips for a single character how would I do this? Would I need to have 3 duplicates of the model with a separate animation on each? If I have 20 cutscenes that would mean 20 models; I would prefer to have the one model and be able to play the cutscene animation on it that I need. Please let me know your thoughts.
     
  8. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    The best way to deal with that is to have one long animation containing all your clips, then import that a normal to your object so you have the morphs working, then use the Morph Animator component which allows you to break up the animation into clips, set the loop mode etc and then you can use the PlayClip() method in the component to start the animation playback. You can also ask the system to sync the morph anim clips to the main animation clips if you use the same names. More info on the Morph Animator can be found at http://www.west-racing.com/mf/?page_id=1108
     
  9. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Thanks for the reply!

    I think I would need to update the mesh every frame. The mesh wouldn't be super duper complex - basically a rectangular solid subdivided into enough verts / polygons to make the motions work.

    The best example of what I'd like to achieve is from Super Monkey Ball 2's special bowling lanes - they twist, turn, and ripple in real time.

    Examples:
    "Ripple lane" Video link

    "Bend lane" Video link

    How slow would doing something like this be with megafiers? It'd be on mobile, but only running one of these at a time, and I'm at 60fps right now.
     
  10. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Would it be faster if the collision mesh is only updated on every FixedUpdate? Wonder how that would be achievable, since I'd want the render mesh to update every frame, but collision only needs to run as fast as physics.
     
  11. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Hey Chris... I don't want to sound like a broken record but have you thought about breaking out that relax modifier?

    Just being the squeaky wheel here...

    Thanks
     
  12. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    @ninjaboyjohn - The FixedUpdate is called at the physics update rate which is usually 100 times a second which is more than the normal Update so it would slow things down a lot more. The only thing that could really be done to speed it up is to have a proxy mesh that was much simpler that had the same deformation applied and that mesh used for the collider.

    @Licarell - I did do some work on the relax modifier, I will get the code out and see what I had left to do.
     
  13. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Thanks Chris, I appreciate it.
     
  14. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Gotcha. Any ideas on just how slow animating every frame with the collision mesh is? Are there any web demos out there that try this with Megafiers?

    Anything you can do to help me gauge whether or not this will work will help. It's a bit too expensive to buy without knowing that it will work for this application. Thanks for the help!
     
  15. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Well, I decided to buy Megafiers try it out. Unfortunately, the performance was worse than I expected.

    From my tests, just having the Recalc Collider box checked on my Megafiers object (1998 verts, 3320 tris, non-convex, has a Mega Curve Deform on it) without animating the megafier drops my framerate from ~60 to ~17fps.

    So I wrote a little script which waits X FixedUpdates and then turns on Recalc Collider for one FixedUpdate and then turns it off again, and the general framerate is back up but the game visibly hitches every time it hits a Recalc Collider frame.

    Here's the script. I'll try to put together a test scene tomorrow that illustrates what I'm seeing. I get that recalc'ing every frame would be slow, but I hoped that by spacing them out it'd be okay.

    Code (CSharp):
    1. public class MegaFiersUpdateCollision : MonoBehaviour {
    2.  
    3.     public int waitForFixedUpdates = 30;
    4.     private int currentWaitingUpdates = 0;
    5.  
    6.     private MegaModifyObject megafiersScript;
    7.  
    8.     // Use this for initialization
    9.     void Start () {
    10.         megafiersScript = GetComponentInParent<MegaModifyObject>();
    11.         if (megafiersScript == null)
    12.         {
    13.             Debug.LogError("Megafiers script not found!");
    14.         }
    15.         megafiersScript.recalcCollider = false;
    16.     }
    17.  
    18.     void FixedUpdate () {
    19.         if (currentWaitingUpdates == waitForFixedUpdates)
    20.         {
    21.             Debug.Log("Collider ON");
    22.             megafiersScript.recalcCollider = true;
    23.             currentWaitingUpdates++;
    24.         } else if (currentWaitingUpdates > waitForFixedUpdates)
    25.         {
    26.             Debug.Log("Collider OFF");
    27.             megafiersScript.recalcCollider = false;
    28.             currentWaitingUpdates = 0;
    29.         } else
    30.         {
    31.             Debug.Log("Fixed update");
    32.             currentWaitingUpdates++;
    33.         }
    34.     }
    35. }
    Also - I noticed that ThreadingEnabled becomes unchecked on my object's Mega Modify Object script every time I select something else. I'm using Unity Free - does it support multi threading with Megafiers? Getting the collision to update in its own thread sounds like something that might fix the issue.

    Thanks in advance for the help!
     
    Last edited: Aug 6, 2014
  16. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    The threading enabled value is a static value for the whole system, it will be reset if you make any changes to any scripts as that is the way Unity works. There is a script called MegaToggleMultiCore.cs which shows the simple way the threading should be enabled at runtime.

    Also you won't be able to update the collider on another thread, although threading can be used in Unity you can not call any Unity method from another thread so you cant update meshes or colliders, you can only split up jobs such as calculating vertex positions on other threads then when those jobs are done the main thread can update the Unity data. Updating mesh colliders is a very slow process in Unity and there is no way around that until Unity allow collider info to be set manually or optimize their internal collider update code.
     
  17. ninjaboyjohn

    ninjaboyjohn

    Joined:
    Mar 30, 2014
    Posts:
    23
    Good news! I was able to get decent performance by lowering the detail of my mesh to ~300 polygons. I may be able to go even lower - we'll see :)

    One last question and I think I'm set - I'm going to try having the collision be from a proxy model with as few verts as possible while keeping a high-quality visual mesh like you suggested.

    Is there an easy way to make one set of Megafiers impact two different GameObjects at the same time? Or do I need to make sure that each object has their own copy of every mod and are set to the same tuning?

    Thanks again, SpookyCat!
     
  18. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    Currently you would need to setup the modifiers the same on each object and change both sets of values. I did a while back add a reference system for the point cache modifier so that data could be shared so saving memory, so it could be possible to add a reference type system for deforming other objects with the same values. I will put that on the todo list but can't say if or when that will be implemented.
     
  19. eagleeyez

    eagleeyez

    Joined:
    Mar 21, 2013
    Posts:
    406
    Hi, Chris.

    OK, I have had mega-fiers a while now and now I would like to use it to melt a sphere.

    How on Earth do I use this? I cannot find any documentation or written tutorials and I have been trying out everything to get a ball to melt into a puddle. How please do I do this and are you ever going to make Playmaker actions for this?

    I thought this was going to be easy, but without documentation I feel really lost and your videos are just not really explaining anything. Why do you not speak and tell us what you are thinking and doing? For the price I would have at least expected that.

    All the best from Chris.
     
  20. Duffey

    Duffey

    Joined:
    Jun 27, 2013
    Posts:
    12
    Chris, could you please comment, can megafiers point cache and morph work on the same mesh at the same time? What if I needed to add bones also?
    Thanks.
     
  21. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    @eagleeyez - If you right click the inspector bar for the component and then click help you will be taken to the online docs for that component, or you can visit the website at www.megafiers.com where you will find a page for each modifier in the system which explains all the params, and will usually have a video showing the modifier in action. As for playmaker I have been told a few times that they are being worked on by a third party, it is even listed on the PlayMaker Add-Ons page that MegaFiers and MegaShapes support is coming soon https://hutonggames.fogbugz.com/?W714

    @Duffey - You can stack any number of modifiers on the same object so if you want morphing and point cache you just need to add the point cache and morph modifiers to you object. Not sure what you mean when you say you need to add bones.
     
    Last edited: Aug 12, 2014
  22. eagleeyez

    eagleeyez

    Joined:
    Mar 21, 2013
    Posts:
    406
    Aha, thats nice to know and thanks Chris. I will take a look at it all later. BTW. This looks to be a very awesome product.
    Just one quicky! I still cannot get a sphere to melt with mega melt. I would really, really appreciate it if you could just quicky give me a dive into how I get there step by step.

    Thanks Chris and keep up the good work.
     
  23. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    Not much to the melt, add your sphere to your scene, select it, go to the Components menu and select Modifiers/Melt, you will probably need to set the axis to 'z' then just change the amount value. For some of the values to take effect you will need to select the 'Custom' option in the Material Type drop down.
     
  24. Duffey

    Duffey

    Joined:
    Jun 27, 2013
    Posts:
    12
    Thank you for your reply Chris, I appreciate your time.

    Sorry I wasn't clear. Say I have one mesh, I want the body portion of the mesh driven by point cache, the face portion by morph targets, and the neck/head
    operated with bones so it would be able to turn its head to look at target objects via a look at controller. (BTW I have a reason for wanting the body driven by point cache instead of bones.)
    Can these three deformation systems exist on one single mesh as long as they don't overlap in effect?

    Thanks again Chris, really cool of you to take time in answering questions at this forum.
     
  25. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    That is no problem, all the modifiers work fine with skinned meshes, so you can have normal bone animation and have morphs and point caches applied on top of that if you need. We have a lot of users of the system using morphs or point cache on top of skinned and boned animations.
     
  26. eagleeyez

    eagleeyez

    Joined:
    Mar 21, 2013
    Posts:
    406
    Hi again and thanks for the quick explanation.

    Sadly I am not getting it to do anything.

    1. Put a sphere in the scene.

    2. Could not find anything with menu as you described but I found in component/modifiers/melt.

    3. I went through different settings and saw in the scene view a flat end sphere

    4. Pressed play and nothing happened, it still stayed flat. I had expected a sphere that would melt.


    Do I have to somehow animate the melt myself? I just seem to be too stupid for this or I am missing some kind of vital information, that I just cannot find anywhere.
     
  27. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    If you submit a support ticket at the website we can get your object 'melting' as you need.
     
  28. Duffey

    Duffey

    Joined:
    Jun 27, 2013
    Posts:
    12
    Hi Chris,

    I have noticed that the 3dsmax biped uses a right handed coordinate system and cannot be changed. Any point cache made with an animated biped will necessarily be Z-up. Of course Unity uses a left hand system, Y-up.
    I feel it would enhance the megafier point cache plugin to be able to choose an import axis for the point cache file and then the plugin would rotate the data on import. This way a Z-up pc2 could be used for a Y-up mesh in unity.

    Thanks for listening!
     
  29. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    @Duffey - The point cache import will remap the coordinate system to whatever the mesh it is being used on, so it will check various axis systems and switch and negate the vertex data as it needs to find a correct mapping from the source cache data to the mesh in Unity.
     
  30. Venged

    Venged

    Joined:
    Oct 24, 2010
    Posts:
    500
    @SpookyCat - I just tried saving a Daz3d character that I have Mega Morph and Cloths Mega Wrapped to a Unity Prefab. Just like last year the Prefab still breaks. When I load the prefab into a scene the cloths are missing and or not mapped anymore. When I try the Mega Prefab it still does not work. What are the steps to save a prefab of a Daz3D Genesis Character? I have same problem with Genesis and Genesis 2 Characters.
     
  31. Ony

    Ony

    Joined:
    Apr 26, 2009
    Posts:
    1,977
    I'm having exactly the same problem Venged just mentioned in the comment above mine. Using DAZ Genesis characters, which have been working great for me so far. This is the first time I've needed to use the "Create Mega Prefab" option and it's not working.

    Daz characters won't save as Mega Prefabs. Getting the error: "Couldn't create asset file because the Mesh 'Genesis.shape' is already an asset".

    Clothing that's been wrapped saves fine as a Mega Prefab, but when I drag it back into the scene the target mesh ("Genesis.shape") it's been wrapped to is missing.
     
    Venged likes this.
  32. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    I've had similar issues as well and had some lengthy conversations with SpookyCat through support tickets. It seems like these problems are at least partially due to Unity's weird/bad implementation of prefabs. It was suggested to use the Mega Deep Copy method to instantiate at runtime, instead of using the Mega Prefab as a workaround. I haven't really tried it just yet. I'm hoping prefabs are at least somewhat improved early in the 5.x cycle...
     
    Venged likes this.
  33. Ony

    Ony

    Joined:
    Apr 26, 2009
    Posts:
    1,977
    Mega Deep Copy seems to work in the Editor, thanks. Are there any instructions on how to call it at runtime? I can't seem to find any.

    EDIT: found it. Long morning. :)
     
    Venged likes this.
  34. Venged

    Venged

    Joined:
    Oct 24, 2010
    Posts:
    500
    Ony Thanks for the bringing this up. Thanks for the pointers Chiapet1021. I have struggled with the prefab thing for a long time. I have open support ticket now that I am waiting for a reply to. I will try the Mega Deep Copy. I will share any progress I make. The run time example will be great if we get one.

    FYI - I have been able to wrap and morph not only Genesis but Genesis 2 as well. Vicotoria 4 dod not work because it does not have the dsf file. There tools on the Daz3D Store that are reasonable priced that I was able to covert Genesis 2 copy to V4 UVS and include all V4 morphs along with Genesis 1 and 2. That worked fine. The models work and morph good in Unity and UE4. The Daz3D products are V4 to Genesis for converting your Genesis 2 to V4 UV and GenX and GenX2 addon for adding the V4 morphs.

    Here is a pic of Genesis 2 made to work with V4 tetxure and morphs that I have working just fine with MegaFiers in Umity minus the prefab problem. The Body is plenty low enough poly count for the engine but I have not Decimated or retopo the cloths yet. See link below.

    http://www.daz3d.com/gallery/users/70080

    I know Spookycat will get the prefab resolved. This product has so much to offer:)

    Best:)
    Venged
     
  35. Venged

    Venged

    Joined:
    Oct 24, 2010
    Posts:
    500
    I tried the Mega Deep Copy. I produces a working clone in the editor but if you drag to a folder and then put it back in the scene the mesh is missing. Am I missing something?
     
  36. Ony

    Ony

    Joined:
    Apr 26, 2009
    Posts:
    1,977
    I think if you're wanting to drag it back up into the scene then that's more what the Mega Prefab thing is for. I haven't got around to testing the Deep Copy through code yet but it's my understanding that instead of it instantiating a prefab during runtime, it simply duplicates an existing Megafied character (or object) that's already in the scene, making a new, standalone object based on the original.
     
    Venged likes this.
  37. Venged

    Venged

    Joined:
    Oct 24, 2010
    Posts:
    500
    Thanks Ony. That will work for now. I guess one could have all the characters they want selectable in the scene as inactive and then activate them in script.
     
    Ony likes this.
  38. beakon

    beakon

    Joined:
    Oct 24, 2013
    Posts:
    7
    Say I have a 3d fish swimming around in a 3d fish tank with 3d plants. Is there a way to attach a megafier to the fish so when it swims by the plants the megafier on the fish will make the plants wave/move a bit?
     
  39. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    @beakon - Sorry didn't get the email saying there was a new post. You could add a space warp as a child of your fish and have the plants bind to that, then as your fish moves so will the warp and that will effect any plant that is bound to that warp.
     
  40. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    Small update in the Asset Store now, creating a prefab using the Create Mega Prefab should work for Mega Wrap objects now, it is beta so may not work on all versions of Unity (each version seems to have different effects on the Prefab system) so let me know how it goes, worked fine on my test objects. Also improved the spline follow script so you can have offsets and extra rotations on your objects, and also added an example script that allows you to attach a rigid body object to a spline and move it with a force, roller coaster style.

    Changes in v2.79
    • MegaWrap now works with Create Mega Prefab, Beta feature, works with tested objects on Unity 3.5.
    • Path Follow script updated to use spline twist values.
    • Path Follow script updated to have offset and rotation values.
    • Added example script MegaShapeRBodyPath.cs to show how to connect an RBody to a spline, the rbody can then be moved along the spline using a force.
     
    Ony likes this.
  41. Ony

    Ony

    Joined:
    Apr 26, 2009
    Posts:
    1,977
    Yay! Thank you. :)
     
    Venged likes this.
  42. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    Had a request to see if we could create a Bezier Attractor modifier in MegaFiers to allow creation of breaking waves, whirlpool, tornadoes and various other effects and this is the first draft of such a modifier. It allows for deformation to be based on distance from any spline, you can choose to have the mesh attracted to or repulsed from the spline or to rotate about it. As can bee seen in the video to make a breaking wave a simple spline is just moved through the water mesh.
     
  43. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    Very cool! This tool keeps getting better and better. :)

    I don't know if anyone else has bugged you about this yet, Chris, but have you worked with the Unity 5 beta yet? I'd be interested to know how that affects your assets. How difficult to update them to be compatible with Unity 5, whether performance is better, whether prefabs are less of a pain... :)
     
  44. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    @chiapet1021 - We have tested the system on Unity 5 and so far everything works fine, there are some warnings on the Undo system but we just need to add a check for Unity_5_0 around that code, but other than that all is fine. The demo scene does not convert for some reason but then again it is an old 3.5 scene so probably some really old stuff in there Unity have long forgotten about, time I did a proper demo scene anyway :)

    It does seem as well that the false error about the shared mesh has finally been addressed by Unity as well, but seems there have been some changes to the prefab system again, and prefabs seem to work without using the custom methods, the custom method is not working with skinned meshes for some reason so we will look at that, again :)
     
    Last edited: Oct 7, 2014
  45. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    Wow, if prefabs are improved for the initial Unity 5 version, I will be a very happy camper. :)

    Quick follow-up question: Will you be updating MegaDaz for Unity 5 as well (if any updates need to be made)? I still plan on using the combination of MegaFiers and MegaDaz in my project after updating to Unity 5.

    Thanks as always!
     
  46. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    There is something a little odd with the standard prefabs, they work but when you change say a bend the asset in the prefab changes as well which is shouldn't do, seems like mesh is not being re instantiated when the prefab is dropped into a scene which I guess has something to do with the removal of the sharedmesh error. Will be sorting it out before 5.0 is released could just be issues inside Unity.
     
  47. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    Is that an editor-only issue, or are you seeing it when you build and launch as well?
     
  48. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,767
    We will be making sure all our assets work with Unity 5.x
     
    Play_Edu likes this.
  49. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
  50. Play_Edu

    Play_Edu

    Joined:
    Jun 10, 2012
    Posts:
    722
    great news for us