Tôi đang cố gắng tìm ra một tập lệnh sẽ tạo ra một kết cấu (sau đó có thể được nhân với một hình ảnh thang độ xám để "áp dụng" nó). Cho đến nay phương pháp của tôi liên quan đến việc gieo hạt RNG, sau đó tạo ngẫu nhiên ma trận 8x8 của các số nguyên trong phạm vi [0,3], sau đó mở rộng ma trận đó thành hình ảnh 256x256 bằng cách sử dụng một mức nội suy nào đó.Thủ tục tạo ra một kết cấu
Dưới đây là một đầu ra ví dụ (giá trị hạt giống 24):
Sample http://adamhaskell.net/misc/texture/sample.png
Bên trái là ma trận có quy mô với gần hàng xóm suy. Ở bên phải là nỗ lực của tôi tại nội suy song tuyến. Đối với hầu hết các phần có vẻ như không sao, nhưng sau đó bạn nhận được cấu trúc như gần giữa bên trái, nơi có hai hình vuông màu cam liền kề đường chéo phải đối mặt với hai hình vuông màu đỏ liền kề đường chéo, và kết quả là không có nội suy cho khu vực đó. Ngoài ra, nó đang được xử lý giống như một bản đồ nhiệt (như được hiển thị bởi sự phong phú của màu da cam ở góc trên cùng bên trái) và điều đó gây ra nhiều vấn đề hơn.
Dưới đây là đoạn code tôi có cho "Bilinear suy" của tôi:
<?php
$matrix = Array();
srand(24);
$dim = 256;
$scale = 32;
for($y=0;$y<=$dim/$scale;$y++) for($x=0;$x<=$dim/$scale;$x++) $matrix[$y][$x] = rand(0,3);
$img = imagecreate($dim,$dim);
imagecolorallocate($img,255,255,255);
$cols = Array(
imagecolorallocate($img,128,0,0),
imagecolorallocate($img,128,64,32),
imagecolorallocate($img,128,128,0),
imagecolorallocate($img,64,64,64)
);
for($y=0;$y<$dim;$y++) {
for($x=0;$x<$dim;$x++) {
$xx = floor($x/$scale); $yy = floor($y/$scale);
$x2 = $x%$scale; $y2 = $y%$scale;
$col = $cols[round((
$matrix[$yy][$xx]*($scale-$x2)*($scale-$y2)
+ $matrix[$yy][$xx+1]*$x2*($scale-$y2)
+ $matrix[$yy+1][$xx]*($scale-$x2)*$y2
+ $matrix[$yy+1][$xx+1]*$x2*$y2
)/($scale*$scale))];
imagesetpixel($img,$x,$y,$col);
}
}
header("Content-Type: image/png");
imagepng($img);
exit;
Trong thực tế, điều này có thể là một chút của một vấn đề XY. Những gì tôi đang cố gắng làm là tạo ra "mô hình lông" cho các sinh vật trong một trò chơi tôi đang lên kế hoạch. Đặc biệt tôi muốn có thể có nó để nhân giống kết hợp các yếu tố từ hai cha mẹ (có thể là màu sắc hoặc các yếu tố của mô hình), do đó, chỉ cần có một hạt giống ngẫu nhiên sẽ không thực sự cắt nó. Lý tưởng nhất là tôi cần một số loại phương pháp tiếp cận dựa trên véc tơ, nhưng tôi ra khỏi chiều sâu của tôi ở đó để bất kỳ sự trợ giúp nào cũng sẽ được đánh giá rất cao.
Tôi nghĩ lý do tại sao nó trông giống như một bản đồ nhiệt là bởi vì bạn không thực sự làm một nội suy tuyến tính thực sự của màu sắc hàng xóm gần nhất, bạn đang thực sự lựa chọn màu sắc gần nhất hiện có cho nội suy này. Đó cũng là lý do tại sao không có nội suy ở gần giữa bên trái. Tại sao bạn không thể trộn màu? Và nếu đó là kết cấu, bạn không thể pha trộn các kết cấu với một số thành phần alpha? – zakinster
Không thực sự là câu trả lời, nhưng có thể là câu chuyện có liên quan hữu ích. Tôi nghĩ rằng Alan Turing đã làm việc trên một số thuật toán toán học để sản xuất các mẫu da động vật thuộc loại này. Có lẽ chúng đáng xem? – AntonChanning