Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 2319
Вращение объектов. Базовые вопросы
так где флуд? все по теме.
если б тема была просто про солнечную систему я бы даже внутрь не заглянул... неинтересно.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 4069
Vladimir488 писал(а):
Если отдельным блупринтом (компонентом путаюсь), который вращать будет все и ффся - то да.


можно иметь отдельную функцию, в библиотеке функций, функция будет иметь inputs и outputs, такие функции доступны в любом месте проекта.
Но да, для этого нужно создать отдельный блупринт класса (Blueprint Function Library), но это не будет компонентом, такая библиотека может содержать в себе множество самых разнообразных функций, на все случаи жизни(например вращение объекта относительно другого объекта, с рядом параметров), и легко интегрируется в другие проекты еcли это нужно.
Каждая функция из этой библиотеки, будет вызываться в нужном блупринте строго по необходимости.
Аватара пользователя
Пользователь
Сообщения: 995
Prytaleks писал(а):
Vladimir488 писал(а):
Если отдельным блупринтом (компонентом путаюсь), который вращать будет все и ффся - то да.


можно иметь отдельную функцию, в библиотеке функций, функция будет иметь inputs и outputs, такие функции доступны в любом месте проекта.
Но да, для этого нужно создать отдельный блупринт класса (Blueprint Function Library), но это не будет компонентом, такая библиотека может содержать в себе множество самых разнообразных функций, на все случаи жизни(например вращение объекта относительно другого объекта, с рядом параметров), и легко интегрируется в другие проекты еcли это нужно.
Каждая функция из этой библиотеки, будет вызываться в нужном блупринте строго по необходимости.


Не знаю, что-то подсказывает мне идея не сильно гибкая (по крайней мере в этом случае).
Пример: хоть в библиотеках всего пару раз за жизнь был, но могу себе представить какой будет бардак, если в книги каждый будет делать свои записи. 8) Ну или: бригада строителей работающих в библиотеке, хотя могут конечно полки с книгами с собой на стройку взять. И кстати да Гугл... Ну дак там же свои правила - библиотекари, которые книжки эти строителям раздает, по записям. Мм...

Плохо помню про что но вроде как пример гибкости подойдет: https://www.youtube.com/watch?v=qr4ZjieAQKY
Ну да, или наспаунил 150-300 коробок с физикой, а потом к одной(рандом) из них прицепил анимацию(котенка из коробки) - которого нужно найти да спасти. 8)
Аватара пользователя
Пользователь
Сообщения: 77
Итак, создаешь блупринт актор (RotatorActor) в нем add component / static mesh и выбираешь тот объект, к-рый у тебя будет крутится.

Сам ВР:

Изображение

Изображение

Создаешь переменные:
Center (тип vector) (0,0,0) центр, "точка вращения".
Radius (тип vector) (100,0,0) начальный радиус. У переменных ставишь галочку Editable и Show 3D Widget. Теперь они отображаются, когда на сцену вытащишь свой ВР. Передвигая мышкой Radius ты будешь регулировать расстояние до центра вращения.

Создаешь переменные:
Rotation Speed (Float) поставь 50 и сделай ее Editable, это скорость вращения твоего объекта.
СurrentRotation (Float) текущее вращение.
TargetAct (Actor Reference) объект вокруг которого будет вращение. Сделай его Editable. Когда вытащишь ВР на сцену, то нажав на пипетку сможешь выбрать любой объект вокруг к-го будет вращение (в моем примере вращается вдоль оси Y). Пиши, если не разберешься.

Изображение


Господа с большим...опытом, теперь обращаюсь к вам, чтобы не вставать дважды. Проверил, все работает корректно, но хочется довести до конца. Координаты Center и Radius являются локальными. При выборе объекта, вокруг к-го будет вращение в переменную Center записываются его мировые координаты. Из-за чего отображаемый в виде ромба Center улетает в стратосферу. Его новые значения могут быть (5027, 103, 490), которые остаются локальными. В то время как координаты Radius'а остаются неизменными (100,0,0).

Вопрос, как после выбора объекта вокруг к-го будет вращение, значение локальных координат Center'a осталось неизменным - (0,0,0)?
Аватара пользователя
Пользователь
Сообщения: 2319
что только не выдумают чтоб не разбираться с кватернионами и трансформами...
нужна всего дна функция...
по коду что я на первой странице выкладывал:
Изображение

https://i.imgur.com/GpScXlL.gifv
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 77
Я сделал БП где можно повесить вращающийся объект на все, как и хотел автор + можно редактировать мышкой увеличивая / уменьшая радиус вращения. А у тебя так? Что только не выдумают, чтобы не ответить на мой вопрос выше о сохранении локальных координат Center'a. По факту готова система, немного не доделана, хотя работает корректно. Да, написано много полезной инфы, но она разрознена и дана по кускам и челу впервые столкнувшемся с UE4 понять будет сложно.
Аватара пользователя
Пользователь
Сообщения: 2319
unreal4 ,
у меня просто три переменные
1 - трансформ вращающегося обьекта
2 - трансформ обьекта вокруг которого будет вращение
3 - само вращение можно задавать произвольным образом в системе координат обьекта N2
если указать во 2 нули в ротаторе будет мировые координаты, центр вращение задает вектором.
все возможные условия заданы в этих трех переменных.

применение самое широкое... насколько можно вобще представить...
анимаровать надо? добавляешь к ротатору еще ротатор определенные промежутки времени...
можно даже получить позицию обьекта в любой момент времени... нужно только умножить ротатор на время и подставить в функцию...

можно в любой момент поменять данные 1 и 2 и будут другие параметры вращения , меняется как центр так и расстояние до центра вращения...

кароче... и все это одной функцией которую можно вызвать где угодно.
не убедительно??? 5 строчек исполняемого кода!
это не что-то сложное - это основы! без них в среде 3д манипулировать обьектами можно даже не пробовать.
потому что иначе на самые примитивные действия будут строиться вавилонские башни из костылей.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 77
Snake,
неубедительно то, что судя по ВР, имеется два объекта типа scene component. А если нужно вращать вокруг другого ВР (например лампы) наш объект? Что тогда? Я не спорю, что через С++ решение любой задачи будет менее ресурсозатратным чем через ВР. Если автор этой темы сидел на Юнити и знаком с программированием, то зачем ему гемор с анрилом? Я до сих пор кувыркаюсь с мелочами, т.к. скуднейшая инфа в оф. документации. Которая несет только энциклопедический характер, без примеров. Спасает ютюб и оф. форум.
Аватара пользователя
Пользователь
Сообщения: 2319
unreal4, это фиаско...
поменяй сцен компоненты на что угодно: на другой бП, актора, компонент, или просто трансформ, или полученый в результате какого-то расчета.
функция не привязана к обьектам она -"только математика" - даешь данные на вход, получаешь данные на выходе, какие дашь такие получишь...
какие данные ей давать и как поступать с результатом вообще неважно... на скрине только пример применения, очень простой пример.
и такую функцию можно сделать не только на С++ но и на блупринтах, она будет чуть медленнее и чуть уродливее из-за недоступности некоторых С++ методов, но делать все то же самое.
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 77
Snake, я не знаю троллинг это или нет, но я показал пример в виде ВР, где можно приаттачить к чему угодно выбрав пипеткой любой объект сцены без всяких "ну поменяй это на это, это ведь просто пример". Себя поставь на место задающего вопрос, когда все объяснение сводится к "два пишем, один в уме". И из-за этой недоговоренности, "то что итак понятно", новичок теряет неделю, чтобы въехать, т.к. ответ был раскрыт не полностью. А то, что к функция не привязана к объектам, спасибо, Америку открыл) Поэтому, по поводу фиаско, ты не по адресу.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница