Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   земной шар (http://www.flasher.ru/forum/showthread.php?t=105852)

Monaco Felice 25.12.2007 14:25

земной шар
 
Посоветуйте, пожалуйста, как лучше реализовать земной шар во флэше. Шар будет полупрозрачным с однотонной текстурой материков (текстура будет видна только на передней поверхности, обратная сторона не будет видна, так как внутри шара будет ещё одно изображение). Но земной шар, как и полагается, должен вращаться, следовательно текстура должна корректно перемещаться по поверхности, чтобы создавалась реалистичная иллюзия вращения шара. Как это лучше реализовать? ...может где-то были подобные уроки, то дайте плиз ссылочку, а то по поиску не нашёл ничего подходящего :umnik2:
...да, ещё - это будет типа баннерка с лого компании, но на главной странице сайта, тоесть это не в баннерную сеть, так что размер этой флэшки может быть больше стандартного, но всё-же размер (в КБ) важен. Так что, к примеру, в 3DS Max не получиться всё смоделировать, отрендерить а потом поместить во флэш ...слишком тяжёлый получиться.

chingachgoog 25.12.2007 14:57

Есть полезная штука - поиск, можно много интересного найти, тем более такой распространенный вопрос про Земной шар
http://makc.coverthesky.com/FlashFX/ffx.php?id=8

Monaco Felice 25.12.2007 15:39

вау!... огромнейшая благодарность, chingachgoog!
да, поиск полезная штука, но пару десятков страниц пересмотрел, ничего подобного не нашёл. Благодарю за ссылку!

Monaco Felice 26.12.2007 03:05

...да уж, пример хорош, ...только это пример "для программистов" - нефига код не объясняется, что за переменные и как их менять под свои потребности - ничё не понятно. Тем более земной шар, который представлен на сайте имеет совсем другой код, чем тот что приводит автор.
Может есть ещё вариант с примером "для дизайнеров"? Или может кто-то сможет объяснить как менять код и что от чего зависит?
По поиску действительно ничего не нашёл. Только советы с перемещением плоской карты поверхности Земли, относительно земного шара. Но это же некрасиво, не реалистично и плоско.

в реальности шар представленный на сайте имеет вот такой код

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

...конечно, его можно было-бы скопировать и не мучиться. Но мне нужны другие размеры, другая прозрачность и другие эффекты. Тоесть поверхность Земли надо практически полностью изменить, сохранить нужно только функциональность.

aQuestion 26.12.2007 03:59

"в реальности" тебе надобно пойти одним кликом дальше на ?id=9 и отпринтскринить оттудова карту, затем проимпортировать в библиотеку, и тогда твой код примет следующий вид:
Код:

my_mc.filters = [new DisplacementMapFilter (BitmapData.loadBitmap ("map_id"), new Point (), 4, 2, 2*256, 2*256)];
вместо того, чтобы напрягать декомпилер, напрягли бы лучше мозги.

iNils 26.12.2007 10:56

Тема закрыта. Автор получает плюсы за взлом чужого swf и неоформления взломанного кода тегами форматирования.
Учим правила форума и подразделов. До бана один шаг.


Часовой пояс GMT +4, время: 05:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.