интерполяция вершин mesh.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

интерполяция вершин mesh.

Сообщение Dakovalev1 » 03.03.2010 (Ср) 22:08

В общем в одной книжке я прочитал,что можно анимировать mesh с помощью интерполяции вершин.С функцией vector3.lerp разбираться не пришлось.Но вот вопрос как из 2-х мешей получить ихние все векторы,интерполировать и запихать обратно?Должно вроде получиться что-то типа морфинга.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: интерполяция вершин mesh.

Сообщение FireFenix » 03.03.2010 (Ср) 22:46

Код: Выделить всё
// Animates the position to move from start to end within one second
var start : Transform;
var end : Transform;
function Update () {
    transform.position = Vector3.Lerp(start.position, end.position, Time.time);
}

Код: Выделить всё
// Follows the target position like with a spring
var target : Transform;
var smooth = 5.0;
function Update () {
    transform.position = Vector3.Lerp (
        transform.position, target.position,
        Time.deltaTime * smooth);
}


Берём точку с 1 меша, берём эту же точку со 2 меша... интерполируем на нужном шаге и получаем позицию в пространстве
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: интерполяция вершин mesh.

Сообщение Dakovalev1 » 03.03.2010 (Ср) 23:09

Я не про то спрашиваю.вернее про то,но мне другое не понятно.Как такое именно с мешем сделать.То есть как взять точку в этом меше,и как обратно запихать.
Может это с мукеучигааук или с indexbuffer.Но как тогда это сделать.Какие функции?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: интерполяция вершин mesh.

Сообщение FireFenix » 04.03.2010 (Чт) 14:09

Если честно - ничего не понял, что ты хотишь....

Берём 2 меша... меши имеют вершины с одинаковыми индексами, но различными координатами в пространстве...

Предположим имеем меш - как массив вершин...
Загружаем 2 меша в наш массив...
И теперь каждый индекс вершин из массива интерполируем в единицу времени....
Новые вершины либо ложим в старый массив, либо - создаём новый...
Потом новый меш запихиваем в index/vertex buffer...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: интерполяция вершин mesh.

Сообщение Dakovalev1 » 05.03.2010 (Пт) 13:31

как преобразовать меш в массив вершин? Я понимаю,как интерполировать,но не понимаю,как достать массив вершин,а потом запихать этот массив в новый меш?
Предположим имеем меш - как массив вершин...

Как поиметь меш ввиде массива вершин?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: интерполяция вершин mesh.

Сообщение FireFenix » 05.03.2010 (Пт) 21:18

Меш должен находит в каком-то файле или программе....
Из программы можно сохраниться в файл с каким-либо расширением....

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

Если неимеем ничего, а просто хотим сохранять/загружать вершины, то всё можно держать для начала в простеньком текстовом файле или xml
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: интерполяция вершин mesh.

Сообщение Mikle » 06.03.2010 (Сб) 10:33

Dakovalev1
как преобразовать меш в массив вершин?

Этого не нужно, у меша есть уже этот массив, его возвращает ф-ция GetVertexBuffer. В книге:
viewtopic.php?f=6&t=34270
есть примеры использования на VB6.

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: интерполяция вершин mesh.

Сообщение Dakovalev1 » 06.03.2010 (Сб) 17:14

спасибо,но я знаю,что есть буффер.Но чё-то не понимаю,как из него достать массив векторов.
Но щас книжку вашу почитаю,и посмотрю,что к чему.
всмысле в directx9 или 10 там как-то странно,но всё равно ща позырю.(Где-то в книжке из магазина я видел точно такую же статью. слово в слово)

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: интерполяция вершин mesh.

Сообщение Dakovalev1 » 06.03.2010 (Сб) 17:40

так и есть.Какой метод нужен,чтобы из vertexbuffer получить vector3?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: интерполяция вершин mesh.

Сообщение Mikle » 06.03.2010 (Сб) 19:46

Из вертексного буфера получается не vec3, а массив того типа, какого типа вертексы в буфере, например:
Код: Выделить всё
Dim VertUp As CustomVertex.PositionTextured() = CType(vBufUp.Lock(0, LockFlags.None), CustomVertex.PositionTextured())

В этом буфере были координаты и текс. координаты.
Теперь можно менять данные прямо в массиве VertUp.
В конце нужно выполнить:
Код: Выделить всё
vBufUp.Unlock()

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: интерполяция вершин mesh.

Сообщение Dakovalev1 » 06.03.2010 (Сб) 20:50

:?:

:!:

:!:


А я лох.Спасибо огромное.Если это ещё и заработает,то я скажу ещё десять раз огромное спасибо.Но это я проверять буду завтра.
Спасибо.

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: интерполяция вершин mesh.

Сообщение Dakovalev1 » 13.03.2010 (Сб) 13:31

ЭЭ у меня проблема возникла.
Когда я этим ctype из буфера получаю вершины,они у иеня почему-то все пустые.
то есть я присвоил сначала буферу одни вершины.Потом эти вершины пытаюсь достать.Но они почему-то не достаются.Получается пустой массив position colored.
Правда длина у этого массива получается правильная,а вот данные о вершинах как будто нулевые.
и если я вызываю потом метод unlock,то картинка вообще пропадает.
Что делать?


Вернуться в Мультимедиа

Кто сейчас на конференции

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

    TopList