i’ve not yet been able to find an inset tool inside blender. i’ve tried to find information from the wiki and googled around, maybe i’ve missed it or it just isn’t there?
using the normal extrude and the scaling or moving individual vertexes is a real pain and in some cases almost impossible to get aligned correctly. esp when a lot of faces are selected.
here’s what i mean: (edit: didn’t register spaces, using dots instead, X=vertex)
normal extrude (scales in proportion)
X---------------X
I…X---------X…
I…I…
I…X----------X…
X--------------------X
inset “extrude”/bevel (scales the same amount from all sides)
X-----------------X
I…X-------------X…
I…I…\
I…X---------------X…
X---------------------X
if there’s such tool i would love to hear about it or maybe it could be implemented as a script or tool in the gui?
im sure there are people who, like me, use this tool regularly.
also im wondering if there’s a way to snap the knife tool to vertices so you wouldn’t have to merge the vertexes and convert the triangles that it produced to quads. i tried using F tool to make an edge on top of face, slicing it, but it just created the edge and didn’t affect the face at all. converting with ctrl-T and sometimes having to rotate the edge is not a very fast way in my experience. this would avoid changing among the vertices, edges and faces.
thanks for the alt-s, didn’t know that before but i can already see use for it. but it didn’t work the way i wanted especially with multiple faces. :rolleyes:
now that im on my own computer i can show a pic of what i mean.
here’s the pic:
1) the result im looking for (no extruding or anything, eventhough for beveling needs there could be possibility for extruding aswell) 2) normal extrude(no offset) and scale
:rolleyes: 3) alt-S method, which worked one one face except it had to be offsetted with extrude first, then when scaling it would fall inwards (i left it a bit uncentered on the pic, the face next to it is roughly the amount needed to extract first before flattening
:mad: 4) multiple faces with alt-S, doesn’t work
Sorry I didn’t see your post 2 days ago. Anyhow, Wings3D has Inset and if you really need to use it a lot you can Import wings into Blender. A workaround that might work for you is to Extrude Region and cancel it with LMB. Then hit W-Smooth (more than once if need be) to scale each face planar, and inset with Alt-S.
bedlam: sadly no. using extrude (0 for offset) and scale is the 2nd face on the picture i posted.
i think there still needs to be implemented a tool to blender as a real inset (with possibility of choosing multiple faces). maybe someone has done a script that does exactly this? ^^; crosses fingers
Someone posted a script called InOutset.py but you’ll need to update it to work with py.2.4:
from Blender import *
from Blender.NMesh import Vert,Face
from Blender.Mathutils import DotVecs, Vector
mesh = Object.GetSelected()[0].getData()
inset = 1
'''
faceList = []
faceCount = len(mesh.faces)
fIdx = 0
while fIdx < faceCount:
f = mesh.faces[fIdx]
newf = Face()
for v in f.v:
if len(f.v) == 3 or len(f.v) == 4:
a = v.co[0]+(inset*f.no[0])
b = v.co[1]+(inset*f.no[1])
c = v.co[2]+(inset*f.no[2])
mesh.verts.append(Vert(a,b,c))
newf.v.append(mesh.verts[-1])
mesh.faces.append(newf)
fIdx +=1
mesh.update()
'''
# vertex make a normal for each vertex
vnoList = [] # keep in sync with the mesh verts order
for v in mesh.verts:
vnoList.append([0,0,0])
nocount = 0
for f in mesh.faces:
if len(f.v) == 3 or len(f.v) == 4:
if v in f.v:
vnoList[-1][0] += f.no[0]
vnoList[-1][1] += f.no[1]
vnoList[-1][2] += f.no[2]
nocount += 1
if nocount:
vnoList[-1][0] = vnoList[-1][0] / nocount
vnoList[-1][1] = vnoList[-1][1] / nocount
vnoList[-1][2] = vnoList[-1][2] / nocount
print vnoList
def VertCopy(vert):
nv = Vert(vert.co[0],vert.co[1],vert.co[2])
return nv
# add a new set of verts
vCount = len(mesh.verts)
vIdx = 0
while vIdx < vCount:
mesh.verts.append(VertCopy(mesh.verts[vIdx]))
vIdx +=1
'''
# add new faces
faceCount = len(mesh.faces)
fIdx = 0
while fIdx < faceCount:
f = mesh.faces[fIdx]
newf = Face()
for v in f.v:
newf.v.append(mesh.verts[mesh.verts.index(v) + vCount])
print len(newf.v)
mesh.faces.append(newf)
fIdx +=1
#print fIdx
'''
faceCount = len(mesh.faces)
fIdx = 0
while fIdx < faceCount:
f = mesh.faces[fIdx]
newf = Face()
for v in f.v:
mesh.verts.append(Vert(v.co[0], v.co[1], v.co[2]))
newf.v.append(mesh.verts[-1])
# Move the vert
dotVecVertFace = DotVecs (Vector(vnoList[mesh.verts.index(v)]), Vector(f.no))
print dotVecVertFace
for axis in [0,1,2]:
mesh.verts[-1].co[axis] += ((inset*(vnoList[mesh.verts.index(v)][axis]))/2) + (vnoList[mesh.verts.index(v)][axis] / dotVecVertFace)
mesh.faces.append(newf)
fIdx +=1
#print fIdx
print 'done'
mesh.update()
fligh%: wow, thanks. sadly i got no idea how to use python so maybe someone will recode it on 2.4 =)
any python geniuses out there that would take up the job?
grafíx: starts to get pretty slow if you ask me, and it doesn’t work as a real inset either. but thx anyway
I know. It’s painful, to say the least. It’s doable, but very slow. That’s why Wings kicks Blender’s ass on box modelling. Maybe someday, when the HE mesh project is finally completed, we’ll have comparable tools. But learning Wings is a good idea. I find it to be a good companion app for Blender.