Форум 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=198570)

gin_sea 29.04.2013 17:49

Вращение изображения, "натянутого на цилиндир"
 
Вложений: 1
Заранее извиняюсь, если неправильно выбрал ветку.
Есть изображение - стрелка. Нужно сделать следующее: как-будто стрелка нарисована на прозрачном цилиндре (сама стрелка изображена на цилиндрической поверхности), цилиндр вращается, и при этом цилиндр немного повернут в сторону наблюдателя (т.е. видно что цилиндр объемный). При этом самого цилиндра не видно. Насколько я понял, в Swift 3D этого сделать нельзя, вроде бы можно в Papervision, но это достаточно сложно. Может быть есть более легкие способы?

alatar 29.04.2013 19:50

Варианты:
1. Нарисовать в любой знакомой вам программе 3d моделирования. Сделать серию картинок. Последовательно показать картинки.
2. Нарисовать текстуру со стрелкой. С помощью drawTriangles создать цилиндр и натянуть на него текстуру. Вращать цилиндр.
3. Нарисовать текстуру со стрелкой. С помощью любого 3d движка (Papervision уже четыре года не обновлялся и устарел) создать цилиндр и натянуть на него текстуру. Вращать цилиндр.

Кстати, почему вы решили, что Swift 3D не справится?

gin_sea 29.04.2013 20:09

Цитата:

Сообщение от alatar (Сообщение 1131703)
Кстати, почему вы решили, что Swift 3D не справится?

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

alatar 29.04.2013 20:15

http://www.erain.com/swift_3d_v6.html#/3

gin_sea 29.04.2013 21:18

Цитата:

Сообщение от alatar (Сообщение 1131705)

Спасибо! Буду разбираться.

silin 30.04.2013 01:44

Вложений: 1
если ограничений по wmode=direct нет, то имо самый простой это #3 из того, что alatar расписал
пример для away3d:
Код AS3:

package 
{
        import away3d.containers.View3D;
        import away3d.entities.Mesh;
        import away3d.materials.TextureMaterial;
        import away3d.primitives.CylinderGeometry;
        import away3d.utils.Cast;
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.events.Event;
        import flash.geom.Vector3D;
 
 
        public class Main extends Sprite
        {
                private var view:View3D;
                private var cylinder:Mesh;
                [Embed(source = "arrow.png")] private const arrow_png:Class;
                public function Main():void
                {
 
                        view = new View3D();
                        view.width = 256;
                        view.height = 256;
 
                        view.camera.z = 150;
                        view.camera.y = 50;
                        view.camera.lookAt(new Vector3D());
 
                        var mat:TextureMaterial =  new TextureMaterial(Cast.bitmapTexture(arrow_png));
                        mat.bothSides = true;
                        mat.alphaBlending = true;
                        cylinder = new Mesh(new CylinderGeometry(50, 50, 100, 32, 1, false, false), mat);
 
 
                        addChild(view);
                        view.scene.addChild(cylinder);
 
                        addEventListener(Event.ENTER_FRAME, render);
                }
 
                private function render(e:Event):void
                {
                        cylinder.rotationY -= 1;
                        view.render();
                }
 
        }
 
}

cylinder.swf   (104.5 Кб)

но не уверен, что флешка здесь правильно покажет, ибо wmode=direct нужен


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

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