Обновление 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(), приводящая к возврату некорректных имён для базовых классов

24.10.2008 в 16:47
Наконец-то интерактив :)
а SpriteMaterial это аналог MovieMaterial ?
24.10.2008 в 17:29
Привет! Да это круто! Молодцы! Будет время, поюзаю… )
24.10.2008 в 17:33
Nicolas, SpriteMaterial это абстрактный класс для материалов спрайтов. От него пронаследован SpriteTextureMaterial, с помощью которого можно применить изображение к экземпляру спрайта.
24.10.2008 в 21:18
ну вот, теперь мне свой материал переименовывать :)
25.10.2008 в 11:17
Привет! Забыл спросить… А вот матрица transformation зачем нужна?
25.10.2008 в 11:58
SuperMan, эта матрица переводит координаты из локальных объекта в глобальные координаты сцены. Мы можем использовать её, например, чтобы узнать значения углов поворота объекта в глобальной системе координат(в системе координат рута).
[code]
var rotations:Point3D = object.transformation.getRotations();
[/code]
25.10.2008 в 12:09
Я знаю что это результирующая матрица в глобальной системе координат. Меня интересует зачем она нам?
Если мы получаем из нее углы, то тогда зачем нам углы? ) Если только для правильного позиционирования спрайтов.
И кстати все формулы и алгоритмы которые я встречал(по извлечению углов) были с ограничениями… Если тока через кватернион углы получить…
И попутный вопрос - как вы определяете углы по матрице? Это реально лишь в случае когда матрица ортогональная, т.е. все орты взаимноперпендикулярны. А если например я объектА положу в объектБ, объектА поверну, например, на три угла xyz(35, 45, 30) , а объектБ сожму по оси у то результирующая матрица получится не ортогональная (т.е. со skew трансформацией (сдвиг) ). То получение из такой матрицы углов - будет лишено всякого смысла…
25.10.2008 в 16:12
1) Эта матрица в основном используется для перевода координат. Получение из нее углов это еще один вид применения.
2) Тут, скорее всего, вы правы, получение углов из такой матрицы лишено всякого смысла.
26.10.2008 в 12:49
SuperMan, что-то лучше, чем ничего. Кому-то может и пригодится полная трансформация. Для преобразования множества точек, например. По углам да, только для ортогональных матриц, надо бы в доках этот момент упомянуть. А зачем они нужны, ну, например, для вращения вокруг произвольной оси. У нас ведь положение объекта этими самыми углами и задаётся.
26.10.2008 в 17:33
Да, согласен пусть будет что то чем ничего, все равно матрица эта как побочный продукт. Надо только и вправду в доках указать эту вещь. Меня тут посетила идея одна, вот смотрите есть например в руте дом у него чилд - крыша. Можно ли сделать типа такую функцию, что бы крышу переместить в рут но применив к ней глобальную транцсормацию. так что матрица объекта совместилась с матрицей рута, да и дом тоже можно перевести в глобальную матрицу, ведь дом и крыша они ж не двигаются никуда - стоят наместе. Видел такую фишку в блице там локальный объект, сохраняя его заданную в данный момент трансформацию, можно перевести в глобальный, возможно будет меньше умножений матриц…
26.10.2008 в 21:27
Это не имеет смысла. Пересчет матриц происходит только один раз после изменения свойств объекта, связанных с его положением. Так, если дом не перемещать, то и пересчет матриц происходить не будет.
27.10.2008 в 00:14
Вы немного не поняли о чем речь ). Суть в том что у нас есть два матрицы - результирующая матрица объекта и инвертированная матрица камеры. Камера двигается всегда, дом стоит - согласен что не надо рассчитывать результирующую матрицу, а вот перемножение результирующей на инвертированную матрицу камеры - придется делать каждый раз. Другое дело если результируюущая матрица будет единичной - в итоге мы просто множим сразу все вершины на инвертированную матрицу камеры!!! минуя громоздкое перемножение матриц, а теперь представьте неподвижных объектов 100 = 100 умножений на матрицу… будет весьма ощутимо, думаю эта оптимизация имеет место быть, причем что бы ее сделать много не надо надо всего один раз рассчитать результирующую матрицу объекта и трансформировать все вершины и занести результаты в оригинальные значения вершин. ;)
27.10.2008 в 00:25
> думаю эта оптимизация имеет место быть
Правильно ;)
27.10.2008 в 14:53
Пара вопросов по прозрачности: что такое “карта прозрачности”? Как правильно задавать прозрачность в редакторе?
Задаю в blender-e и milkShape прозрачность alpha
27.10.2008 в 14:56
Михаил Фоминых - будут еще идеи напишу )
maximus3d - Ну карта прозрачности это наверно берут текстуру и делают ее прозрачной по карте прозрачности…
27.10.2008 в 14:56
… и никакой прозрачности во флэше не вижу.
27.10.2008 в 14:58
А, про карту понял.
По поводу обыкновенной прозрачности вопрос остается - что делаю не так?
27.10.2008 в 15:14
Вопросы лучше задавать на форуме http://forum.alternativaplatform.com/
28.10.2008 в 03:09
Регистрация на сайте доступ к форуму не дает. На форуме ссылок для регистрации тоже не видно.
28.10.2008 в 11:20
всем даёт, а ему не даёт. дискриминация!
29.10.2008 в 02:40
немного подумала, и тоже дала.