![]() |
Away3d chrome material
Вложений: 1
Привет, товарищи :)
Делал ли кто-нибудь в away3d эффект хромовой поверхности? Вот я рою интернет и нахожу ссылки на любопытные примеры: http://away3d.com/comments/chrome-ball // здесь используется SkyBox http://www.closier.nl/blog/?p=46 // здесь тоже SkyBox http://away3d.com/comments/ // здесь описываются новые потрясающие свойства, доступные в Away3d 4.1 alpha В том числе на этой последней странице есть ссылка на демо, и в этом демо как раз то что нужно. Однако, исходников этой демки, как ни печально, нет. А есть только отсылка к уроку, рассказывающему про ATF текстуры. Теперь про суть проблемы. В приложении есть флешка, где реализованы мои попытки сделать хромовую ножку стола. Если нажимать пробел, то можно увидеть два варианта: 1) По-умолчанию вместо цилиндрической ножки стола выводится правильная прямоугольная призма, грани которой суть плоскости PlanarReflectionTexture (демку можно посмотреть здесь). На этой же странице приводится пример натягивания отражающей текстуры на шар, но для цилиндра это работает плохо (совсем не как хромированная поверхность). 2) Второй вариант – это использование цилиндра с текстурой отражающей SkyBox (используется метод EnvMapMethod). Совсем уже не хром. Так вот я и мучаюсь. Может ли кто-нибудь ткнуть носом в хороший урок или совет о том как сделать хромовую ножку у стола, чтобы он отражал не только SkyBox, но и нижнюю цилиндрическую ногу? UPD: у меня при попытке просмотра флешки на форуме вылезает Context3d error. При скачивании и локальном запуске все нормально. |
Вложений: 1
Привет еще раз :)
Я оказался слеп и не заметил, что эта демка с отражающей головой вполне себе мило предоставляет исходники. Достаточно было кликнуть правой кнопкой и вот они 'View source'. Однако, этот отражающий материал никак не хочет "красиво" работать на цилиндрической поверхности. На более или менее сферических поверхностях – сказка! А вот с цилиндром туго. Собственно приложу демку, в которой можно нажимать пробел и смотреть различные объекты (цилиндр, конус, сфера, капсула, тор, параллелепипед) с этим материалом, чтобы понять о чем я говорю. Есть ли у кого-нибудь мысли, как и цилиндр сделать былью? |
Я бы стучался на родной форум Away3d и там бы спрашивал, тут слишком мала концентрация людей, знакомых с away3d, а уж таких, которые бы заморачивались отражающими поверхностями...
|
я бы не сказал что форум Away3d уж так активен, из 6 вопросов что я там задавал, мне ответили только по 2 .
По поводу демок, первое что я сделал, когда начал въезжать в away это собрал все демки которые они предоставляют , там их штук 15, но очень помогло, bav рекомендую и вам собрать, там есть еще два примера с зеркальной поверхностью. По поводу цилиндра, попробуйте. 1.Исказить целиндер, чуть чуть, то есть все вершины перемножить на Math.rendom()*0.2+0.9. 2. Может есть смысл тоже самое попробовать с точками нанесения текстуры, хотя ХЗ. На всякий, я так добираюсь до вершин. где data= new Vector.<Number>();//Массив с точками для меша с шагом 13 тоесть это меш.геометрия.vertexData data.push(v.x, v.y, v.z, 0, 1, 0, 1, 0, 0, point.x, point.y, 0, 0); v= позиция точки point= положения текстуры 0-1 3. там есть , 0, 1, 0, 1, 0, 0 - я понятия не имею что это за ересть, но можете тоже ее проверить, может даст какойто результат. Код AS3:
|
А какой метод отражения используется? Мне кажется тут рефракшен поможет достичь нужного эфекта.. Правда у него нельзя маску для отражения по спекуляру задавать
Кстати еще скажу что с динамическим отражением, лучше его отрендерить один раз :). Все таки он довольно нагрузный. Конечно если не нужно динамику видить активно, а просто окружение. |
Вложений: 1
Asfel, используется метод FresnelEnvMapMethod. Попытка использования RefractionEnvMapMethod ни к чему хорошему не привела – начинает отражаться один только SkyBox, а нужно чтобы отражались и другие объекты.
vorodis2, спасибо на информацию. Немного поколдовав с точками меша, удалось добиться лучшего эффекта (но все же недостаточного, см. приложение). Что, по сути, произошло: я сдвинул точки, образующие боковую поверхность цилиндра, по оси Y вниз, и экспериментальным путем определил значение для еще одной магической переменной в массиве, описывающем точки. Код AS3:
Код:
0 1 2 3 4 5 6 7 8 9 10 11 12Код:
[3] - это [0] / diameterВот такая шляпа. Может кто-нибудь знает, за что отвечают значения в таблице с индексами 3-12? И кстати, у всех вылезает Context3D Error при просмотре флешки на форуме? |
3,4,5- отвечает за тень, то есть как ее визуализировать и ее интенсивность, в Вашем случии наверно очень важные.
9,10 - это положения текстуры на точке, то есть как растягивать текстуру. |
Очень странно с рефракшен методом отражаться тоже должно было все :). Но рефракшен имеет такие свойства как изменение положения текстуры отражения и ее масштабирования, так что мог бы дать более приемлемый эффект. Я кстати не совсем понимаю какого вы эфекта хотите добится, но возможно стоит ковыряться с самим текстур рендером в Рендер текстуре... Хотя все это костыль какой то но возможно выставление другйо камеры, линзы и тд.. при рендере даст нужный эфект
|
Вложений: 3
Цитата:
Выложу-ка я код и полные исходники, чтобы было понятно, что и как я делаю, может это поможет найти проблему. Вот главный класс: Код AS3:
Вложение 29192 Кстати попытка применить reflectiveMaterial к нижнему плоскому подстолью не приносит желаемого результата – в нем не отражается вертикальная цилиндрическая нога. |
Нужно отрендерить ножку на плоскую текстуру, затем положить ее как планар рефлек на подножку. Для ножки отрендерить куб который находится гораздо ближе к ножке либо плоскую стену %)
Добавлено через 5 минут Ах да, для того чтобы отражалось то что нужно нужно игратся с центром отражения Код:
reflectionTexture.position = new Vector3D()На деле для меня оказалось очень сложно управлять динамическим отражением т.е чтобы оно отражало то что мне нужно и там где нужно. Поэтому я либо рендерю отражение 1 раз на лету и патом использую как текстуру отражения. Либо отражаю заранее подготовленные текстуры. Кроме того динамическое отражение довольно таки сильно грузит систему :) |
| Часовой пояс GMT +4, время: 23:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.