Hey guys,
We need to tranfer a model to another software package and would like to convert our vraymtls into standardmaterials. I have tried to piece a script together based on a vew examples I have look at. I have not had any luck. The last one script is based on the build in vray scene converter by Chaos. My version is below. I think it's close but I am noob to maxscript. Can someone give me a hand with this script?
Thanks!
-------------------------------------------------------------------------------
fn sqr x = x*x
fn convertFrom_Vray origMtl = (
r=standardMaterial()
r.name=origMtl.name
-- diffuse
r.diffuse=origMtl.diffuse
r.diffuseMap=origMtl.texmap_diffuse
r.diffuseMapEnable=origMtl.texmap_diffuse_on
r.diffuseMapAmount=origMtl.texmap_diffuse_multipli er
-- specular
r.specular*(r.specularLevel*0.01)=origMtl.reflecti on
r.glossiness=origMtl.hilight_glossiness
-- opacity
r.opacityMap=origMtl.texmap_opacity
r.opacityMapEnable=origMtl.texmap_opacity_on
r.opacityMapAmount=origMtl.texmap_opacity_multipli er
--bump map
r.bumpMap=origMtl.texmap_bump
r.bumpMapEnable=origMtl.texmap_bump_on
r.bumpMapAmount=origMtl.texmap_bump_multiplier
-- displacement
r.displacementMap=origMtl.texmap_displacement
r.displacementMapEnable=origMtl.texmap_displacemen t_on
r.displacementMapAmount=origMtl.texmap_displacemen t_multiplier
return r
)
fn createstandardMaterial origMtl = (
cls=classof origMtl
if (cls==Multimaterial) then (
for i=1 to origMtl.count do origMtl[i]=createstandardMaterial origMtl[i]
return origMtl
)
if (cls==Standardmaterial) then return origMtl
if (cls==VRay) then return convertFromVray origMtl
-- unrecognized material, leave as it is
format " Unrecognized material
"
return origMtl
-- r=standardMaterial()
-- r.name=origMtl.name
-- return r
)
fn replaceMtlNode node origMtl newMtl = (
if ((isValidNode node) and (node.material==origMtl)) then (
node.material=newMtl
format " node: %
" node.name
)
for i=1 to node.children.count do (
replaceMtlNode node.children[i] origMtl newMtl
)
)
fn replaceMtl origMtl newMtl = (
if (origMtl!=newMtl) then replaceMtlNode rootNode origMtl newMtl
)
-- convert all scene materials to Standard materials
fn mtlsTostandardMaterial = (
format "Converting Vray scene materials...
"
for i=1 to sceneMaterials.count do (
origMtl=sceneMaterials[i]
format " material: %
" origMtl
-- create a new Standardmaterial out of VrayMtl
vrMtl=createstandardMaterial origMtl
-- put the material back to the scene
replaceMtl origMtl vrMtl
)
format "Done
"
macroScript VRaySceneConverter category:"VRay" buttontext:"VRay Standard Material converter" tooltip:"Convert all Vray materials to Standard Materials" (
local res=queryBox "All Vray materials will be converted to Standard materials. Are you sure?" title:"VRay Standard Material converter"
if res then standardmaterial()
)
fn setupVRayUI = (
registerMenuItems()
)
setupVrayUI()
We need to tranfer a model to another software package and would like to convert our vraymtls into standardmaterials. I have tried to piece a script together based on a vew examples I have look at. I have not had any luck. The last one script is based on the build in vray scene converter by Chaos. My version is below. I think it's close but I am noob to maxscript. Can someone give me a hand with this script?
Thanks!
-------------------------------------------------------------------------------
fn sqr x = x*x
fn convertFrom_Vray origMtl = (
r=standardMaterial()
r.name=origMtl.name
-- diffuse
r.diffuse=origMtl.diffuse
r.diffuseMap=origMtl.texmap_diffuse
r.diffuseMapEnable=origMtl.texmap_diffuse_on
r.diffuseMapAmount=origMtl.texmap_diffuse_multipli er
-- specular
r.specular*(r.specularLevel*0.01)=origMtl.reflecti on
r.glossiness=origMtl.hilight_glossiness
-- opacity
r.opacityMap=origMtl.texmap_opacity
r.opacityMapEnable=origMtl.texmap_opacity_on
r.opacityMapAmount=origMtl.texmap_opacity_multipli er
--bump map
r.bumpMap=origMtl.texmap_bump
r.bumpMapEnable=origMtl.texmap_bump_on
r.bumpMapAmount=origMtl.texmap_bump_multiplier
-- displacement
r.displacementMap=origMtl.texmap_displacement
r.displacementMapEnable=origMtl.texmap_displacemen t_on
r.displacementMapAmount=origMtl.texmap_displacemen t_multiplier
return r
)
fn createstandardMaterial origMtl = (
cls=classof origMtl
if (cls==Multimaterial) then (
for i=1 to origMtl.count do origMtl[i]=createstandardMaterial origMtl[i]
return origMtl
)
if (cls==Standardmaterial) then return origMtl
if (cls==VRay) then return convertFromVray origMtl
-- unrecognized material, leave as it is
format " Unrecognized material
"
return origMtl
-- r=standardMaterial()
-- r.name=origMtl.name
-- return r
)
fn replaceMtlNode node origMtl newMtl = (
if ((isValidNode node) and (node.material==origMtl)) then (
node.material=newMtl
format " node: %
" node.name
)
for i=1 to node.children.count do (
replaceMtlNode node.children[i] origMtl newMtl
)
)
fn replaceMtl origMtl newMtl = (
if (origMtl!=newMtl) then replaceMtlNode rootNode origMtl newMtl
)
-- convert all scene materials to Standard materials
fn mtlsTostandardMaterial = (
format "Converting Vray scene materials...
"
for i=1 to sceneMaterials.count do (
origMtl=sceneMaterials[i]
format " material: %
" origMtl
-- create a new Standardmaterial out of VrayMtl
vrMtl=createstandardMaterial origMtl
-- put the material back to the scene
replaceMtl origMtl vrMtl
)
format "Done
"
macroScript VRaySceneConverter category:"VRay" buttontext:"VRay Standard Material converter" tooltip:"Convert all Vray materials to Standard Materials" (
local res=queryBox "All Vray materials will be converted to Standard materials. Are you sure?" title:"VRay Standard Material converter"
if res then standardmaterial()
)
fn setupVRayUI = (
registerMenuItems()
)
setupVrayUI()