Tech Artist - What are you working on: FOREVER Edition!

1495052545557

Replies

  • malcolm
    malcolm polycount sponsor
    edited Sep 2020
    Because offset is much better than dragging the manpulator, and in most cases offset will actually create perfectly aligned faces just like the extrude tool, I've tried both since posting the .gif and I also tried selecting edges, but there's no way to do this as far as I can tell unless you do it in two steps which is not parametric. Local translate Z actually creates an even worse bubble looking skew.
  • Klunk
    Klunk ngon master
    edited Sep 2020
    more tweaking of blending normals....

    static void normal_basis(Point3& z, Matrix3& tm)
    {
        Point3 y(0.0f,1.0f,0.0f);
        Point3 x = Normalize(CrossProd(y,z));
        y = Normalize(CrossProd(z, x));
        tm.Set(x, y, z, Point3(0.0f,0.0f,0.0f));
    }

     struct VNormal : public BlendMode< VNormal > {
          enum { NameResourceID = IDS_BLENDMODE_VNORMAL };
          ::Color operator()(const ::Color& fg, const ::Color& bg ) const
          {
                Point3 fgn = 2.0f * (Point3(fg.r, fg.g, fg.b) - 0.5f);
                Point3 bgn = 2.0f * (Point3(bg.r, bg.g, bg.b) - 0.5f);
                Matrix3 tm;
                normal_basis(bgn, tm);
                fgn = tm.VectorTransform(fgn);
                ::Color res(Normalize(fgn + bgn)/2.0f + 0.5f);
                return res;
          }
       };




  • malcolm
    malcolm polycount sponsor
    Furthermore to our discussion above about broken edges trims, I figured out how to do this parametricly without any fiddling. Or at least I think I did until someone tells me it doesn't work, but it works on the shapes I need it for. The trick is to select edges and translate on x using the component move mode setting in the move tool. I wish I figured this out back when I was working on Gears 5!
  • Klunk
    Klunk ngon master
    edited Sep 2020
    a select intersecting faces mod for max.....

    operates on faces/polys/element with the option to hide "valid" faces/polys/elements... at the end I'm setting the min spacing of the emitter that generates the points that the mesh is created from. Have to say the trickiest part was finding a "decent" robust  tri vs tri c code on the interweb (there are some real shockers about) in the end had to implement my own.

    cylinder with nasty noise on it (while adjusting the seed and roughness)

  • Klunk
    Klunk ngon master
    added the ability to adjust the transition point in the uv to the texture and matched the "blend" geometry to the shape more as opposed the the circular version as it distorts the map less.

  • malcolm
    malcolm polycount sponsor
    Wow that's super impressive.
  • Klunk
    Klunk ngon master
    ported stumpy to the sdk, so it also now works as an outline so it can be used as a cutter....

  • Klunk
    Klunk ngon master
    edited Oct 2020
    a fun one, normal mapped camera facing billboard shader

    this shows the limitations better....


  • malcolm
    malcolm polycount sponsor
    Neat, what would be the use case for this. We tried to check the UVs from the outsourcing team before we approved them to go on to the texturing stage to avoid costly re-texturing if they had created wasteful UVs. We used the Maya %UV wasted HUD to make sure everything hit at least 70% unless it was something funky where the shells couldn't be packed tightly.
  • malcolm
    malcolm polycount sponsor
    So I created this Maya tool for someone that had a really specific workflow. They wanted to group UV shells and then pack the shells based on a scale they assigned to each group, I thought this was a really interesting idea and a neat challenge, but once I finished the tool I realized I'd never use it for anything, but the person that wanted it was happy. So I haven't released the tool yet because I'm not sure it's useful, but I'll share it here because I think it's neat. The worst part of the tool is there's no way to visually colour the UV shells to show which group they're in, or at least no way I could figure out how to do it in mel.


  • Sage
    Sage polycounter lvl 20
    Some awesome work here!!!.
  • poopipe
    poopipe grand marshal polycounter
    malcolm said:
    Neat, what would be the use case for this. We tried to check the UVs from the outsourcing team before we approved them to go on to the texturing stage to avoid costly re-texturing if they had created wasteful UVs. We used the Maya %UV wasted HUD to make sure everything hit at least 70% unless it was something funky where the shells couldn't be packed tightly.
    That's one use case, texel density checking is another. I should also be able to use image analysis / computer vision stuff to compare lod UVs and suggest optimisations in the form of shell overlapping and so on too 

    The main thing is that it's not in Maya so it's fast and not crippled by python 2.7
  • malcolm
    malcolm polycount sponsor
    Oh interesting, yeah we needed to do A LOT of lod optimizations to get Gears 5 to run at 60fps all the time. The tech art guys would use view mode in unreal to identify problems and send us huge lists of things that needed to be adjusted in certain ways.
  • poopipe
    poopipe grand marshal polycounter
    edited Nov 2020
    My general philosophy is that  reactive optimisation of this kind is the result of you not beating your art team severely enough at the beginning the project ;)
  • malcolm
    malcolm polycount sponsor
    Ha ha, I can guarantee 100% we were beat into pulp at the beginning of the project with the most harsh budgets you've ever encountered for any AAA game and stuck to them, then further dried out and ground into dust near the end of the project to get a solid 60fps @4k especially in the open world sections.
  • mihail.lupu
    mihail.lupu polycounter lvl 12
    I started to upgrade my old hair card tool. A wip demo video: https://www.youtube.com/watch?v=sahmdIRfLrI
  • malcolm
    malcolm polycount sponsor
  • HiernauxNicolas
    HiernauxNicolas polycounter lvl 10
    Hi there !  
    After the detail albedo shader, I finished a new shader : the 'Sticker & Detail Albedo map Shader'. This shader for TB3 allows to add a sticker on top of an existing material and includes the previous 'detail albedo' module. I hope you enjoy ! 
    https://www.youtube.com/watch?v=JjzaSo5vkwI
  • onionhead_o
    onionhead_o polycounter lvl 17
    (MAYA) interactive quad cylinder primitive


  • malcolm
    malcolm polycount sponsor
    Wow that's cool, did you write that in the API or Mel, or Python?
  • onionhead_o
    onionhead_o polycounter lvl 17
    Thanks malcolm, its all mel. its a mix of using dragAttrCtx and scriptJobs to mimic interactive creation
  • malcolm
    malcolm polycount sponsor
    Nice, thanks for the info.
  • Fansub
    Fansub sublime tool
    Interactive tools are the best!

    Here's how you'd write one with GraphN:


    The nodes responsible for interactivity are Viewport Event and Viewport Event Meta. Viewport Event allows you to run any piece of code on mouse move, press, release or modifier press. Viewport Event Meta is there to give you data about your viewport, like the mouse's screen space position, for example :) it's pretty much a wrapper around dragAttrCtx but beefed up a little.

    The rest of the graph is just querying where your mouse currently is in screen space, running a ray intersection to see which face/position your mouse would hit, which is then used to set the position of the object.
    For rotation, I'm using Get Components Data, which takes a face or list of faces and their mesh, and returns the position, normal and rotation of that face. Here I'm setting the rotation of my torus with that nod's output.

    Execute basically allows you to chain a sequence of operations: in this case we first set the position, then set the rotation :)



  • malcolm
    malcolm polycount sponsor
    I didn't think graphN was available to try yet?
  • Fansub
    Fansub sublime tool
    Not yet yeah :) still got a bunch of nodes to complete (like being able to create custom manipulators) before we ship it
  • malcolm
    malcolm polycount sponsor
    Wow, that's amazing, that would actually be really helpful.
  • poopipe
    poopipe grand marshal polycounter
    edited Feb 2021
    couldn't sleep so triangulation happened. I tried ear clipping but it's either unsuited for this sort of shape or I implemented it wrong. I fell back to using the triangle module for python  which is a binding to a 2d delauney implementation by Jonathan Richard Shewchuk.
    I'm not 100% happy with every choice it makes but it's pretty good considering it has no information fed into it beyond a list of points.

    next job - spend 2 hours digging though the fbx SDK docs trying to work out how to flip those faces - you'll note everything has mirrored since last time...
     


  • poopipe
    poopipe grand marshal polycounter
    and now it works mostly properly - everything points in the right direction etc. at least

    It wont open the meshes in paint3d for some reason but I don't care yet - might be because im writing ASCII fbx out or possibly just some meta data I haven't bothered adding. They open in max so i assume they'll work in maya .

    You can affect how dense the mesh is and affect how much padding is around the shapes but the difference is limited (57tris on the left to 88 on the far right)  since the outline generation is pretty minimalist and you can only pad as far as the texture lets you. 

    It needs a UI so I'll give that a poke next.


  • malcolm
    malcolm polycount sponsor
    Wow, that's cool. What did you write this in?
  • onionhead_o
    onionhead_o polycounter lvl 17
    edited Mar 2021
    still mel with the mix of some nodes and deformers hacked together
  • malcolm
    malcolm polycount sponsor
    Wow that's cool, I write all my stuff in mel, haven't learned any other languages yet.
  • malcolm
    malcolm polycount sponsor
  • onionhead_o
    onionhead_o polycounter lvl 17
    edited Mar 2021
    ah nice Klunk.The Quad sphere that i did used the polyPlatonic as base and the Sculpt deformer to keep it sphere.

    I wish i could do half the stuff that you can Klunk, but in maya
  • Klunk
    Klunk ngon master
    edited Mar 2021
    Thanks, just  copied some code from here and applied it to max's box obj code, the tricky part/ painful bit is porting the sdk 0  based indexing to mxs 1 based indexing and not running out of the room screaming when everything is a spaghettified mess :D I'll get round to implementing a c++ version sometime.
  • onionhead_o
    onionhead_o polycounter lvl 17
    ah i was referring to your other tools Klunk, but thanks for the link as well.
  • Klunk
    Klunk ngon master
    edited Mar 2021
    this is quite an interesting article on spheres with code.... (i implemented selective edge turning on my code before reading it) probably get around to implementing a variation on the "normalized" version sometime.

    added the "normalized" as a bias on the original script also has the option of flipping the edge to improve edge flow in the sphere




  • Klunk
    Klunk ngon master
    auto smooth spline for max, turns corner knots into  smooth or bezier knots


    based on the in out vector angles, you can have balanced (equal length in out) and uniform (same length for all) options and a scaling factor. It was designed as a precursor for the resample plugin where the starting spline is made from mostly corner knots (it still worked but not if you want to maintain specific knots). So i'll be adding it to the resample upload (once i've fixed a couple of bugs in the resampler) 
  • Klunk
    Klunk ngon master
    edited Mar 2021
    this is a bit whacky, unintended single click bezier creation.... if you have the mod at the top of the stack then create the spline underneath in single click corner fashion....



    dunno if it has much application but a bit of fun none the less ;D

Welcome!

It looks like you're new here. Sign in or register to get started.