Scripting 用于从图像中读取像素的3Ds MAx脚本

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

我们正在尝试从上传的位图图像中读取像素,但该行 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.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]