![]() |
земной шар
Посоветуйте, пожалуйста, как лучше реализовать земной шар во флэше. Шар будет полупрозрачным с однотонной текстурой материков (текстура будет видна только на передней поверхности, обратная сторона не будет видна, так как внутри шара будет ещё одно изображение). Но земной шар, как и полагается, должен вращаться, следовательно текстура должна корректно перемещаться по поверхности, чтобы создавалась реалистичная иллюзия вращения шара. Как это лучше реализовать? ...может где-то были подобные уроки, то дайте плиз ссылочку, а то по поиску не нашёл ничего подходящего :umnik2:
...да, ещё - это будет типа баннерка с лого компании, но на главной странице сайта, тоесть это не в баннерную сеть, так что размер этой флэшки может быть больше стандартного, но всё-же размер (в КБ) важен. Так что, к примеру, в 3DS Max не получиться всё смоделировать, отрендерить а потом поместить во флэш ...слишком тяжёлый получиться. |
Есть полезная штука - поиск, можно много интересного найти, тем более такой распространенный вопрос про Земной шар
http://makc.coverthesky.com/FlashFX/ffx.php?id=8 |
вау!... огромнейшая благодарность, chingachgoog!
да, поиск полезная штука, но пару десятков страниц пересмотрел, ничего подобного не нашёл. Благодарю за ссылку! |
...да уж, пример хорош, ...только это пример "для программистов" - нефига код не объясняется, что за переменные и как их менять под свои потребности - ничё не понятно. Тем более земной шар, который представлен на сайте имеет совсем другой код, чем тот что приводит автор.
Может есть ещё вариант с примером "для дизайнеров"? Или может кто-то сможет объяснить как менять код и что от чего зависит? По поиску действительно ничего не нашёл. Только советы с перемещением плоской карты поверхности Земли, относительно земного шара. Но это же некрасиво, не реалистично и плоско. в реальности шар представленный на сайте имеет вот такой код var p = new flash.geom.Point(); cSun = 16774122; var pngAlphas = flash.display.BitmapData.loadBitmap("alphas.png"); var pngClouds = new flash.display.BitmapData(512, 256); pngClouds.draw(flash.display.BitmapData.loadBitmap("clouds.png")); var pngEarth = new flash.display.BitmapData(512, 256); pngEarth.draw(flash.display.BitmapData.loadBitmap("earth.png")); pngClouds.copyChannel(pngAlphas, pngAlphas.rectangle, p, 4, 8); var map = new flash.display.BitmapData(256, 256, false, 0); map.copyChannel(pngAlphas, new flash.geom.Rectangle(0, 0, 256, 256), p, 1, 2); map.copyChannel(pngAlphas, new flash.geom.Rectangle(256, 0, 256, 256), p, 1, 4); var sphere = new flash.filters.DisplacementMapFilter(map, p, 4, 2, 256, 256, "color", 0, 0); this.createEmptyMovieClip("gradient_mc", this.getNextHighestDepth()); with (gradient_mc) { var matrix = new flash.geom.Matrix(); matrix.createGradientBox(200, 200, 5.000000E-001); beginGradientFill("radial", [cSun, cSun], [20, 0], [0, 255], matrix, "pad", "linearRGB", -3.000000E-001); moveTo(0, 0); lineTo(0, 256); lineTo(256, 256); lineTo(256, 0); endFill(); _visible = false; } // End of with var grad = new flash.display.BitmapData(256, 256); grad.fillRect(grad.rectangle, 0); grad.draw(gradient_mc); var mc = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); var bmp = new flash.display.BitmapData(256, 256); mc.attachBitmap(bmp, mc.getNextHighestDepth()); mc._x = mc._x + 22; mc._y = mc._y + 22; mc.filters = [sphere]; var edx = 0; var cdx = 0; var m = new flash.geom.Matrix(); var m1 = new flash.geom.Matrix(); var tmp1 = new flash.display.BitmapData(256, 256); var tmp2 = new flash.display.BitmapData(256, 256); onEnterFrame = function () { edx = edx + 1; cdx = cdx + 8.000000E-001; edx = edx % 512; cdx = cdx % 512; m.tx = edx; m.translate(-512, 0); bmp.draw(pngEarth, m); m.translate(512, 0); bmp.draw(pngEarth, m); tmp1.draw(bmp); m.translate(-512, 0); tmp2.draw(pngAlphas, m); m.translate(512, 0); tmp2.draw(pngAlphas, m); tmp1.copyChannel(tmp2, tmp2.rectangle, p, 2, 8); bmp.draw(grad, m1, null, "add"); bmp.draw(tmp1, m1, null, "darken"); m.tx = cdx; m.translate(-512, 0); bmp.draw(pngClouds, m); m.translate(512, 0); bmp.draw(pngClouds, m); }; ...конечно, его можно было-бы скопировать и не мучиться. Но мне нужны другие размеры, другая прозрачность и другие эффекты. Тоесть поверхность Земли надо практически полностью изменить, сохранить нужно только функциональность. |
"в реальности" тебе надобно пойти одним кликом дальше на ?id=9 и отпринтскринить оттудова карту, затем проимпортировать в библиотеку, и тогда твой код примет следующий вид:
Код:
my_mc.filters = [new DisplacementMapFilter (BitmapData.loadBitmap ("map_id"), new Point (), 4, 2, 2*256, 2*256)]; |
Тема закрыта. Автор получает плюсы за взлом чужого swf и неоформления взломанного кода тегами форматирования.
Учим правила форума и подразделов. До бана один шаг. |
| Часовой пояс GMT +4, время: 05:49. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.