Як я можу створити текстуру, схожу на залишені чайні листя?


11

Ми працюємо над проектом для iPhone та Windows Phone 7, де ми хотіли б створити чайні листя на дні чашки. Це не повинно виглядати фотореалістично, а насправді мультфільм - це нормально.

Які саме методики ми повинні дослідити для цього? Чи є бібліотеки (бажано на мові С, але ми можемо перекласти), які були б корисні?

Ось кілька зразків, витягнутих із пошуку зображень Google

введіть тут опис зображення введіть тут опис зображення


Чи можете ви бути більш конкретними щодо своїх вимог? Чи потрібно їх кружляти навколо, кожного разу різні? Тому що, якщо немає вимог до анімації або унікальності, я не бачу, чому ви не можете просто використовувати фотографію / малюнок як текстуру.
phillipwei

@phillipwei Так, вони повинні були б кожен раз бути різними або принаймні достатньо різними, щоб вони не відчували себе як запасні фотографії чи що завгодно.
Jedidja

Відповіді:


15

Як я, мабуть, зробив це, щоб я міг підтримувати деякий контроль над мистецтвом і не потенційно витрачати тривалий час, намагаючись налаштувати процедурний метод, щоб отримати це просто правильно ...

По-перше, створіть вручну ряд запахів із згустків чайного листя, як ваш художній "басейн" - не кожен, як ціла чашка чайних листків, а більше схожий на меншу групу. Скажіть, 20 з них чи так?

Потім розмістіть випадкову кількість їх у випадкових координатах на базі «чашки». Надайте кожному випадкове обертання та масштаб плюс випадкове горизонтальне та / або вертикальне дзеркальне відображення. Це повинно створити хороший результат.

Такий підхід надасть вам художню свободу у створенні окремих груп, щоб мати вигляд, який ви хочете, одночасно дозволяючи отримати величезну кількість різноманітних результатів (за умови, що достатньо спраць на вибір).

Крім того, за допомогою цього (і будь-якого випадкового методу, включаючи шум на основі Перліна), ви могли насправді запустити генератор випадкових чисел на початку процесу за допомогою відомого насіння для отримання відтворюваних результатів. Якщо ви збережете насіння, ви зможете точно відтворити один і той же візерунок, повторно повторне повторення перед початком послідовності. Ви навіть можете зробити цікаві речі, такі як, щоб хтось вводив своє ім’я, перетворював букви в цифру (сума ASCII тощо), а потім використовував це як насіння як якусь "цю схему чайного листя, налаштовану для ВАС!" річ.

Ось псевдокод того, що я маю на увазі, якщо це допомагає ...

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

Ознайомтеся з http://mathworld.wolfram.com/DiskPointPicking.html, щоб отримати чудову дискусію про те, як вибрати випадкову точку на диску і чому я використовую цілу річ sqrt / sin / cos.


7

Спробуйте перліновий шум із двійковим значенням обрізання 0,8 або близько того?

Завантажено приклад зображення на http://imgur.com/a/Ydc4y . Перше - це друге зображення із нанесеним порогом. Другий - базовий перлин-шум, для якого ви можете знайти кілька хороших посилань, таких як http://en.wikipedia.org/wiki/Perlin_noise та http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter26.html .

Ви можете трохи пограти з кількістю та масштабом октав у шумі перлин, щоб змінити, наскільки плавно буде виглядати вихід, а також поріг, щоб визначити, скільки в середньому - як це шум) чайних листків буде.


3
Це може бути кращою відповіддю з деякими посиланнями та прикладами того, що можна зробити.
MichaelHouse

Хороша ідея, хоча статичні зображення можна використовувати, а кругову область можна затиснути в піксельній шейдері, а краї цього кола виявляються без необхідності створювати значення шуму Перліна на піксель (з мого досвіду, цей метод трохи повільний ).
теодрон

Генерація шуму перліну сама по собі трохи важка; Ви можете використовувати попередньо обчислені текстури шуму для цього (та багато іншого) ефекту. Ви також можете використовувати метод для попереднього обчислення кількох.
дасканді

4
-1. Подивившись багато чайних листків і багато суми (1 / f) шуму Перліна, не можу сказати, що вони виглядають однаково. Шум Перліна може бути правильною відправною точкою, але мета не підходить для звичайного варіанту суми (1 / f).

1
Я погоджуюся, що підхід до шуму перлін непрактичний. Щоб перевірити це, я спробував відтворити ефект у фотошопі, починаючи від шуму перліна. Ось результат . Хоча я думаю, що це виглядає нормально, проблема полягає в кількості налаштувань, які я повинен був зробити. Не можу реально придумати спосіб відтворити все це налаштування процедурно, тому я голосую за сприйт-підхід, запропонований Тімом Холтом.
Девід Гувейя
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.