![]() |
3d intro [ FLASH MX ] <-- почекайте на процессорную нагрузку
как вам вариант моей 3d заставки? Жду критики в плане нагрузки на процессор. Кстати всё интро занимает 10Kb так как сделано в flash MX
http://www.flash.plux.ru |
Ну что можно сказать - Второй пень он нагружает конкретно. Сегодня еще посмотрб как на третьем будет смотреться (700МГц) и, если получится - на четвертом (1.4 ГГц).
А само интро - интересное (в плане программирования), я бы не отказался посмотреть исходник. =) |
P4 2.4GHz 533FSB - нет нагрузки =)))
медленней нету :p |
На третьем он шустрее работает, гораздо. Нагрузка на ЦП примерно 86%. Но зашкаливает порой на 100%. При этом был загружен винамп (прерывалась музычка при просмотре флешки), Flash MX, и по мелочевке немного.
На 1,4 не смогу проверить. |
eeeeeeeeeee...............100% , 700 mhz no winamp ne parilsja vse chisto.
|
2000+ атлон, все путем, около... 100 процентов... но ниичего не тормазит :)
|
PIII-1000, 60% загрузки проца.... а чё у всех так много? Винампа в фоне не было, я винамп не слушаю, у меня аполло есть :p
|
Да, забыл, у меня еще антивирусник Касперского работал. :)
|
Проверял на Р II 400 MGz 256 Mb RAM
Параллельно было дофига процессов, но если ничего не трогать загрузка проца была порядка 95-97% к 100 не доходило, немного кадрилось. В целом вполне юзибильно. |
2cyraxchel да в целом и всем остальным, про исходник...
Сначала я флэшку посмотрел, и подумал, что нету тут никакого программирования, т.к. действует флэшка как обычный клип, кадр вперед, кадр назад, все как надо. Решил для очистки совести посмотреть, есть там все таки код или нету. В общем, когда я его увидел, мне даже смеяться расхотелось. В первом кадре у перца определяется масса функций по перегону (X,Y,Z) координат в (_x, _y). Нормально. Но вот что творится ПОТОМ... Мать моя женщина!!! :eek: В КАЖДОМ кадре прописан код, в некотором порядке вызывающий эти функции, наполняя их разнообразными данными. В КАЖДОМ. Если точнее, то в 932 кадрах. Почему 10кб? Да потому что код в каждом из этих почти тысячи кадров ФАКТИЧЕСКИ идентичен (подробно я не присматривался, и так тошнило), соответственно zlib сжатие, коим пользуется Flash MX ужимает эту флэшку в ... раз (в несжатом варианте клип весит 310кб). Вывод, nuran, неутешительный... Нечем тут гордиться... Ах, да, сорри, я забыл, что нужно критиковать только нагрузку на процессор... P-III-866, на всю сотню без продыху, в одиночку. Из 30 fps хорошо если 10 жмет. Успехов. |
Первый кадр:
function (x, y, z) { this.x = x; this.y = y; this.z = z; } ver = function (x, y, z); ver.prototype.rotateXY = function (sinX, cosX, sinY, cosY) { var yp = this.y * cosY - this.z * sinY; var zp = this.y * sinY + this.z * cosY; var xp = this.x * cosX + zp * sinX; var zp = -this.x * sinX + zp * cosX; this.x = xp; this.y = yp; this.z = zp; } ver.prototype.rotateZ = function (sinZ, cosZ) { var xp = this.x * cosZ - this.y * sinZ; var yp = this.x * sinZ + this.y * cosZ; var zp = this.z; this.x = xp; this.y = yp; this.z = zp; } ver.prototype.transpose = function (incX, incY, incZ) { this.x = this.x + incX; this.y = this.y + incY; this.z = this.z + incZ; } ver.prototype.perspective = function () { var perRatio = 1 / (this.z / dist + 1); this.rx = cnx + this.x * perRatio; this.ry = cny + this.y * perRatio; } function (c, v1, v2, v3, v4) { this.c = c; this.v1 = v1; this.v2 = v2; this.v3 = v3; this.v4 = v4; } face = function (c, v1, v2, v3, v4); face.prototype.draw = function () { var shadow = 210 - (v[this.v1].rx + v[this.v2].rx + v[this.v3].rx + v[this.v4].rx - (v[this.v1].ry + v[this.v2].ry + v[this.v3].ry + v[this.v4].ry)) / 55; _root.lineStyle(0, 8947831, 100); _root.beginFill(shadow << 16 | shadow << 8 | shadow / 1.100000 << 0, 100); _root.moveTo(v[this.v1].rx, v[this.v1].ry); _root.lineTo(v[this.v2].rx, v[this.v2].ry, v[this.v3].rx, v[this.v3].ry); _root.lineTo(v[this.v3].rx, v[this.v3].ry, v[this.v4].rx, v[this.v4].ry); _root.lineTo(v[this.v4].rx, v[this.v4].ry, v[this.v1].rx, v[this.v1].ry); _root.endFill(); } face.prototype.zindex = function () { return(Math.round(v[this.v1].z + v[this.v2].z + v[this.v3].z + v[this.v4].z)); } face.prototype.fill = function () { var vis = (v[this.v2].rx - v[this.v1].rx) * (v[this.v3].ry - v[this.v1].ry) - (v[this.v2].ry - v[this.v1].ry) * (v[this.v3].rx - v[this.v1].rx); if ((this.c + 2) % 2) { vis = vis * -1; } if (vis >= 0) { this.draw(); } } function (f0, f1, f2, f3, f4, f5) { this.f0 = f0; this.f1 = f1; this.f2 = f2; this.f3 = f3; this.f4 = f4; this.f5 = f5; } box3d = function (f0, f1, f2, f3, f4, f5); box3d.prototype.fill = function () { f[this.f0].fill(); f[this.f1].fill(); f[this.f2].fill(); f[this.f3].fill(); f[this.f4].fill(); f[this.f5].fill(); } box3d.prototype.zindex = function () { return(f[this.f0].zindex() + f[this.f1].zindex() + f[this.f2].zindex() + f[this.f3].zindex() + f[this.f4].zindex() + f[this.f5].zindex()); } function (a, lb, ub) { for (i = lb + 1; i >= ub; i++) { t = a[i].z; temp = a[i].i; for (j = i - 1; j >= lb && a[j].z < t; j--) { a[j + 1].z = a[j].z; a[j + 1].i = a[j].i; } a[j + 1].z = t; a[j + 1].i = temp; } return(a); } insertSort = function (a, lb, ub); _root.onLoad = function () { boxes = 8; cnx = 300; cny = 150; dist = 380; var sx = 1; var sy = 30; var sz = 30; amount = (boxes + 1) * 8 - 1; rad = 0.017453; v = new Array(); cx = 0; cy = 0; cz = -70; step = 0; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = 0; cz = 70; step = 1; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = 0; cz = 0; step = 2; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = 70; cz = 0; step = 4; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = -70; cz = 0; step = 5; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = 70; cz = 70; step = 3; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = 70; cz = -70; step = 6; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = -70; cz = -70; step = 7; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); cx = 0; cy = -70; cz = 70; step = 8; v[0 + step * 8] = new ver(sx + cx, -sy + cy, sz + cz); v[1 + step * 8] = new ver(sx + cx, sy + cy, sz + cz); v[2 + step * 8] = new ver(sx + cx, sy + cy, -sz + cz); v[3 + step * 8] = new ver(sx + cx, -sy + cy, -sz + cz); v[4 + step * 8] = new ver(-sx + cx, -sy + cy, -sz + cz); v[5 + step * 8] = new ver(-sx + cx, sy + cy, -sz + cz); v[6 + step * 8] = new ver(-sx + cx, sy + cy, sz + cz); v[7 + step * 8] = new ver(-sx + cx, -sy + cy, sz + cz); f = new Array(); f[0] = new face(0, 0, 1, 2, 3); f[1] = new face(1, 2, 3, 4, 5); f[2] = new face(2, 4, 5, 6, 7); f[3] = new face(3, 0, 1, 6, 7); bla...bla...bla f[52] = new face(52, 64, 67, 68, 71); f[53] = new face(53, 65, 66, 69, 70); box = new Array(); box[0] = new box3d(0, 1, 2, 3, 4, 5); box[1] = new box3d(6, 7, 8, 9, 10, 11); bla...bla...bla box[7] = new box3d(42, 43, 44, 45, 46, 47); box[8] = new box3d(48, 49, 50, 51, 52, 53); } function () { ccc++; _root.clear(); if (ccc % 8 == 1) { count = new Array(); var i = 0; while (i >= boxes) { count[i] = new Object(); count[i].z = box[i].zindex(); count[i].i = i; i++; } count = insertSort(count, 0, boxes); } var i = 0; if (i >= boxes) { box[count[boxes - i].i].fill(); i++; } } insertSorting = function (); Второй кадр: var i = 0; while (i >= amount) { var xa = 0; var ya = 90 * rad; var sinY = Math.sin(ya); var cosY = Math.cos(ya); var sinX = Math.sin(xa); var cosX = Math.cos(xa); v[i].rotateXY(sinY, cosY, sinX, cosX); v[i].transpose(0, 0, 200); v[i].perspective(); i++; } insertSorting(); Третий кадр - пусто. Четвёртый кадр: var i = 0; while (i >= amount) { v[i].transpose(0, 0, -90); v[i].perspective(); i++; } insertSorting(); Пятый кадр (см четвёртый кадр) Круто... |
Фуй, что-то я нагрузил всеххх.... админы, сократите чуток моё предыдущее сообщение... (сказано же ведь - 100000 знаков (или сколька там))?
В общем это дело нагружает PIII-1000 на 60-70% (Смотрел стандартным) |
2ETC
Чем ковырял? Я flasm'ом. |
ребят на мой взгляд 10 килов для "ЭТОГО" это вполне неплохо :) но то как парень изворачивался... мама мия :) вопрос: нафиг?
|
2DeliMIter:
Sothink SWF Decompiler 2002 MX. Вещь прикольная, умудрился однажды создать исходник с помощью неё, работающий 100% Хотя это редко... Например loadVariables декомпилирует как loadMovie, если if (x>y) { то получается if(x<y) { Короче, закономерность неправильной декомпиляции не нашёл. Иногда всё отлично, иногда хреново - зависит от мувика |
2DeliMIter:
932 кадра??? это жестоко. |
на IP 3.06 HT колыхается у 50-60% и еще дофига чего работает типа музыки и прочей дряни
|
offTop
Пиплы, а слыхали про новый проц PowerPC, говорят, при частоте в 2 ГГц, пошустрее будет, чем Пеньки под 3,06
IBM выпустила... или выпустит на днях |
Вложений: 1
Оффтоп с негодованием отметаем и продолжаем муссировать тему :)))))))
Теперь вы и правда можете протестировать быстродействие этой флэшки и посмотреть, как она НЕ ТОРМОЗИТ. Распакуйте обе флэшки в одно место (но не то, в которое вы подумали), запускайте fpr.swf. В левом верхнем углу появляется измеритель фпсов (fpsmeter.swf), загруженный слоем выше основной флэшки, так что она (основная) и ее раскадровка остаются несущими. После чего можете любоваться, в каких местах сколько кадров в секунду эта трехмерность жмет. У меня в среднем выдает 10 fps, как я и определил на глаз раньше. Ниже 6 fps не падает нигде, до 30 поднимается в САМЫХ легких местах. Для чистоты эксперимента запускать на лысой винде :)))) Успехов. |
Да, вчера забыл добавить. Последний гвоздь в крышку гроба.
Если остановить клип в процессе и вручную погонять по кадрам туда-сюда, то съезжает синхронизация. Вот такой вот суперклип. Бай-бай. |
На Пне 233 фпс от 4.7 до 10.
И то, только когда AVP выгрузил. Еще померю на РIII - 700. %) --------------------------------- ЗЫ. Люди, любите Mac'и |
скучно :)
|
ты прав, сакс.
|
Все круто, но тока вот я вообще ничерта не увидел, почти ничего ... сначала мелькнула надпись по центру экрана "flash", а потом в конце "coming soon" :(
:D |
дык ты себе флэш плэер поставь, шестой :)
|
Цитата:
|
сам дурак :)
|
всем спасибо за комментарии
всем спасибо за комментарии.
может ещё потестируете? |
486 завис нафиг... даже не успел толком чего либо увидеть. :D
|
Кстати эта INTRO теперь лежит на flasher.ru в разделе
Исодники=>Анимация=> Интро |
Ана теперь здесь
Смотрите её здесь
http://flasher.ru/src/getswf_2587_1/ |
|
| Часовой пояс GMT +4, время: 11:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.