3DMAX换贴图插件

每当材质需要替换贴图时都要一个个打开材质,比较麻烦,这里直接选择模型进行一个贴图的替换,主要针对mtlstandard和VRAY材质的diffuse和normal贴图的替换

废话不多说直接上代码

/*先定义一个函数用来收集VRay材质和MTLstandard材质*/

fn ti_huan=
(
--bitmap_path=getopenfilename  caption:"" filename:"" types:"JPEG (*.jpg)|*.jpg|TIFF(*.tif)|*.tif|BMP (*.bmp)|*.bmp|Targa (*.tga)|*.tga|PNG (*.png)|*.png"--gets
global m_mat=#()
global v_mat=#()
d=for b in selection where classof b.material==standardmaterial collect b--vraymtl材质
v=for b in selection where classof b.material==vraymtl collect b
)

rollout boss "替换贴图" width:200 height:300 rolledup:on

(
 button but1"替换漫反射贴图" pos:[10,10] width:100 height:20
 checkbutton but2"显示贴图"pos:[115,10] checked:false
on but1 pressed do undo on
(
ti_huan()
bitmap_path=getopenfilename  caption:"" filename:"" types:"JPEG (*.jpg)|*.jpg|TIFF(*.tif)|*.tif|BMP (*.bmp)|*.bmp|Targa (*.tga)|*.tga|PNG (*.png)|*.png"
 if bitmap_path!=undefined do
  (
for f=1 to d.count do
(
append m_mat d[f] 
m_mat[f].material.diffusemap=bitmaptexture filename:bitmap_path
)
for p=1 to v.count do--VRAy材质贴图
(
append v_mat v[p]
  v_mat[p].material.texmap_diffuse=bitmaptexture filename:bitmap_path
)
  )
)
on but2 changed state do
(
ti_huan()
if but2.state==true then
 (
try 
 (
for f=1 to d.count do
        (
          append m_mat d[f]
  showtexturemap m_mat[f].material m_mat[f].material.diffusemap on
  )
  for p=1 to v.count do--VRAy材质贴图
(
append v_mat v[p]
showtexturemap v_mat[p].material v_mat[p].material.texmap_diffuse on
)
    ) catch ()
)
  else 
  (
         try 
(  
for f=1 to d.count do
        (
          append m_mat d[f]
  showtexturemap m_mat[f].material m_mat[f].material.diffusemap off
  )
  for p=1 to v.count do--VRAy材质贴图
(
append v_mat v[p]
showtexturemap v_mat[p].material v_mat[p].material.texmap_diffuse off
)
        )catch()  
)
)
 button but3 "替换法线贴图" pos:[10,45] width:80 height:20
checkbox c_k"法线" pos:[95,45] width:45 height:20 checked:true
on but3 pressed do
(
ti_huan()
bitmap_path=getopenfilename  caption:"" filename:"" types:"JPEG (*.jpg)|*.jpg|TIFF(*.tif)|*.tif|BMP (*.bmp)|*.bmp|Targa (*.tga)|*.tga|PNG (*.png)|*.png"
 if bitmap_path!=undefined do
  (
for f=1 to d.count do
 (
append m_mat d[f]

if c_k.checked==true then
   (
m_mat[f].material.bumpMap = Normal_Bump ()
m_mat[f].material.bumpmap.normal_map=bitmaptexture filename:bitmap_path
    )
else 
(
      m_mat[f].material.bumpmap=bitmaptexture filename:bitmap_path
    )
       )
for p=1 to v.count do--VRAy材质贴图
 (
append v_mat v[p]
 if c_k.checked==true then
   (
v_mat[p].material.texmap_bump=Normal_Bump ()
         v_mat[p].material.texmap_bump.normal_map=bitmaptexture filename:bitmap_path
    )
else 
(
          v_mat[p].material.texmap_bump=bitmaptexture filename:bitmap_path
    )
 )
  )
)
 checkbutton but4"显示" pos:[140,45] width:40 height:20 checked:false
    on but4 changed state do 
(
ti_huan()
if but4.state==true then
 (
try 
 (
for f=1 to d.count do
        (
          append m_mat d[f]
  showtexturemap m_mat[f].material m_mat[f].material.bumpmap.normal_map on
  )
  for p=1 to v.count do--VRAy材质贴图
(
append v_mat v[p]
showtexturemap v_mat[p].material v_mat[p].material.texmap_bump.normal_map on
)
    ) catch ()
)
  else 
  (
         try 
(  
for f=1 to d.count do
        (
          append m_mat d[f]
  showtexturemap m_mat[f].material m_mat[f].material.bumpmap.normal_map off
  )
  for p=1 to v.count do--VRAy材质贴图
(
append v_mat v[p]
showtexturemap v_mat[p].material v_mat[p].material.texmap_bump.normal_map off
)
        )catch()  

)
label label1"QQ-1054631343"

)createdialog boss

猜你喜欢

转载自blog.csdn.net/qq_33842715/article/details/80559774