Jump to content
Hash, Inc. - Animation:Master

nemyax

*A:M User*
  • Posts

    373
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by nemyax

  1. Three-Point Reroute

    This plugin redirects the spline flow as indicated by your CP selections. Wherever you want a spline to take a specific route, select three CPs in a row: they will mark the start, middle and end of the route stretch. You can mark multiple such three-CP series at once. Finally, run the plugin: Plugins | 3-Point Reroute.

    The UV layout and 5-point patches are preserved by the operation.

    Here’s a video of the plugin in action:

    https://drive.google.com/open?id=0B___ge5IO2JdaHRLWWpId01Yc0E

    The plugin was co-authored by me and Hellraiser. He is a real C++ programmer who had no prior experience with CGI software development, and I’m the reverse. Now we’re both the better for it.

     

    Download and Setup

    Important: The plugin works only with A:M 18.0p+ and later. 18.0p and earlier are not supported.

    For 64-bit A:M (Windows)

    For 32-bit A:M (Windows)

    To install the plugin, put the correct (either 32-bit or 64-bit) .hxt file in the \HXT folder.

    The .hxt files were built with Visual Studio 2015 Community Edition.

    There won’t be a MacOS X build. If you want to try and create one, I can provide the sources on request.

     

    Notes

    • The API offers no way to detach stacked CPs at this time, so the plugin leaves behind harmless garbage splines in some situations. If the necessary method is added in a future update (see also issue 6689), this might change; whether or not it will depends on how detaching affects decaling.
    • Unlike spline curvature, the UV layout isn’t affected by the operation, so the look of the texture can change. But seeing as the main use case for the plugin is to fix crappy automatic splining of imported geometry, where textures are distorted to begin with, the rerouting will likely improve the decaling rather than ruin it.
    • Hellraiser added a second way to invoke the plugin: the Ctrl+Alt+F3 hotkey. He implemented it because he can (or in the words of robcat2075, It Can Be Done), and even though it’s hardcoded, I don’t think anyone will mind.

     

    Credits

    Hellraiser

    • Jump-starting me on Visual Studio and the A:M SDK environment setup
    • Valuable C++ advice
    • MFC magic and WinAPI sorcery

    nemyax

    • Idea and C++ implementation

     

    • ____ 1
  2. I"d say it's there but just included in another operation.

     

    I sure hope so.

     

    the Connect plugin that takes any number of splines and connects those that cross each other within a designated distance

    There's always the option of building a new spline from CPs whose properties are identical to those of the original CPs. But that's a braindamaged way to do it, because you break group membership, weighting, spline actions and a million other things. Hopefully the Connect plugin doesn't use the method. The host program clearly doesn't.
  3. Left is Lightwave (but they are not in best shape...), C4d, Houdini, Blender and of course A:M.

    Well, you can't "buy up" Blender, so that one's safe. And there's also Modo, which is going quite strong.

    If rumours are to be believed, Autodesk has only about 3000 current paid-for licences for Maya and about 2500 for Max. Their media and entertainment business seems to be ailing lately, what with all the greed and mismanagement.

  4. I would guess the circularize wizard would use all of the CPs center as the origin from which to average the spacing of CPs around the splne from the average distance away from that point.

    Yes, precisely. Circularize is both very useful and easy to implement.

  5. I can't work out how to make a plugin's menu entry visible when CPs are selected. Presumably this is determined by the HxtLoadCommandEntry function, but the entry gets hidden whenever any CPs are selected. Even an always-true definition like the one below doesn't make a difference:

    extern "C" __declspec(dllexport) BOOL HxtOnAddCommandMenu(
        HTreeObject *htreeobject,
        UINT index,
        String &menuname,
        MenuCategory &mc,
        BOOL &disabled)
    {
    	menuname = g_str_menu_name;
    	disabled = FALSE;
    	mc = MC_GENERAL;
    	return TRUE;
    }
    

    How do I control availability correctly?

  6. when I go back into Maya/Max/etc. and move a limb(like an arm) and then export the same model again into A:M. Nothing has changed at all but the slight movement of the arm, etc.

    Yet the two imported models have completely different cp numbers.

    Why does that happen? Does the A:M importer assign CPs differently every time? And how does the renumber command help?

    Have you tried importing the same OBJ twice and comparing the CP numbers?

  7. And this would be my exhibit A against the idea that 'any CP order is as good as another' in that I would think that CPs are best ordered when they align with spline assignment and continuity.

     

    We'd have to look at the spline walking code to determine if that is the case. But it's very unlikely that the order matters for efficiency. A pointer to a CP object is just that, regardless of the CP object's index attribute.

     

    The "Renumber CPs" operation eliminates the gaps in CP numbering, so that if your object doesn't have CP #4 but its highest is #65536, then the operation assigns a contiguous range where you do have #4 but don't have #65536 any more. That's all the optimization you get out of it.

    But anyway, you'd never exceed the 4 billion upper limit for the CP numbers, so the renumbering operation is probably purely for cosmetic effect.

  8. More practically speaking, renumbering of CPs seems to be a step one might take just prior to saving a (master) model that one wants to use as the exemplar; a model that is considered final and will never change.

    If all you want is to create a master model, any CP order is as good as any other. There's no reason to renumber them for that.

×
×
  • Create New...