Notifications
Clear all

[Closed] skinOps Bug in Max 2015?

Hello,
Is it me or there is a bug in skinOps.SetInnerRadius and SetOuterRadius functions in 3ds max 2015? For me it doesn’t work, no matter what radius I set It always make it 1.0 and 2.0, the same script works fine on max 2013 and 2014.
Could someone test it?

delete objects
gsphr = Geosphere radius:20
gsphr.xray = true
clndr = Cylinder height:20 radius:2

--create skin
skinmod = Skin()
AddModifier gsphr (skinmod)
select gsphr
max modify mode
skinOps.addbone skinmod clndr 1
subobjectLevel=1
CompleteRedraw()
Sleep 1

--BUGGY PART?
"-----show_radius-----"
skinOps.GetOuterRadius skinmod 1 1
skinOps.GetOuterRadius skinmod 1 2
"-----------"

--now I want to increase the radius 5 times...
radius1 = skinOps.GetOuterRadius skinmod 1 1
radius2 = skinOps.GetOuterRadius skinmod 1 2
skinOps.SetOuterRadius skinmod 1 1 (radius1*5.0)
skinOps.SetOuterRadius skinmod 1 2 (radius2*5.0)

"-----show_radius-----"
skinOps.GetOuterRadius skinmod 1 1
skinOps.GetOuterRadius skinmod 1 2
"-----------"
5 Replies

This bug was there in Max 2015 until (including) SP1
Was fixed in SP2 and SP3

Ok, thanks. Is there a way to check the service pack installed (or not) via MaxScript? I need to know if this bug will occur on the user’s machine to handle it somehow.

Another question, is there somewhere skinOps interface source code in the Max SDK? I could try to fix this and recompile.

1 Reply
(@spacefrog)
Joined: 11 months ago

Posts: 0

the sourcecode is in the samples ( bonesdef or similar )
actually it’s a one liner to fix, simply an incoming parameter FPValue index is 0 instead of 1 in some of the envelope routines (after i reported that bug i fixed it for myself until the official SP )

but why recompile yourself now that the SP’s are available ?
The sourcecode in the samples may contain other release time bugs, because the SDK does’nt recieve any updates of course

Maybe check maxVersion()

I think you’re right. The stuff with setInner/Outer Radius functions are in fact not necessary in my script, I just do it like this:

versinfo = dotnetclass "System.Diagnostics.FileVersionInfo"
myFI = versinfo.GetVersionInfo  (pathConfig.appendPath (pathConfig.GetDir #maxroot) "3dsmax.exe")
versions = filterString myFI.FileVersion "."
if (versions[1] as string == "17") and (versions[2] as integer < 2) then
(
	--max 2015 without SP or SP1 containing the bug
)
else
(
	--execute setInner/Outer Radius functions
)