Автор Тема: Надо чтобы модификатор curve изменял только координаты объекта, но не сам объект  (Прочитано 12261 раз)

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
>> у меня не получается....

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

... milyad,сейчас подготовь простую анимацию танка (без анимации гусениц и колес, пусть они просто будут стоять где-нибудь в сторонке) ...
... как только у тебя будет готова твоя тестовая сцена с простой анимацией танка, сбрось её в этот топик ...

« Последнее редактирование: 15 Март 2012, 06:35:27 от sungreen »
Для Кота

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
... Идея достаточно простая: Анимация движения дает изменение положения и поворот корпуса. Уже по ходу этой анимации движения корпуса, необходимо рассчитать значения поворотов колес и перемещений треков в нужном карде в зависимости от изменения положения (перемещения и поворота) корпуса ...
... Для этого в сцене необходимо сделать анимацию перемещения корпуса. Сделать такую анимацию можно либо анимацией вдоль пути, либо анимацией по ключевым кадрам, либо скриптами. Далее необходимо будет запустить код, который проанализирует изменение положение корпуса в каждом кадре и сделает соответствующие настройки анимации для колес и треков ...
... В двух словах вот что происходит. Задав анимацию корпуса, получаем для каждого кадра положение v1 и поворот r1. В каждом кадре сравниваем положение корпуса v1 и поворот r1 с аналогичными значениями v0 и r0 из предыдущего кадра. Обозначим разность векторов v1 и v0 как вектор dv. Тогда пройденный корпусом межкадровый путь l равняется длине вектора dv.length ...
... Очевидно, что любая точка на треке переместиться в линейном измерении на такое же расстояние l, на которое переместился и сам корпус. То есть треки проходят такой же путь, который прошел корпус, за исключением случаев поворота, когда пройденные пути левого и правого треков корректируются с учетом угла поворота корпуса вокруг оси Z, который определяется как r = (r1.z-r0.z) ...
... Поскольку левый и правый треки отстоят от корпуса на одинаковую величину Н, то полный путь трека при повороте корпуса на 360 градусов будет равен lt = 2*pi*H, а при повороте на угол г равняется lt=2*pi*H * (r/360), а поскольку углы в скриптах Blender представлены в радианах, получаем lt = r*H (очень просто). При этом левый трек пройдет путь trL = 1 + lt, а правый - trR = 1 - lt. Здесь знаки + и - зависят от того что считать положительным поворотом вокруг оси Z. Это условность при которой поворот корпуса по часовой стрелке перемещает правый трек назад ...
... Вращение колес тоже просто рассчитать. Для этого необходимо пройденный треком путь tr (trL или trR) разделить на длину обода колеса. Для колеса с радиусом R количество поворотов составит n = tr / (2*pi*R), а угол поворота в радианах wh = tr / R. Соответственно угол поворота в радианах для левых колес составит whL = trL/R, а для правых колес - whR = trR/R ...
... Для учета движения задним ходом необходимо идентифицировать это движение по изменению положения корпуса. Для этого привяжем к корпусу единичный вектор w, смотрящий вперед по ходу движения. Если вектор w и вектор dv смотрят в одну сторону, то корпус совершил движение вперед, если в разные, то - назад. Во втором случае необходимо брать отрицательное значение 1. Эту проверку будет делать некоторая функция test_psi ...

... В итоге имеет следующую математическую модель:
начальные значения:
trL=trR=whL=whR=0
вход:
v0,v1,r0,rl,H,R,w
выход:
dv=(v1-v0)
l=dv.length*test_psi(w,dv)
r=(r1.z-r0.z)
lt = r*H
trL+=l+lt
trR+=l-lt
whL=trL/R
whR=trR/R

... Строго говоря, корпус не должен двигаться боком. Но такое движение возможно, если например, корпус сползает вниз боком по уклону перпендикулярно основному движению. Соответственно при таком перпендикулярном движении перемещения треков не будет...
... Чтобы отследить это воспользуемся некоторой функцией test_psi(w,dv), которая возвращает значение от -1 до 1, при этом 1 если корпус движется строго вперед, -1 если движется строго назад, 0 если движение перпендикулярно корпусу ...

вход:
w,dv
выход:
dve=dv.normalize
test_psi = ((w+dve).length - (w-dve).length)/2

... Поясню формулу. Допустим векторы w и dve (нормализованный единичный вектор от dv) направлены в одну сторону тогда длина вектора суммы этих единичных векторов равна 2, а длина вектора разности 0, в итоге получаем test_psi = (2-0)/2 = 1 ...
... Если единичные векторы направлены в разные стороны, то суммы этих векторов равна 0, а длина вектора разности равна 2, в итоге получаем test_psi = (0-2)/2 = -1 ...
... Если векторы перпендикулярны, то длина вектора суммы равна длине вектора разности, а следовательно test_psi = 0.
Теперь, с учетом этой функции, если корпус движется вперед или назад, то треки тоже перемещаются вперед или назад. Если корпус сползает в бок, то перемещения треков не будет ...


0001 2000
« Последнее редактирование: 15 Март 2012, 22:39:48 от sungreen »
Для Кота

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
да....
"в двух словах"
Ваши знания достойны уважения!
смысл понятен....но я даже не знаю с чего начать...
какой нибудь простой пример с применением того что Вы сделали...
мне нужно освоить азы. с векторами я не работал...
...пошёл только или уже третий месяц как я в основном по ночам (днём работаю) осваиваю блендер.
я далёк от программирования, но рисую, года четыре назад
сделал несколько мультиков с помощью movie maker, но на три минуты мульта
штук триста рисунков делал и то выходило качество каменного века
да и монтаж этих же рисунков вымораживал...
блендер первый раз поставил и вообще ничего не понял-
это было года два назад...
но в этот раз он меня затянул и чем дальше тем интереснее
...построить модель раскроить для текстуры. да и создать текстуру в графическом редакторе- освоил и на не русском...
арматура ключи это тоже поддаётся...
но то что Вы описали пока даже в голову не влазит.
..блин блендер т.. м...
...не с кем общаться и информации не так уж и много.
огромное спасибо Вам за общение и помощь ....
 пару фоток на чем вожусь-"танк" и "танкист"...


[вложение удалено Администратором]
фсё тлен.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
>> какой нибудь простой пример с применением
... да без проблем, конечно будет пример, то есть blend-файл со всеми выкладками, но его нужно еще доработать, а пока выкладываю небольшой видеоотчет ...
0001 1325
« Последнее редактирование: 16 Март 2012, 07:32:30 от sungreen »
Для Кота

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
здравствуйтеsungreen.
куб по умолчанию что в блендере ключевыми кадрами забил в анимацию
потом нажал "расчёт путей" и он стал правильно разворачиваться
то есть "лицо" всегда смотрело в перёд- Вы это имели в виду- запустить код
.....попробую сейчас гусеницы добавить....
фсё тлен.

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
а как танк с танкисткой на фото на Ваш взгляд?
фсё тлен.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
>> а как танк с танкисткой на фото на Ваш взгляд?
... мне всегда нравилась самодельная анимация, так что здесь все пучком, главное что бы хватило терпения доделать это до финала ..

... на самом деле мульт тяжело делать одному, но тут как-то случайно в гулах по фразе "художника обидеть каждый может" вышел на видеоролик “Пассажир”, на создание которого у автора ушло 8 лет, он начинал создавать его на Pentium 133. Обычно такое мы воспринимаем как одно целое, но на самом деле это неимоверно трудно собрать все во едино - сценарий, картинку, анимацию и звук ...
The Passenger


... вот два пример не доделанных мультфильмов, их авторов знаю лично и очень переживаю, что работы застопорились ...
Трейлер к мультфильму "Девочка и слон"
Видеоотчёт по мульту

>> это имели в виду- запустить код
... нет, нет, нет ...
... у меня есть скрипт собственной разработки, работу которого описал ранее ...
... этот скрипт "синхронизирует" движение корпуса треков и колес ...
... мне нужно еще немного времени чтобы допилить его и тогда выложу его здесь ...
« Последнее редактирование: 17 Март 2012, 00:49:50 от sungreen »
Для Кота

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
(Интеграция отключается при достижения лимита)
это я так понимаю не стоит лепить весь мульт за один раз.
лучше разбить на куски и потом смонтировать.
а ещё вопрос- чтобы ускорить рендер анимации...поможет ли
фокусирование камеры на главном персонаже?
у меня с танкисткой почти сутки обрабатывал пару минут анимации.
...про рыбку классный мульт! мне понравился!
...наверно главное не заморачиваться на детальках
идея и переходы...
а ещё советы у Вас по железу?
комп мой 2005г сборки и уже как бы назревает вопрос о новом
какие нибудь оптимальные варианты не из космических технологий?
....в голове идей много, но Вы правы хватало бы терпения.
ну и ещё один вопросик- если использовать музыку к примеру пинк флойд
..не свою но с указанием автора- это не будет нарушением закона?
фсё тлен.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
>> это я так понимаю не стоит лепить весь мульт за один раз.
>> лучше разбить на куски и потом смонтировать.

... вот еще ссылка на проект мульта, посмотри у них тех.процесс ...
lampibata.org

... а вот "соседи" Михаила Солуянова ...
... насколько помню у него было в первой серии 36 сцен ...
http://sigma-server.com/blender-movie-cocedi/


... по железу сложно сказать, самое тяжелое для железа это рендеринг ...
... но сейчас многие рендеринги ориентируются на перенос вычислений на GPU или даже несколько видеокарт ...
... а кто-то собирает фермы из нескольких компов для рендеринга ...





« Последнее редактирование: 17 Март 2012, 02:26:19 от sungreen »
Для Кота

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
... Выкладываю обещанный простой пример использования скрипта для анимации движения гусениц и колес. Сразу в качестве отмазки скажу, что это не окончательный вариант скрипта, и его можно и нужно дорабатывать, и это не окончательное решение, возможно, есть более простой и удобный способ, и это хотелось бы узнать ...

... Существенное замечание по скрипту - он работает только в одной плоскости и задний ход пока не добавлен ...

Как с этим работать?
1) Запустить анимацию в окне 3D View (ALT-A), убедиться что корпус двигается вдоль
пути, треки перемещаются а колеса, вертятся (ESC).
2) Выбрать кривую waytrack, перейти в режим EditMode и сделать желаемые изменения (в
пределах разумного и без вандализму).
3) Перейти в окно текстового редактора и выполнить скрипт ALT-P.
4) Выполнить пункт 1.

Как это использовать в своих сценах?
Предполагается как минимум два технологических подхода.
Первый предполагает, что анимация движения корпуса уже создана любым доступным
образом. Далее необходимо натравить скрипт make_anim_trackwheel на эту анимацию,
указав в качестве параметров имя обекта-корпуса (или связанный с ним другой
объект/пустышку), а также номер начального и конечного кадра, ширину полубазы и
радиус колес.
Второй подход заключается в том чтобы выполнить предварительную анимацию корпуса вдоль указанного пути некоторым скриптом, а далее уже выполнить анимацию колес и гусениц как и в первом подходе. Для этого необходимо выполнить скрипт make_anim_base, указав ему базовый объект, путь движения, а также номер начального и конечного кадра, ширину полубазы и радиус колес. Скрипт сам создаст анимацию для корпуса и далее выполнит скрипт для анимации гусениц и колес make_anim_trackwheel.

Код: python
def main():
    object_test_name="test_base"
    move_curve_name="waytrack"
    f0=0
    f1=2000
    H=2
    R=1

    nodes=get_nodes(bpy.data.curves[move_curve_name])
    make_anim_base(object_test_name,nodes,f0,f1,H,R)

Что нужно иметь в моделе для работы скрипта?
Нужен базовый объект - корпус - то есть тот объект от перемещения которого будет рассчитываться анимация гусениц и колес. Если этот базовый объект движется в перед то гусеницы должны перемещаться должным образом, а колеса крутиться. В примере в качестве базового объекта выбрана пустышка testbase.
Еще потребуется пара объектов для привязки правого и левого колеса и пара объектов для
привязки правой и левой гусениц.
Их имена формируются от имени базового объекта по шаблону {имя базового объекта}#{имя объекта} и в примере указаны так:
test_base#wheel.R, test_base#wheel.L - для анимации колес
test_base#track.R, test_base#track.L - для анимации гусениц

На самом деле между параметрами анимации гусеницы и колеса есть связь - перемещение гусеницы прямо пропорционально определяет количество оборотов колеса.

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

!!!внимание файл во вложении обновлен!!!

[вложение удалено Администратором]
« Последнее редактирование: 20 Март 2012, 13:28:46 от sungreen »
Для Кота

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
sungreen !!!! СПАСИБО!!!!
буду "обживать" Вашу подвеску.
фсё тлен.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
... дико сорри, пришлось обновить файл во вложении в предыдущем сообщении, скачай по новой вложение ....
... в нем напутал имена функций вместо make_anim_base написал anim_base, что не соответствует описанию ...
Для Кота

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
переделываю свою установку....
и уже не раз сталкиваюсь с тем что вид из камеры не соответствует рендеру
в основном сжимает и искажает масштаб...
самые тупые вопросы меня ставят в тупик....как добиваться соответствия
хотябы виду из камеры...хлам про камеры в смысле куча настроек
и фиг чё нармально сделаешь.


[вложение удалено Администратором]
фсё тлен.

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
...нашёл наконец как камеру....блин блендер т. м.
в стандартном по умолчанию окне значения...
фсё тлен.

Оффлайн Милый Ад

  • Житель
  • Ад на реставрации.
вроде и прога хорошая только учиться не по чему...
дибилизм.
дым сделать вроде и показывает- дымит, а при рендере фиг с маслом
до того раздражает что за каждой мелочью лезешь за информацией и не находишь.
плюнуть на этот блендер хочется и заняться опять рисованием тупо.
уже бы кучу рисунков нарисовал- нет блин туплю с этой офигительно
замученой прогой.
поигрался и хватит.
ПОЧЕМУ НЕТ НОРМАЛЬНОГО РУКОВОДСТВА
уже и блендер на русском так теперь читаешь пособие для русских а там типа парень тупо не руссифицирует версию- как про розетки с евростандартом
- делаем заземление и тупо портим розетки дебильными вилками-
их почему то снять с эксплуатации в лом ...
....вот и твори с якорем в одном месте............
фсё тлен.

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 7596
Автор: LEXA ANЭGROWND
blender.png
Скачано: 7638
Автор: ipv2007
4.png
Скачано: 7555
Автор: hiroyukiss
2.png
Скачано: 7656
Автор: hiroyukiss

Скачано: 7704
Автор: Dilifa12