• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

[Логика]Управление анимацией

Автор Paul_Winex, 07 сентября 2009, 19:58:44

« назад - далее »

Paul_Winex

Я так понял что надо использовать ноду CollisionRayCheck. В хелпе даже примеры есть в которых фиг разберешься и не совсем то что требуется. Будут желающие подсказать???

DimiS

Цитата: Paul_Winex от 09 сентября 2009, 15:12:34
Финт с пустым слотом сделан для отсутствия дефолного положения, мне так легче. Я туда мог просто пустую ноду тыкнуть, это без разницы. Плюс есть возможность добавить дефолтное если потребуется.

лан, кто захочет -- тот поймёт

Цитата: Paul_Winex от 09 сентября 2009, 15:12:34
Что касается прицела, если ты качал сцену то видел что плюс и так в центре, что я сделал как раз через SysInfo. Вопос в другом, как сделать этот прицел активным для нажатия на объекты вместо курсора?

Нет, я твой пример не качал  :) но он у меня и не откроется скорее всего, у меня версия 4.2.2
Тебе нужно использовать не DetectMouseCollision как ты наверно сейчас делаешь, а CollisionRayCheck, и луч пускать через средину экрана от камеры. Там понадобится немного математики чтоб сделать всё нормально, но по-моему где-то я видел пример с использованием этого ченела

Об этом же речь и по той ссылке

Paul_Winex

DetectMouseCollision регистрирует пересечение мышой, а мне надо пересечение с центром экрана! Я как-то пытался нетровать курсор через SystemCommand, при включении этой ноды всё жутко начинает тормозить!
Сечас пытаюсь понять что тут
http://support.quest3d.com/index.php?title=CollisionRayCheck

Я кроме сцены еще и EXE выложил. Посмотри там, может сразу поймешь.

Paul_Winex

Из примеров есть файл "Pick mesh with mouse", думаю там есть нечтоподобное, но как вектор мыши заменить на вектор каметры? Или точней крестика в центре. Пусть будет математика, не страшно, главное понять!

Paul_Winex

Из примеров есть файл "Pick mesh with mouse", думаю там есть нечтоподобное, но как вектор мыши заменить на вектор каметры? Или точней крестика в центре. Пусть будет математика, не страшно, главное понять!

Вот на иностранном форуме интересные картинки, но я не совсем пока понимаю что куда...
http://forum.quest3d.pl/index.php?topic=576.msg3461
И я так понял что символ в центре непричем, надо сделать вектор из центра камеры и с ним регистрировать пересечения.

Ruslan

Paul_Winex

Посмотри в этой теме, там уважаемый Sqwer уже ответил на этот вопрос в посте №6
https://guest3d.wohlnet.ru/forum/index.php?topic=721.0

Paul_Winex

Children
Original Position - Value Vector
Position of the ray
Movement Vector - Value Vector
Movement of the ray
Out: Intersection Point - Value Vector
Intersection Point
Out: Intersection Direction - Value Vector
Intersection Direction
Collision Objects - CollisionObject
Objects that need to be checked for collision


Скрин и файл содержат такую структуру где имеется ответ, только глубоко. В ноде CollisionRayCheck имеются 4 первых входа для векторов. Помогите разобраться что куда надо тыкнуть чтобы вектор был из центра камеры! Где же гуру подевались? Я тут один сам с собой разговариваю?

Paul_Winex

#22
http://forum.quest3d.com/index.php?topic=65016.0
Цитировать* Create a new vector (0,0,1000). It now points into the positive Z direction.

* Multiply this vector with the rotation matrix from the camera:

  - Get the rotation vector from the camera and connect it to a new matrix.

  - Connect a Matrix Operation channel to the second child of the Ray Collision channel, and set this operator to 'Multiply Vector with Matrix'.

  - Connect the new vector (0,0,1000) to the first childlink, and the newly created camera rotation matrix to the second childlink.


* Link your collision object(s)

* Move the camera around, and check if the ray collision returns which object is hit.

Вот тоже описание, но тоже не понятно. Точней до половины понятно а дальше опять повторение что ли...

Но собственно в этом скрине видно что надо, тока затуманено жутко...
http://forum.quest3d.pl/index.php?PHPSESSID=d69c149c0c4a15f1cafd4386cbc30103&action=dlattach;topic=576.0;attach=701;image

DimiS

псдц, ты спамиш быстрее чем я читать успеваю, у меня ощущение, что ты сначала спрашиваеш как решить твою проблему, а только потом сам начинаеш думать над этим

вот на том скрине из предидущего поста всё правильно, только вместо оператора Mouse Intersect XY Plane нужно использовать Screen pos intersect XY plane

Paul_Winex

Я НЕ СПАМЮ! Я РАССУЖДАЮ!
А скрин из предыдущего оказывается привязывает линию к камере :(
Щас посмотрю твою версию хотя ничего не понял. Можешь показать на примере?

Sqwer

Paul_Winex есть такая штука - "Изменить"

Paul_Winex

Я в курсе, но не понял к чему это. Если хотите только вразумительный текст на форуме, то отвечайте, а то когда я тут один то и пишу что хочу :)
Ну я не прям так типа заставляю, просто как-то скучно одному разбираться. А насчет того что сам спрашиваю - сам отвечаю, это да, привычка. Ну да не будем флудить, лучше по делу.
Предлагаю тему по поиску решения насчет активного центра экрана перенести в новую тему. Если конечно кто будет там участвовать. Хотя странно что никого, ждете что ли готового ответа? Или знаете но молчите?

Paul_Winex

#27
Некоторые успехи по изучению collisionraycheck (исправлено).

Входы collisionraycheck (слева направо):
1 - вектор положения камеры (старт луча)
2 - направление и длина луча, сложенная из матрицы камеры (видимо поворот) и простой вектор с заданием глубины. Изменяя глубину можно ограничить радиус действия вектора.
3 - вывод координат точки пересечения.
4 - тоже какой-то вывод....
4< - колизионные объекты.


DimiS

к 3-ему чаилд линку там подконекчена полная ересь, должен быть "простой вектор", в который CollisionRayCheck будет записывать координаты пересечения луча с объектом.
Ещё много интереснейших вещей можно для себя почерпнуть просто выделив этот ченел и нажав F1

Paul_Winex

#29
Согласен, но попытка не пытка. Сделай как надо, поделись умением, я поправлю. Кстати пересечение считается не с центральной точкой а с чем-то другим. Так как вычисление этой точки я поставил не верно, судя по твоим замечаниям.
В общем попробуй сделать так, чтобы активной был именно центральный пиксель экрана! А я изменю тот корявый пост. Спасибо.