Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   3D Куб из MovieClip (http://www.flasher.ru/forum/showthread.php?t=126841)

JinRu 28.06.2009 21:05

3D Куб из MovieClip
 
Помогите разобраться:
Делаю простой 3D куб, стенками которого являются Sprite объекты.
BackFace Culling реализован, так:
Есть массив хранящий в себе Vector3D. Каждый такой вектор представляет собой нормаль одной из сторон куба.

Код AS3:

Normals[0] = new Vector3D( 00, -1);
Normals[1] = new Vector3D( 001);
Normals[2] = new Vector3D( 010);
Normals[3] = new Vector3D( 0, -10);
Normals[4] = new Vector3D( 100);
Normals[5] = new Vector3D(-100);

Когда куб вращается я проверяю куда смотрит нормаль, путем перемножения 3d матрицы родительского спрайта на нормаль каждой стороны. Если z компонент больше нуля, то соответствующая сторона становится невидимой

Код AS3:

for (var i:int = 0; i < 6; ++i) {
  if (transform.getRelativeMatrix3D(stage).deltaTransformVector(Normals[i]).z >= 0)
      Faces[i].visible = false;
      else Faces[i].visible = true;
}

Готовый пример http://www.swfcabin.com/open/1246202682

Проблема в том, что иногда видны стенки, которые должны быть спрятаны.
Может, есть другой какой метод?

Добавлено через 6 минут
Хм... помоему я решил проблему :) заменив проверку 0 на -0.1
но вопрос про другой метод остается

silin 28.06.2009 21:34

http://www.bytearray.org/?p=468
еще вариант не выключать видимость, а сортировать глубину спрайтов в зависимости от расстояния до наблюдателя:
http://theflashblog.com/?p=470
http://silin.fatal.ru/#AS3/FP10/cube3D

JinRu 28.06.2009 21:47

Спасибо за ссылки

Добавлено через 3 минуты
Кстати, может заодно подскажите как с алиасингом бороться

silin 28.06.2009 21:58

cacheAsBitmap ?

JinRu 28.06.2009 23:20

Я уже пробовал в Bitmap всю статику перевести - не сильно помогло
Видимо лучше избегать таких ситуаций


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

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