Home Coding, Scripting, Shaders

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

1474850525356

Replies

  • Tekoppar
    Offline / Send Message
    Tekoppar polycounter lvl 10
    Got the snap kinda working.


  • pi3c3
    Offline / Send Message
    pi3c3 polycounter lvl 13
  • sltrOlsson
    Offline / Send Message
    sltrOlsson polycounter lvl 14
    Working on a cliff generator in Houdini. Highpoly is getting close to being done. On to creating a nice setup in Unreal. 


  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    That looks pretty good, will it do other types of rock or just this one style?
  • sltrOlsson
    Offline / Send Message
    sltrOlsson polycounter lvl 14
    For now it will be this blocky style due to time constrain, but I would like to be able to put in more functionality for more soft and bulgy shapes with more noise. The way I create my cracks is fairly inviting for other styles of shapes too. 

    This is a few days old, but this is the general breakdown before I tessellate everything too highpoly. 

  • kritskiy
    Offline / Send Message
    kritskiy polycounter lvl 10
    Working on a Photoshop extension that allows loading selections from layers, channels and ID maps:


  • d1ver
    Offline / Send Message
    d1ver polycounter lvl 14
    @kritskiy - love the idea man. great job!
    @sltrOlsson - thank you for the breakdown. looks good

  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    You know what I really need in Photoshop, a way to take my selection from one layer and put it on a new layer and then delete my selection from the old layer. Basically extract the data on to a new layer. I use the j key to do this currently and it's annoying because the selection goes missing, also I tried ctrl + x for cut, but that also loses the selection and then you have to use some mumbo jump key combination to paste it onto the new layer and it never lines up in the right spot.
  • haiddasalami
    Offline / Send Message
    haiddasalami polycounter lvl 14
    @Malcom Isnt that what Shift + Ctrl + J does? Supposed to create a new layer from selection using cut. It doesnt keep the selection though unless I read that wrong. 
  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Oh my god you just changed my life! Thank you this is the best!
  • Jukov.CG
    Offline / Send Message
    Jukov.CG interpolator
    This is the script for Maya that makes it easier to select edges for sewing shells in the UV Editor. Just select one edge and run the script. The algorithm will find and select the edges required to sew the shell regarding to this edge. Also there is the second mode that at once sews shells together. To make it more comfortable I'd recommend to apply the hotkey to the script.
    More information in my Scriptbook

  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Cool stuff, what's pymel I've seen the word around for a while but I'm not sure the definition. I'm still learning and just writing everything in mel so far, will start to integrate python as a get better.
  • Jukov.CG
    Offline / Send Message
    Jukov.CG interpolator
    malcolm, thank you =)Pymel is very handy as you work not with strings like in mel but with objects. It gives many benefits. However, if you have to process large amount of data, then you’d better learn Maya Python API for fast working of a script. As to me it’s not so handy but fast.

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    yeah pymel is a wrapper to maya.cmds that makes it less utterly fucking horrendous to write code for.  

    it is slower but if you're really bothered about speed you want to be poking openMaya instead cos the basic python stuff is still slow as shite.


  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Thanks, good to know. I'll be in mel I think for a couple years, still learning the basics and teaching myself as I go.
  • Klunk
    Offline / Send Message
    Klunk ngon master
    playing with some wave noise on cylinders


  • Klunk
    Offline / Send Message
    Klunk ngon master
    scripted plugin for a spiral cylinder.... heres one that is conformed to a spline,

    in a more basic form....
    uvs are as follows when both ends are capped


  • Jonathan_Persson
    Offline / Send Message
    Jonathan_Persson polycounter lvl 7
    Made this quick one for Maya, it skips edges based on the selection  :)


  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Cool I created the same thing, have you figured out how to make it work with verts and faces. I could only get mine to work with edges.
  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 11
    I wrote a plugin for Substance Designer that let you import assets from Quixel Megascan using Quixel Bridge
    Link to the post for all the details of the plugin!

    The plugin in action:


    The plugin is completely open source and you can find the repository here
  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Wow, that's neat. Definitely sell that.
  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 11
    malcolm said:
    Wow, that's neat. Definitely sell that.
    if you are referring to my plugin thank you, i appreciated you comment. The plugin is completely free and open source for everybody Megascan Link v0.1.1-beta
  • Klunk
    Offline / Send Message
    Klunk ngon master
    following on from above.... a another scripted plugin cylinder (with proper mapping not the generic max stuff that fucks up the seams) with an added uv shearing for twisting effects


    any for anyone interested.....

    -- basic scripted cylinder without the uv seam issue and uv shearing

    plugin simpleObject bcylinder
        name:"bcyl"
        classID:#(0x66e26f46, 0x18e211dc)
        category:"Scripted"
    (
        parameters main rollout:params
        (   
            height        type:#WorldUnits    default:25.0    ui:ui_height;
            radius        type:#WorldUnits    default:25.0     ui:ui_radius;
            sides        type:#integer        default:16        ui:ui_sides;
            sidesegs    type:#integer        default:5        ui:ui_sidesegs;
            capsegs     type:#integer        default:1        ui:ui_capsegs;
            cap_top        type:#boolean        default:true    ui:ui_cap_top;
            cap_base    type:#boolean        default:true    ui:ui_cap_base;
            sides_utile    type:#float            default:1         ui:ui_sides_utile;
            sides_vtile    type:#float            default:1         ui:ui_sides_vtile;
            cap_utile    type:#float            default:1         ui:ui_cap_utile;
            cap_vtile    type:#float            default:1         ui:ui_cap_vtile;
            ushear        type:#integer        default:0        ui:ui_ushear;
        )
       
        rollout params "Params"
        (
            spinner ui_height       "Height:" range:[0, 1e9, 0] fieldwidth:64 type:#WorldUnits align:#right;
            spinner ui_radius       "Radius:" range:[0, 1e9, 0] fieldwidth:64 type:#WorldUnits align:#right;
            spinner ui_sides           "Sides:" range:[3, 128, 5] fieldwidth:64 type:#integer align:#right;
            spinner ui_sidesegs     "Side Segs:" range:[1, 128, 5] fieldwidth:64 type:#integer align:#right;
            spinner ui_capsegs      "Cap Segs:" range:[1, 128, 5] fieldwidth:64 type:#integer align:#right;
            checkbox ui_cap_base    "Cap Base"  align:#right vi_offset:[-5,0]; across:2
            checkbox ui_cap_top        "Cap Top"   align:#right  vi_offset:[10,0];
            spinner ui_sides_utile  "Sides U Tiling:" range:[0, 1e9, 1] fieldwidth:64 type:#float align:#right scale:0.01;
            spinner ui_sides_vtile  "Sides V Tiling:" range:[0, 1e9, 1] fieldwidth:64 type:#float align:#right scale:0.01;
            spinner ui_cap_utile    "Cap U Tiling:" range:[0, 1e9, 1] fieldwidth:64 type:#float align:#right scale:0.01;
            spinner ui_cap_vtile    "Cap V Tiling:" range:[0, 1e9, 1] fieldwidth:64 type:#float align:#right scale:0.01;
            spinner ui_ushear         "U Shearing:" range:[-2048, 2048, 0] fieldwidth:64 type:#integer align:#right;
        )   
       
        tool create
        (
             on mousePoint click do
            case click of
            (
                1:
                (
                    nodeTM.translation = gridPoint;
                    height = radius = 0.0;
                )   
                3: #stop
            )

            on mouseMove click do
            case click of
            (
                2: radius = amax (abs gridDist.y) (abs gridDist.x);
                3: height = gridDist.z
            )
        )
       
    -- build a cylindrical mesh
           
        fn build_mesh =
        (
    -- compute the number of verts and faces       
           
            local nverts = sides * (sidesegs + 1)
            local nfaces = sidesegs * sides * 2;

            if cap_base then
            (   
                nverts += sides * (capsegs - 1) + 1;
                nfaces += (1 + 2 * (capsegs - 1)) * sides;
            )   
            if cap_top then
            (   
                nverts += sides * (capsegs - 1) + 1;
                nfaces += (1 + 2 * (capsegs - 1)) * sides;
            )       
           
    -- cache the xy cos sin values       
           
            local incr = 360.0/sides;
            cs = for s = 0 to sides - 1  collect
            (   
                u = incr * s;
                [cos u, sin u];
            )
           
    -- create the geometry       
           
            mesh.NumVerts = nverts;
            mesh.NumFaces = nfaces;
           
            local vi = 1, fi = 1, cap_seg_size = radius/capsegs, side_seg_size = height/sidesegs;

    -- base cap verts
           
            if cap_base then
            (   
                setvert mesh vi [0,0,0];
                vi += 1;
                for seg = 1 to capsegs do
                (   
                    r = cap_seg_size * seg;
                    for s = 1 to sides do
                    (
                        setvert mesh vi [r * cs[s].x , r * cs[s].y, 0];
                        vi += 1;
                    )
                )   
            )   
           
    -- side verts       
           
            local vsegbegin = if cap_base then 1 else 0; -- if base cap we already have the first set of side verts    
            for seg = vsegbegin to sidesegs do -- side verts
            (
                z = side_seg_size * seg;
               
                for s = 1 to sides do    
                (
                    setvert mesh vi [radius * cs[s].x, radius * cs[s].y, z];   
                    vi += 1;
                )
            )
           
    -- top cap verts       

            if cap_top then
            (   
                for seg = capsegs - 1 to 1 by - 1 do
                (   
                    r = cap_seg_size * seg;
                    for s = 1 to sides do
                    (
                        setvert mesh vi [r * cs[s].x , r * cs[s].y, height];
                        vi += 1;
                    )
                )
                setvert mesh vi [0,0,height];
                vi += 1;           
            )   
           
    -- build the faces       
           
            local vi_offset = 1;
            if cap_base then -- base cap faces
            (
                for s = 1 to sides do -- inner ring of triangles
                (
                    a = vi_offset + s;
                    b = a + 1;
                    if s == sides then b -= sides;    -- wrap around
                   
                    setface mesh fi [b,a, vi_offset];
                    setEdgeVis mesh fi 1 true;
                    setEdgeVis mesh fi 2 true;
                    setEdgeVis mesh fi 3 true;
                    setFaceMatID mesh fi 1;
                    setFaceSmoothGroup mesh fi 2;
                    fi += 1;
                )   
               
                for seg = 2 to capsegs do -- all the following sidesegs are quads
                (
                    for s = 1 to sides do
                    (
                        a = s + vi_offset;
                        b = a + 1;
                        if s == sides then b -= sides; -- wrap around
                        c = a + sides;
                        d = b + sides;
                       
                        setface mesh fi [a,d,c]
                        setEdgeVis mesh fi 2 true;
                        setEdgeVis mesh fi 3 true;
                        setFaceMatID mesh fi 1;
                        setFaceSmoothGroup mesh fi 2;
                        fi += 1;
                       
                        setface mesh fi [a,b,d]
                        setEdgeVis mesh fi 1 true;
                        setEdgeVis mesh fi 2 true;
                        setFaceMatID mesh fi 1;
                        setFaceSmoothGroup mesh fi 2;
                        fi += 1;
                    )
                    vi_offset += sides;
                )
            )   
           
    -- side faces       
           
            vi_offset = if cap_base then sides * (capsegs - 1) + 1 else 0;   
            for seg = 1 to sidesegs do
            (
                for s = 1 to sides do
                (   
                    a = s + vi_offset;
                    b = a + 1;
                    if s == sides then b -= sides; -- wrap around
                    c = a + sides;
                    d = b + sides;
                   
                    setface mesh fi [a,d,c]
                    setEdgeVis mesh fi 2 true;
                    setEdgeVis mesh fi 3 true;
                    setFaceMatID mesh fi 3;
                    setFaceSmoothGroup mesh fi 1;
                    fi += 1;
                   
                    setface mesh fi [a,b,d]
                    setEdgeVis mesh fi 1 true;
                    setEdgeVis mesh fi 2 true;
                    setFaceMatID mesh fi 3;
                    setFaceSmoothGroup mesh fi 1;
                    fi += 1;
                )   
                vi_offset += sides;
            )
           
            if cap_top then -- top cap faces
            (
                for seg = 2 to capsegs do -- all the following sidesegs are quads
                (   
                    for s = 1 to sides do
                    (
                        a = s + vi_offset;
                        b = a + 1;
                        if s == sides then b -= sides;
                        c = a + sides;
                        d = b + sides;
                       
                        setface mesh fi [a,d,c];
                        setEdgeVis mesh fi 2 true;
                        setEdgeVis mesh fi 3 true;
                        setFaceMatID mesh fi 2;
                        setFaceSmoothGroup mesh fi 2;
                        fi += 1;
                       
                        setface mesh fi [a,b,d];
                        setEdgeVis mesh fi 1 true;
                        setEdgeVis mesh fi 2 true;
                        setFaceMatID mesh fi 2;
                        setFaceSmoothGroup mesh fi 2;
                        fi += 1;
                    )
                    vi_offset += sides;
                )
               
                for s = 1 to sides do -- last inner ring of triangles to finish off
                (
                    a = vi_offset + s;
                    b = a + 1;
                    if s == sides then b -= sides;   
                   
                    setface mesh fi [a,b,nverts];
                    setEdgeVis mesh fi 1 true;
                    setEdgeVis mesh fi 2 true;
                    setEdgeVis mesh fi 3 true;
                    setFaceMatID mesh fi 2;
                    setFaceSmoothGroup mesh fi 2;
                    fi += 1;
                )   
            )   
           
    -- create the mapping verts and faces   
           
            sidesp1 = sides + 1; -- uvs don't wrap so it 1 extra for the seam
            ntverts = (sidesegs + 1) * sidesp1;
            if cap_base then  ntverts += sides * capsegs + 1;
            if cap_top then  ntverts += sides * capsegs + 1;
           
            meshop.setMapSupport mesh 1 true;
            SetNumTVerts mesh ntverts;
            buildTVFaces mesh; -- create our texture faces
           
    -- uv verts       
           
            vi = 1; -- reset vert indexer
            local side_seg_uv_size = 1.0/sidesegs, cap_seg_uv_size = 0.5/capsegs;
           
            if cap_base then -- base cap tverts
            (
                setTVert mesh vi [0.5,0.5,0.0];
                vi += 1;
                for seg = 1 to capsegs do
                (   
                    r = cap_seg_uv_size * seg;
                    for s = 1 to sides do
                    (
                        setTVert mesh vi [0.5 + r * cs[s].x * cap_utile, 0.5 + r * cs[s].y * cap_vtile, 0.0];
                        vi += 1;
                    )   
                )
            )   
           
            shear = ushear as float/(sides * sidesegs);
            for seg = 0 to sidesegs do -- side tverts
            (
                vshear = shear * seg;
                v = side_seg_uv_size * seg * sides_vtile;
                for s = 0 to sides do
                (   
                    setTVert mesh vi [sides_utile * (vshear + s as float/sides as float), v, 0.0];
                    vi += 1;
                )   
            )
            if cap_top then -- top cap tverts
            (   
                for seg = capsegs to 1 by - 1 do
                (   
                    r = cap_seg_uv_size * seg;
                    for s = 1 to sides do
                    (
                        setTVert mesh vi [0.5 + r * cs[s].x * cap_utile, 0.5 + r * cs[s].y * cap_vtile, 0.0];
                        vi += 1;
                    )   
                )
                setTVert mesh vi [0.5,0.5,0.0];
                vi += 1;           
            )   

    -- uv faces       
           
            fi = 1;    -- reset face indexer   
            vi_offset = 1;
            if cap_base then -- base cap tfaces
            (
                for s = 1 to sides do -- inner ring of tris
                (
                    a = vi_offset + s;
                    b = a + 1;
                    if s == sides then b -= sides;    -- wrap around
                    setTVFace mesh fi [b,a,vi_offset];
                    fi += 1;
                )       
                for seg = 2 to capsegs do -- any more sidesegs as quads
                (
                    for s = 1 to sides do
                    (
                        a = s + vi_offset;
                        b = a + 1;
                        if s == sides then b -= sides; -- wrap around
                        c = a + sides;
                        d = b + sides;
                        setTVFace mesh fi [a,d,c];
                        fi += 1;
                        setTVFace mesh fi [a,b,d];
                        fi += 1;
                    )
                    vi_offset += sides;
                )   
            )   

    -- sides tfaces       
           
            vi_offset = if cap_base then 1 + sides * capsegs else 0;   
            for seg = 1 to sidesegs do
            (
                for s = 1 to sides do
                (   
                    a = s + vi_offset;
                    b = a + 1;
                    c = a + sidesp1;
                    d = b + sidesp1;
                    setTVFace mesh fi [a,d,c]
                    fi += 1;
                    setTVFace mesh fi [a,b,d]
                    fi += 1;
                )   
                vi_offset += sidesp1;
            )
            vi_offset += sidesp1; -- skip over last line of side tverts
           
            if cap_top then -- top cap tfaces
            (
                for seg = 2 to capsegs do -- any more sidesegs as quads
                (
                    for s = 1 to sides do
                    (
                        a = s + vi_offset;
                        b = a + 1;
                        if s == sides then b -= sides; -- wrap around
                        c = a + sides;
                        d = b + sides;
                        setTVFace mesh fi [a,d,c];
                        fi += 1;
                        setTVFace mesh fi [a,b,d];
                        fi += 1;
                    )
                    vi_offset += sides;
                )
               
                for s = 1 to sides do -- inner ring of tris
                (
                    a = vi_offset + s;
                    b = a + 1;
                    if s == sides then b -= sides;    -- wrap around
                    setTVFace mesh fi [a,b,ntverts];
                    fi += 1;
                )               
            )
            update mesh;
        )
       
        on update do build_mesh();
        on buildmesh do build_mesh();
    )

  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    This morning I've been growing tree shaped SDFs in substance designer


  • onionhead_o
    Offline / Send Message
    onionhead_o polycounter lvl 16
    Klunk, your stuff is always amazing. wish i was still using max.

    I recently made a tool for maya, that extracts Panels from selected faces. working on an update to do round corners(bevel) as well.

    link to script
     







    EDIT: included link to script
  • Klunk
    Offline / Send Message
    Klunk ngon master
    thankyou :)

    a retriangulate "poly" for editable mesh will handle "internal" verts but not shared verts or self intersection.




  • dlz
    Offline / Send Message
    dlz polycounter lvl 4
    I'm building a simple tool in python for maya to select edges two ways:
    - select edges included between a minimum and maximum angle
    - select hard edges in the mesh.
    I think it can be useful to combine these two functions in the same ui. I modify a bit the constraints that are present in maya to make it easy to use.

    i think it's a faster and easier way to select the edges you need than with the tools maya provide.

  • Klunk
    Offline / Send Message
    Klunk ngon master
    nice, i've done something similar as a mod in max, one additional feature you can add is the option to replace/add/subtract from the current selection (also an invert the selection can be sometimes useful).


  • dlz
    Offline / Send Message
    dlz polycounter lvl 4
    @klunk thanks for the suggestion, I'll do that
  • Klunk
    Offline / Send Message
    Klunk ngon master
    some weekend twiddling led to 2 semi-scripted plugins (rely on some compiled code) for 2 different discs/cylinder ends with a more constant face density, one uses a regular grid fill the other a radial fill.

  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    I figured out how to get Maya to name multiple objects correctly when parented or grouped and also not add an extra zero after 10 and 99 objects etc. I also put a name matching feature in for baking.  Full video here if you're interested


  • DEElekgolo
    Offline / Send Message
    DEElekgolo interpolator
    Live texture animation/motion-graphic plugin for Adobe After Effects, accelerated using Vulkan!

  • nebukadnezar
    Offline / Send Message
    nebukadnezar polycounter lvl 8
    Just found this thread. Very cool stuff you guys are doing!

    I Released Colormate a color management and palette importer addon for Blender, about 3 weeks ago.
    Features include:
    • Color palette importing ( .aco, .ase, .acb, .gpl, .kpl)
    • Realtime color harmony calculation
    • Color Ramp Node generation from a range of colors

  • mhdmhd
    Offline / Send Message
    mhdmhd polycounter lvl 10
    https://youtu.be/I4shNs4srKw

    https://youtu.be/Y_bSzn3-h2k


    https://github.com/mhdmhd/MayaSceneConverter

    Maya Scene Converter is a python-based Qt tool for converting scenes from a render engine to another in Maya, it is not a perfect conversion and it depends on rules files and how good they are but gives you a great head start.

    Features

    • Creates rules to convert from a source render engine to a target render engine
    • Easy UI to create, save and load the rules
    • Supports all shading related nodes: Materials,Textures,Utilities and Lights
    • Converts all the scene or selected objects
    • Scans the scene for any node or only what belongs to the source engine
    • Some ready examples of rules files (not very precise but very functional)
    • Prints info about all conversions
    • Tested with Windows only but could work on other operating systems
    • Tested with Maya 2018+ but could work on previous versions
  • Darkimage
    Offline / Send Message
    Darkimage polycounter lvl 11
    Hello guys,
    Since i made the Megascan Link Plugin for Substance Designer  i decided to the same for Substance Painter.
    With the Megascan Link for Substance Painter plugin you can import Megascan Assets directly into an opened project or create one if you export from Quixel Bridge a Megascan Asset with a 3D mesh. 
    The plugin is completely Free and OpenSource, you can Download it here and you can find the complete Documentation here.


  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Oh wow, very cool. Definitely start selling these.
  • dlz
    Offline / Send Message
    dlz polycounter lvl 4
    finished a script for maya i was working on some time ago.
    I think it could be useful in hard-surface workflows as it makes easier to select edges by an angle or other characteristics and then apply a crease that can be selected and uncreased.
    here's a demo of the script:
    https://youtu.be/pONjlLcJVBU


  • AmplifyCreations
    Offline / Send Message
    AmplifyCreations polycounter lvl 10
    Hey folks, any of you had luck with exporting consistent Vector Displacement Maps from Zbrush, Blender(or others) to Unity or Unreal? Zbrush seems really inconsistent, even with their test scene; Blender is a bit troublesome, can't seem to get it working right.

    Zbrush: Manual VDM Reference
    Blender - Cycles - Tangent Vector & Scalar Displacement Map Baking Tutorial

    We're exploring VDM's at Amplify with Amplify Shader Editor in Unity and, so far, it seems that Mudbox gives out the best results with the "Absolute Tangent" mode. You can really do some cool stuff with this when you couple it with Tessellation, even use it on skinned characters! Off course you can always do some pretty cool stuff with regular displacement, this is more of an alternative technique. 

    This is an exaggerated effect with an animated Tessellation amount, in a real world case you'd probably want to use a low poly base mesh closer to the mushroom in order to cut down on the Tessellation. The cool thing is that you pretty much get LOD control for free.



    Here's how to set it up with Mudbox for Unity using Amplify Shader Editor(or any other shader/editor capable of handling the process), it even works with overlapping objects such as the mushroom patch bellow. 





    For those who don't know what's the big deal, here's a simplified comparison.

  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    VDM is the shit in Mudbox, but I always found the limitation that to create the VDM you have to sculpt it out of a perfect tessellated quad to start makes the tool not really useful. If it was like a normal map or height map where you could bake an arbitrary mesh or collection of meshes onto a quad with different topology that would be very powerful.
  • AmplifyCreations
    Offline / Send Message
    AmplifyCreations polycounter lvl 10
    malcolm said:
    VDM is the shit in Mudbox, but I always found the limitation that to create the VDM you have to sculpt it out of a perfect tessellated quad to start makes the tool not really useful. If it was like a normal map or height map where you could bake an arbitrary mesh or collection of meshes onto a quad with different topology that would be very powerful.
    Yeah it's pretty cool! 

    That's the downside, it needs your subdiv levels so it can compare the lowest with the highest when baking the VDM; it would be awesome if we could just project a bunch of stuff. However, you should be able to use other meshes, just as long as you have the base level in Mudbox as well.

    A cool trick is to create several VDM files and actually use them inside Mudbox to create more complex objects.
  • malcolm
    Offline / Send Message
    malcolm polycount sponsor
    Very cool none the less, how did you go about modeling the mushroom, make it first and then flatten it to a plane, or the reverse?
  • AmplifyCreations
    Offline / Send Message
    AmplifyCreations polycounter lvl 10
    Yeah, fun to play with. For this one we went from quad to mushroom, carefully pushing/pulling the geometry to the center so it would have a decent amount to work with; somewhat worked but in hindsight probably should have used a low poly mesh ;). For the next one for sure.

  • onionhead_o
    Offline / Send Message
    onionhead_o polycounter lvl 16
    AmplifyCreations: cool shader! There is a workaround for the VDM creation . Create the object first however you want it is. Then wrap the plane around the object and project the details. You  can use shrinkwrap deformer in maya or conform to project. You can even use quad draw to make it conform manually.
  • suspectlogic
    Offline / Send Message
    suspectlogic polycounter lvl 13
    I made a simple Maya script for a very particular situation tonight :P Something like this might be floating around somewhere but I wasn't able to find anything.

    The script reads the current scenes grid, and saves it to user prefs. It also let's you see the changes immediately in the viewport and grid options box. This gif shows an example where the grid originally reads size = 24, spacing = 24 & divisions = 2. After the script is run, the options box updates to the scenes units which are size = 500, spacing = 500 & divisions = 2.



    <div>import&nbsp;maya.cmds&nbsp;as&nbsp;cmds</div><br><div>S&nbsp;=&nbsp;cmds.grid(&nbsp;q&nbsp;=&nbsp;True,&nbsp;s&nbsp;=&nbsp;True)</div><div>SP&nbsp;=&nbsp;cmds.grid(&nbsp;q&nbsp;=&nbsp;True,&nbsp;sp&nbsp;=&nbsp;True)</div><div>D&nbsp;=&nbsp;cmds.grid(q&nbsp;=&nbsp;True,&nbsp;d&nbsp;=&nbsp;True)</div><br><div>#converting&nbsp;grid&nbsp;values&nbsp;to&nbsp;a&nbsp;string&nbsp;for&nbsp;UI.</div><div>currGrid&nbsp;=&nbsp;('Size&nbsp;=&nbsp;'&nbsp;+&nbsp;str(S)&nbsp;+&nbsp;'\nSpacing&nbsp;=&nbsp;'&nbsp;+&nbsp;str(SP)&nbsp;+&nbsp;'\nDivisions&nbsp;=&nbsp;'&nbsp;+&nbsp;str(D))</div><br><div>#&nbsp;create&nbsp;dialog&nbsp;window</div><div>updateGrid&nbsp;=&nbsp;cmds.confirmDialog(</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title='Save&nbsp;Grid&nbsp;Settings',</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message=&nbsp;'Scene&nbsp;Grid&nbsp;Settings:'&nbsp;+&nbsp;'\n'&nbsp;+&nbsp;currGrid&nbsp;+&nbsp;'\n'&nbsp;+&nbsp;'\nPress&nbsp;OK&nbsp;to&nbsp;save&nbsp;these&nbsp;settings&nbsp;to&nbsp;User&nbsp;Preferences\n&nbsp;',</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button=['OK',&nbsp;'Cancel'],</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultButton='OK',</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cancelButton='Cancel')</div><br><div>#&nbsp;Store&nbsp;scene&nbsp;settings&nbsp;in&nbsp;the&nbsp;user&nbsp;prefs&nbsp;file.</div><div>if&nbsp;updateGrid&nbsp;==&nbsp;'OK':</div><div>&nbsp;&nbsp;&nbsp;&nbsp;cmds.optionVar(fv=('gridSpacing',&nbsp;S))</div><div>&nbsp;&nbsp;&nbsp;&nbsp;cmds.optionVar(fv=('gridDivisions',&nbsp;D))</div><div>&nbsp;&nbsp;&nbsp;&nbsp;cmds.optionVar(fv=('gridSize',&nbsp;S))</div><div>&nbsp;&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;cmds.savePrefs(g&nbsp;=&nbsp;True)&nbsp;#&nbsp;Without&nbsp;this&nbsp;maya&nbsp;won't&nbsp;save&nbsp;above&nbsp;changes&nbsp;until&nbsp;restart.</div><br><div>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'\nSaved!!!'</div><div>else:</div><div>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'\nOperation&nbsp;Aborted'</div>

  • Klunk
    Offline / Send Message
    Klunk ngon master
    scratched an itch that been bugging me since about 2003 :D a Simple Line Shape.... it has length & number of segments and linear or smooth options and you can set the axis the knots are distributed along and the pivot position (either end or center). Sometime the built in "complex" editable line is overkill and is tricky to generate some stiuff and the rollout can be slow and clunky.


    it was relatively quick and painless to implement.


  • pi3c3
    Offline / Send Message
    pi3c3 polycounter lvl 13
    Klunk said:
    scratched an itch that been bugging me since about 2003 :D a Simple Line Shape.... it has length & number of segments and linear or smooth options and you can set the axis the knots are distributed along and the pivot position (either end or center). Sometime the built in "complex" editable line is overkill and is tricky to generate some stiuff and the rollout can be slow and clunky.


    it was relatively quick and painless to implement.


    So obvious :D
  • Klunk
    Offline / Send Message
    Klunk ngon master
    yay! my 50th max modifier :) (christ I need to get out more!)


    CapSpline  that works a bit better than the built in max one (edit mesh mod applied to the A on the left, mine of the right).  Obviously showing the worst case for the built in max functionality :D
  • pi3c3
    Offline / Send Message
    pi3c3 polycounter lvl 13
    Klunk said:
    yay! my 50th max modifier :) (christ I need to get out more!)


    CapSpline  that works a bit better than the built in max one (edit mesh mod applied to the A on the left, mine of the right).  Obviously showing the worst case for the built in max functionality :D
    Congrats! :)

    There are so many things in max that is not working appropriately, and most of them not even complicated to fix. I'll never understand why aren't they fix them. Like this one. :)

    But anyway. It's so much better to look at the good one... :D
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    Klunk said:
    yay! my 50th max modifier :) (christ I need to get out more!)


    CapSpline  that works a bit better than the built in max one (edit mesh mod applied to the A on the left, mine of the right).  Obviously showing the worst case for the built in max functionality :D
    I want this more than I wanted toilet paper in March  
  • Klunk
    Offline / Send Message
    Klunk ngon master
    :)

    seems like old ground and it is in a way created an Outliner interface to better integrate some of my tools.... basically anything with an "outline" mesh, spline or modifier can be can be used as a "cutter",

    a plane in plane




1474850525356
Sign In or Register to comment.