Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   позиционирование в 3D (http://www.flasher.ru/forum/showthread.php?t=117107)

DRAGOnoid 19.10.2008 06:39

позиционирование в 3D
 
УРА! :yahoo: наконец во флеше официально вышла поддержка 3D
любой DisplayObject обладает новыми вкусными методамами и свойствами типа sprite.z, sprite.scaleZ, MovieClip.rotationZ;

работают пока крайне глючно - НО РАБОТАЮТ! :quiet:

и всё же пара вещей хотелось бы решить - а именно позиционирование объектов относительно друг друга.

например создавая абсолютно одинаковые по величине объекты но располагая их в разных Z координатах они будут позиционироваться по глубине так как я добавлял их с помощью addChild(); Это логично, но есть ли способ задать им так, чтобы тот что действительно сзади - был сзади а не спереди? Это я простой пример привёл потому что понимаю что можно решить и циклом сортируя по Z но что делать когда объекты поворачиваются с помощью rotationZ - тут что то немогу догадаться как их правильно позиционировать.


если получится решить первый вопрос то будет и второй :away:

__ant 19.10.2008 11:20

Не проверял, но может быть поможет.
http://blog.yesutin.com/?p=246

DRAGOnoid 19.10.2008 14:53

эхх эта штука пашет только при сортировки Z координаты (т.е. чисто положение координат) но вот повороты так и не сортирует
Код:

var ellipse1:Sprite        = new Sprite();
        ellipse1.graphics.beginFill(0xFF0000, 1);
        ellipse1.graphics.drawCircle(0, 0, 60);
        ellipse1.x                =        100;
        ellipse1.y                =        100;
       
       
addChild(ellipse1);

var ellipse2:Sprite        = new Sprite();
        ellipse2.graphics.beginFill(0x00FF00, 1);
        ellipse2.graphics.drawRoundRect(0, 0, 60, 60, 20);
        ellipse2.x                =        110;
        ellipse2.y                =        100;
        ellipse2.z                =        200;
        ellipse2.rotationY        =        -40;
       
addChild(ellipse2);

var ellipse3:Sprite        = new Sprite();
        ellipse3.graphics.beginFill(0x0000FF, 1);
        ellipse3.graphics.drawRoundRect(0, 0, 60, 60, 20);
        ellipse3.x                        =        100;
        ellipse3.y                        =        100;
        ellipse3.z                        =        200;
        ellipse3.rotationY        =        -40;

addChild(ellipse3);

var faces:Array                =        new Array();
        faces.push(ellipse1);
        faces.push(ellipse2);
        faces.push(ellipse3);

for(var ind:uint = 0; ind < 3; ind++) {
        faces[ind].z = faces[ind].transform.getRelativeMatrix3D(root).position.z;
        this.removeChild(faces[ind]);
}
faces.sortOn("z", Array.NUMERIC | Array.DESCENDING);
for (ind = 0; ind < 3; ind++) {
        this.addChild(faces[ind]);
}

а ещё так и не понял откуда взялся параметр child

silin 19.10.2008 15:09

ага, какая-то досадная непонятка в FP10 - отсутствие сортировки детей в 3D пространстве, даже в five3D есть..
может есть, но плохо искал..
ничего более путного не придумал, как сортировать дисплейЛист по расстоянию детей до viewPoint,
пример: http://silin.fatal.ru/#FP10/cube3D

DRAGOnoid 19.10.2008 15:33

Шайтан! :eek:
неплохо вышло ;)
кстати видно по твоему примеру что 3D у них как то пока не очень 3Dшное в плане проецирования - как то они угол обзора не тот выбрали или в общем что то не то... Пока сам не знаю.

как же нехватает мааленького свойства в DisplayObject типа this.enable3Dposition = true :rolleyes:

etc 19.10.2008 20:29

3D вам не обещали, обещали 3D-трансформацию.

lklabs 21.10.2008 23:13

Это называется 2.5D

DRAGOnoid 21.10.2008 23:25

Цитата:

Сообщение от lklabs (Сообщение 771920)
Это называется 2.5D

не. 2.5D - это статичная изометрия со статичными спрайтами. просто выглядит всё как в 3D с зафиксированной камерой.

ashDotDash 22.10.2008 18:46

если алгоритм z-сортировки примерно ясен, то построение пересечений 3D-объектов и обнаружение столкновений страшно представить.

DRAGOnoid 22.10.2008 19:59

Это фигня ещё - ты посмотри движок альтернативы
вот 3д проецирование я и сам делал типа представляю - вот как текстурой обливать что то как то с трудом представляю а ещё чтобы это работало быстро.
как импортировать готовые модели я вообще не представляю.
но у них это всё фигня у них даже работа с источником света есть! О__О

Девид Блейн ??
,--__
О_o
//


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

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