Làm thế nào tôi có thể tạo ra một kết cấu trông giống như lá trà còn sót lại?


11

Chúng tôi đang thực hiện một dự án cho iPhone và Windows Phone 7, nơi chúng tôi muốn có thể tạo ra lá trà dưới đáy cốc. Nó không phải trông giống như thật, và thực tế phim hoạt hình-y vẫn ổn.

Những loại kỹ thuật chúng ta nên nghiên cứu để thực hiện điều này? Có thư viện nào (tốt nhất là bằng C, nhưng chúng tôi có thể dịch) sẽ hữu ích không?

Dưới đây là một số mẫu được lấy từ tìm kiếm Google Image

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Bạn có thể được cụ thể hơn về yêu cầu của bạn? Họ có cần phải xoay quanh, mỗi lần khác nhau không? Bởi vì nếu không có yêu cầu về hoạt hình hoặc tính độc đáo, tôi sẽ không hiểu tại sao bạn không thể chỉ có một bức ảnh / bản vẽ được sử dụng làm họa tiết.
phillipwei

@phillipwei Có, họ sẽ phải khác nhau mỗi lần, hoặc ít nhất là đủ khác biệt đến mức nó sẽ không cảm thấy giống như hình ảnh chứng khoán hoặc bất cứ điều gì.
Jedidja

Câu trả lời:


15

Làm thế nào tôi có thể làm điều đó để tôi có thể duy trì một số kiểm soát nghệ thuật và không có khả năng mất nhiều thời gian cố gắng điều chỉnh một phương pháp thủ tục để làm cho nó phù hợp ...

Đầu tiên, hãy tự tay tạo ra một số nhánh của lá trà làm "hồ bơi" nghệ thuật của bạn - không phải là một lá trà có giá trị như toàn bộ một tách, mà giống như một nhóm nhỏ hơn. Nói, 20 trong số họ hay như vậy?

Sau đó đặt một số ngẫu nhiên của chúng tại tọa độ ngẫu nhiên trên cơ sở "cốc". Cung cấp cho mỗi vòng quay ngẫu nhiên và tỷ lệ cộng với phản chiếu ngang và / hoặc dọc ngẫu nhiên. Điều này nên tạo ra một kết quả tốt.

Cách tiếp cận này sẽ mang lại cho bạn sự tự do nghệ thuật trong việc tạo ra các cụm riêng lẻ để có giao diện bạn muốn, đồng thời cho phép tạo ra nhiều kết quả lớn (giả sử đủ các họa tiết để lựa chọn).

Ngoài ra, với phương pháp này (và bất kỳ phương pháp ngẫu nhiên nào bao gồm cả nhiễu Perlin), bạn thực sự có thể gieo hạt tạo số ngẫu nhiên khi bắt đầu quá trình với một hạt giống đã biết để tạo ra kết quả có thể lặp lại. Nếu bạn lưu hạt giống, bạn có thể tạo lại chính xác mẫu tương tự một lần nữa bằng cách khởi động lại ngay trước khi chuỗi bắt đầu. Bạn thậm chí có thể làm những điều thú vị như có ai đó gõ tên của họ, biến các chữ cái thành một số (tổng ASCII, v.v.), sau đó sử dụng đó làm hạt giống như một loại "mẫu lá trà này được tùy chỉnh cho BẠN!" Điều.

Đây là một số mã giả cho những gì tôi muốn nói, nếu điều đó giúp ...

var sprites = [...]; // Array of tea leaf sprites

var n_leaves = rand(5)+5; // Random number of leaves from 5-9
for (i=0; i<n_leaves; i++) {
    var sprite_index = rand(sprites.length);  // Random sprite index
    var r = rand(CUP_DIAMETER);          // Random radius for point on disk calc
    var theta = rand(2*PI);              // Random theta (rotation) for point on disk
    var sprite_x = sqrt(r) * cos(theta); // Sprite X
    var sprite_y = sqrt(r) * sin(theta); // Sprite Y
    var sprite_rotation = rand(2*PI);    // Sprite rotation
    var sprite_scale = rand(1) + 0.5;    // Sprite scale from 0.5 to 1.5
    var sprite_h_mirror = (rand(1) < 0.5 ? true : false); // If true, mirror horizontally
    var sprite_v_mirror = (rand(1) < 0.5 ? true : false);   // If true, mirror vertically
    draw_sprite(sprite_index, sprite_x, sprite_y, sprite_rotation, sprite_h_mirror, sprite_v_mirror);
}

Hãy xem http://mathworld.wolfram.com/DiskPointPicking.html để biết một cuộc thảo luận tuyệt vời về cách chọn một điểm ngẫu nhiên trong đĩa và lý do tại sao tôi sử dụng toàn bộ điều sqrt / sin / cos đó.


7

Hãy thử nhiễu perlin với giá trị ngưỡng nhị phân là 0,8 hoặc hơn?

Đã tải hình ảnh ví dụ lên http://imgur.com/a/Ydc4y . Đầu tiên là hình ảnh thứ hai với một ngưỡng được áp dụng. Thứ hai là tiếng ồn perlin cơ bản, trong đó bạn có thể tìm thấy nhiều tài liệu tham khảo tốt như http://en.wikipedia.org/wiki/Perlin_noirhttp://http.developer.nvidia.com/GPUGems2/gpugems2_ch CHƯƠNG26.html .

Bạn có thể chơi một chút với số lượng và tỷ lệ quãng tám trong tiếng ồn perlin để thay đổi mức độ mượt mà của đầu ra, cũng như ngưỡng để xác định mức độ (trung bình - như tiếng ồn) của lá trà sẽ có.


3
Đây có thể là một câu trả lời tốt hơn với một số liên kết và ví dụ về những gì có thể được sản xuất.
MichaelHouse

ý tưởng tốt, mặc dù hình ảnh tĩnh có thể được sử dụng và một vùng hình tròn có thể được kẹp trong bộ đổ bóng pixel và các cạnh của vòng tròn đó không có lông mà không cần tạo ra giá trị nhiễu Perlin trên mỗi pixel (theo kinh nghiệm của tôi, phương pháp này hơi chậm ).
teodron

Tạo tiếng ồn perlin là một chút nặng nề; bạn có thể sử dụng kết cấu nhiễu được tính toán trước cho hiệu ứng này (và nhiều hiệu ứng khác). Bạn cũng có thể sử dụng phương pháp để tính toán trước một vài.
dascandy

4
-1. Đã nhìn vào rất nhiều lá trà và rất nhiều tiếng ồn (1 / f) Perlin, tôi không thể nói rằng họ nhìn giống nhau. Tiếng ồn Perlin có thể là điểm khởi đầu đúng, nhưng mục tiêu không phù hợp với biến thể tổng (1 / f) thông thường.

1
Tôi đồng ý rằng cách tiếp cận tiếng ồn perlin là không thực tế. Để xác minh, tôi đã thử tạo lại hiệu ứng trong photoshop bắt đầu từ nhiễu perlin. Đây là kết quả . Trong khi tôi nghĩ rằng nó có vẻ ổn, vấn đề nằm ở số lượng điều chỉnh tôi phải làm. Thực sự không thể nghĩ ra cách nào để tạo lại tất cả các điều chỉnh đó theo thủ tục, vì vậy tôi bỏ phiếu cho cách tiếp cận dựa trên sprite được đề xuất bởi Tim Holt.
David Gouveia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.