The Blog

Mel Script: lấy kích thước tối thiểu của Texture trong làm phim hoạt hình

Làm Phim Hoạt Hình Chất Lượng

Để có thể hiển thị được hình ảnh texture thật chất lượng trên màn hình, chắc chắn chúng ta muốn biết kích cỡ tối thiểu của texture cần thực hiện trên một object là bao nhiêu ?
Để có được kích thước texture tối thiểu trên khung hình tốt, @Rainstorm được biết là dùng đoạn script sau đây:

[code lang=”Mel”]

/* Tác giả đoạn code MELScript dành cho Maya:
Michiel Duvekot
Mã nguồn: http://forums.cgsociety.org/showthread.php?p=6339929#post6339929 */

proc MDgetMinTextureRes (int $width, int $height){
float $max = `max $width $height`;
int $texels = `ceil ($max * 1.5)`;
int $pow=1;
int $base = 2;
int $res = `pow $base $pow`;
while ($res < $texels) {
$res = `pow $base $pow`;
$pow+=1;
}
print ("minimum texture resolution is " + $res + " * " + $res + "\n");
}

/*——gọi hàm—–*/
MDgetMinTextureRes 100 200; //chạy hàm, tương ứng kích thước vật thể trên màn hình 100px 200px
minimum texture resolution is 512 * 512 //cho ra kết quả mảng texture tối thiểu

/*—–tương ứng—–*/
MDgetMinTextureRes 1920 1080; //chạy hàm, tương ứng kích thước vật thể trên màn hình FULL HD 1920×1080
minimum texture resolution is 4096 * 4096 //cho ra kết quả mảng texture tối thiểu[/code]

Cập Nhật 28/July/2015-
HELP MaxScript !

Nhờ sự hỗ trợ của bạn Nguyễn Chí Luân, và với sự dứt điểm của  Pio Raffaele Fina, #RainstormFilm rất vui được chia sẻ đoạn code MaxScript tính kích thước Texture theo độ phân giải màn hình

tính kích thước texture theo độ phân giải màn hình

[code lang=”Mel”]

try(destroyDialog :: Min_texture) catch()
rollout Min_texture “Get Min Texture”
(
–UI Items
label lbl_render “Render Resolution:” pos:[8,5]
spinner width “Width” pos:[20,24] range:[2,10000,1280] type:#integer width:70
spinner height “Height” pos:[115,24] range:[2,10000,720] type:#integer width:70
button get_res “Get Resolution” pos:[55,50] height:24
label rezText “Min Texture resolution: ” pos:[10,80]
label rez “” pos:[154,80]

— Declaring Local variables
local cal_Texels= undefined
local cal_Res= undefined
local cal_pow= 1
local cal_base= 2
local maxValue=undefined

on get_res pressed do
(
–Get max Value
maxValue= amax Width.value Height.value
–Get texels value
cal_texels= ceil(maxValue *1.5)
–Get Resolution value
cal_Res= pow cal_base cal_pow

–Debug Print
–format “maxvalue is % \n” maxValue
–format “ceil value is % \n” cal_texels
–format “pow value is % \n” cal_Res

–Calculate by iteration the resolution
while (cal_Res < cal_Texels) do
(
cal_Res= pow cal_base cal_pow
cal_pow+=1
)

–Print UI Label text
rez.text= ((cal_res as integer)as string) + “*” + ((cal_res as integer)as string)

— Reset variables value
cal_Texels= undefined
cal_Res= undefined
cal_pow= 1
cal_base= 2
maxValue=undefined
)

)

createdialog Min_texture width:200

[/code]

PTEX

Tại thời điểm viết bài post này, hiện Disney đã phát triển chuẩn .ptex, một cách thức mới để texture mà không cần phải thực hiện trãi UV (unfold, unwrap), nó sẽ tối đa hóa mức độ mỹ thuật trong làm phim hoạt hình và sử dụng hình ảnh CG, cũng như có thể dễ dàng không thấy các đường cắt kết nối mẫu texture với nhau, trong đó cũng boa gồm cách thức thực hiện texturing mới
Tham khảo thêm: http://ptex.us/

kỹ thuật sản xuất phim hoạt hình

@RainstormFilm chia sẻ