Scripting 用于从图像中读取像素的3Ds MAx脚本
我们正在尝试从上传的位图图像中读取像素,但该行 aBrightness=(0.2126*aPixel[1]。红色)+(0.7152*aPixel[1]。绿色)+(0.0722*aPixel[1]。蓝色)总是给出一个错误,表示“未知属性:未定义中的红色” 我们当前的脚本是:Scripting 用于从图像中读取像素的3Ds MAx脚本,scripting,bitmap,pixels,3dsmax,Scripting,Bitmap,Pixels,3dsmax,我们正在尝试从上传的位图图像中读取像素,但该行 aBrightness=(0.2126*aPixel[1]。红色)+(0.7152*aPixel[1]。绿色)+(0.0722*aPixel[1]。蓝色)总是给出一个错误,表示“未知属性:未定义中的红色” 我们当前的脚本是: aBitmap = selectBitMap caption:"Select a Bitmap" Print(aBitmap.height) Print(aBitmap.width) aLength = aBitmap.hei
aBitmap = selectBitMap caption:"Select a Bitmap"
Print(aBitmap.height)
Print(aBitmap.width)
aLength = aBitmap.height
aWidth = aBitmap.width
for i = 0 to (aLength - 10) by 10 do
(
for j = 0 to (aWidth - 10) by 10 do
(
Print(i)
Print(j)
aPixel = getPixels aBitmap [i,j] 1
aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue)
aBox = box pos:[i,j,0] width:0.1 length:0.1 height:aBrightness
)
)
我们将非常感谢任何关于这个脚本的帮助 您的坐标有误。X值首先出现 应该是
APixels = Getpixels aBitmap [j, i] 1
在使用aPixel之前,可以检查它是否未定义
aPixel = getPixels aBitmap [i,j] 1
if (aPixel == undefined) do ( format "ERROR!!! [%,%]\n" i, j to:listener; continue )
aBrightness = (0.2126*aPixel[1].red) + (0.7152*aPixel[1].green) + (0.0722*aPixel[1].blue)
这可能会帮助您找出错误所在。通常,函数会将“未定义”返回给变量,因此需要检查它是否未定义。在这种情况下,一旦修复了bug,您就可以删除这种类型的代码,因为您已经消除了未定义的行为。请注意,我使用了“格式”而不是“打印”,这是一个更好的使用只是一个微小的额外代码
我看到两件可疑的事情要检查
1) maxscript中的大多数索引都是从1开始的,而不是从0开始的。检查文档
2) 正如Rotem指出的,[x,y],而不是[y,x]