bitmap switcher

Another script...another newbie problem!

I'm trying to develop a script that let me change diffuse texture of a certain material.
I started studying Joe Gunn old script "face switcher": this script change material ID (but first we need to create a multiamterial with a lot of submaterials with different textures), while I think it's faster to have only one material and change its texture.
The script let you choose a directory to sort bitmap from, create thumbnails and...nothing.
The scope is to change material texture clicking on the corresponding thumbnail and to create a keyframe for material diffuse slot.

This is my result:

try(destroyDialog ::texchange)catch()
rollout texchange"TEXTURE CHANGE"
 
(	
--interface
	button btnSetD "Set Dir:" pos:[5,5] width:50 height:20 toolTip:"directory immagini"  
	edittext Fdir "" pos:[55,5] width:100 height:20
	button btn01 "01" pos:[5,30] width:30 height:30  
	button btn02 "02" offset:[-30,-35] width:30 height:30
	button btn03 "03" offset:[0,-35] width:30 height:30  
	button btn04 "04" offset:[30,-35] width:30 height:30
	button btn05 "05" offset:[60,-35] width:30 height:30
--choose bitmap path
	on btnSetD pressed do
	(
		local curpath = Fdir.text 
		local newPath = getSavePath initialDir:(curpath) caption:"Select the path where your Face Images are located" 
		if newPath != undefined then	
--create thumbnails
		(
			Fdir.text = newpath
			btn01.images = #(Fdir.text + "\01.png", Fdir.text + "\01.png", 1, 1, 1, 1, 1)
			btn02.images = #(Fdir.text + "\02.png", Fdir.text + "\02.png", 1, 1, 1, 1, 1)
			btn03.images = #(Fdir.text + "\03.png", Fdir.text + "\03.png", 1, 1, 1, 1, 1)
			btn04.images = #(Fdir.text + "\04.png", Fdir.text + "\04.png", 1, 1, 1, 1, 1)
			btn05.images = #(Fdir.text + "\05.png", Fdir.text + "\05.png", 1, 1, 1, 1, 1)
		)
	)
--actions
	on btn01 pressed do
	(	
--and here the problem... load 1st thumbnail image to object material
	)
	on btn02 pressed do
	(	
--same, and so on...
	)	
)
createdialog texchange 160 200 10 110 style:#(#style_titlebar, #style_sysmenu, #style_toolwindow)

I hope to have been clear enought... any idea?

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
barigazy's picture

...

It's easy to implement this to works with any material that include VRayMtl but
you need to decide which VRayMtl must be changed.
Let say you have multimaterial with 10 sub-materials that is assigned to one object. Which sub-mat you want to have switch operation?

bga

ste's picture

.

It's the same.. let's say submat 1

barigazy's picture

...

on btn01 pressed do if selection.count != 0 do
(
	if (mtl = selection[1].mat) != undefined do
	(
		mtl = getClassInstances VRayMtl target:mtl
		if mtl.count != 0 do 
			if isKindOf (map = mtl[1].texmap_diffuse) bitmaptex do map.filename = (Fdir.text + "\01.png")
	)
)

bga

ste's picture

.

Yes, You are the man!

And now the nice part, I need to keyframe my bitmap change, but I'm not sure it is possible...I just realized that, right?

barigazy's picture

...

It's not posible but...
You can use "Mix" procedural map. Put two maps and use mix amount to switch between these. Also this parameter can be animated for sure

bga

ste's picture

.

Uff...I know!

With mix map I can only mix up two maps.. I need more, at least 10.

I have the idea, but I need help to develop it.

1. We have a folder with 2 textures, each with 5 images side by side

2. First texture is lowres, to use for buttons thumbnail (to sort with .images array, and this is done)

3. Second texture is highres: now I put this texture in diffuse slot of my material, and then with buttons from 1 to 5 I will change its cropping and placement (btn01->place 0 crop 0.2, btn02->place 0.2 crop 0.2, btn03->place 0.4 crop 0.2, btn04->place 0.6 crop 0.2, btn05->place 0.8 crop 0.2), crating keyframes.

Is it a good idea?

barigazy's picture

...

I think that this is not possible with mxs, but not sure.

bga

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.