![]() |
|
||||||||||
|
|||||
|
УРА!
наконец во флеше официально вышла поддержка 3Dлюбой DisplayObject обладает новыми вкусными методамами и свойствами типа sprite.z, sprite.scaleZ, MovieClip.rotationZ; работают пока крайне глючно - НО РАБОТАЮТ! ![]() и всё же пара вещей хотелось бы решить - а именно позиционирование объектов относительно друг друга. например создавая абсолютно одинаковые по величине объекты но располагая их в разных Z координатах они будут позиционироваться по глубине так как я добавлял их с помощью addChild(); Это логично, но есть ли способ задать им так, чтобы тот что действительно сзади - был сзади а не спереди? Это я простой пример привёл потому что понимаю что можно решить и циклом сортируя по Z но что делать когда объекты поворачиваются с помощью rotationZ - тут что то немогу догадаться как их правильно позиционировать. если получится решить первый вопрос то будет и второй ![]()
__________________
Black DRAGON хочет кушать Т_Т |
|
|||||
|
Регистрация: Aug 2007
Адрес: Москва
Сообщений: 56
|
Не проверял, но может быть поможет.
http://blog.yesutin.com/?p=246 |
|
|||||
|
эхх эта штука пашет только при сортировки 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]);
}
__________________
Black DRAGON хочет кушать Т_Т |
|
|||||
|
ага, какая-то досадная непонятка в FP10 - отсутствие сортировки детей в 3D пространстве, даже в five3D есть..
может есть, но плохо искал.. ничего более путного не придумал, как сортировать дисплейЛист по расстоянию детей до viewPoint, пример: http://silin.fatal.ru/#FP10/cube3D |
|
|||||
|
Шайтан!
![]() неплохо вышло ![]() кстати видно по твоему примеру что 3D у них как то пока не очень 3Dшное в плане проецирования - как то они угол обзора не тот выбрали или в общем что то не то... Пока сам не знаю. как же нехватает мааленького свойства в DisplayObject типа this.enable3Dposition = true ![]()
__________________
Black DRAGON хочет кушать Т_Т |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
3D вам не обещали, обещали 3D-трансформацию.
|
|
|||||
|
Регистрация: Oct 2008
Сообщений: 1
|
Это называется 2.5D
|
|
|||||
|
не. 2.5D - это статичная изометрия со статичными спрайтами. просто выглядит всё как в 3D с зафиксированной камерой.
__________________
Black DRAGON хочет кушать Т_Т |
|
|||||
|
если алгоритм z-сортировки примерно ясен, то построение пересечений 3D-объектов и обнаружение столкновений страшно представить.
|
|
|||||
|
Это фигня ещё - ты посмотри движок альтернативы
вот 3д проецирование я и сам делал типа представляю - вот как текстурой обливать что то как то с трудом представляю а ещё чтобы это работало быстро. как импортировать готовые модели я вообще не представляю. но у них это всё фигня у них даже работа с источником света есть! О__О Девид Блейн ?? ,--__ О_o //
__________________
Black DRAGON хочет кушать Т_Т |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|