EZLattice Free/Plus 2.80: Deform and Reshape Models Quickly

Backstory

I wrote the original Easy Lattice add-on back in 2013 hoping that it would make lattice deformations easy during modeling. The initial implementation seemed to prove that the Blender modifiers stack could be used destructively for modeling purposes. And it got a lot of positive reviews.

I expanded upon my original add-on and rewrote it from scratch with better handling of the original concept and making it better integrated for 2.80. I am hoping that this version is faster, much more user friendly and easy to add more features later.

This new version is solely for 2.80 I initially contemplated about making it 2.79 compatiple but it is tedious to maintain two different branches. If you need to use this add-on in 2.79 please use the former Easy Lattice one.

What is it?

EZLattice is easily the most feature packed Lattice companion for Blender. EZLattice is a Blender add-on for quickly adding lattice editing to multiple objects, single objects or selected vertices in edit mode. You can easily add and apply lattice operations to enhance your models. Lattice editing is an easy way to deform, fix and reshape models quickly. It is especially great for fixing proportion issues in characters.

Settings and Panels

Multi / Single Object

Edit Mode

Features

Features

  • Edit mode support.

  • Single/Multi Object mode support. (Plus only)

  • “Multi object” mode adds a shared Lattice to the selected objects. (Plus only)

  • “New” operand applies and cleans up the previous lattice action.

  • “Apply” Applies the most recent Lattice and cleans up the set up. (Plus only)

  • “Clean” just cleans up the most recent Lattice setup. (Plus only)

  • The lattice control mesh is centered and fitted around the selection.

  • Contextual Right Click Menu support

  • Guided lattice rotation and scaling

  • Alignment based on the object’s rotation in edit and object modes.

  • Use object’s item rotation for lattice alignment in Object Mode

  • Use object’s item rotation for lattice alignment in Edit Mode

  • Guided lattice alignment

  • Guided lattice sizing

  • Contextual Sidebar settings

  • Smooth Lattice influence

  • Spherize lattice mesh

  • Randomize lattice mesh

-Convert to regular lattice setup

Plus (Gumroad)

Plus (Blender Market)

Free (Download)

Upcoming Features

  • [DONE]Left Toolbar integration.
  • Multi object edit mode support.
  • Multiple Lattice operations.
  • Multi object mode with individual Lattice objects per object.
  • [DONE] Inside/Outside option for the Lattice.
  • [DONE] Custom menu for editing the current Lattice controller’s properties

Release Notes

v1.1

  • [NEW] Preferences settings for lattice divisions and types
  • [NEW] Ability to toggle outside shell setting for the lattice
  • [FIX] The lattice object now works properly with flat planes
    1_Pref_Half

v1.2

  • [NEW] Contextual Sidebar settings
  • [NEW] Smooth vertex weight
  • [NEW] Spherize lattice mesh
  • [NEW] Randomize lattice mesh
  • [FIX] Remember the prior mode

v1.3

v1.31

  • [FIX] Fixes AttributeError: ‘NoneType’ object has no attribute ‘name’
  • [FIX] Fixes Annotation warning
  • [FIX] Fixes Menu naming convention
  • [FIX] The input fields now have sane numerical ranges

v1.35 is up with

  • [NEW] Use object’s item rotation for lattice alignment in Object Mode
  • [NEW] Use object’s item rotation for lattice alignment in Edit Mode
  • [FIX] EZLattice “Clear” operation now removes the modifier properly.

See the first pos for the demos

EZLattice_New_LocalRotation

v1.36

  • [NEW] The new Keep mode will store/keep the existing EZL setup in the modifier stack as a object Lattice modifier setup. The regular EZL setup is ephemeral only.

v1.37

  • [FIX] 2.90 API fix. This version is 2.9x only

v1.38

  • [NEW] v3.0 adaptation
  • [FIX] Multi user linked mesh data warning
  • [FIX] Handle “list index out of range error”

Sidebar

Sidebar with Randomize

Sidebar with Smoothing the weights

Multi Object Mode (Plus version)

gif

Edit Mode
gif

Object Mode (Plus version)

Clear (Plus version)
EZLattice_Clear

Use as a quick spline deformer
EzLattice_Tip_FlatLine_A

Alignment based on the Object’s Local
Edit Mode Alignment

Object Mode Alignment

Install

Summary
  • Download the zip file and
  • Copy the folder inside the zip file to Blender’s add-on folder
  • Click Install button under the Add-ons tab in the preferences. And choose the downloaded zip file.

See my other add-ons

Summary

Originie

BaseMesh Temple

DuWamf+

Temporizer

Easy Lattice

Modo-Me Modo Helpers

Weights to Vertex Colors

IO Guru

MeshLab Gourmet

Save Temp Versions

Verts2Edges

28 Likes

I USE and ABUSE the easy lattice. Thank you for this release!

That is great to hear. The old version was good for olden times.

The free version should be up tomorrow. It has all the features of the original, if you do not need the object mode features. Let me know if I miss anything from the old version.

1 Like

You are a hero! just before Jul11RC!

I’m so happy to have this back I could cry! :grin: Thank you so much! :blush:

1 Like

No shit, I did not know about the deep passion around this add-on.

1 Like

As promised, the free version is up in the first post.

1 Like

Here is an easy tip with EZLattice. Use it like a quick bone deform setup.

EzLattice_Tip_FlatLine_A

6 Likes

When in object mode i have no ezlattice in right click menu but it is working when i am in edit mode?

Is there something i don’t know about this behavior?à

Also i could be interested in the + version but there is also FitLattice on blender market for 5$ so is there something really worth the extra 5$ for your addon?

Object mode is only avail in the Plus version.

I dont know about Fitlattice. EZLattice Plus supports both the edit mode and multiple object selections in object mode. And more to come.

You can buy the Plus version, if u don’t like it I will be happy to refund it. It will be avail on BM soon. Or just message me I will send you a download link, you can buy it from Gumroad later if you like it.

Edit:

Just took a look at FitLattice. It does not seem to have edit mode/vert selection mode (which is supported by EZLattice). So there you go. That would be the major difference between EZLattice and FitLattice.

This add-on is now available on Blender Market.

Bought it. Looking good. I’d love a Preferences setting for the interpolation type though. I almost always use BSpline.

Thanks.

I am glad that you like it. I can add that to the preferences. It should remember used settings in the session.

1 Like

Thanks. And another feature request: an adjustable vertex weight falloff around a selection. So you’d make a selection, then add an EZLattice, and in the EZLattice options be able to adjust an optional vertex weight falloff around the selection, with a value slider.

I guess you should be able to call the built-in Weight Paint ➔ Weights ➔ Smooth function in your code to establish the vertex weight smoothing.

Thanks again. :slightly_smiling_face:

2 Likes

Yeah that sounds like a nice idea, added to the todo list for sure.

2 Likes

Hi there @kkar !
I just bought the PLUS version of your addon and am quite happy with it, though I encountered a little bug:

multi-object lattice works in object mode, but it doesnt work correctly in multi-object-editmode unfortunately:

multi-object-editmode_Bug

Do you think this can be fixed so it can create a correct lattice over the selection of multiple objects while in editmode?
Great work so far ! love it ! :slight_smile:

1 Like

Hi,

Yes Multi Edit mode is not supported atm. It is not part of the current feature set, I hope that there was not a miscommunication there.

It is in my todo list.

2 Likes

Yay! Id love to see it eventually, thanks for your ultra-fast response! :wink:

It is just that Multi Edit is new in Blender 2.80. I myself have not explored it enough yet. However I agree with you, it will be super useful to have EZLattice to work in that mode.

1 Like

Hi kkar! I hope its not too undiscreet to post it here,
I was working with EZLattice for a while and were finding some more issues:

  • First: uvw segments of the lattice can be below 2 by UI design, I found it nicer to work with when its hardlocked to 2 for quickly dialing down with mousewheel or mouse drag.

@ line 769-771:

    lat_u: IntProperty( name = "Lattice u", default = 2, min = 2 )
    lat_w: IntProperty( name = "Lattice w", default = 2, min = 2 )
    lat_m: IntProperty( name = "Lattice m", default = 2, min = 2 )

Just a minor inconvenience. Min = 1 can also be useful.

  • Second: If you selected vertices sitting on a perfect plane, meaning bbox=0 for any of the axis, the lattice wouldnt encompass your selection; Thus making the lattice not having any effect at all.

Dirty quickfix, replace findSelectedVertsBBoxNumPy function @ 212 with:

def findSelectedVertsBBoxNumPy(context):
    
    minWidth = 0.01
    verts=getSelectedVerts(context)

    x_min = verts[:,0].min()
    y_min = verts[:,1].min()
    z_min = verts[:,2].min()
    
    x_max = verts[:,0].max()
    y_max = verts[:,1].max()
    z_max = verts[:,2].max()
    
    if x_min == x_max:
        x_min -= minWidth
        x_max += minWidth
    if y_min == y_max:
        y_min -= minWidth
        y_max += minWidth
    if z_min == z_max:
        z_min -= minWidth
        z_max += minWidth

    x_avg = verts[:,0].mean()
    y_avg = verts[:,1].mean()
    z_avg = verts[:,2].mean()
    
    middle=Vector( ( (x_min+x_max)/2,
                    (y_min+y_max)/2,
                    (z_min+z_max)/2 )
                )

    bbox= [ np.array([x_max,y_max,z_max], dtype=np.float32), 
            np.array([x_min, y_min, z_min],  dtype=np.float32), 
            np.array([x_avg, y_avg, z_avg],  dtype=np.float32),
            np.array(middle)
            ]
            
    return bbox

The bbox gets inflated on any faulty axis, so the resulting lattice will work again.

  • Third, lattices created with this addon were not stackable, it would always overwrite the first one created by the addon.

fix for addLatticeModifier function @ line491:

def addLatticeModifier(context, lat,vrtgrp=""):
    
    bpy.ops.object.modifier_add(type='LATTICE')
    
    m=[m for m in bpy.context.object.modifiers if "Lattice" in m.name]
    m=m[-1]
    
    #uname=".latticetemp_"+str(id(m)) #if you still...
    #m.name=uname #...want unique names with '.latticetemp'

    m.object=lat
    m.vertex_group=vrtgrp

    m.show_in_editmode = True
    m.show_on_cage = True

Its now stackable. You can de-comment 8-9 if you still want unique naming, otherwise blender will take care of it.

I hope any of these can be useful to you, or anyone else who owns the addon.

1 Like