Inside Sabertooth
Learn how Sabertooth uses 3ds Max to create 3D interactive projects, including HBO Go’s Game of Thrones interactive experience
  • 1/3
You are here: Forum Home / Autodesk 3ds® Max® / MaxScript / $.modifiers[#MultiRes].vertexCount changes to zero.
  RSS 2.0 ATOM  

$.modifiers[#MultiRes].vertexCount changes to zero.
Rate this thread
 
26625
 
Permlink of this thread  
avatar
  • Orwell
  • Posted: 04 May 2009 03:07 PM
  • Total Posts: 17
  • Joined: 01 January 2009 11:48 AM

This script:

importFile ("C:/Documents and Settings/Leo Mes/Bureaublad/in.obj")
file
"C:\\Document and Settings\\Leo Mes\\Bureaublad\\in.obj"
-- actionMan.executeAction 0 "40010"  -- FileImport File
actionMan
.executeAction 0 "40021"  -- SelectionSelect All
max tool maximize
viewport
.setType#view_front
actionMan.executeAction 0 "311"  -- ToolsZoom Extents All Selected
Weldtest 
= $.NumVerts
Min 
0
distance1 
0
distance2 
0
distance4 
0
modPanel
.addModToSelection (Vertex_Weld () ui:on
$.modifiers[#Vertex_Weld].threshold = 1.0e-003
    
if Weldtest > $.NumVerts do
    (
        
messagebox "Some vertices are welded!"
        
exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/inwelded.obj"#noPrompt using:exporterPlugin.classes[15]
    
)            
modPanel
.addModToSelection (Unwrap_UVW ()) ui:on
modPanel
.addModToSelection (MultiRes ()ui:on
actionMan
.executeAction 0 "369"  -- ViewsView Edged Faces Toggle
subobjectlevel 
1
    rollout the_buttons 
"Select type, select high-priority verts, then hit press me!"
    
(
        
button Button_rest "Armor / Weapon"
        
button Button_horse "Horse"
        
button Button_cont "Press me!"
            
on Button_rest pressed do
            (
                
distance1 = $.NumVerts*0.4
                distance2 
= $.NumVerts*0.2
                distance4 
= $.NumVerts*0.1
            
)
            
on Button_horse pressed do
            (
                
distance1 = $.NumVerts*0.5
                distance2 
= $.NumVerts*0.25
                distance4 
= $.NumVerts*0.125
            
)
            
on Button_cont pressed do
            (
                
Min $_null_.selectedVerts.count
                distance1 
distance1 as integer
                distance2 
distance2 as integer
                distance4 
distance4 as integer
                destroyDialog
(the_buttons)
                $.
modifiers[#MultiRes].BoundaryMetric = on
                
$.modifiers[#MultiRes].baseVertices = on
                
$.modifiers[#MultiRes].mergeVertex = on
                
$.modifiers[#MultiRes].mergeThreshold = 0.25
                
$.modifiers[#MultiRes].mergeWithinMesh = on
                
$.modifiers[#MultiRes].reqGenerate = off
                
$.modifiers[#MultiRes].vertexCount = distance1 <------------ THIS LINE CHANGES .VertexCount TO 0!
                    
if $.modifiers[#MultiRes].vertexCount = 0 do
                    
(
                        
messagebox "Still not working"
                        
$.modifiers[#MultiRes].vertexCount = distance1 <------------ HERE IT DOES WORK!
                    
)
                if 
doesFileExist("C:/Documents and Settings/Leo Mes/Bureaublad/in1.obj") == false do exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/" getFilenameFile ".lod1.obj"#noPrompt using:exporterPlugin.classes[15]
                
$.modifiers[#MultiRes].vertexCount = distance2
                    
if $.modifiers[#MultiRes].vertexCount < Min do
                    
(
                        
messagebox "Too low vertex count, raising"
                        
$.modifiers[#MultiRes].vertexCount = Min
                    
)
                
if doesFileExist("C:/Documents and Settings/Leo Mes/Bureaublad/in1.obj"== false do exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/" getFilenameFile ".lod2.obj"#noPrompt using:exporterPlugin.classes[15]
                
$.modifiers[#MultiRes].vertexCount = distance4
                    
if $.modifiers[#MultiRes].vertexCount < Min do
                    
(
                        
messagebox "Too low vertex count, raising"
                        
$.modifiers[#MultiRes].vertexCount = Min
                    
)                    
                
if doesFileExist("C:/Documents and Settings/Leo Mes/Bureaublad/in1.obj"== false do exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/" getFilenameFile ".lod4.obj"#noPrompt using:exporterPlugin.classes[15]
                
actionMan.executeAction 0 "40005"  -- FileReset File
            )
    )
CreateDialog the_buttons 360 80 600 400

Should prompt the user to import to import a .obj mesh, lets him decide what type of mesh it is, select high-priority verts in MultiRes, and then the script exports three LOD meshes.

If you can’t find them: look for two arrows pointing toward the distance1 part.



Windows 7 32-bit
AMD Phenom II x2 550 @ x4 3200mhz
NVIDIA GeForce 9600GT
2GB DDR3 Memory
Autodesk 3dsMax (200)9 32-bit

Replies: 1
/img/forum/dark/default_avatar.png

I had a similar problem, I fixed it by changing from:

select $item
$.modifiers[#MultiRes].reqGenerate = true
$.modifiers[#MultiRes].vertexCount = 500

to:

(
max modify mode
select $item
$.modifiers[#MultiRes].reqGenerate = true
$.modifiers[#MultiRes].vertexCount = 500
max select none
select $item

$.modifiers[#MultiRes].vertexCount = 500
)

however this could be a red herring as I’m using Viz 2006and not Max!

Author: kungmongie

Replied: 29 July 2009 12:49 AM  
avatar
  • Akram
  • Posted: 29 July 2009 07:11 PM

There seems to be a problem while assign a value for vertexcount in multires modifier, so instead try to assign the value to percent it works fine

on Button_cont pressed do
            
(
                Min 
$_null_.selectedVerts.count
                distance1 
distance1 as integer
                distance2 
distance2 as integer
                distance4 
distance4 as integer
                percent1 
(distance1/$.NumVerts)*100 --<---------------- ADDED HERE
                destroyDialog(the_buttons)
                
$.modifiers[#MultiRes].BoundaryMetric = on
                
$.modifiers[#MultiRes].baseVertices = on
                
$.modifiers[#MultiRes].mergeVertex = on
                
$.modifiers[#MultiRes].mergeThreshold = 0.25
                
$.modifiers[#MultiRes].mergeWithinMesh = on
                
$.modifiers[#MultiRes].reqGenerate = off
                
--$.modifiers[#MultiRes].vertexCount = distance1 <------------ THIS LINE CHANGES .VertexCount TO 0!
                
$.modifiers[#MultiRes].vertexPercent = percent1 --<---------------- ADDED HERE
                
if doesFileExist("C:/Documents and Settings/Leo Mes/Bureaublad/in1.obj"== false do exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/" getFilenameFile ".lod1.obj"#noPrompt using:exporterPlugin.classes[15]
                
$.modifiers[#MultiRes].vertexCount = distance2
                    
if $.modifiers[#MultiRes].vertexCount < Min do
                    
(
                        messagebox 
"Too low vertex count, raising"
                        
$.modifiers[#MultiRes].vertexCount = Min
                    
)
                
if doesFileExist("C:/Documents and Settings/Leo Mes/Bureaublad/in1.obj"== false do exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/" getFilenameFile ".lod2.obj"#noPrompt using:exporterPlugin.classes[15]
                
$.modifiers[#MultiRes].vertexCount = distance4
                    
if $.modifiers[#MultiRes].vertexCount < Min do
                    
(
                        messagebox 
"Too low vertex count, raising"
                        
$.modifiers[#MultiRes].vertexCount = Min
                    
)                    
                
if doesFileExist("C:/Documents and Settings/Leo Mes/Bureaublad/in1.obj"== false do exportFile ("C:/Documents and Settings/Leo Mes/Bureaublad/" getFilenameFile ".lod4.obj"#noPrompt using:exporterPlugin.classes[15]
                
actionMan.executeAction 0 "40005"  -- FileReset File
            )


Akram
Technical Artist,
FxLabs Studios, India
http://akira-techart.blogspot.com/

Replies: 0