阿赵的MaxScript学习笔记分享十《材质贴图操作》

MaxScript学习笔记目录
大家好,我是阿赵,周六的早上继续来分享MaxScript学习笔记,这次是第十篇,材质贴图操作。
由于有朋友说我之前的代码都是截图,不好复制,所以从这一篇开始,所有用到的代码都会直接用文本显示出来。
这一篇的内容比较简单,我就直接在代码上面加备注了,不另增加说明了。

1、材质球的获取和复制

boxt1 = box()
$Box:Box001 @ [0.000000,0.000000,0.000000]
--通过material属性访问物体身上的材质球数据,如果没有赋值过,会返回undefined
boxt1.material
undefined
--通过meditmaterials可以访问材质球编辑器上的材质球
meditmaterials
#meditMaterials()
--把第一个材质球赋值给变量mat1
mat1 = meditmaterials[1]
01 - Default:Standard
--打印这个材质球的漫反射颜色
mat1.diffuse
(color 150 150 150)
--把漫反射颜色赋值为红色
mat1.diffuse = color 255 0 0
(color 255 0 0)
--把第一个材质球赋给场景里的box
boxt1.material = mat1
01 - Default:Standard
--清空box上使用的材质球
boxt1.material = undefined
undefined

2、修改材质球的属性

--给物体赋一个新的材质球,类型为standard
boxt1.material = standard()
Standardmaterial:Standard

--把新建的材质球赋给材质球列表第三个球
meditMaterials[3] = boxt1.material
Standardmaterial:Standard

--改变漫反射颜色
boxt1.material.diffuse = green
(color 0 255 0)

--修改高光颜色
boxt1.material.specular = white
(color 255 255 255)

--在d盘有一张叫做unityIcon.jpg的贴图,把这张贴图赋给材质球
tex1 = bitmaptexture filename:"d:/unityIcon.jpg"
Bitmaptexture:Bitmap
boxt1.material.diffusemap = tex1
Bitmaptexture:Bitmap

--在编辑窗口显示材质
showtexturemap boxt1.material true
OK

3、贴图的操作

之前在说明材质球赋予贴图的时候,使用过Bitmaptexture这个类型,这种类型是材质球贴图必须的类型
如果要逐像素去处理贴图,使用的类型应该是Bitmap
Bitmap类型有2种操作方式
可以是通过openBitmap方法从文件加载,也可以通过Bitmaptexture.bitmap从材质球获取
如果通过openBitmap加载,想要释放内存的时候,可以用close方法

--指定读取一张图片
path1 = "d:/testTex.jpg"
"d:/testTex.jpg"
tex1 = openBitmap path1
BitMap:d:\testTex.jpg

--获取图片的宽高
w1 = tex1.width
64
h1 = tex1.height
64

--getpixels方法可以指定像素获得颜色,注意,获取的是一个数组
--最后一个数字是指从当前像素坐标开始,获取多少个像素点的颜色
getpixels tex1 [20,30] 1
#((color 95 159 0))

--把这种图片放大复制到一张512*512的图片
texTemp = bitmap 512 512
BitMap:

tex2 = copy tex1 texTemp
BitMap:

--通过display方法可以在窗口显示这张图片
display tex2
OK

--接下来,遍历所有颜色,给色值取反
--通过setPixels方法可以给图片指定的像素点赋值颜色
col0 = color 255 255 255
(color 255 255 255)
for px in 0 to tex2.width - 1 do
(
	for py in 0 to tex2.height-1 do
	(
		local tempColor = getpixels tex2 [px,py] 1
		setPixels tex2 [px,py] #(col0 - tempColor[1])
	)
)
OK

--显示新的图片
display tex2
OK

--通过save方法,保存这张新的图片
path2 = "d:/testTex2.jpg"
"d:/testTex2.jpg"
tex2.fileName = path2
"d:/testTex2.jpg"
save tex2
true
close tex2
OK

猜你喜欢

转载自blog.csdn.net/liweizhao/article/details/129330367