Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.08.2015, 11:33
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 1  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
По умолчанию Наведение мыши на 3д объект

Собственное есть 3д объект куб, как узнать наведен ли на него курсор мыши?

Добавлено через 3 минуты
П.С. Самописный движок на stage3d
__________________
Я заклинаю вас действовать иначе.

Старый 31.08.2015, 15:08
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 2  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
Можно получить координаты проекции каждого вертекса треугольника на экран. Потом перевести в координатную систему flash'a и посмотреть, попадает ли курсор мыши в треугольник.

vec3 = viewProjMatrix * vertex3D

vec2.x = ( vec3.x + 1.0 ) / 2.0 * viewportWidth
vec2.y = ( 1.0 - vec3.y ) / 2.0 * viewportHeight

Старый 31.08.2015, 16:05
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 3  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Вообще обычно делается немного по-другому, 2 фазы, широкая и узкая.
Широкая фаза - пускаем луч из точки наблюдения (координаты камеры) через экранную плоскость (как правило называется camera near plane). Ищем все "кубики" в пространстве, через которые этот луч проходит ("кубики" - это Axis Aligned Bounding Box объектов на сцене).
Узкая фаза - для каждого объекта проверяем каждую его поверхность (один и более полигонов, образующие плоскость) на пересечение с нашим лучом.

Как искать пересечение луча и полигона:
1) Определяем точку пересечения луча и плоскости, на которой лежит полигон
2) Определяем, лежит ли точка перечечения луча и плоскости внутри треугольника (полигона)

Как оптимизировать широкую фазу:
1) Поделить все пространство на большие кубики (Quad Tree)
2) При перемещении объекта в пространстве записывать в каких кубиках он находится
3) При поиске пересечений с AABB объектов обходить только те элементы Quad Tree, с которыми пересекается наш луч

Как оптимизировать узкую фазу:
Как правило для физики и HitTesta на каждый объект делается отдельный Mesh, весьма упрощенно напоминающий целевой объект.
__________________
...вселенская грусть

Старый 01.09.2015, 00:17
flastar вне форума Посмотреть профиль Отправить личное сообщение для flastar Посетить домашнюю страницу flastar Найти все сообщения от flastar
  № 4  
Ответить с цитированием
flastar
 
Аватар для flastar

Регистрация: May 2006
Адрес: Гродно
Сообщений: 249
Отправить сообщение для flastar с помощью ICQ Отправить сообщение для flastar с помощью Skype™
Мне вот этот способ нравится:
1) событие мыши, знаем позицию на экране
2) context3d.clear()
3) ставим ножницы context3d.setScissorRectangle(mouseX, mouseY, 1, 1)
4) собираем объекты которые по баунбоксу попадают
5) ставим шейдер, который из константы берет цвет меша (конечно с поддержкой alpha threshold, kil и пр)
6) рисуем все меши с разным цветом
7) делаем ридбек(context3d.drawToBitmapData) в текстурку 1x1 и смотрим что там за цвет

на мобильных платформах ридбек можно делать минимально в 4x4
__________________
Realaxy Team My Blog, @UnknownFlasher, Facebook

Старый 01.09.2015, 08:17
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 5  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Flastar, а конкретнее про шейдер можно и примерчик желательно?
__________________
Я заклинаю вас действовать иначе.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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