Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   новая жизнь Motion Tween (http://www.flasher.ru/forum/showthread.php?t=62065)

Iv 18.08.2004 19:10

новая жизнь Motion Tween
 
я это публикнул и в AS2, и здесь, чтобы потом не говорили, что не видели.
Код:

import com.sharedfonts.Path
// source http://www.sharedfonts.com/Path.as
_root.createEmptyMovieClip("mc", 0);
_root.mc.lineStyle(5, 0xFF0000, 100);
_root.mc.lineTo(.2, 0);
_root.mc.p0 = 100;
_root.mc.p1 = 100;
_root.mc.speed = _root.mc.path_position=0;
_root.mc.dir = 0.1;
_root.mc.onEnterFrame = function() {
_root.mc.tween_path = new Path(400, 0,
this.p1, 0, 100, 100, 100, 200, 450, 380, 0, this.p0);
// show path
_root.clear(), _root.lineStyle(0, 0, 30);
_root.moveTo(400, 0);
_root.curveTo(this.p1, 0, 100, 100);
_root.curveTo(100, 200, 450, 380);
_root.curveTo(0, this.p0, 400, 0);
//
this.p1 += 1, this.p0 += 1;
this.path_position += this.speed += this.dir;
if (random(100) == 1) {
this.dir = -this.dir;
}
var poz = this.tween_path.getPointByPosition(this.path_position);
this._x=poz._x, this._y=poz._y;
};


Nox Noctis 18.08.2004 19:20

ии.. и что?

я наверна чего-то не понял...

Iv 18.08.2004 19:22

везет

Nox Noctis 18.08.2004 19:28

запостить кучу абсолютно нечитабельного кода не очень понятного назначения - это офигенно круто. ты это хотел сказать? :)

Iv 18.08.2004 19:30

его нужно просто взять и тестануть.
читать - голову сломаешь. я это пол года делал.

Nox Noctis 18.08.2004 19:33

блин. да я потому и спрашиваю - я взял и тестанул. вижу непонятную хрень. но зная примерно уровень твоих экспериментов -
я предположил что не узрел чего-то архигениального :)) без иронии.

может объяснишь чего ты добился делая это пол года?
ладно я туповат, но думаю тут найдутся еще люди, которым интересно. или для кого ты это постил?

Nox Noctis 18.08.2004 19:54

о, у меня это таки заработало :))

я сначала видел красную точку в одном углу экрана и кривую колбасящуюся в другом углу :)

заработало, прикольно. только нихрена не понятно.

DeliMIter 18.08.2004 19:55

"What a waste of three years!" (c) Sanzo

Я понял твою идею. Создается путь и по нему движется маленькая красная точка.

Попытка 1. Не пашет. Оказалось, надо скачать класс.

Скачал.
Попытка 2. Не пашет. Путь создается.
Потрейсил результат гетПозишн - NaN. Кто-то забыл объявить какую-то переменную.

Попытка 3. 6-й плейер, AS1. Не пашет. Ага, нужен класс.

Попытка 4. 6-й плейер, AS2. Ура. Красная точка на пути. Едет. Гениально!!! Не побоюсь этого слова: ГЕНИАЛЬНО!!!

Возникают есстественные вопросы: Что в этом коде героического, если основной героический бред сделал Иван Дембицкий, что там было делать полгода, и на что я потратил свои 15 минут?

Iv 18.08.2004 20:00

- да, соррри
- это программный MotionTween
в примере можно узреть движение точччечки по изменяющемуся пути.

путь задается точками безье (x,y,x,y,x,y), где последняя точка одной безье является первой точкой следующей безье.
Если задана контрольная точка последней безье, но не задана последняя точка, то последней точкой становится первая точка пути.

итак, зачем это:
- снижение размеров анимации - не весит ничего и не зависит от количества кадров.
- возможность произвольного изменения скорости объекта на этом пути, при этом никакой дискретности.
- возможность динамического изменения самого пути.

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

сорри еще раз. то что у меня пол года шилом сидело, наконец-то прорвало и мне ажно показалось, что все в курсе %)

Iv 18.08.2004 20:01

я и есть он :)

Iv 18.08.2004 20:04

т.е. я пол года потратил на Path а не на пример его работы :)

DeliMIter 18.08.2004 20:10

Цитата:

Оригинал написал(а) BitSky
я и есть он :)
Ыыыыыыыыы..... : ))))))
Гыгыгыгы : ))))
Смешно... : ))))))

Ты сразу бы написал, что, для чего... А то тут был один, выложил какой-то архив, флэш-чат называется, что, для чего, зачем... Его спросили, а он в ответ: "поставь апач!" Тоже без пояснений. Как будто все знают начало и конец этой мысли.

В тему: некоторое время назад разбираясь с фласмом я видел в ссылках первого уровня флассемблерный исходник моушн-твина с гайдом, где траектория менялась из круга в квадрат и наоборот. И сделано это было как-то так, что вроде это был реальный моушн твин, только организовывался он асмовыми командами. Если честно, то у меня не хватило терпения разобраться, как там было, но он был чуть ли не под пятерку (не уверен).

KidsKilla 18.08.2004 20:11

не узнали дембицкого, блин)))

классная штука. теперь свф будут по 1 кб, а все перемацаются в программеров)
чесно говоря сложный моушн твин лично я использую редко, а простенькие легче так замутить, но в принципе идея хороша)))

Iv 18.08.2004 20:19

Да, возможно.
Асмы там для ускорения бисекции были видать. Я тоже вынужден был бисекцию заюзать. но все остальное по-честному %)
Вообще это продукт к которому я стремился, но по ходу пьесы так глубоко залез в безье, что собираюсь делать набор классов для расширения рисовательных возможностей.
Например уже могу нарисовать анимированную пунктирную кривую. Причем пунктирные линии одинаковые, и движутся они по кривой, которую сами же и образуют.
Объяснил, так объяснил :).

2KidsKilla:
не заморачивайся ты на MotionTween. это то, что лежит на поверхности. Если включить фантазию, то ой много чего можно с помощью этой штуки делать.

DeliMIter 18.08.2004 20:23

Я придумал проблему. В реальной жизни, когда аниматор творит моушн, он руководствуется не математическим выражением траектории, а визуальным восприятием происходящего на сцене, согласовываясь с остальным ее наполнением. Зачастую рядовой аниматор или баннермейкер даже не слышал такое словосочетание как "кривая Безье".

Ну да, программист, если он выделывается, может запустить объекты летать по разным траекториям. Это подходит, если траектория в целом - неважна. Подгонять же такой моушн, изменяя параметры пути, чтобы он проходил как хочется... мрачная перспектива.

DeliMIter 18.08.2004 20:26

Цитата:

Оригинал написал(а) BitSky
Например уже могу нарисовать анимированную пунктирную кривую. Причем пунктирные линии одинаковые, и движутся они по кривой, которую сами же и образуют.
Я вчера с помощью ломика и какой-то матери освоил формулу Безье для построения кривой по двум векторам, так что со вчерашнего дня я тоже могу...

Iv 18.08.2004 20:30

и не надо перемацываться в программеров. без работы останусь ибо конкурировать не смогу ибо же не наделен талантами к рисованию. :)

геометрический смысл Path:

представим , что объект перемещается не на плоскости а по линии, т.е. в 1-мерном пространнстве.
Вся математика упрощается до ужаса. Задача вычисления скорости, позиции объекта и т.п. сводится к простейшей математике.
А метод getPointByPosition превращает твой путь из одномерного в двухмерный в зависимости от того, на какую кривую ты натягиваешь одномерное пространство. Круто сказал, надо записать :).
Трехмерка очень рядом: можно добавить еще один путь и брать из него _y, в качестве _z. Только движение по пути должно быть связанным. Но это не трабл.

Возможность программного задания изменения пути - еще одна полезная пассибилитя для разработчика.
Например вычисляем путь в пространстве. Ходить углами - западло. Просто рисуем по найденному пути кривую и объект начинает двигаться естественно.
и т.д. и т.п.
и все это одной формулой. вот.

Iv 18.08.2004 20:33

2 DeliMIter:
Цитата:

я тоже могу...
это клево. но у тебя, как я понимаю, пунктиры разной длины... :)

Nox Noctis 18.08.2004 20:34

Цитата:

не узнали дембицкого, блин)))
Дембицкого узнали, не привычно соотношение овчинки и выделки в данном эксперименте :)) мое сугубо субъективное ИМХО - этот результат не стоит полугода работы мысли :)

и, BitSky, вот я понял что ты сделал, и в общих словах понял как. но пользоваться твоим кодом я могу только как черным ящиком. или же мне самому придется продумать всё то что ты продумал за пол года. (правда у меня будет хорошая подсказка в виде уже работающей программы)

а понять каким образом пользоваться всем тем паровозом параметров, тем более без единого коментария в коде...

скажи, вот ты сам много черных ящиков использовал в работах?
я пока ни одного.

вобщем реализовал - круто. можно нарисовать тебе на борту еще одну звездочку :))

но я бы хотел посмотреть кто этой работой воспользуется...

Iv 18.08.2004 20:35

Цитата:

Я придумал проблему
- несложно сделать LivePreview мувик, в котором рисовать путь и на выхлопе отдавать точки. Дизайнэр в таком варианте может даже не подозревать о существовании безье.
Это все детали.

DeliMIter 18.08.2004 20:37

Цитата:

Оригинал написал(а) BitSky
но у тебя, как я понимаю, пунктиры разной длины... :)
Я думаю, апроксимировать длины кривых я тоже умею ; ))) Но я понял, что ты имел в виду ; ))

Iv 18.08.2004 20:40

ты постоянно пользуешься черными ящиками.
большинство встроенных методов начинку свою тебе не покажут.
Функция на то она и функция, что тебе не обязательно понимать как она работает внутри. Достаточно знать что ей скормить и каков будет результат.
А пользоваться будет вся студия. заставлю :).
Насчет пол года:
Это далеко не весь результат и даже не вершина айсберга.
И тратил я свое личное время а не рабочее.
И даром они точно не пройдут ибо научился я благодаря этим изысканиям многому...

DeliMIter 18.08.2004 20:42

Цитата:

Оригинал написал(а) BitSky
И даром они точно не пройдут ибо научился я благодаря этим изысканиям многому...
Самое главное.

Nox Noctis 18.08.2004 20:52

Цитата:

Оригинал написал(а) BitSky
ты постоянно пользуешься черными ящиками.
ну этак мы дойдем до того, что я же пользуюсь операционной системой не подозревая что там и как именно творится :)) ты ведь понял что я имею в виду.

Цитата:

Оригинал написал(а) BitSky
Насчет пол года:
да просто страшно звучит :))

Iv 18.08.2004 20:56

Цитата:

Я думаю, апроксимировать длины кривых я тоже умею ; )
- у меня как раз трабл был в том, что я этого не умею и в свое время замучил тут всех вопросами об этом. Ответа так и не добился.

Кстати. Раз ты умеешь...
есть шикарная статья, там имеется формула длины параболы. (искать по словам "The arc length of a parabola"). Эта формула будет попроще чем формула сегмента безье. Можешь ли сделать натуральную параметризацию, чтобы зная расстояние по длине на кривой можно было вычислить точку на этой кривой?
А уж разбить безье на две параболы - не трабл.
Тогда, удалось бы избежать бисекции. А это крайне важно для скорости работы алгоритма.

DeliMIter 18.08.2004 21:40

Т.е. обратную формулу?

Iv 18.08.2004 21:45

да

Iv 18.08.2004 22:12

кстати, вершину всегда можно поместить в 0,0
а саму параболу развернуть как надо
в результате достаточно будет вычислить x
y всегда будет x^2

D12 18.08.2004 22:36

Цитата:

_root.createEmptyMovieClip("mc", 0);
_root.mc.lineStyle(5, 0xFF0000, 100);
_root.mc.lineTo(.2, 0);
_root.mc.p0 = 100;
_root.mc.p1 = 100;
_root.mc.speed = _root.mc.path_position=0;
_root.mc.dir = 0.1;
_root.mc.onEnterFrame = function() {
_root.mc.tween_path = new Path(400, 0,
this.p1, 0, 100, 100, 100, 200, 450, 380, 0, this.p0);
// show path
_root.clear(), _root.lineStyle(0, 0, 30);
_root.moveTo(400, 0);
_root.curveTo(this.p1, 0, 100, 100);
_root.curveTo(100, 200, 450, 380);
_root.curveTo(0, this.p0, 400, 0);
//
this.p1 += 1, this.p0 += 1;
this.path_position += this.speed += this.dir;
if (random(100) == 1) {
this.dir = -this.dir;
}
var poz = this.tween_path.getPointByPosition(this.path_position);
this._x=poz._x, this._y=poz._y;
};
куча бесполезного хлама :D
идея так же бредова и мало несет за собой пользы ,
вроде задумка "УХ" но безполезна )
это как народ квадратуру круга ищет ) толку никакого но идея тоже "УХ" ))

P.S. думаю теперь тебе надо програмно Shape tween сделать ) лет за 12 думаю управишся ))) правдо с будущими скоростями инета народ врятле будет мелочится на пару килобайт , взамен получая долгие часы мороки подбивания кода под свой случай )

P.S.2. ну вот пришел и все испортил ( дискуссию ))) , работа такая )))



Iv 18.08.2004 22:52

хехе, не испортил.
я делал и делаю то, что нужно МНЕ.
иногда публикую результаты, если думаю, что кому-то они пригодятся.
Если ты думаешь что ТЕБЕ они не пригодятся, то это никак не отменяет того, что это нужно мне.

sergwizard 18.08.2004 23:20

Цитата:

P.S. думаю теперь тебе надо програмно Shape tween сделать ) лет за 12 думаю управишся )))
D12, распахни пошире очи, Shape tween здесь уже есть. Для наглядности пририсуй две строчки кода, чтобы это выглядело так:
Код:

_root.clear(), _root.lineStyle(0, 0, 30);
_root.moveTo(400, 0);
_root.beginFill(0xFF0000,50)
_root.curveTo(this.p1, 0, 100, 100);
_root.curveTo(100, 200, 450, 380);
_root.curveTo(0, this.p0, 400, 0);
_root.endFill();

И теперь микроскопом можно гвозди забивать. Ты же этого хотел? :D

ЗЫ. Я же говорил, что такие люди, как BitSky меня бесят. :)

Iv 18.08.2004 23:26

рат старацца!

Елё 18.08.2004 23:56

я бы наверное разбил параболу (а лучше сразу безье) на дуги окружностей
конечно, это зависит от точности, но я думаю в десяток можно уложится

а дальше натуральноя параметризация - дело техники

PS парабола очень хорошо приближается элипсом - но к сожалению это не выход
PPS полинома со степенью выше 1 натурально параметризующего кривую построить нельзя

Iv 19.08.2004 00:04

то есть функцию обратную той, что на ссылке, сделать нельзя?

D12 19.08.2004 00:31

ладно убедили )))
раскажу об этой борьбе за килобайт внукам ))) если они меня не пошлют))))))

DeliMIter 19.08.2004 11:47

Микроскопом можно забивать микрогвозди!

Даже если взять простейшую параболу y=x^2, то длина кривой - некий интеграл, соответственно чтобы вычислить икс придется решить диф-уравнение. Если искомой обратной формулы нету в справочниках, то, возможно, уравнение нерешабельно.

Елё 19.08.2004 14:12

Цитата:

Оригинал написал(а) BitSky
то есть функцию обратную той, что на ссылке, сделать нельзя?
наверное можно попытаться приблизить
функция гладкая, должна хорошо приближаться по всей длине
в явном виде скорее всего ответа не будет

Iv 19.08.2004 14:14

Цитата:

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

llllllllll 19.08.2004 15:08

Штука интересная, и естесвенно для всевозможных превьюх очень нужная, но на мой взгляд не более.

Использовать в серьезном проекте не реально, примерно так же как и ASWDrawing.

А патчей я видел уже много, у Sencular'a года два назад, с более дружественным API, у Ahab'a что-то было, ему правда в мат части не занимать :)
Но увы на уровне эксперимента, можеть это случайно , а можеть и нет ;)

Iv 19.08.2004 16:16

- нельзя ли с линками?
ибо тема мне крайне интересна и хотелось бы глянуть на ссуществующие достижения в этой и смежных областях.
Цитата:

Использовать в серьезном проекте не реально, примерно так же как и ASWDrawing
- примерно на такой же вопрос я уже отвечал выше.
спасибо.


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

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