Обновление Alternativa3D 5.5.0

24.10.2008 Михаил Фоминых

На сайте доступно обновление Alternativa3D до версии 5.5.0. Список изменений:

  • Добавлена поддержка взаимодействия объектов с мышью. Теперь с объектами классов Object3D, Surface и Face могут быть связаны обработчики событий мыши
  • В классе View добавлено свойство interactive
  • Добавлен новый класс объектов Sprite3D для отображения спрайтов на сцене
  • Добавлены новые материалы: SpriteTextureMaterial и DevMaterial
  • Свойства класса SurfaceMaterial alpha и blendMode перенесены в базовый класс Material
  • В связи с добавлением спрайтов переименованы следующие методы класса View:
    • getFacesUnderPoint -> getObjectsUnderPoint
    • getFaceUnderPoint -> getObjectUnderPoint
  • Добавлено управление отсечением в камере
  • В классах Loader3DS и LoaderOBJ добавлен метод unload()
  • В классах Loader3DS и LoaderOBJ добавлена поддержка карт прозрачности
  • В класс Scene3D добавлен метод hasChanges()
  • Добавлены методы трансформации координат:
    • Object3D.localToGlobal()
    • Object3D.globalToLocal()
    • View.projectPoint()
    • View.get3DCoords()
  • В метод Object3D.getChildByName() добавлена возможность рекурсивного поиска по всем дочерним объектам
  • В класс Object3D добавлено свойство transformation, возвращающее матрицу глобальной трансформации объекта в сцене
  • Устранена ошибка, возникающая в методе Scene.drawBSP, если в сцене присутствует текстурный материал без текстуры
  • Исправлена ошибка отображения текстуры при вырожденном маппинге
  • Исправлена ошибка в методе Mesh.removeFace()
  • Исправлена ошибка в контроллерах объекта, возникающая при установке координат контроллера без назначенного объекта
  • Исправлена ошибка в методах View.getFaceUnderPoint() и View.getFacesUnderPoint(), приводящая к получению некорректных результатов при наличии трансформации View
  • Исправлена ошибка в классе LoaderOBJ, происходящая при повторном вызове метода load()
  • Исправлена ошибка в методе ObjectUtils.getClassName(), приводящая к возврату некорректных имён для базовых классов

Комментарии (21) на “Обновление Alternativa3D 5.5.0”

  1. Nicolas Says:

    Наконец-то интерактив :)
    а SpriteMaterial это аналог MovieMaterial ?

  2. SuperMan Says:

    Привет! Да это круто! Молодцы! Будет время, поюзаю… )

  3. Андрей Копысов Says:

    Nicolas, SpriteMaterial это абстрактный класс для материалов спрайтов. От него пронаследован SpriteTextureMaterial, с помощью которого можно применить изображение к экземпляру спрайта.

  4. makc Says:

    ну вот, теперь мне свой материал переименовывать :)

  5. SuperMan Says:

    Привет! Забыл спросить… А вот матрица transformation зачем нужна?

  6. Андрей Копысов Says:

    SuperMan, эта матрица переводит координаты из локальных объекта в глобальные координаты сцены. Мы можем использовать её, например, чтобы узнать значения углов поворота объекта в глобальной системе координат(в системе координат рута).
    [code]
    var rotations:Point3D = object.transformation.getRotations();
    [/code]

  7. SuperMan Says:

    Я знаю что это результирующая матрица в глобальной системе координат. Меня интересует зачем она нам?
    Если мы получаем из нее углы, то тогда зачем нам углы? ) Если только для правильного позиционирования спрайтов.

    И кстати все формулы и алгоритмы которые я встречал(по извлечению углов) были с ограничениями… Если тока через кватернион углы получить…

    И попутный вопрос - как вы определяете углы по матрице? Это реально лишь в случае когда матрица ортогональная, т.е. все орты взаимноперпендикулярны. А если например я объектА положу в объектБ, объектА поверну, например, на три угла xyz(35, 45, 30) , а объектБ сожму по оси у то результирующая матрица получится не ортогональная (т.е. со skew трансформацией (сдвиг) ). То получение из такой матрицы углов - будет лишено всякого смысла…

  8. Андрей Копысов Says:

    1) Эта матрица в основном используется для перевода координат. Получение из нее углов это еще один вид применения.
    2) Тут, скорее всего, вы правы, получение углов из такой матрицы лишено всякого смысла.

  9. Михаил Фоминых Says:

    SuperMan, что-то лучше, чем ничего. Кому-то может и пригодится полная трансформация. Для преобразования множества точек, например. По углам да, только для ортогональных матриц, надо бы в доках этот момент упомянуть. А зачем они нужны, ну, например, для вращения вокруг произвольной оси. У нас ведь положение объекта этими самыми углами и задаётся.

  10. SuperMan Says:

    Да, согласен пусть будет что то чем ничего, все равно матрица эта как побочный продукт. Надо только и вправду в доках указать эту вещь. Меня тут посетила идея одна, вот смотрите есть например в руте дом у него чилд - крыша. Можно ли сделать типа такую функцию, что бы крышу переместить в рут но применив к ней глобальную транцсормацию. так что матрица объекта совместилась с матрицей рута, да и дом тоже можно перевести в глобальную матрицу, ведь дом и крыша они ж не двигаются никуда - стоят наместе. Видел такую фишку в блице там локальный объект, сохраняя его заданную в данный момент трансформацию, можно перевести в глобальный, возможно будет меньше умножений матриц…

  11. Андрей Копысов Says:

    Это не имеет смысла. Пересчет матриц происходит только один раз после изменения свойств объекта, связанных с его положением. Так, если дом не перемещать, то и пересчет матриц происходить не будет.

  12. SuperMan Says:

    Вы немного не поняли о чем речь ). Суть в том что у нас есть два матрицы - результирующая матрица объекта и инвертированная матрица камеры. Камера двигается всегда, дом стоит - согласен что не надо рассчитывать результирующую матрицу, а вот перемножение результирующей на инвертированную матрицу камеры - придется делать каждый раз. Другое дело если результируюущая матрица будет единичной - в итоге мы просто множим сразу все вершины на инвертированную матрицу камеры!!! минуя громоздкое перемножение матриц, а теперь представьте неподвижных объектов 100 = 100 умножений на матрицу… будет весьма ощутимо, думаю эта оптимизация имеет место быть, причем что бы ее сделать много не надо надо всего один раз рассчитать результирующую матрицу объекта и трансформировать все вершины и занести результаты в оригинальные значения вершин. ;)

  13. Михаил Фоминых Says:

    > думаю эта оптимизация имеет место быть
    Правильно ;)

  14. maximus3d Says:

    Пара вопросов по прозрачности: что такое “карта прозрачности”? Как правильно задавать прозрачность в редакторе?

    Задаю в blender-e и milkShape прозрачность alpha

  15. SuperMan Says:

    Михаил Фоминых - будут еще идеи напишу )
    maximus3d - Ну карта прозрачности это наверно берут текстуру и делают ее прозрачной по карте прозрачности…

  16. maximus3d Says:

    … и никакой прозрачности во флэше не вижу.

  17. maximus3d Says:

    А, про карту понял.

    По поводу обыкновенной прозрачности вопрос остается - что делаю не так?

  18. Андрей Копысов Says:

    Вопросы лучше задавать на форуме http://forum.alternativaplatform.com/

  19. maximus3d Says:

    Регистрация на сайте доступ к форуму не дает. На форуме ссылок для регистрации тоже не видно.

  20. makc Says:

    всем даёт, а ему не даёт. дискриминация!

  21. maximus3d Says:

    немного подумала, и тоже дала.

Оставить комментарий

(Регистрация)

Powered by WP Hashcash