Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Шаблон вдоль кривой (http://www.flasher.ru/forum/showthread.php?t=143702)

nukie 23.08.2010 14:46

Шаблон вдоль кривой
 
Задача следующая: надо растянуть картинку вдоль кривой с повторениями (пример - железная дорога).
Не подскажете готовых решений (или может это как-то поддерживается на уровне базового API ? ) для такой вот проблемы ?

silin 23.08.2010 16:45

как вариант:
вдоль Path-а Дембицкого лепим фрагментики этой ж.д.
Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        import flash.geom.*;
        import silin.geom.*;//http://silin.su/AS3/silin.zip
 
 
        public class Main extends Sprite
        {
                [Embed(source = 'templ.jpg')]
                private var _templClass : Class;//сегментик полотна
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        stage.align = StageAlign.TOP_LEFT;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
 
                        var path:Path = new Path([new Point(10, 10), new Point(100, 50),new Point( 200, 300), new Point(250,350), new Point(300,150)]);
                        var len:Number = path.length;
                        for (var i:int = 0; i < len; i+=5) //5 - ширина сегментика
                        {
                                var segm:Bitmap = Bitmap(new _templClass());
                                var p:PathPoint = path.getPathPoint(i);
                                segm.x = p.x;
                                segm.y = p.y;
                                segm.rotation = p.rotation;
                                addChild(segm);
                        }
                }
 
        }
 
}

результат

shaman4d 23.08.2010 17:05

Цитата:

Сообщение от silin (Сообщение 930826)
как вариант:
вдоль Path-а Дембицкого лепим фрагментики этой ж.д. результат

Что то в месте перегиба не очень...

silin 23.08.2010 17:16

>>Что то в месте перегиба не очень...
шаблончик бы надо от центра поворачивать, поправл - немного лучше
да и где ты видел, чтобы рельсы так поворачивали :)

shaman4d 23.08.2010 17:38

Цитата:

Сообщение от silin (Сообщение 930835)
>>Что то в месте перегиба не очень...
шаблончик бы надо от центра поворачивать, поправл - немного лучше
да и где ты видел, чтобы рельсы так поворачивали :)

Тада в контексте рельс -- согласен, но допустим если это труба из сегментов или шнур с рифленной поверхрностью.

silin 23.08.2010 17:44

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

Добавлено через 3 минуты
у Graphics есть еще lineBitmapStyle, может быть оно сработает
но не пробовал даже как и что это

nukie 23.08.2010 18:46

Насколько я понял, LineBitmapStyle это когда линия виступает в качестве маски для картинки.
Я нашел в интернете способ , который базируется на использовании текстурированых треугольников. Как вариант, но картинка не совсем акуратная выходит..

silin 23.08.2010 19:19

>>но картинка не совсем аккуратная выходит..
а она 'по-жизни' не хочет(не может) быть аккуратной в таком варианте,
см. например обсуждалово http://flasher.ru/forum/showthread.php?t=143470 , там на примере 3D, но сути не меняет

по моим наблюдениям может выйти толк из такого варианта: из твоей изогнутой колбасы сгенерить набор треугольников с соответствующими UV координатами и заливать разом все с помощью drawTriangles - тогда не щелей ни пробелов нет..

но как эти исходные данные готовить не берусь сказать - не вижу ради чего, сори

-De- 23.08.2010 19:23

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


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

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