OpenGL ES 1.1 - реалистично изобразяване на аквариум

Имам няколко мрежи, които се опитват да наподобяват аквариум. Мога да преместя гледната точка или камерата, към която има прикрепена светлина. Само предното стъкло е напълно прозрачно, предполага се, че е стъклото на екрана.

Опитах да използвам функцията за смесване glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) с някои комбинации от дифузен материал, но винаги изглежда като CAD чертеж, въпреки факта, че някои реалистични текстури могат да помогнат за подобряване на външния вид, просто не изглежда правилно.

Мога да форсирам желания резултат чрез промяна на всички възможни комбинации от glBlendFunc и glMaterialfv, но може да отнеме известно време. Затова публикувах въпроса тук, за да видя дали някой е постигнал този визуален ефект, всяка помощ или коментар също се оценяват.


person rraallvv    schedule 21.12.2012    source източник
comment
Може да помогне, ако можете да публикувате снимка на това как изглежда вашето изобразяване и какво не харесвате / се опитвате да постигнете. (може да не е достатъчно само да си играете с режима на смесване)   -  person JasonD    schedule 21.12.2012
comment
@JasonD добави няколко екранни снимки, изгледът е донякъде реалистичен, но все още може да бъде подобрен   -  person rraallvv    schedule 21.12.2012


Отговори (1)


Изглежда, че му липсват каквито и да било отражения, които и водата, и стъклото биха показали. Огледален термин върху водната повърхност може да е добре, или ако не успеете, можете допълнително да смесите карта на околната среда. Всъщност бих намалил малко непрозрачността на водата, за да направя границите по-малко очевидни и да оставя огледалните отражения да покажат дефиницията.

Самото стъкло също трябва да има някакъв вид отражение на околната среда, ако изобразявате това в нещо различно от черна стая. Отново проста и фина карта на околната среда вероятно би била достатъчна.

Други неща, които може да искате да опитате (като имате предвид, че нямате шейдъри на ES1.1):

Каустик. Това са ярките вълнообразни линии, които виждате на дъното на плувен басейн, причинени от светлината, разпръсната в различни посоки от движението на повърхността. Можете да фалшифицирате тези с алфа текстура и разклащане на върховете наоколо.

Пречупване. Можете да изобразите подводната сцена във вторичен буфер и след това да го използвате като текстура, което ви позволява да изкривите/анимирате донякъде изображението. Аквариумът не показва твърде много от това и наистина трябва да го видите да се клати само ако гледате през горната повърхност, но може би ще бъде интересно.

person JasonD    schedule 21.12.2012