22 Сентября 2024, 16:17:13
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Логика > On Left Mouse Down. На мой взгляд ведет себя не понятно.
On Left Mouse Down. На мой взгляд ведет себя не понятно.
(Прочитано 20554 раз)
  [1] 2
Печать
micB | * | Новичок | Сообщений: 32 | « 26 Ноября 2009, 12:38:19 »
On Left Mouse Down. На мой взгляд ведет себя не понятно. |
0
Требуется что бы при щелчке на объекте воспроизодилась анимация объекта, на котором щелкнули.
Номер объекта получаю через CollisionRayCheck, затем по щелчку на объекте (On Left Mouse Down)пытаюсь внести номер объекта в канал Value, но это значение всегда 0, как буд-то щелчка не происходит. Заменил CollisionRayCheck на DetectMouse Collision всё работает, но тогда нажимаются все объекты которые под курсором.
Если в UserInput ставить Left Mouse Down тогда тож почти всё работает, кроме щелчка на объекте. Ведь можно щелкнуть в сторонке, а потом навести курсор на объект.
Объясните плиз, где собака порылась, почему в этой схеме при использовании в UserInput  On Left Mouse Down в value всегда приходит 0?
Спасибо.

* UserInput.gif (16.68 Кб, 333x430 - просмотрено 1552 раз.)
* PiramidaForum.rar (25.61 Кб - загружено 631 раз.)
micB | * | Новичок | Сообщений: 32 | «Ответ #1 26 Ноября 2009, 14:43:05 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
1
В общем голову сломал, почему оно так. Сделал немного по другому. Пришлось добавить еще один юзер инпут на OnLeftMouseUp он сбрасывает значение в 0. Остальные значения берутся напрямую с CollisionRayCheck.
Но всё же вопрос остался открытым, я так и не дотумкал почему не работала предыдущая схема.

* UserInput_02.gif (23.93 Кб, 496x444 - просмотрено 1514 раз.)
→|๖ۣۜDen|← | ***** | Администратор | Ветеран | Сообщений: 570 | «Ответ #2 27 Ноября 2009, 10:45:52 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
2
Когда ты используешь Detectmouse collision и CollisionRayCheck - корректного результата можно не добится. И совместное их использование вообще не нужно, во-первых ты нагружаешь цп на дополнительные просчёты, во-вторых детект просто не нужен, если ты используешь колижн рей чек. в твоём случае нужно проверять есть ли столкновения луча с другими объектами, посмотри исходник (4.3), как это работает.
Далее - у тебя импортированный, заанимированый объект. Не знаю пути решения как проверить коллизию заанимированного импортированного из макса объекта, из наблюдений могу сказать, что коллизия проверятся не динамически, вернее, тоже не совсем корректно: Когда анимация объекта проплывает по таймеру, и объект перемещается, коллизия находится в том месте, где объект был в первоначальный момент и минус та часть куска, которой уже нет в данной позиции. Намулевал схематически то что щас наговорил Показает язык (см. рис.) Когда ты переходишь из первой позиции в 3-юю, чтоб вернуться обратно в 1-ую из 3-ей, нужно нажать в жёлтую область, в моём случае кубика (в красную область, как на второй позиции, нажать не получится). Т.к. первоначально в момент нажатия во 2ой позиции можно было и в зелёную и жёлтую. А потом объект исчезает в третьей позиции из зелёной области. Не понятно, почему нельзя в третьей позиции получить коллижн в области где на второй позиции красно...видимо приколы импорта...или просто есть ещё такая проблема у квеста как невозможность считывания данных из моушн сет. Может я не прав...Выход вижу такой - импортировать свой объект из макса в квест, а анимировать непосредственно в квесте. Разработчики бы тебе сказали - юзай колладу...

* ..jpg (15.49 Кб, 590x330 - просмотрено 1527 раз.)
* PiramidaForum.cgr (196.08 Кб - загружено 786 раз.)
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #3 27 Ноября 2009, 12:00:29 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
3
Привет!
может я сейчас скажу не в тему, но все же, как вариант, если проблема действительно в анимации, то наверное стоит создать объект "пустышка"(объект, который не будет выводиться на рендер ), и в каждом кадре присваивать данные из матрицы (или матрицу целиком) анимированного объекта в матрицу "пустышки".
CollisionRayCheck проверять с "пустышкой".
micB | * | Новичок | Сообщений: 32 | «Ответ #4 27 Ноября 2009, 12:54:32 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
4
Den Первоначально сделал на ДетектМаусКолижн, но когда понял что у них нет никих параметров для определения кол-ва объектов под мышью и работы с этими объектами по отдельности, то решил переделать на КолижнРэйЧек. А из сцены их просто забыл удалить перед тем как выложить. Улыбающийся
То бишь не было задумки использовать их одновременно.
За то что коллизия проверяется не динамически - спасибо. Улыбающийся Заметил, что рэй чек себя в моем случае вел как то не адекватно, теперь все встало на свои места. Улыбающийся

Ruslan Хорошая идея. Улыбающийся


Попробую оба способа, а там посмотрю чего больше понравится.

Спасибо.
« Последнее редактирование: 27 Ноября 2009, 12:57:31 от micB »
micB | * | Новичок | Сообщений: 32 | «Ответ #5 27 Ноября 2009, 14:47:16 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
5
Den Щас потыкал, по моему все проще (я про твою схему с кубиками). Рэй чек всегда срабатывает на то пространство, которое занимал объект в начальной позиции, на твоей схеме это зеленое и желтое поле.

Ruslan Сижу вот репу чешу, как енту матрицу от туда выковырять. Непонимающий
Вот тут нашел.
http://guest3d.wohlnet.ru/forum/index.php?topic=704.0
Но чет у меня не коннектится как Viik пишет. Может кто схемку выложит?
« Последнее редактирование: 27 Ноября 2009, 15:49:09 от micB »
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #6 27 Ноября 2009, 18:43:20 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
6
ня
* ы.cgr (106.92 Кб - загружено 816 раз.)
« Последнее редактирование: 27 Ноября 2009, 19:36:52 от Ruslan »
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #7 30 Ноября 2009, 04:01:06 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
7
вы тут немного не в том направлении развиваете мысль
просто On Left Mouse Down у тебя вызываеться 2 раза подряд, первый при проверке тригера и второй при записи значения в переменную. Так вот первый раз он отрабатывает нормально, потому что видит что состояние кнопки поменялось, а вот второй раз он уже воспринимает нажатое состояние кнопки как старое, и соответственно говорит что клика не происходило.
Решение в том чтобы сохранять значение именно колижен рей чека, а не того экспрешен велью. А чтобы всё было совсем правильно, то лучше сохранить значение солижен рей чека в отдельную переменную, и потом работать с этой переменной -- каждый вызов рей чека, это новый просчёт, может стать тормозом производительности если объектов много или они сложные.
micB | * | Новичок | Сообщений: 32 | «Ответ #8 30 Ноября 2009, 09:37:07 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
8
DimiS Если правильно тебя понял - на второй схеме оно так и подключено. В переменную заносится колижн рэй чек, а не результат экспрешшн. Ток тепеть мне еще и логику разжевали, почему в первом случае не работает, а во втором работает. Улыбающийся Спасиб.

Ruslan Спасиб за файл, ток у меня с ним чегот не то. Как я понял ключевой момент - это канал Command с установленным значением Get Matrix From Import Object (судя по названию канала). Когда я захожу в его свойства, то канал пуст, а значения Get Matrix From Import Object в списке вообще нет (в хелпе я его тож не нашел). Может версия чего т не того? У меня 4.2.2
Нашел вот тута: http://guest3d.wohlnet.ru/forum/index.php?topic=691.0
 вот это - #000923: Duplicate entry of "Get Matrix From Import Object" in command channel. Это одно из нововведения версии 4.3. То бишь в 4.2.2 такого метода у канала Command апще нету? Можно ли как нить по другому в 4.2.2 получить матрицу объекта?

micB | * | Новичок | Сообщений: 32 | «Ответ #9 02 Декабря 2009, 08:19:15 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
9
Ruslan В 4.3 усё получилось. Ток почему то при взятии матрицы у одного объекта и присвоении ее другому объекту, происходило относительное смещение объектов. Хотя все пивоты и углы поворотов у всех объектов в нуле и до присвоения чужой матрицы объекты находились в точности там же где и объекты-доноры.
Почему такое происходит понять не смог, поэтому тупо сделал сабтракт на нужные величины.
Еще раз спасибо за помощь. Улыбающийся
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #10 02 Декабря 2009, 10:49:04 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
10
Есть несколько моментов:
- геометрия должна быть одна и таже.
- Size Vector должен быть 1,1,1

(в примере, разная геометрия и Size Vector 0.3 0.3 0.3  только для наглядности)
micB | * | Новичок | Сообщений: 32 | «Ответ #11 02 Декабря 2009, 15:10:22 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
11
Ruslan Про сайз вектор догадался. Улыбающийся
Я впихнул для рэй чека облегченную геометрию (но она достаточно точно повторяет форму основное геометрии), все равно ж ее видно не будет. А почему геометрия обязательно должна быть одна и таже?
« Последнее редактирование: 02 Декабря 2009, 15:13:38 от micB »
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #12 02 Декабря 2009, 15:28:31 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
12
Цитировать
А почему геометрия обязательно должна быть одна и таже?

Немного не так выразился.. в масштабе должна быть, для CollisionRayCheck.
Не проверял, но наверное, если объект сложный и или объектов много, то стоит сначала проверить кликнул ли ты мышкой в зоне габаритного кантейнера объекта, и если попал, в габаритный контейнер, то тогда уже делать проверку с помощью CollisionRayCheck.
« Последнее редактирование: 02 Декабря 2009, 15:31:34 от Ruslan »
micB | * | Новичок | Сообщений: 32 | «Ответ #13 04 Декабря 2009, 06:59:31 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
13
Ruslan Угу. Пост DimiS про оптимизацию тож навел на мысль о проверке рэй чека только во время клика. Хотя в этом "проекте" это излишне - 9 объектов общий полигонаж 1150 поликов и одна дифузная текстура 2048х2048. Будет время, переделаю правильно, в дальнейшем схемка пригодится. Улыбающийся
micB | * | Новичок | Сообщений: 32 | «Ответ #14 08 Декабря 2009, 06:36:44 »
Re: On Left Mouse Down. На мой взгляд ведет себя не понятно. |
14
Сделал вызов РэйЧека по клику. Фпс был 2900, стал 3100. Улыбающийся Но самое на мой взгляд важное: раньше при воспроизведении анимации (импортированной из 3д софта) фпс падал с 2900 до 2650 - 2700, теперь же стал снижаться с 3100 всего до 3065. То бишь РэйЧек наиболее мощно поджирает ресурсы при воспроизведении импортированной анимации (с квестовской анимацией не пробовал). Пригодится на более масштабных проектах.
Хотел выложить то что получилось, все таки первая выполненная полностью под заказ и законченная работа (хоть и не большая). Но большое начальство велело не распространять. Грустный
« Последнее редактирование: 08 Декабря 2009, 06:38:40 от micB »
 
  [1] 2
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Логика > On Left Mouse Down. На мой взгляд ведет себя не понятно.
Перейти в: