2013-11-03 73 views
0

我們正在嘗試從已上傳的位圖圖像讀取像素,但行 aBrightness =(0.2126 * aPixel [1] .red)+(0.7152 * aPixel [1]。綠色)+(0.0722 * aPixel [1] .blue)總是給出一個錯誤,說明未知屬性:「未定義」中的紅色。3Ds MAx腳本用於從圖像中讀取像素

我們當前的腳本是:

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 
) 
) 

我們會很感激,關於這個腳本任何幫助。

回答

0

你有你的座標錯誤。 X值先走。

應該

APixels = Getpixels aBitmap [j, i] 1 
0

您可以檢查,看看是否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) 

這可能會幫助您確定錯誤的位置。通常一個函數會將'undefined'返回給一個變量,所以你需要檢查它是否是未定義的。在這種情況下,一旦你修復了這個bug,你可以刪除這種類型的代碼,因爲你已經消除了未定義的行爲。注意我使用「格式」而不是「打印」,這對於一小部分額外的代碼來說是非常好用的。

我看到兩個可疑的事情要檢查。

1)maxscript中的大多數索引以1開頭,不以0開頭。檢查文檔。 2)正如Rotem指出的,[x,y],不是[y,x]