you can disable max redraw (including viewports and command panel). and no one will see your selecting-deselecting. i’ve cheated this way a lot
also you can disable reference messages to make everything hidden for callbacks.
[left]Oh yeah, I’ve done that more than a few times myself. Dunno why I didn’t think of it for this
EDIT: Hm, actually… disabling the messages seems to break the function because it prevents the subobject level from working.
[/left]
you have to manually notify dependents about the change (check mxs help – notifyDependents – for details)
So here’s what I’ve got so far. What else can I do to make it faster?
fn colorFromFloat v = (
local c = red
c.h = (1.0 - v) * 170
c as point4
)
fn softSelWeightArray obj = with redraw off (
-- Store selection and subobject level
local sel = selection as array
setCommandPanelTaskMode #modify
local SOL = subObjectLevel
store = (selection.count > 1 or not obj.isSelected)
if store do (deselect selection; select obj)
if SOL == 0 do subObjectLevel = 1
local wArray = (
for v = 1 to obj.numVerts collect
meshOp.getVDataValue obj.baseObject 1 v
)
if store do (deselect selection; select sel)
subObjectLevel = SOL
wArray
)
fn vertColorFromWeights obj wArray: = (
if wArray == unsupplied do wArray = softSelWeightArray obj
meshOp.setMapSupport obj 0 true
meshOp.setSoftSel obj true
obj.showVertexColors = true
obj.vertexColorsShaded = true
obj.vertexColorType = 0
cArray = for v = 1 to obj.numVerts collect (colorFromFloat wArray[v])
for v = 1 to obj.numVerts do meshop.setMapVert obj 0 v cArray[v]
redrawViews()
)
Hi! Is it possible to link where it was shown? I’m desperately trying to recreate soft selection because it only works in with subobject level and I need to achieve this result without modify menu. I’ve created a script with distance/amin/amax but it’s still not the same curve, as soft selection offers. Thanks in advance!
from meshadj.h
This function is available in release 3.0 and later only.
This is the standard affect region function, based on a distance and the three
affect region parameters (same as the editable mesh).
This function is a cubic curve which returns 1 at distance 0, 0 if distance is
greater than falloff, and other values for distance between 0 and falloff. To
“see” this function graphed, look at the curve in the Soft Selection parameters
in Edit Mesh, Editable Mesh, Mesh Select, or Volume Select. This function
currently is constructed as follows:
float u = ((falloff - dist)/falloff);
float u2 = u*u, s = 1.0f-u;
return (3*u*bubble*s + 3*u2*(1.0f-pinch))*s + u*u2
suspendEditing which:#modify
falloff1 = 100
pinch = 0
bubble = 0;
tstrength = 40;
fn tu dist = (
u = ((falloff1 - dist)/falloff1);
u2 = u*u;
s = 1.0-u;
((3*u*bubble*s + 3*u2*(1.0-pinch))*s + u*u2)
)
dd = for v in $.verts collect
(
tt = for i in (polyop.getVertSelection $) collect distance v.pos (polyop.getVert $ i)
amin tt
)
for k=1 to $.verts.count do (
pos =polyop. getVert $ k
polyop.setVert $ k [pos.x, pos.y, pos.z + (tstrength * (tu dd[k]))]
)
resumeEditing which:#modify
my Version of soft selection on z axis. I’ve c++ version too but this is easier to test. It is smooth, nearly does it’s job, but gives me a strange mesh. I’m calculating distance using amin. What am I missing?
Is there any way to turn off soft selection display in modify mode?
this one disables soft selection drawing until I change my modifier parameters or reselect the node.
I’d prefer to have an sdk way of doing so
max display mode
max backface cull toggle
max backface cull toggle
max modify mode
I don’t understand the question… ‘Use Affect Region’ (‘Use Soft Sel’) is a property (option) of some Object’s sub-object display.
It’s not an option of Modifier Panel.