CGTalk > Software Specific Forums > Autodesk 3ds max > 3dsMax SDK and MaxScript
Login register
Thread Closed share thread « Previous Thread | Next Thread »  
 
Thread Tools Search this Thread Display Modes
Old 04-23-2013, 11:29 PM   #1
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
avoid reBuild mesh callback

Is there a way on custom geo plugins to avoid the buildMesh callback thats fired when a UI control has changed?

Does this work for anyone?
Code:
fn Random = ( disableRefMsgs(); disableSceneRedraw() //// enableSceneRedraw() enableRefMsgs() )
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com
 
Old 04-25-2013, 02:01 PM   #2
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
I'm having this issue with the sphere plus geo plugin. When users click on "Uniform" then change the spinner, you'll see that all spinners change to match the appropriate value, the only problem is that it rebuilds the mesh 3 times for every change (one for each spinner) This happens because when the spinner changes it fires the buildMesh callback.

How can I skip or delay the build mesh so it only happens once?
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com
 
Old 04-25-2013, 02:15 PM   #3
denisT
MAX Doctor
 
denisT's Avatar
portfolio
Denis Trofimov
CA, USA
 
Join Date: Jul 2009
Posts: 9,160
Send a message via ICQ to denisT
Quote:
Originally Posted by JokerMartini
I'm having this issue with the sphere plus geo plugin. When users click on "Uniform" then change the spinner, you'll see that all spinners change to match the appropriate value, the only problem is that it rebuilds the mesh 3 times for every change (one for each spinner) This happens because when the spinner changes it fires the buildMesh callback.

How can I skip or delay the build mesh so it only happens once?

add internal local variable... something like building. and set it to ON before building the mesh and to OFF after.
on build mesh callback check if the mesh is in building mode and skip the building in this case.
 
Old 04-25-2013, 02:19 PM   #4
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
sample code

Code:
plugin simpleObject SpherePlus name:"Sphere_Plus" category:"Standard Primitives" classID:#(0x68b2b559, 0x7b555bd2) ( parameters main rollout:rltParams ( rows type:#integer default:4 ui:uiRows columns type:#integer default:8 ui:uiColumns radius1 type:#float ui:uiRadius1 default:0 radius2 type:#float ui:uiRadius2 default:0 radius3 type:#float ui:uiRadius3 default:0 uniform type:#boolean ui:uiUniform default:false hemisphere type:#float ui:uiHemisphere default:1.0 cap type:#boolean ui:uiCap default:false mapCoords type:#boolean ui:uiMapCoords default:true realWorldMapSize type:#boolean ui:uiRealWorldMapSize default:false ) rollout rltParams "Parameters" ( spinner uiRows "Rows" range:[1,100,16] type:#integer spinner uiColumns "Columns" range:[3,100,32] type:#integer spinner uiRadius1 "Radius X:" range:[0,1e9,0] scale:.1 type:#worldunits offset:[0,9] spinner uiRadius2 "Radius Y:" range:[0,1e9,0] scale:.1 type:#worldunits spinner uiRadius3 "Radius Z:" range:[0,1e9,0] scale:.1 type:#worldunits checkBox uiUniform "Uniform " checked:false offset:[67,0] enabled:true spinner uiHemisphere "Hemisphere:" range:[0.0,1.0,1.0] scale:.005 type:#float offset:[0, 9] checkBox uiCap "Cap " checked:false offset:[67,0] enabled:false checkBox uiMapCoords "Generate Mapping Coords" checked:true offset:[0, 9] checkBox uiRealWorldMapSize "Real-World Map Size" checked:false on uiHemisphere changed val do (uiCap.enabled = (val != 1.0)) on uiUniform changed state do (if state do uiRadius2.value = uiRadius3.value = uiRadius1.value) on uiRadius1 changed val do (if uiUniform.state do uiRadius2.value = uiRadius3.value = val) on uiRadius2 changed val do (if uiUniform.state do uiRadius1.value = uiRadius3.value = val) on uiRadius3 changed val do (if uiUniform.state do uiRadius1.value = uiRadius2.value = val) ) on hasUVW do map_coords on setGenUVW bool do map_coords = bool fn genMesh = ( local vertCount = (rows+2 )* columns --add the both polar ends to the rows count local facesCount = columns * (rows-1) * 2 local rowAngle = 180.0 / (rows+1) * hemisphere local columnAngle = 360.0 / columns local capRow = 0 /*Set Vertices*/ local verticesArr = #() for h = 1 to (rows+2) do ( for v = 1 to columns do ( calcX = radius1 * cos((v-1) * columnAngle) * sin((h-1)*rowAngle) calcY = radius2 * sin((v-1)* columnAngle) * sin((h-1)*rowAngle) calcZ = radius3 * cos((h-1) * rowAngle) pos = [calcX,calcY,calcZ] + [0,0,0] --include nodes matrix append verticesArr pos ) ) /*Cap Mesh*/ if hemisphere != 1.0 then ( /*duplicate the last six verts for later use in capping the SpherePlus*/ lastVert = verticesArr.count startingVert = lastVert - (columns - 1)--the starting vert to begin collecting at lastVerticesRow = (for i = startingVert to lastVert collect verticesArr[i]) join verticesArr lastVerticesRow capRow = 1 vertCount += columns ) /*Set Faces*/ local facesArr = #() local rowEnd = columns as integer loops = (rows + 1 + capRow)*columns for v = 1 to loops do ( if v < rowEnd then ( append facesArr [v+1, v, v+columns] append facesArr [ v+columns , v+columns+1 , v+1 ] )else( append facesArr [ 1+v-columns , v , v+columns] append facesArr [v+columns , v+1, 1+v-columns ] rowEnd += columns ) ) /*Set Mesh*/ setMesh mesh verts:verticesArr faces:facesArr triCount = (rows+1+capRow)*columns*2 for f in #{1..triCount} do setEdgeVis mesh f 3 false for f in #{1..triCount} do setFaceSmoothGroup mesh f 1 if hemisphere != 1.0 and cap do ( for f in #{(triCount-(columns*2)+1)..triCount} do setFaceSmoothGroup mesh f 2 ) /*Set Texture Coordinates*/ if mapCoords do ( setNumTVerts mesh vertCount if realWorldMapSize then ( for i = 1 to vertCount do ( setTVert mesh i verticesArr[i] ) ) else ( local maxLength = amax #(radius1,radius2,radius3) for i = 1 to vertCount do ( setTVert mesh i (verticesArr[i] / maxLength + [0, 0, 0]/2) ) ) buildTVFaces mesh false for i = 1 to facesArr.count do ( setTVFace mesh i facesArr[i] ) ) /*Weld Polars*/ if hemisphere == 1.0 then ( local weldBottomVerts = for i = vertCount to (vertCount - (columns-1)) by -1 collect i meshop.weldvertset mesh weldBottomVerts --weld end verts first because it changes the vert count ) else ( if cap do ( local weldBottomVerts = for i = vertCount to (vertCount - (columns-1)) by -1 collect i meshop.weldvertset mesh weldBottomVerts --weld end verts first because it changes the vert count ) ) local weldTopVerts = for i = 1 to columns collect i meshop.weldvertset mesh weldTopVerts update mesh ) on buildMesh do (genMesh()) tool create ( local first_pos on mousePoint click do ( case click of ( 1: (radius1 = radius2 = radius3 = 0; coordSys grid (nodeTM.translation = first_pos = gridPoint)) 2: #stop ) ) on mouseMove click do ( case click of ( 2: ( radius1 = radius2 = radius3 = length (gridDist * [1, 1, 0]) if altKey do ( nodeTM.translation = [0,0,0] ) ) ) ) ) )
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com
 
Old 04-25-2013, 02:25 PM   #5
denisT
MAX Doctor
 
denisT's Avatar
portfolio
Denis Trofimov
CA, USA
 
Join Date: Jul 2009
Posts: 9,160
Send a message via ICQ to denisT
where is a problem? it calls only once on every parameter change...
ahh... i see... in uniform mode...
 
Old 04-25-2013, 02:27 PM   #6
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
yeah in uniform mode it does several fires.
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com
 
Old 04-25-2013, 02:39 PM   #7
denisT
MAX Doctor
 
denisT's Avatar
portfolio
Denis Trofimov
CA, USA
 
Join Date: Jul 2009
Posts: 9,160
Send a message via ICQ to denisT
everything is much simple... you mistake is that you use spinner change events instead of property set event. i've changed your code to do uniform sync the right way.
 
Old 04-25-2013, 02:41 PM   #8
denisT
MAX Doctor
 
denisT's Avatar
portfolio
Denis Trofimov
CA, USA
 
Join Date: Jul 2009
Posts: 9,160
Send a message via ICQ to denisT
if spinner is wired to a property never use spinner events. they don't make any sense in case of undo/redo anyway.
actually it's not just about spinners. it concerns to any rollout control.
 
Old 04-25-2013, 02:42 PM   #9
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
can you share with me the fixed code so i can learn from it?
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com
 
Old 04-25-2013, 02:44 PM   #10
denisT
MAX Doctor
 
denisT's Avatar
portfolio
Denis Trofimov
CA, USA
 
Join Date: Jul 2009
Posts: 9,160
Send a message via ICQ to denisT
Quote:
Originally Posted by JokerMartini
can you share with me the fixed code so i can learn from it?

sure i've forgot to post a code:
Code:
plugin simpleObject SpherePlus name:"Sphere_Plus" category:"Standard Primitives" classID:#(0x68b2b559, 0x7b555bd2) ( fn syncRadius val = ( if this.radius1 != val do this.radius1 = val if this.radius2 != val do this.radius2 = val if this.radius3 != val do this.radius3 = val ) parameters main rollout:rltParams ( rows type:#integer default:4 ui:uiRows columns type:#integer default:8 ui:uiColumns radius1 type:#float ui:uiRadius1 default:0 radius2 type:#float ui:uiRadius2 default:0 radius3 type:#float ui:uiRadius3 default:0 uniform type:#boolean ui:uiUniform default:false hemisphere type:#float ui:uiHemisphere default:1.0 cap type:#boolean ui:uiCap default:false mapCoords type:#boolean ui:uiMapCoords default:true realWorldMapSize type:#boolean ui:uiRealWorldMapSize default:false on radius1 set val do if uniform do syncRadius val on radius2 set val do if uniform do syncRadius val on radius3 set val do if uniform do syncRadius val on uniform set val do if val do syncRadius radius1 ) rollout rltParams "Parameters" ( spinner uiRows "Rows" range:[1,100,16] type:#integer spinner uiColumns "Columns" range:[3,100,32] type:#integer spinner uiRadius1 "Radius X:" range:[0,1e9,0] scale:.1 type:#worldunits offset:[0,9] spinner uiRadius2 "Radius Y:" range:[0,1e9,0] scale:.1 type:#worldunits spinner uiRadius3 "Radius Z:" range:[0,1e9,0] scale:.1 type:#worldunits checkBox uiUniform "Uniform " checked:false offset:[67,0] enabled:true spinner uiHemisphere "Hemisphere:" range:[0.0,1.0,1.0] scale:.005 type:#float offset:[0, 9] checkBox uiCap "Cap " checked:false offset:[67,0] enabled:false checkBox uiMapCoords "Generate Mapping Coords" checked:true offset:[0, 9] checkBox uiRealWorldMapSize "Real-World Map Size" checked:false on uiHemisphere changed val do (uiCap.enabled = (val != 1.0)) ) on hasUVW do map_coords on setGenUVW bool do map_coords = bool fn genMesh = ( format "build...%\n" (timestamp()) local vertCount = (rows+2 )* columns --add the both polar ends to the rows count local facesCount = columns * (rows-1) * 2 local rowAngle = 180.0 / (rows+1) * hemisphere local columnAngle = 360.0 / columns local capRow = 0 /*Set Vertices*/ local verticesArr = #() for h = 1 to (rows+2) do ( for v = 1 to columns do ( calcX = radius1 * cos((v-1) * columnAngle) * sin((h-1)*rowAngle) calcY = radius2 * sin((v-1)* columnAngle) * sin((h-1)*rowAngle) calcZ = radius3 * cos((h-1) * rowAngle) pos = [calcX,calcY,calcZ] + [0,0,0] --include nodes matrix append verticesArr pos ) ) /*Cap Mesh*/ if hemisphere != 1.0 then ( /*duplicate the last six verts for later use in capping the SpherePlus*/ lastVert = verticesArr.count startingVert = lastVert - (columns - 1)--the starting vert to begin collecting at lastVerticesRow = (for i = startingVert to lastVert collect verticesArr[i]) join verticesArr lastVerticesRow capRow = 1 vertCount += columns ) /*Set Faces*/ local facesArr = #() local rowEnd = columns as integer loops = (rows + 1 + capRow)*columns for v = 1 to loops do ( if v < rowEnd then ( append facesArr [v+1, v, v+columns] append facesArr [ v+columns , v+columns+1 , v+1 ] )else( append facesArr [ 1+v-columns , v , v+columns] append facesArr [v+columns , v+1, 1+v-columns ] rowEnd += columns ) ) /*Set Mesh*/ setMesh mesh verts:verticesArr faces:facesArr triCount = (rows+1+capRow)*columns*2 for f in #{1..triCount} do setEdgeVis mesh f 3 false for f in #{1..triCount} do setFaceSmoothGroup mesh f 1 if hemisphere != 1.0 and cap do ( for f in #{(triCount-(columns*2)+1)..triCount} do setFaceSmoothGroup mesh f 2 ) /*Set Texture Coordinates*/ if mapCoords do ( setNumTVerts mesh vertCount if realWorldMapSize then ( for i = 1 to vertCount do ( setTVert mesh i verticesArr[i] ) ) else ( local maxLength = amax #(radius1,radius2,radius3) for i = 1 to vertCount do ( setTVert mesh i (verticesArr[i] / maxLength + [0, 0, 0]/2) ) ) buildTVFaces mesh false for i = 1 to facesArr.count do ( setTVFace mesh i facesArr[i] ) ) /*Weld Polars*/ if hemisphere == 1.0 then ( local weldBottomVerts = for i = vertCount to (vertCount - (columns-1)) by -1 collect i meshop.weldvertset mesh weldBottomVerts --weld end verts first because it changes the vert count ) else ( if cap do ( local weldBottomVerts = for i = vertCount to (vertCount - (columns-1)) by -1 collect i meshop.weldvertset mesh weldBottomVerts --weld end verts first because it changes the vert count ) ) local weldTopVerts = for i = 1 to columns collect i meshop.weldvertset mesh weldTopVerts update mesh ) on buildMesh do (genMesh()) tool create ( local first_pos on mousePoint click do ( case click of ( 1: (radius1 = radius2 = radius3 = 0; coordSys grid (nodeTM.translation = first_pos = gridPoint)) 2: #stop ) ) on mouseMove click do ( case click of ( 2: ( radius1 = radius2 = radius3 = length (gridDist * [1, 1, 0]) if altKey do ( nodeTM.translation = [0,0,0] ) ) ) ) ) )
 
Old 04-25-2013, 02:57 PM   #11
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
bug

What is the solution to this then? It is a problem with Tubular.

Create an object then click 'new' three time. then select different list items and youll see it build it several times.

The issue is the populate settings function! ahhhh

Code:
--delete objects plugin simpleObject Tubular name:"Tubular" category:"Standard Primitives" classID:#(0x503dde09, 0x1cd55e62) ( parameters sections rollout:sections ( sectionsData type:#stringTab tabSize:0 tabSizeVariable:true -- changed the parameter name also changed tabsize to 0 so it would not add an undefined item to the array XRadius2 type:#float ui:uiXRadius2 default:0 YRadius2 type:#float ui:uiYRadius2 default:0 smooth2 type:#float ui:uiSmooth2 default:0.0 height2 type:#worldUnits default:0 ui:uiHeight2 heightSegs2 type:#integer default:4 ui:uiHeightSegs2 heightBias2 type:#float default:0 ui:uiHeightBias2 heightBiasPower2 type:#float default:10 ui:uiHeightBiasPower2 radiusBias2 type:#float default:0 ui:uiRadiusBias2 radiusBiasPower2 type:#float default:10 ui:uiRadiusBiasPower2 twisty type:#worldUnits default:0 ui:uiTwisty on sectionsData tabChanged change tabIndex tabCount do ( this.PopulateSectionList() ) on XRadius2 set val do (this.WriteSettings()) on YRadius2 set val do (this.WriteSettings()) on smooth2 set val do (this.WriteSettings()) on height2 set val do (this.WriteSettings()) on heightSegs2 set val do (this.WriteSettings()) on heightBias2 set val do (this.WriteSettings()) on heightBiasPower2 set val do (this.WriteSettings()) on radiusBias2 set val do (this.WriteSettings()) on radiusBiasPower2 set val do (this.WriteSettings()) on twisty set val do (this.WriteSettings()) ) rollout sections "Sections" ( button uiNewSection "New" across:3 height:24 width:51 align:#left offset:[-9,0] button uiRemoveSection "Remove" height:24 width:51 align:#left offset:[-3,0] button uiClearSections "Clear" height:24 width:51 align:#left offset:[3,0] multilistbox uiSectionList items:#() height:5 width:155 offset:[-10,-4] align:#left group "Settings" ( spinner uiXRadius2 "Radius X:" range:[0,1e9,0] scale:.1 type:#worldunits fieldwidth:50 align:#right offset:[0,0] spinner uiYRadius2 "Radius Y:" range:[0,1e9,0] scale:.1 type:#worldunits fieldwidth:50 align:#right offset:[0,0] spinner uiSmooth2 "Smooth:" range:[-1e9,1e9,0] scale:.01 type:#float fieldwidth:50 align:#right offset:[0,0] spinner uiHeight2 "Height: " range:[-1e9,1e9,0] type:#worldUnits fieldwidth:50 align:#right offset:[0,6] spinner uiHeightSegs2 "Height Segs: " type:#integer range:[1,1000,0] fieldwidth:50 align:#right offset:[0,0] spinner uiHeightBias2 "Height Bias: " type:#float range:[-1,1,0] scale:0.01 fieldwidth:50 align:#right offset:[0,0] spinner uiHeightBiasPower2 "Height Power: " range:[1,100,0] type:#float scale:0.1 fieldwidth:50 align:#right offset:[0,0] spinner uiRadiusBias2 "Radius Bias: " type:#float range:[-1,1,0] scale:0.01 fieldwidth:50 align:#right offset:[0,6] spinner uiRadiusBiasPower2 "Radius Power: " range:[1,100,0] type:#float scale:0.1 fieldwidth:50 align:#right offset:[0,0] spinner uiTwisty "Twist: " type:#float range:[-1e9,1e9,0] scale:1.0 fieldwidth:50 align:#right offset:[0,6] ) on uiSectionList selectionEnd do (this.PopulateSettings()) on uiNewSection pressed do ( local newSection = #( 10, --1 = Radius X 10, --2 = Radius Y 0, --3 = Smooth 20, --4 = Height 10, --5 = Height Segs 0, --6 = Height Bias 10, --7 = Height Power 0, --8 = Radius Bias 10, --9 = Radius Power 0 --10 = Twist ) as string append sectionsData newSection ) on uiRemoveSection pressed do (this.RemoveListSections()) on uiClearSections pressed do sectionsData = #() on sections open do (this.PopulateSectionList()) ) fn getSelectedListItem = ( curSel = this.sections.uiSectionList.selection as array selItem = if curSel.count >= 1 then curSel[1] else 0 selItem ) fn getArrayFromString stg = ( local tmpArr = #() if stg.count >= 1 do ( for p = 1 to stg.count do ( part = execute (substring stg[p] 1 (stg[p].count)) append tmpArr part ) ) tmpArr ) fn PopulateSettings = ( local sectionsArr = getArrayFromString sectionsData index = getSelectedListItem() if index >= 1 do ( sectionData = sectionsArr[index] this.sections.uiXRadius2.value = sectionData[1] this.sections.uiYRadius2.value = sectionData[2] this.sections.uiSmooth2.value = sectionData[3] this.sections.uiHeight2.value = sectionData[4] this.sections.uiHeightSegs2.value = sectionData[5] this.sections.uiHeightBias2.value = sectionData[6] this.sections.uiHeightBiasPower2.value = sectionData[7] this.sections.uiRadiusBias2.value = sectionData[8] this.sections.uiRadiusBiasPower2.value = sectionData[9] this.sections.uiTwisty.value = sectionData[10] ) ) fn WriteSettings = ( local sectionsArr = getArrayFromString sectionsData index = getSelectedListItem() if index >= 1 do ( sectionData = sectionsArr[index] if sectionData != undefined do ( sectionData[1] = this.sections.uiXRadius2.value sectionData[2] = this.sections.uiYRadius2.value sectionData[3] = this.sections.uiSmooth2.value sectionData[4] = this.sections.uiHeight2.value sectionData[5] = this.sections.uiHeightSegs2.value sectionData[6] = this.sections.uiHeightBias2.value sectionData[7] = this.sections.uiHeightBiasPower2.value sectionData[8] = this.sections.uiRadiusBias2.value sectionData[9] = this.sections.uiRadiusBiasPower2.value sectionData[10] = this.sections.uiTwisty.value sectionsData[index] = sectionData as string ) ) ) fn RemoveListSections listUnselected:(-this.sections.uiSectionList.selection) = ( sectionsData = for i in listUnselected collect sectionsData[i] PopulateSettings() ) fn PopulateSectionList = ( local sectionsArr = getArrayFromString sectionsData this.sections.uiSectionList.items = for n = 1 to sectionsArr.count collect (n as string) sel = if sectionsArr.count >= 1 then #{sectionsArr.count} else #{} this.sections.uiSectionList.selection = sel PopulateSettings() ) fn genMesh = ( if sectionsData.count >= 1 then ( setMesh mesh verts:#() faces:#() ) ) on buildMesh do ( genMesh() format "Generating: %\n" (random 0 9) ) tool create ( local first_pos on mousePoint click do case click of ( 1: (XRadius1 = YRadius1 = XRadius2 = YRadius2 = 0; coordSys grid (nodeTM.translation = first_pos = gridPoint)) 2: #stop ) on mouseMove click do case click of ( 2: ( XRadius1 = YRadius1 = amax (abs gridDist.x) (abs gridDist.y) if altKey do ( nodeTM.translation = [0,0,0] ) ) ) ) )
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com

Last edited by JokerMartini : 04-25-2013 at 03:04 PM.
 
Old 04-25-2013, 03:30 PM   #12
denisT
MAX Doctor
 
denisT's Avatar
portfolio
Denis Trofimov
CA, USA
 
Join Date: Jul 2009
Posts: 9,160
Send a message via ICQ to denisT
it's the same mistake... use properties instead of controls:
Code:
fn PopulateSettings = ( local sectionsArr = getArrayFromString sectionsData index = getSelectedListItem() if index >= 1 do ( sectionData = sectionsArr[index] XRadius2 = sectionData[1] YRadius2 = sectionData[2] Smooth2 = sectionData[3] Height2 = sectionData[4] HeightSegs2 = sectionData[5] HeightBias2 = sectionData[6] HeightBiasPower2 = sectionData[7] RadiusBias2 = sectionData[8] RadiusBiasPower2 = sectionData[9] Twisty = sectionData[10] ) )
 
Old 04-25-2013, 03:33 PM   #13
JokerMartini
Expert
 
JokerMartini's Avatar
portfolio
John Martini
CG Supervisor, 3D, Maxscript, VFX
Ingenuity Engine
Los Angeles, USA
 
Join Date: Mar 2009
Posts: 1,296
Send a message via AIM to JokerMartini
that is what i figured.
Thank you very much for the fixes. I was going to go nuts if i could find a solution.
__________________
____________ ___ __ _
John A. Martini
JokerMartini@hotmail.com
www.JokerMartini.com
 
Old 04-25-2013, 03:33 PM   #14
CGTalk Moderation
Lord of the posts
CGTalk Forum Leader
 
Join Date: Sep 2003
Posts: 1,066,481
Thread automatically closed

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
__________________
CGTalk Policy/Legalities
Note that as CGTalk Members, you agree to the terms and conditions of using this website.
 
Thread Closed share thread


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
CGSociety
Society of Digital Artists
www.cgsociety.org

Powered by vBulletin
Copyright 2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump
Miscellaneous

All times are GMT. The time now is 01:54 AM.


Powered by vBulletin
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.