Quest3D - Русскоязычное сообщество

Quest3D => Логика => Тема начата: Paul_Winex от 07 Сентября 2009, 18:58:44



Название: [Логика]Управление анимацией
Отправлено: Paul_Winex от 07 Сентября 2009, 18:58:44
Приветсвую, уважаемые.
Такой вопрос в тему "Как сделать?" Хочу сделать анимацию которая проигрывается туда-сюда реагируя на одно и то же действие. То есть, классический пример - дверь. Тыкнули мышой - открылась, тыкнули еще - закрылась. Так же сигналом может быть другой объект или триггер. Анимация находится на одном Таймере. Открытие с кадра 1 по 50, закрытие 50-100. В обем как это реализовать?
Мерси за содействие всем кто поможет. ;)


Название: Re: Управление анимацией
Отправлено: Paul_Winex от 07 Сентября 2009, 19:23:45
Да, вопросы ламерские, но наверное для этого и сделан форум. Кто знает отвечает или показует где это уже описано. К сожалению база знаний здесь только в виде форума. Уроки не очень расчитаны к пониманию для чайников.


Название: Re: Управление анимацией
Отправлено: barmadjar от 07 Сентября 2009, 23:31:49
Лови, дружище!
Набросал на скору руку простейшую схему.
С таймерами, надеюсь разберешься сам - что для чего (смотри здесь: http://guest3d.wohlnet.ru/g3d/?q=node/24 )
Клавиша Q открывает дверь, W - закрывает и так далее до посинения ;)
Ежели чего не ясно - спрашивай!
PS: единственное что - смотри в режиме Perspective View, а не Camera View, поскольку с камерой я не заморачивался)


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 12:49:09
Спасибки за пример. Одну проблему решил TimeCommander с тапаметром GoToStart и с ренжем 0-00.1. Он решил пролему однаразовой анимации, то есть теперь можно прокручивать много раз.
Но всё ж надо доработать.
1 - Если нажать открытие с уже открытой дверью, она опять проиграет анимацию открытия. Но это может решить испльзоване одной клавиши.
2 - Надо настроить на использование одной клавиши.

Я немного подшаманил и соеденил на логику AND два канала - Mouse Intersection (курсор на объекте) и LeftMouse(нажата ЛКМ), если оба правда, то AND возвращает 1 на Trigger типа Llip\Flop (переключатель), который при получении еденицы поочередно меняет 1 и 0 (другого метода определения положения я пока не знаю). Когда подключил это всё на условие к IfElse, пришел косяк, один из каналов IfElse активен сразу же. Когда прикручиваю те же условия нажатия и пересечения в купе с AND на тригер выше IfElse, но первые условия на AND не работают.

Хотел бы понять как действуют команды в канале TimerCommand?
Например:
- Play to End > значит играть От заданного кадра ДО заданного, или до самого конца.
- Rewind > это к началу анимации или к предыдущему кадру?
- GoTo Start > Это в начало таймера или в указанный в параметре кадр? А команды GoTo start & Play / Stop кажутся скрещены из нескольких других команд.

И как выполнить какой-то действие когда анимация наприер выполнилась с кадра 0 до 50. Например после открытия двери зажегся свет.

Еще раз спасибо barmadjar'у за помощь!


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 14:49:39
Ниже представлена схема, которую я собрал без использования IF. Основан он на канале Call Selected. Он принимает значение и относительно него вызывает соответствующий канал. Дефолтное значение я поставил 0, и нулевой канал сделал пустым. В канале UserInput менял значение True на 1-3 и при нажатии вызывается соответствующий канал (да, стати, сделал 3 участка на таймлайне с разной анимацией). Внизу слева канал AND, который при совпадении внизу двух единиц тоже получает 1. На основе него надо сделать счетчик, который имеет формулу что-то типа:

Код:
If A<3
then
 A=A+1
else
 A=1

Число передается в тригер, и так как больше 0 - активирует его. И передает значение вызываемого канала.

Подскажите где можно такое сделать? С Expression Value я не смог подружиться, не пойму что она возвращает.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 15:25:04
Прошу прощения если много задаю вопросов, но у меня часто бывает так что пока не спрошу, сам ответа не нахожу, а как только нажал ОТПРАВИТЬ, в голову приходит ответ :) Ну вот так и щас получилось. Сделал я поочередную смену анимаций. Смотрите картинку. Не наю стоит ли выкладывать исходник, у меня версия квеста 4.2.3. Ну там собственно и не так сложно.
Кстати без barmadjar у меня бы не получилось.

Теперь о решении. Как я и думал, проще написать скрипт чем крутить кучу нод. Вот код:
Код:
-- CallChannel function is called when channel is called
function CallChannel()
end

-- GetValue function is called when this channels is used as Value
function GetValue()

local ch0 = channel.GetChild(0) -- получаем значение потомка
local v = ch0:GetValue() -- пишем это значение в v

 if v<3 then v=v+1 else v=1 end -- счетчик
 ch0:SetValue(v) -- обновляем потомка
return v --возвращаем текущее значение счетчика
end

Не знаю, надо ли было использовать две Value, просто не знал как сверху получить текущее значение. А хранить в потомке удобно.
Меняя в формуле выражение v<3 на например v<5 мы можем прикрутить 5 разных анимаций. В моем примере в 0-м канале пусто, туда можно и дефолтную запуздырить.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 15:30:28
Но не думайте что мытарства закончены. Если это дверь или какой аниматорик в музее, то будет глупо если получится его запустить стоя в 20 метрах от него. Надо еще добавить условие расстояния до объекта. Кто знает как вычислять расстояние?
Потом его сравнить по формуле А<=Б и сделать вывод - запускать анимацию или нет.
Так же можно сделать это с помощью учёта коллизии с окружающим (невидимым) объектом. Ну думаю лучше один раз за нажатие просчитать вектор, чем каждый кадр просчитывать наличие коллизии.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 15:49:22
Если видели схему выше, то поймете.
Между верхним триггером и Call Selected я вставил канал IF. На условие поставил Expression Value с такой формулой:

Код:
A=0 || A=10 || A=20 || A=21 || A=30

В ней фигурируют ключевые кадры анимации. На формулу снизу подключил таймер. В результате канал Expression Value получает значение таймера и сравнимает его с указанными кадрами. Если ни одно значение не подошло - другая анимация не запустится. Это решене проблемы, когда во время анимации повторное нажатие запускает другую анимацию. С этой формулой пока не закончится одна, другая не начнется.

PS. Что насчет рассстояний? Я даже не знаю чем их менрять! Знаю только что надо применить матрицу положение камеры и объекта. А куда применить...?


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 16:09:04
Задача вычисления расстояния уводят нас к истокам другого форума...
http://guest3d.wohlnet.ru/forum/index.php?topic=375.0 (http://guest3d.wohlnet.ru/forum/index.php?topic=375.0)


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 08 Сентября 2009, 17:44:22
дядя, это ты сейчас с кем общяешся?)))
в общем всё я не осилил, но могу посоветовать заменить конструкцию типа

Код:
If A<3
then
 A=A+1
else
 A=1


на выражение типа А=(А+1)%3
в случае использования Expression Value это выглядит так как на скрине


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 18:25:54
Цитировать
А=(А+1)%3

Что-то из ряда высшей математики :) Поясни что делает формула.

PS. хотел выложить исходник, но решил дооформить. Так как на объект надо тыкать мышой, хотел сделать в центре экрана типа прицела и им тыкать. В центре сделал, курсор спрятал, а как теперь сделать так чтобы этот прицел считался курсором? На данном сайте такого не очень нашел или недосмотрел. Поможите!!!! Пример хороший пропадает!!!!
В общем надо как в стрелялках, мышой крутить камеру, цетром совершать взаимодействия.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 08 Сентября 2009, 22:06:34
В общем если кто не понял что я скажу, пусть попробует походить по сцене и потыкать по объектам. Что не удобное обраруживается?

http://slil.ru/27965687 (http://slil.ru/27965687) (exe 1700кб)

Чтобы сработала поочередная анимация, надо тыкнуть по кубику с расстояния не менее 2. Тыкая по сфере можно запустить 4-ю анимацию. К сфере тоже надо подойти.
Самое главное - попасть курсором по объекту!!!


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 09 Сентября 2009, 11:42:33
'%' -- так обозначают операцию "получить остаток от деления"
вызывая А=(А+1)%3 будем перебирать последовательность
0->1->2->0->1->2...
перебирая от 0 до N-1, а не от 1 до N удобнее пользоваться тем же Channel Switch -- не надо делать этих финтов ушами с одним пустым линком

Что касается прицела как в стрелялках, то посмотри ченел Copy Image. Им можно нарисовать прицел. А чтоб определить центр экрана можешь воспользоваться ченелом SysInfo


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 14:12:34
Финт с пустым слотом сделан для отсутствия дефолного положения, мне так легче. Я туда мог просто пустую ноду тыкнуть, это без разницы. Плюс есть возможность добавить дефолтное если потребуется.
Что касается прицела, если ты качал сцену то видел что плюс и так в центре, что я сделал как раз через SysInfo. Вопос в другом, как сделать этот прицел активным для нажатия на объекты вместо курсора?


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 14:36:10
МОЖЕТ МНЕ КТО-НИБУДЬ ПОЯСНИТЬ О ЧЕМ РАЗГОВОР НА ЭТОМ ФОРУМЕ? Я не про перевод а про решение.
http://forum.quest3d.com/index.php?PHPSESSID=r3cjn6uaaq8ouadladffoelv57&topic=39891.msg91918#msg91918 (http://forum.quest3d.com/index.php?PHPSESSID=r3cjn6uaaq8ouadladffoelv57&topic=39891.msg91918#msg91918) ???


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 14:46:19
Я так понял что надо использовать ноду CollisionRayCheck. В хелпе даже примеры есть в которых фиг разберешься и не совсем то что требуется. Будут желающие подсказать???


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 09 Сентября 2009, 14:47:49
Финт с пустым слотом сделан для отсутствия дефолного положения, мне так легче. Я туда мог просто пустую ноду тыкнуть, это без разницы. Плюс есть возможность добавить дефолтное если потребуется.

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

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

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

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


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 15:04:08
DetectMouseCollision регистрирует пересечение мышой, а мне надо пересечение с центром экрана! Я как-то пытался нетровать курсор через SystemCommand, при включении этой ноды всё жутко начинает тормозить!
Сечас пытаюсь понять что тут
http://support.quest3d.com/index.php?title=CollisionRayCheck (http://support.quest3d.com/index.php?title=CollisionRayCheck)

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


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 15:17:42
Из примеров есть файл "Pick mesh with mouse", думаю там есть нечтоподобное, но как вектор мыши заменить на вектор каметры? Или точней крестика в центре. Пусть будет математика, не страшно, главное понять!


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 15:33:02
Из примеров есть файл "Pick mesh with mouse", думаю там есть нечтоподобное, но как вектор мыши заменить на вектор каметры? Или точней крестика в центре. Пусть будет математика, не страшно, главное понять!

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


Название: Re: [Логика]Управление анимацией
Отправлено: Ruslan от 09 Сентября 2009, 17:10:07
Paul_Winex

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


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 17:21:24
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 первых входа для векторов. Помогите разобраться что куда надо тыкнуть чтобы вектор был из центра камеры! Где же гуру подевались? Я тут один сам с собой разговариваю?


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 17:28:20
http://forum.quest3d.com/index.php?topic=65016.0 (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 (http://forum.quest3d.pl/index.php?PHPSESSID=d69c149c0c4a15f1cafd4386cbc30103&action=dlattach;topic=576.0;attach=701;image)


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 09 Сентября 2009, 17:35:08
псдц, ты спамиш быстрее чем я читать успеваю, у меня ощущение, что ты сначала спрашиваеш как решить твою проблему, а только потом сам начинаеш думать над этим

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


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 17:43:13
Я НЕ СПАМЮ! Я РАССУЖДАЮ!
А скрин из предыдущего оказывается привязывает линию к камере :(
Щас посмотрю твою версию хотя ничего не понял. Можешь показать на примере?


Название: Re: [Логика]Управление анимацией
Отправлено: Sqwer от 09 Сентября 2009, 18:20:28
Paul_Winex есть такая штука - "Изменить"


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 09 Сентября 2009, 19:01:05
Я в курсе, но не понял к чему это. Если хотите только вразумительный текст на форуме, то отвечайте, а то когда я тут один то и пишу что хочу :)
Ну я не прям так типа заставляю, просто как-то скучно одному разбираться. А насчет того что сам спрашиваю - сам отвечаю, это да, привычка. Ну да не будем флудить, лучше по делу.
Предлагаю тему по поиску решения насчет активного центра экрана перенести в новую тему. Если конечно кто будет там участвовать. Хотя странно что никого, ждете что ли готового ответа? Или знаете но молчите?


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 10 Сентября 2009, 00:17:22
Некоторые успехи по изучению collisionraycheck (исправлено).

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



Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 10 Сентября 2009, 10:54:01
к 3-ему чаилд линку там подконекчена полная ересь, должен быть "простой вектор", в который CollisionRayCheck будет записывать координаты пересечения луча с объектом.
Ещё много интереснейших вещей можно для себя почерпнуть просто выделив этот ченел и нажав F1


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 10 Сентября 2009, 12:16:50
Согласен, но попытка не пытка. Сделай как надо, поделись умением, я поправлю. Кстати пересечение считается не с центральной точкой а с чем-то другим. Так как вычисление этой точки я поставил не верно, судя по твоим замечаниям.
В общем попробуй сделать так, чтобы активной был именно центральный пиксель экрана! А я изменю тот корявый пост. Спасибо.


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 10 Сентября 2009, 14:01:58
переделал тот экзампл с CollisionRayCheck, который ты где-то раньше нарыл. В целом получилось очень похоже на то что ты делал, но в этом примере лучше видно как нужно работать с этим ченелом.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 10 Сентября 2009, 15:00:03
Так, ясно. Значит первые два чилда это координаты и направление, то есть входящие данные, вторые два это выходы, координаты точки пересечения и???
А так же длина вектора влияет на его точность. Значит дистанцию до объекта надо проверять отдельно если это требуется.
Спасибо за содействие.
Последнее, зачем в том примере стоит повторение? Что это дает?


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 10 Сентября 2009, 21:51:46
прошу пардону, я там сделал ошибку, из-за которой потом и приходилось ровнять точность. Просто я забыл, что при умножении на матрицу камеры будет учтено ещё и смещение самой камеры. В общем щяс я исправлю тот пост и перезалью пример.
Что касается чаилд линков CollisionRayCheck, то блин, почитай в конце концов хелпу! Там всё расписано, и те выводы которые ты сделал сейчас там были указаны сразу. Четвёртый ченел возвращает нормаль к полигону с которым произошло пересечение луча.
Про повторение не понял о чём речь.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 10 Сентября 2009, 23:17:06
Первое что я проситал - это мануал! но если б я понял о чем в нем толкуется, я б не спрашивал! Всегда пол дня трачу на поиски и только потом спрашую !!! Если знаешь лучше, помоги пожалуйста советом. За это будешь отблагодарён по самые немогу! :)
На 4м чилде у меня постоянно скакало то 1.0.0 то 0.0.1, и отрицательные значения. Можешь в двух словах сказать если знаешь, что это значит?


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 11 Сентября 2009, 00:11:53
На 4м чилде у меня постоянно скакало то 1.0.0 то 0.0.1, и отрицательные значения. Можешь в двух словах сказать если знаешь, что это значит?
так вроде ж уже
Четвёртый ченел возвращает нормаль к полигону с которым произошло пересечение луча.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 11 Сентября 2009, 07:36:17
Понятно что уже, но я же про другое говорил, что означают эти цифры? Почему крайние меняются на 1, 0, -1 а центральный всегда 0? Я так понял что это значит с какой стороны полигон пересечен, с лицевой или сзади. В играх применимо, когда например выключательно находится на стене и чтобы его не включили с другой стороны стены, при -1 действие не просиходит. Верно? А в самой ноде CollisionRayCheck меняющийся параметр 0-1-2, я не совсем понял от чего зависит его значение. Должно быть количество пересечений, но опыты показали что нет. Быть может это номер входа с коллизионым объектом, объект которого попал в фокус? Или я не прав?


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 11 Сентября 2009, 08:04:56
Хорошо, по твоему примеру тоже работает, не знаю что ты там настроил, потому что нет никаких пояснений. Если бы ты написал что делает каждый канал, то снизашло бы на нас просетление :) Ну да ладно, и так помог нормально. Спасибо. Буду рад если великий DimiS будет учавствовать в других ветках ::)


Название: Re: [Логика]Управление анимацией
Отправлено: KBECT0MAH от 11 Сентября 2009, 09:07:33
...
А в самой ноде CollisionRayCheck меняющийся параметр 0-1-2, я не совсем понял от чего зависит его значение. Должно быть количество пересечений, но опыты показали что нет. Быть может это номер входа с коллизионым объектом, объект которого попал в фокус? Или я не прав?

Это выводится номер CollisionObject с которым в данный момент пересекается луч.
Первый подключенный CollisionObject выдаёт значение - 1, второй - 2, третий - 3 и т.д.
При отсутствии пересечения с объектами коллизии которые подключены к данному "рэйчеку" выводится - 0.

З.Ы.
Если "рэйчек" использовать для стрельбы, то все объекты сцены должны быть подключены как CollisionObject  :-\
А теперь вопрос - как это будет реализовано?
.


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 11 Сентября 2009, 13:00:34
Если "рэйчек" использовать для стрельбы, то все объекты сцены должны быть подключены как CollisionObject  :-\
А теперь вопрос - как это будет реализовано?
.

можно сделать функцию, которая будет для объекта-параметра проверять пересечение с лучом, и возвращать например дистанцию до объекта если произошло пересечение. Совсем другой вопрос как организовать перебор всех объектов, у каждого это делается по своему. Я использую ОО

Paul_Winex, о том что я "великий" было известно ещё до тебя :P Если иногда у меня не хватает времени или желания расписывать всё подробно, то это ещё не повод писать в такой форме, можно просто попросить. Я попробую улучшить там описание. А уж то что ты не знаешь про нормаль, так это и вовсе не мои проблемы. Я думал, что если уж ты занимаешься моделированием то точно должен знать, хотя этому ещё в школе учат на геометрии. Ну а на крайняк http://www.google.com/search?q=%ED%EE%F0%EC%E0%EB%FC , тебе нужна именно нормаль к плоскости, поскольку полигон задаёт плоскость.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 11 Сентября 2009, 15:47:46
Я в курсе что такое нормаль и всё из этого вытекающее и ни в коем случае не писал тебе грубых форм! Перестаньте воспринимать обычное обращение или комплименты как оскорбления! Я спрашивал какова конструкция конкретного канала, как он действует и как это применить?
Скорее всего тема настолько разнообразна в вариациях написания что мы не поймем друг друга :) Всё нормально дружище! Тока без обид!

2KBECT0MAH
Цитировать
А теперь вопрос - как это будет реализовано?
Понятно что если уровень огромен или много уровней, то на один рейчек не навяжешь, но ведь есть такие ноды как ЧенелСелектор,  в зависимости он места нахождения подключаются нужные объекты. Да, дерево от этоно не уменьшится, но будет меньше ресурсозатрат. Так же в каждой локации может быть прописан одинаковый алгоритм рейчека для конкретной сцены. Не удобно но тоже вариант. А что можешь ты предложить? Идеи есть? Или я тут пишу ламерские решения и всё уже придумано до нас?


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 11 Сентября 2009, 16:46:06
Ок, всё нормально, без обид  :)
Нормаль можно применить по разному, для реализации рикошета или для отражения лучей. Хотя для первого существуют движки физики, а для второго шейдеры. Но вот в некоторых РПГ играх можно клацнуть мышой куда идти персонажу, и там будет мигать красивая анимированая моделька например стрелочек сходящихся в точке клика. Красивее выглядит если эта моделька ещё и наклонена по ландшафту


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 11 Сентября 2009, 18:09:53
Это ты рассказал глядя на свой пример где у тебя нормаль показывается в трех координатах с числами равными углу падения луча, у меня же числа равны примерно следующему -1.0.0, 0.0.1, и тд. Думаю проблема в неверном подключении нод, надеюсь в будущем такой конструкции не собреу, потому можно проехать эту тему. У меня по управлению анимацией пока вопросов нет, было бы здорово если поможешь с дургой темой :)

http://guest3d.wohlnet.ru/forum/index.php?topic=192.0 (http://guest3d.wohlnet.ru/forum/index.php?topic=192.0)
Там мой пост 10 очень ждет ответа  ::)


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 11 Сентября 2009, 19:40:07
Нормаль -- это единичный вектор перпендикулярный к плоскости. Именно по этому любая его координата всегда <=1, и в моём примере это точно так же, можешь открыть и убедиться.

А по поводу твоего вопроса в другой теме... чёто я его нифига не понял. Ты не знаешь как увеличить Value на один? Или ты не знаешь как вызвать увеличение Value при нажатии на кнопку? В любом случае всё это используеться буквально в любом примере, и в моём, и даже в том что ты делал.


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 11 Сентября 2009, 22:54:33
Да, видимо не понял. Ну вот пример другой. При нажатии на клавишу надо мне повышать красное самосвечение сферы на 0.1, что задает видимо формула. Как мне потом результат формулы передать в канал R Emission?


Название: Re: [Логика]Управление анимацией
Отправлено: IYV от 12 Сентября 2009, 00:44:00
Тут даже специальным каналом на SDK не обойдешся,потому как это дзеновская задача ;D.Любая подсказка в итоге только помешает тебе испытать сильнейший катарсис,после продолжительного размышления над ней.


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 12 Сентября 2009, 04:45:00
Тут даже специальным каналом на SDK не обойдешся,потому как это дзеновская задача ;D.Любая подсказка в итоге только помешает тебе испытать сильнейший катарсис,после продолжительного размышления над ней.

 ;D это отжиг)))
помню тоже когда то для решения таких задач делал проверки на нажатие и отпускание кнопки, зато потом я познал Дао и стал настоящим дзен-программистом  :D


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 12 Сентября 2009, 11:39:28
Цитировать
Тут даже специальным каналом на SDK не обойдешся
Да ладно шутить,  задача простая. А как еще хранить изменяемые значения и их применять?
Я например мог бы сделать через скрипт LUA, который может управлять своими потомками, но вы же будете говорить что намудрил, вот и спрашиваю о стандартных простых методах!!! Просто я не знаю какие каналы могут направлять данные вниз по дереву, так как обычно команды идут сверху а данные снизу (ну не пытайтесь это понять если не поняли, я сам не совсем в курсе что сказал :) )


Название: Re: [Логика]Управление анимацией
Отправлено: KBECT0MAH от 12 Сентября 2009, 13:14:57
Для передачи данны можно использовать каналы которые начинаются на "Set", например Set Value.
К первому "чайлду" подключается источник, к всем последующим приёмники.
.


Название: Re: [Логика]Управление анимацией
Отправлено: DimiS от 12 Сентября 2009, 14:35:11
ChannelSwitch спасёт отца русской демократии, ток ты уж разберись как он работает.
Ну и ещё, UserInput можно использовать как индекс  ;)


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 12 Сентября 2009, 14:48:33
KBECT0MAH мерси, то что и надо  :D Получилсоь собрать, но теперь посмотри, логично ли я замутил? Правда там надо делать сброс когда дойдет до 1, но пока это не важно.
ChannelSwitch я в курсе как работает, но толкую я про другое. И что ты имеешь в виду под
Цитировать
Ну и ещё, UserInput можно использовать как индекс

 В нем можно ведь только 0 и 1 писать. Или ты хотел сказать на разные кнопы ставить разные цифры? Типа Q=1 W=2...


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 12 Сентября 2009, 15:22:50
Не посчитайте что я совсем лопоухий антиматиматик :) но вопрос такой: надо сделать условие в ExpresonValue. Там какими-то символами надо оперировать в которых я пока не разбираюсь. (в хелпе кое что понятно но желаю спросить у профи :) ) Условие такое:
(изначально: А=0.1, B=изменяемое число)- то есть получается то что на скрине выше
Код:
if OLD = 1 then OLD = 0 end
B+A


Название: Re: [Логика]Управление анимацией
Отправлено: IYV от 12 Сентября 2009, 16:56:21
Paul_Winex  прошу пращения за не совсем уместный сарказм по поводу твоей предыдущей задачи,просто из твоего описания я понял,что ты не можешь  результат формулы передать в канал R Emission ,а не втом что ты его не можешь удержать.А данная задача может решаться на пример так,как на скрине.К стати в хелпе подробно эта тема рассматривается(см скр).


Название: Re: [Логика]Управление анимацией
Отправлено: Paul_Winex от 12 Сентября 2009, 19:17:19
IYV спасибо за разъяснения. Действительно в процессе сборки логики меня сумтило что нельзя с нижнего выхода Value полученное число перевести как входящее так же в нижний уже ВХОД другого Value. Но канал Set... это решает, причем довольно логично, хотя и громоздко. И если бы знял о существовании такого канала как Set..., то наверняка бы понял о его назначении и почитал мануал. Требовалось понять логику передачи результата вычисления в другой носитель.
В общем спасибо!