khanat-opennel-code/code/nel/tools/3d/plugin_max/scripts/startup/nel_multi_set.ms
2010-05-06 02:08:41 +02:00

585 lines
15 KiB
Text

----------------------------------------------------------------------------------------------------------------
-- Nel BitmapTexture properties : this provide additionnal slots to create textures sets
plugin textureMap NelBitmapTexture
name:"Nel Multi Bitmap"
classID:#(0x5a8003f9, 0x43e0955)
extends:BitmapTexture
replaceUI:false
version:1.0
(
local currSelectedTextureSet
parameters pblock rollout:AdditionnalBitmaps
(
bitmap1FileName type:#String default:"" ui:cBitmap1FileName
bitmap2FileName type:#String default:"" ui:cBitmap2FileName
bitmap3FileName type:#String default:"" ui:cBitmap3FileName
bitmap4FileName type:#String default:"" ui:cBitmap4FileName
bitmap5FileName type:#String default:"" ui:cBitmap5FileName
bitmap6FileName type:#String default:"" ui:cBitmap6FileName
bitmap7FileName type:#String default:"" ui:cBitmap7FileName
bitmap8FileName type:#String default:"" ui:cBitmap8FileName
)
rollout AdditionnalBitmaps "Additionnal bitmaps" rolledUp:false
(
edittext cBitmap1FileName "ID 1:" width:230 across:3
button browse1 "Get" align:#left across:2 offset:[100, 0]
button view1 "View" offset:[40, 0]
edittext cBitmap2FileName "ID 2:" width:230 across:3
button browse2 "Get" align:#left across:2 offset:[100, 0]
button view2 "View" offset:[40, 0]
edittext cBitmap3FileName "ID 3:" width:230 across:3
button browse3 "Get" align:#left across:2 offset:[100, 0]
button view3 "View" offset:[40, 0]
edittext cBitmap4FileName "ID 4:" width:230 across:3
button browse4 "Get" align:#left across:2 offset:[100, 0]
button view4 "View" offset:[40, 0]
edittext cBitmap5FileName "ID 5:" width:230 across:3
button browse5 "Get" align:#left across:2 offset:[100, 0]
button view5 "View" offset:[40, 0]
edittext cBitmap6FileName "ID 6:" width:230 across:3
button browse6 "Get" align:#left across:2 offset:[100, 0]
button view6 "View" offset:[40, 0]
edittext cBitmap7FileName "ID 7:" width:230 across:3
button browse7 "Get" align:#left across:2 offset:[100, 0]
button view7 "View" offset:[40, 0]
edittext cBitmap8FileName "ID 8:" width:230 across:3
button browse8 "Get" align:#left across:2 offset:[100, 0]
button view8 "View" offset:[40, 0]
on browse1 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap1FileName = myNewBitmap.fileName
if currSelectedTextureSet == undefined or currSelectedTextureSet == 1 then
(
try
(
delegate.bitmap = openBitmap bitmap1FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view1 pressed do
(
try
(
local myBitmap = openBitMap cBitmap1FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse2 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap2FileName = myNewBitmap.fileName
if currSelectedTextureSet == 2
then
(
try
(
delegate.bitmap = openBitmap bitmap2FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view2 pressed do
(
try
(
local myBitmap = openBitMap cBitmap2FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse3 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap3FileName = myNewBitmap.fileName
if currSelectedTextureSet == 3
then
(
try
(
delegate.bitmap = openBitmap bitmap3FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view3 pressed do
(
try
(
local myBitmap = openBitMap cBitmap3FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse4 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap4FileName = myNewBitmap.fileName
if currSelectedTextureSet == 4
then
(
try
(
delegate.bitmap = openBitmap bitmap4FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view4 pressed do
(
try
(
local myBitmap = openBitMap cBitmap4FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse5 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap5FileName = myNewBitmap.fileName
if currSelectedTextureSet == undefined or currSelectedTextureSet == 5 then
(
try
(
delegate.bitmap = openBitmap bitmap5FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view5 pressed do
(
try
(
local myBitmap = openBitMap cBitmap5FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse6 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap6FileName = myNewBitmap.fileName
if currSelectedTextureSet == 6
then
(
try
(
delegate.bitmap = openBitmap bitmap6FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view6 pressed do
(
try
(
local myBitmap = openBitMap cBitmap6FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse7 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap7FileName = myNewBitmap.fileName
if currSelectedTextureSet == 7
then
(
try
(
delegate.bitmap = openBitmap bitmap7FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view7 pressed do
(
try
(
local myBitmap = openBitMap cBitmap7FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
on browse8 pressed do
(
myNewBitmap = selectBitmap()
if myNewBitmap != undefined then
(
bitmap8FileName = myNewBitmap.fileName
if currSelectedTextureSet == 8
then
(
try
(
delegate.bitmap = openBitmap bitmap8FileName
)
catch
(
-- well, no luck..
)
)
)
)
on view8 pressed do
(
try
(
local myBitmap = openBitMap cBitmap8FileName.text
display myBitmap
)
catch
(
messagebox "Unable to find / display bitmap"
)
)
)
)
----------------------------------------------------------------------------------------------------------------
fn convertMaxBitmapToNelBitmap maxMap =
(
if classOf maxMap == NelBitmapTexture then
(
return maxMap -- no needs to change
)
if maxMap == undefined then
(
print "undefined map"
return undefined
)
print "converting bitmap"
nelMap = NelBitmapTexture()
base = nelMap.delegate
-- copy args
base.clipu = maxMap.clipu
base.clipv = maxMap.clipv
base.clipw = maxMap.clipw
base.cliph = maxMap.cliph
base.jitter = maxMap.jitter
base.useJitter = maxMap.useJitter
base.apply = maxMap.apply
base.cropPlace = maxMap.cropPlace
base.filtering = maxMap.filtering
base.monoOutput = maxMap.monoOutput
base.rgbOutput = maxMap.rgbOutput
base.alphaSource = maxMap.alphaSource
base.preMultAlpha = maxMap.preMultAlpha
base.bitmap = maxMap.bitmap
base.coords = maxMap.coords
base.output = maxMap.output
base.fileName = maxMap.fileName
base.startTime = maxMap.startTime
base.playBackRate = maxMap.playBackRate
base.endCondition = maxMap.endCondition
-- Duplicate the bitmap in the first bitmap slot
nelMap.bitmap1FileName = nelMap.bitmap.fileName
print "return nel map"
return nelMap
)
----------------------------------------------------------------------------------------------------------------
-- takes a material (max standard, max Multi/SubObject, nel), and transform each of its texture that are bitmap
-- to a NeL bitmap.
fn convertMaterialChangingBitmap destMat =
(
if (classOf destMat == NelMaterial) then -- is it a NelMaterial ?
(
print "converting nel material"
destMat.tTexture_1 = convertMaxBitmapToNelBitmap(destMat.tTexture_1)
destMat.tTexture_2 = convertMaxBitmapToNelBitmap(destMat.tTexture_2)
destMat.tTexture_3 = convertMaxBitmapToNelBitmap(destMat.tTexture_3)
destMat.tTexture_4 = convertMaxBitmapToNelBitmap(destMat.tTexture_4)
destMat.tTexture_5 = convertMaxBitmapToNelBitmap(destMat.tTexture_5)
destMat.tTexture_6 = convertMaxBitmapToNelBitmap(destMat.tTexture_6)
destMat.tTexture_7 = convertMaxBitmapToNelBitmap(destMat.tTexture_7)
destMat.tTexture_8 = convertMaxBitmapToNelBitmap(destMat.tTexture_8)
)
else if (classOf destMat == StandardMaterial) then
(
print "converting standard material"
for j = 1 to 12 do
(
destMat.maps[j] = convertMaxBitmapToNelBitmap(destMat.maps[j])
)
)
else if (classOf destMat == Multimaterial) then
(
-- performs this on each submaterial
for k = 1 to destMat.materialList.count do
(
if destMat.materialList[k] != undefined then
(
convertMaterialChangingBitmap destMat.materialList[k]
)
)
)
-- else no convertible material
)
----------------------------------------------------------------------------------------------------------------
-- This function helps to convert bitmap for an object from max Bitmap to nel BitmapTexture. This operate on all selected objects
fn convertMaxBitmapToNelBitmapForSelection =
(
for i = 1 to selection.count do
(
if (selection[i].material != undefined) then
(
convertMaterialChangingBitmap selection[i].material
)
)
)
----------------------------------------------------------------------------------------------------------------
-- a MacroScript That performs a call to convertMaxBitmapToNelBitmapForMesh
macroScript ConvertMaxBitmapToNelBitmapMacroScript category:"NEVRAX Tools" tooltip:"Convert all material of the selection so that they use Nel Bitmap instead of max ones"
(
convertMaxBitmapToNelBitmapForSelection()
)
----------------------------------------------------------------------------------------------------------------
-- Select a slot in a NeL bitmap
fn selectNelBitmap nelBitmap bitmapIndex =
(
if (classOf nelBitmap == NelBitmapTexture) then
(
print "selecting bitmap : " + bitmapIndex as string
local srcBitmapName
if bitmapIndex == 1 then ( srcBitmapName = nelBitmap.bitmap1FileName )
if bitmapIndex == 2 then ( srcBitmapName = nelBitmap.bitmap2FileName )
if bitmapIndex == 3 then ( srcBitmapName = nelBitmap.bitmap3FileName )
if bitmapIndex == 4 then ( srcBitmapName = nelBitmap.bitmap4FileName )
if bitmapIndex == 5 then ( srcBitmapName = nelBitmap.bitmap5FileName )
if bitmapIndex == 6 then ( srcBitmapName = nelBitmap.bitmap6FileName )
if bitmapIndex == 7 then ( srcBitmapName = nelBitmap.bitmap7FileName )
if bitmapIndex == 8 then ( srcBitmapName = nelBitmap.bitmap8FileName )
-- If not present takes the first bitmap
if srcBitmapName == "" then
(
srcBitmapName = nelBitmap.bitmap1FileName
)
if srcBitmapName == undefined then
(
srcBitmapName = ""
)
print "fileName = " + srcBitmapName
nelBitmap.bitmap.fileName = srcBitmapName
nelBitmap.currSelectedTextureSet = bitmapIndex
NelReloadTexture nelBitmap.bitmap
)
else
(
if nelBitmap != undefined then
(
print "selecting bitmap : not a NelBitmapTexture"
)
)
)
----------------------------------------------------------------------------------------------------------------
-- Select one bitmap in a nel MultiBitmap for the given material, and setup it as the current displayed bitmap
fn selectNelBitmapInMaterial destMat bitmapIndex =
(
-- we just takes the bitmap from the given bitmap or the bitmap from the slot 0 if it doesn't exist
if (classOf destMat == NelMaterial) then -- is it a NelMaterial ?
(
print "selecting textures in a NelMaterial"
selectNelBitmap destMat.tTexture_1 bitmapIndex
selectNelBitmap destMat.tTexture_2 bitmapIndex
selectNelBitmap destMat.tTexture_3 bitmapIndex
selectNelBitmap destMat.tTexture_4 bitmapIndex
selectNelBitmap destMat.tTexture_5 bitmapIndex
selectNelBitmap destMat.tTexture_6 bitmapIndex
selectNelBitmap destMat.tTexture_7 bitmapIndex
selectNelBitmap destMat.tTexture_8 bitmapIndex
)
else if (classOf destMat == StandardMaterial) then
(
print "selecting textures in a StandardMaterial"
for j = 1 to 12 do
(
selectNelBitmap destMat.maps[j] bitmapIndex
)
)
else if (classOf destMat == Multimaterial) then
(
print "selecting textures in a Multimaterial"
-- performs this on each submaterial
for k = 1 to destMat.materialList.count do
(
if destMat.materialList[k] != undefined then
(
selectNelBitmapInMaterial destMat.materialList[k] bitmapIndex
)
)
)
else
(
print "no convertible materials :" + (classOf destMat) as string
)
)
----------------------------------------------------------------------------------------------------------------
fn selectNelBitmapInSelection bitmapIndex =
(
for n = 1 to selection.count do
(
if selection[n].material != undefined then
(
selectNelBitmapInMaterial selection[n].material bitmapIndex
)
)
)
----------------------------------------------------------------------------------------------------------------
-- Macro scripts that performs the selection of a set of bitmaps
macroScript SelectNelBitmapSet1 category:"NEVRAX Tools" tooltip:"Select the first set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 1
)
macroScript SelectNelBitmapSet2 category:"NEVRAX Tools" tooltip:"Select the second set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 2
)
macroScript SelectNelBitmapSet3 category:"NEVRAX Tools" tooltip:"Select the third set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 3
)
macroScript SelectNelBitmapSet4 category:"NEVRAX Tools" tooltip:"Select the fourth set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 4
)
macroScript SelectNelBitmapSet5 category:"NEVRAX Tools" tooltip:"Select the fifth set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 5
)
macroScript SelectNelBitmapSet6 category:"NEVRAX Tools" tooltip:"Select the sixth set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 6
)
macroScript SelectNelBitmapSet7 category:"NEVRAX Tools" tooltip:"Select the seventh set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 7
)
macroScript SelectNelBitmapSet8 category:"NEVRAX Tools" tooltip:"Select the eigth set of bitmap for the selected meshs"
(
selectNelBitmapInSelection 8
)