Как я могу создать эффект пролета камеры в MATLAB?

Как я могу создать эффект пролета камеры в MATLAB?I хотел бы реализовать эффект пролета, как показано в этот хороший пример. Сначала я создал фигуру из матрицы hm, матрицы 300X300, используя функцию surf:

surf(hm); 

Затем я определил анимированную строку из переменных x, y и z и отобразил на рисунке следующим образом:

curve = animatedline;
curve.LineWidth = 6;
curve.Color = [ 1 0 1];
for i = 1:length(x)
  addpoints(curve, x(i), y(i), z(i));
  drawnow;
end

Затем я хотел реализовать эффект пролета, чтобы камера двигалась вдоль линии. Я попробовал этот фрагмент кода, взятый из приведенного выше примера, и немного изменил его:

for i = 1:length(x)
  campos([(x(i) -5), (y(i)-5), 0]);
  camtarget([x(i), y(i), z(i)]);
  drawnow;
end

Но камера движется не так, как я планировал. Что я делаю неправильно?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
234
1

Ответы 1

Если вы хотите имитировать поведение связанного примера, вам необходимо, чтобы положение камеры а также цели камеры перемещалось вдоль вашей кривой, определенной (x, y, z). Как вы написали выше, цель камеры движется по кривой, но положение камеры всегда смещено от цели на (-5, -5) в плоскости xy и сидит на z = 0. Если вы хотите, чтобы камера двигалась по кривой позади цели, попробуйте что-то вроде этого:

for iPoint = 6:numel(x)
  campos([x(iPoint-5) y(iPoint-5) z(iPoint-5)]);  % Note the index is shifted, not the value
  camtarget([x(iPoint) y(iPoint) z(iPoint)]);
  drawnow;
end

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

offset = [-5 -5 0];  % X, Y, and Z offset from target
for iPoint = 1:numel(x)
  campos([x(iPoint)+offset(1) y(iPoint)+offset(2) z(iPoint)+offset(3)]);
  camtarget([x(iPoint) y(iPoint) z(iPoint)]);
  drawnow;
end

Наконец, если вы хотите контролировать скорость анимации, вы можете заменить команду drawnow вызовом pause. Обратите внимание, что звонок в pause эквивалентен звонку в drawnow вызывает обновление графических объектов. Вы также можете анимировать графику с помощью объект таймера, как я проиллюстрировал в этом ответе.

Я попробовал ваше предложение, но камера все еще движется не так, как я планировал.

New programmer 17.07.2018 14:03

Я отредактировал свой вопрос и добавил фигуру с анимированной линией, чтобы пояснить свое намерение. Я пытаюсь заставить камеру следовать за линией, но немного позади нее. Было бы здорово, если бы я мог изменять скорость, чтобы он двигался медленно. Спасибо за вашу помощь!

New programmer 17.07.2018 14:11

@Newprogrammer: Все еще немного неясно, какое именно движение камеры вы хотите, но я добавил к своему ответу еще один вариант, а также то, как вы можете контролировать скорость.

gnovice 17.07.2018 22:07

Другие вопросы по теме