302 lines
8.2 KiB
Text
302 lines
8.2 KiB
Text
rollout nelmatconv_rollout "nel mat converter"
|
|
(
|
|
group "converter"
|
|
(
|
|
checkbox selectiononly "Selected objects only" -- checked:true
|
|
checkbox setLightMapParam_on "Set all LightMap [on] ?" checked:true
|
|
-- checkbox setbasetodiffuse "Set base color = diffuse" checked:true
|
|
button goforall "GO GO GO !"
|
|
|
|
label object_processed_label "--------"
|
|
Label textnull01 "You can force LightMap [on]"
|
|
Label textnull02 "with existing material"
|
|
|
|
button unnelconv "Un-NeLificator !"
|
|
|
|
|
|
)
|
|
group "Maps"
|
|
(
|
|
checkbox selectiononlyforshowmap "Selected objects only" checked:true
|
|
button ShowMaps "Show Maps"
|
|
button HideMaps "Hide Maps"
|
|
)
|
|
|
|
Fn convertsinglemat thisoldmat =
|
|
(
|
|
print "converting : "
|
|
tempmat = NelMaterial()
|
|
for i in getpropnames tempmat.standard do (setproperty tempmat.standard i (getproperty thisoldmat i))
|
|
tempmat.name = thisoldmat.name
|
|
|
|
-- Convert the material
|
|
if classof thisoldmat == Standard then
|
|
(
|
|
-- Simple texture mode
|
|
tempmat.tTexture_1 = thisoldmat.DiffuseMap
|
|
tempmat.bEnableSlot_1 = thisoldmat.DiffuseMapEnable
|
|
|
|
if ((thisoldmat.SpecularMapEnable == true) and (thisoldmat.SpecularMap != undefined)) then
|
|
(
|
|
-- Shader specular
|
|
tempmat.iShaderType = 5 -- ShaderSpecular
|
|
|
|
-- Specular map
|
|
tempmat.tTexture_2 = thisoldmat.SpecularMap
|
|
tempmat.bEnableSlot_2 = true
|
|
)
|
|
|
|
-- Alpha blend ?
|
|
tempmat.bAlphaBlend = (thisoldmat.opacity < 100) or (thisoldmat.OpacityMap != undefined)
|
|
|
|
-- Alpha operator
|
|
if (thisoldmat.opacityType == 0) then
|
|
(
|
|
-- Blend
|
|
tempmat.iBlendSrcFunc = 3 -- BlendSrcAlpha
|
|
tempmat.iBlendDestFunc = 4 -- BlendInvSrcAlpha
|
|
)
|
|
else if (thisoldmat.opacityType == 2) then
|
|
(
|
|
-- Additive
|
|
tempmat.iBlendSrcFunc = 1 -- BlendOne
|
|
tempmat.iBlendDestFunc = 1 -- BlendOne
|
|
)
|
|
)
|
|
|
|
return tempmat
|
|
)
|
|
|
|
|
|
Fn process_obj obj =
|
|
(
|
|
-- if obj.material == undefined then messagebox "le script va crasher : \nun object de la scene n'a pas de materiau !"
|
|
print obj.name
|
|
print obj.material
|
|
currentmat = obj.material
|
|
print currentmat
|
|
if classof currentmat==Multimaterial
|
|
then -- traiter un multimat
|
|
(
|
|
print "multi-sub material"
|
|
for submatnumber = 1 to currentmat.count do
|
|
(
|
|
if classof currentmat[submatnumber] != NelMaterial
|
|
then
|
|
(
|
|
print "This is not a Nel Mat --> Let's convert"
|
|
-- messagebox (currentmat.names[submatnumber] as string)
|
|
currentmat[submatnumber] = (convertsinglemat currentmat[submatnumber])
|
|
-- messagebox (currentmat.names[submatnumber] as string)
|
|
if currentmat.names[submatnumber] == undefined then currentmat.names[submatnumber] = currentmat[submatnumber].name
|
|
if setLightMapParam_on.checked == true then (currentmat[submatnumber].bLightMap = true)
|
|
)
|
|
else
|
|
(
|
|
print "Already Nel Material : do nothing"
|
|
if setLightMapParam_on.checked == true then (currentmat[submatnumber].bLightMap = true)
|
|
)
|
|
)
|
|
)
|
|
else -- material simple
|
|
(
|
|
print "not a multi-sub material"
|
|
if classof currentmat != NelMaterial
|
|
then
|
|
(
|
|
print "This is not a Nel Mat Let's convert"
|
|
currentmat = (convertsinglemat currentmat)
|
|
if setLightMapParam_on.checked == true then (currentmat.bLightMap = true)
|
|
obj.material = currentmat
|
|
|
|
)
|
|
else
|
|
(
|
|
print "Already Nel Material : do nothing"
|
|
)
|
|
)
|
|
)
|
|
------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------
|
|
-------------------------- UNPROCESS !!! ---------------------------------
|
|
------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------
|
|
Fn unconvertsinglemat thisoldmat =
|
|
(
|
|
print "un converting : "
|
|
tempmat = Standard()
|
|
for i in getpropnames tempmat do (setproperty tempmat i (getproperty thisoldmat.standard i))
|
|
tempmat.name = thisoldmat.name
|
|
return tempmat
|
|
)
|
|
|
|
Fn unprocess_obj obj =
|
|
(
|
|
-- if obj.material == undefined then messagebox "le script va crasher : \nun object de la scene n'a pas de materiau !"
|
|
print "ici un-NeL-ificator !"
|
|
print obj.name
|
|
print obj.material
|
|
currentmat = obj.material
|
|
print currentmat
|
|
if classof currentmat==Multimaterial
|
|
then -- traiter un multimat
|
|
(
|
|
print "multi-sub material"
|
|
for submatnumber = 1 to currentmat.count do
|
|
(
|
|
if classof currentmat[submatnumber] == NelMaterial
|
|
then
|
|
(
|
|
print "This is a Nel Mat --> Let's convert"
|
|
-- messagebox (currentmat.names[submatnumber] as string)
|
|
currentmat[submatnumber] = (unconvertsinglemat currentmat[submatnumber])
|
|
-- messagebox (currentmat.names[submatnumber] as string)
|
|
if currentmat.names[submatnumber] == undefined then currentmat.names[submatnumber] = currentmat[submatnumber].name
|
|
)
|
|
else
|
|
(
|
|
print "Not a Nel Material : do nothing"
|
|
)
|
|
)
|
|
)
|
|
else -- material simple
|
|
(
|
|
print "not a multi-sub material"
|
|
if classof currentmat == NelMaterial
|
|
then
|
|
(
|
|
print "This is a Nel Mat Let's convert"
|
|
currentmat = (unconvertsinglemat currentmat)
|
|
obj.material = currentmat
|
|
)
|
|
else
|
|
(
|
|
print "Not a Nel Material : do nothing"
|
|
)
|
|
)
|
|
)
|
|
------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------
|
|
|
|
Fn Showmapinviewport obj booltoset =
|
|
(
|
|
print (classof booltoset)
|
|
print booltoset
|
|
print obj.name
|
|
if classof obj.material == Multimaterial
|
|
then
|
|
(
|
|
print "multimat"
|
|
for u = 1 to obj.material.count do
|
|
(
|
|
if classof obj.material[u] == NelMaterial
|
|
then try (showTextureMap obj.material[u] obj.material[u].standard.diffusemap booltoset) catch(print "no texture map")
|
|
else try (showTextureMap obj.material[u] obj.material[u].diffusemap booltoset) catch(print "no texture map")
|
|
)
|
|
)
|
|
else
|
|
(
|
|
print "pas multimat"
|
|
if classof obj.material == NelMaterial
|
|
then try (showTextureMap obj.material obj.material.standard.diffusemap booltoset) catch(print "no texture map")
|
|
else try (showTextureMap obj.material obj.material.diffusemap booltoset) catch(print "no texture map")
|
|
)
|
|
)
|
|
|
|
on ShowMaps pressed do
|
|
(
|
|
parambool = true
|
|
if selectiononlyforshowmap.checked==true
|
|
then (for i in selection do Showmapinviewport i parambool)
|
|
else (for i in $geometry do Showmapinviewport i parambool)
|
|
)
|
|
|
|
on HideMaps pressed do
|
|
(
|
|
parambool = false
|
|
if selectiononlyforshowmap.checked==true
|
|
then (for i in selection do Showmapinviewport i parambool)
|
|
else (for i in $geometry do Showmapinviewport i parambool)
|
|
)
|
|
|
|
|
|
|
|
on goforall pressed do
|
|
(
|
|
if selectiononly.checked==true
|
|
then for curr_obj in selection do
|
|
(
|
|
if curr_obj.material != undefined
|
|
then
|
|
(
|
|
object_processed_label.text = curr_obj.name
|
|
process_obj curr_obj
|
|
)
|
|
else
|
|
(
|
|
print "pas de materiau sur cet object : skip"
|
|
)
|
|
)
|
|
else for curr_obj in $geometry do
|
|
(
|
|
if curr_obj.material != undefined
|
|
then
|
|
(
|
|
object_processed_label.text = curr_obj.name
|
|
process_obj curr_obj
|
|
)
|
|
else
|
|
(
|
|
print "pas de materiau sur cet object : skip"
|
|
)
|
|
)
|
|
object_processed_label.text = "finished"
|
|
)
|
|
|
|
|
|
|
|
on unnelconv pressed do
|
|
(
|
|
if selectiononly.checked==true
|
|
then for curr_obj in selection do
|
|
(
|
|
if curr_obj.material != undefined
|
|
then
|
|
(
|
|
object_processed_label.text = curr_obj.name
|
|
unprocess_obj curr_obj
|
|
)
|
|
else
|
|
(
|
|
print "pas de materiau sur cet object : skip"
|
|
)
|
|
)
|
|
else for curr_obj in $geometry do
|
|
(
|
|
if curr_obj.material != undefined
|
|
then
|
|
(
|
|
object_processed_label.text = curr_obj.name
|
|
unprocess_obj curr_obj
|
|
)
|
|
else
|
|
(
|
|
print "pas de materiau sur cet object : skip"
|
|
)
|
|
)
|
|
object_processed_label.text = "finished"
|
|
)
|
|
|
|
)
|
|
|
|
------------- fin rollout ------------------
|
|
|
|
if nelmatconv_floater != undefined do
|
|
(
|
|
closerolloutfloater nelmatconv_floater
|
|
)
|
|
|
|
nelmatconv_Floater = newRolloutFloater "nel mat conv" 178 340
|
|
addrollout nelmatconv_rollout nelmatconv_Floater
|
|
|